1793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/////////////////////////////////////////////////////////////////////////// 2793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 3793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas 4793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// Digital Ltd. LLC 5793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 6793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// All rights reserved. 7793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 8793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// Redistribution and use in source and binary forms, with or without 9793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// modification, are permitted provided that the following conditions are 10793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// met: 11793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// * Redistributions of source code must retain the above copyright 12793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// notice, this list of conditions and the following disclaimer. 13793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// * Redistributions in binary form must reproduce the above 14793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// copyright notice, this list of conditions and the following disclaimer 15793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// in the documentation and/or other materials provided with the 16793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// distribution. 17793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// * Neither the name of Industrial Light & Magic nor the names of 18793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// its contributors may be used to endorse or promote products derived 19793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// from this software without specific prior written permission. 20793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 21793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 33793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/////////////////////////////////////////////////////////////////////////// 34793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 35793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 36793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 37793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#ifndef INCLUDED_IMF_NAME_H 38793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#define INCLUDED_IMF_NAME_H 39793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 40793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler//----------------------------------------------------------------------------- 41793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 42793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// class ImfName -- a zero-terminated string 43793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// with a fixed, small maximum length 44793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 45793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler//----------------------------------------------------------------------------- 46793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 47793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#include <string.h> 48793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 49793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslernamespace Imf { 50793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 51793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 52793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerclass Name 53793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 54793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public: 55793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 56793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //------------- 57793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // Constructors 58793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //------------- 59793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 60793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Name (); 61793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Name (const char text[]); 62793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 63793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 64793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //-------------------- 65793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // Assignment operator 66793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //-------------------- 67793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 68793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Name & operator = (const char text[]); 69793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 70793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 71793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //--------------------- 72793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // Access to the string 73793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //--------------------- 74793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 75793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler const char * text () const {return _text;} 76793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler const char * operator * () const {return _text;} 77793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 78793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //--------------- 79793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // Maximum length 80793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //--------------- 81793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 82793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler static const int SIZE = 256; 83793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler static const int MAX_LENGTH = SIZE - 1; 84793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 85793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler private: 86793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 87793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler char _text[SIZE]; 88793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler}; 89793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 90793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 91793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerbool operator == (const Name &x, const Name &y); 92793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerbool operator != (const Name &x, const Name &y); 93793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerbool operator < (const Name &x, const Name &y); 94793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 95793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 96793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler//----------------- 97793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// Inline functions 98793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler//----------------- 99793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 100793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerinline Name & 101793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerName::operator = (const char text[]) 102793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 103793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler strncpy (_text, text, MAX_LENGTH); 104793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return *this; 105793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 106793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 107793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 108793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerinline 109793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerName::Name () 110793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 111793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler _text[0] = 0; 112793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 113793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 114793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 115793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerinline 116793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerName::Name (const char text[]) 117793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 118793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler *this = text; 119793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler _text [MAX_LENGTH] = 0; 120793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 121793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 122793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 123793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerinline bool 124793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presleroperator == (const Name &x, const Name &y) 125793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 126793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return strcmp (*x, *y) == 0; 127793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 128793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 129793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 130793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerinline bool 131793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presleroperator != (const Name &x, const Name &y) 132793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 133793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return !(x == y); 134793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 135793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 136793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 137793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerinline bool 138793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presleroperator < (const Name &x, const Name &y) 139793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 140793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return strcmp (*x, *y) < 0; 141793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 142793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 143793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 144793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} // namespace IMF 145793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 146793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#endif 147