source: NonGTP/OpenEXR/include/IlmImf/ImfName.h @ 855

Revision 855, 3.4 KB checked in by igarcia, 19 years ago (diff)
RevLine 
[855]1///////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
4// Digital Ltd. LLC
5//
6// All rights reserved.
7//
8// Redistribution and use in source and binary forms, with or without
9// modification, are permitted provided that the following conditions are
10// met:
11// *       Redistributions of source code must retain the above copyright
12// notice, this list of conditions and the following disclaimer.
13// *       Redistributions in binary form must reproduce the above
14// copyright notice, this list of conditions and the following disclaimer
15// in the documentation and/or other materials provided with the
16// distribution.
17// *       Neither the name of Industrial Light & Magic nor the names of
18// its contributors may be used to endorse or promote products derived
19// from this software without specific prior written permission.
20//
21// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32//
33///////////////////////////////////////////////////////////////////////////
34
35
36
37#ifndef INCLUDED_IMF_NAME_H
38#define INCLUDED_IMF_NAME_H
39
40//-----------------------------------------------------------------------------
41//
42//      class ImfName -- a zero-terminated string
43//      with a fixed, small maximum length
44//
45//-----------------------------------------------------------------------------
46
47#include <string.h>
48
49namespace Imf {
50
51
52class Name
53{
54  public:
55
56    //-------------
57    // Constructors
58    //-------------
59
60    Name ();
61    Name (const char text[]);
62
63
64    //--------------------
65    // Assignment operator
66    //--------------------
67
68    Name &              operator = (const char text[]);
69
70
71    //---------------------
72    // Access to the string
73    //---------------------
74
75    const char *        text () const           {return _text;}
76    const char *        operator * () const     {return _text;}
77
78    //---------------
79    // Maximum length
80    //---------------
81
82    static const int    SIZE = 32;
83    static const int    MAX_LENGTH = SIZE - 1;
84
85  private:
86
87    char                _text[SIZE];
88};
89
90
91bool operator == (const Name &x, const Name &y);
92bool operator != (const Name &x, const Name &y);
93bool operator < (const Name &x, const Name &y);
94
95
96//-----------------
97// Inline functions
98//-----------------
99
100inline Name &
101Name::operator = (const char text[])
102{
103    strncpy (_text, text, MAX_LENGTH);
104    return *this;
105}
106
107
108inline
109Name::Name ()
110{
111    _text[0] = 0;
112}
113
114
115inline
116Name::Name (const char text[])
117{
118    *this = text;
119    _text [MAX_LENGTH] = 0;
120}
121
122
123inline bool
124operator == (const Name &x, const Name &y)
125{
126    return strcmp (*x, *y) == 0;
127}
128
129
130inline bool
131operator != (const Name &x, const Name &y)
132{
133    return !(x == y);
134}
135
136
137inline bool
138operator < (const Name &x, const Name &y)
139{
140    return strcmp (*x, *y) < 0;
141}
142
143
144} // namespace IMF
145
146#endif
Note: See TracBrowser for help on using the repository browser.