// // SPDX-License-Identifier: BSD-3-Clause // Copyright (c) Contributors to the OpenEXR Project. // #ifndef INCLUDED_IMF_NAME_H #define INCLUDED_IMF_NAME_H //----------------------------------------------------------------------------- // // class ImfName -- a zero-terminated string // with a fixed, small maximum length // //----------------------------------------------------------------------------- #include "ImfExport.h" #include "ImfNamespace.h" #include #if defined(_MSC_VER) #pragma warning( push, 0 ) #pragma warning (disable : 4996) #endif OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER class IMF_EXPORT_TYPE Name { public: //------------- // Constructors //------------- Name (); Name (const char text[]); Name (const Name &) = default; Name (Name &&) = default; ~Name () = default; //-------------------- // Assignment operator //-------------------- Name &operator = (const Name &) = default; Name &operator = (Name &&) = default; Name &operator = (const char text[]); //--------------------- // Access to the string //--------------------- inline const char * text () const {return _text;} inline const char * operator * () const {return _text;} //--------------- // Maximum length //--------------- static const int SIZE = 256; static const int MAX_LENGTH = SIZE - 1; private: char _text[SIZE]; }; //----------------- // Inline functions //----------------- inline Name & Name::operator = (const char text[]) { strncpy (_text, text, MAX_LENGTH); return *this; } inline Name::Name () { _text[0] = 0; } inline Name::Name (const char text[]) { *this = text; _text [MAX_LENGTH] = 0; } inline bool operator == (const Name &x, const Name &y) { return strcmp (*x, *y) == 0; } inline bool operator == (const Name &x, const char text[]) { return strcmp (*x, text) == 0; } inline bool operator == (const char text[], const Name &y) { return strcmp (text, *y) == 0; } inline bool operator != (const Name &x, const Name &y) { return !(x == y); } inline bool operator != (const Name &x, const char text[]) { return !(x == text); } inline bool operator != (const char text[], const Name &y) { return !(text == y); } inline bool operator < (const Name &x, const Name &y) { return strcmp (*x, *y) < 0; } inline bool operator < (const Name &x, const char text[]) { return strcmp (*x, text) < 0; } inline bool operator < (const char text[], const Name &y) { return strcmp (text, *y) < 0; } OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT #if defined(_MSC_VER) #pragma warning (pop) #endif #endif