class StringAutoMarshal
{
char* m_string;
inline explicit StringAutoMarshal(const StringAutoMarshal& i_Source) : m_string(NULL) {}
inline operator= (const StringAutoMarshal& i_Source) {}
public:
inline explicit StringAutoMarshal(const System::String __gc* i_strString) : m_string(NULL)
{
m_string = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(const_cast<System::String __gc*>(i_strString));
}
inline ~StringAutoMarshal()
{
System::Runtime::InteropServices::Marshal::FreeHGlobal((void*)m_string);
}
inline char* GetNativeString()
{
return m_string;
}
inline operator char*()
{
return m_string;
}
};
class StringAutoMarshalW
{
wchar_t* m_string;
inline explicit StringAutoMarshalW(const StringAutoMarshalW& i_Source) : m_string(NULL) {}
inline operator= (const StringAutoMarshalW& i_Source) {}
public:
explicit StringAutoMarshalW(const System::String __gc* i_strString) : m_string(NULL)
{
m_string = (wchar_t*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalUni(const_cast<System::String __gc*>(i_strString));
}
inline ~StringAutoMarshalW()
{
System::Runtime::InteropServices::Marshal::FreeHGlobal((void*)m_string);
}
inline wchar_t* GetNativeString()
{
return m_string;
}
inline operator wchar_t*()
{
return m_string;
}
};