#pragma once #ifndef __PL_PASCAL_STR_LITERAL_H__ #define __PL_PASCAL_STR_LITERAL_H__ #include "DataTypes.h" namespace PortabilityLayer { template class PascalStrLiteral { public: PascalStrLiteral(const char (&literalStr)[TSize]); const char *GetStr() const; static const uint8_t kLength = TSize - 1; private: const char *m_literal; }; } namespace PortabilityLayer { template inline PascalStrLiteral::PascalStrLiteral(const char(&literalStr)[TSize]) : m_literal(literalStr) { } template inline const char *PascalStrLiteral::GetStr() const { return m_literal; } } #define PSTR(n) (::PortabilityLayer::PascalStrLiteral(n)) #endif