#pragma once #include "UnsafePascalStr.h" class PLPasStr; namespace PortabilityLayer { template class PascalStr : public UnsafePascalStr { public: PascalStr(); PascalStr(size_t size, const char *str); explicit PascalStr(const PLPasStr &pstr); explicit PascalStr(const char *str); }; } #include #include "PLPasStr.h" namespace PortabilityLayer { template inline PascalStr::PascalStr() : UnsafePascalStr(0, nullptr) { } template PascalStr::PascalStr(size_t size, const char *str) : UnsafePascalStr(size, str) { } template PascalStr::PascalStr(const PLPasStr &pstr) : UnsafePascalStr(pstr.Length(), pstr.Chars()) { } template PascalStr::PascalStr(const char *str) : UnsafePascalStr((str == nullptr) ? 0 : strlen(str), str) { } }