//--------------------------------------------------------------------------- // Greenplum Database // Copyright (C) 2010 Greenplum, Inc. // // @filename: // CWStringConst.h // // @doc: // Constant string class //--------------------------------------------------------------------------- #ifndef GPOS_CWStringConst_H #define GPOS_CWStringConst_H #include "gpos/string/CWStringBase.h" namespace gpos { //--------------------------------------------------------------------------- // @class: // CWStringConst // // @doc: // Constant string class. // The class represents constant strings, which cannot be modified after creation. // The class can either own its own memory, or be supplied with an external // memory buffer holding the string characters. // For a general string class that can be modified, see CWString. // //--------------------------------------------------------------------------- class CWStringConst : public CWStringBase { private: // null terminated wide character buffer const WCHAR *m_w_str_buffer; public: // ctors CWStringConst(const WCHAR *w_str_buffer); CWStringConst(CMemoryPool *mp, const WCHAR *w_str_buffer); CWStringConst(CMemoryPool *mp, const CHAR *str_buffer); // shallow copy ctor CWStringConst(const CWStringConst &); //dtor ~CWStringConst() override; // returns the wide character buffer storing the string const WCHAR *GetBuffer() const override; // equality static BOOL Equals(const CWStringConst *string1, const CWStringConst *string2); // hash function static ULONG HashValue(const CWStringConst *string); // checks whether the string is byte-wise equal to another string BOOL Equals(const CWStringBase *str) const override; // bring base class Equals(const WCHAR*) into scope to avoid hiding using CWStringBase::Equals; }; } // namespace gpos #endif // #ifndef GPOS_CWStringConst_H // EOF