DYT/Tool/OpenSceneGraph-3.6.5/include/OpenEXR/ImfName.h

150 lines
2.6 KiB
C
Raw Normal View History

2024-12-24 23:49:36 +00:00
//
// 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 <cstring>
#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