#include "pch.h"
#include "System/Text/TextEncoding.h"
#include <vector>

namespace DotNetDupe {
    namespace System {
        namespace Text {
            // Static member initialization
            UTF8EncodingPtr TextEncoding::s_utf8EncodingInstance(nullptr);

            Array<char> UTF8Encoding::GetBytes(const String& s) {
                const char* raw = (const char*)s;
                if (!raw) return Array<char>(0);
                int length = s.GetLength();
                Array<char> bytes(length);
                for (int i = 0; i < length; i++) bytes[i] = raw[i];
                return bytes;
            }

            String UTF8Encoding::GetString(const Array<char>& bytes) {
                if (bytes.GetLength() == 0) {
                    return String("");
                }
                return GetString(bytes.GetData(), bytes.GetLength());
            }

            String UTF8Encoding::GetString(const char* bytes, int byteCount) {
                if (bytes == nullptr || byteCount == 0) {
                    return String("");
                }
                std::string tempString(bytes, byteCount);
                return String(tempString.c_str());
            }

            EncodingPtr TextEncoding::UTF8() {
                if (s_utf8EncodingInstance.IsNull()) {
                    s_utf8EncodingInstance = SmartPointer<UTF8Encoding>::NewShared();
                }
                return s_utf8EncodingInstance.DynamicCast<Encoding>();
            }
        }
    }
}

Generated by OpenCppCoverage (Version: 0.9.9.0)