
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7245 212acab6-be3b-0410-9dea-997c60f758d6
89 lines
2.2 KiB
C++
89 lines
2.2 KiB
C++
// tstring.h
|
|
//
|
|
// This file is a part of Unicode NSIS.
|
|
//
|
|
// Copyright (C) 2007-2021 Jim Park
|
|
//
|
|
// Licensed under the zlib/libpng license (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
//
|
|
// This software is provided 'as-is', without any expressed or implied
|
|
// warranty.
|
|
//
|
|
// Provides TSTRING support.
|
|
|
|
/*
|
|
Unicode support by Jim Park -- 07/23/2007
|
|
*/
|
|
|
|
#ifndef NSIS_TSTRING___H__
|
|
#define NSIS_TSTRING___H__
|
|
|
|
#include "Platform.h"
|
|
#include "tchar.h"
|
|
#include <string>
|
|
|
|
/* Abstract string type as well. */
|
|
#ifdef _UNICODE
|
|
typedef std::wstring tstring;
|
|
typedef std::wofstream tofstream;
|
|
typedef std::wifstream tifstream;
|
|
#else
|
|
typedef std::string tstring;
|
|
typedef std::ofstream tofstream;
|
|
typedef std::ifstream tifstream;
|
|
#endif
|
|
|
|
#ifndef _UNICODE
|
|
#define CtoTString(str) (str)
|
|
#define CtoTString2(str,cp) (str)
|
|
#define TtoCString(str) (str)
|
|
#define CtoTStrParam CtoTString
|
|
#else
|
|
#define CtoTString2(str,cp) CtoTString((str),(cp))
|
|
#define CtoTStrParam(str) ( (const TCHAR*) CtoTString((str)) ) // Use this when passing as a vararg parameter
|
|
|
|
|
|
// This is a helpful little function for converting exceptions or
|
|
// other system type things that come back ANSI and must be
|
|
// utilized as either ANSI or wchar_t depending on _UNICODE.
|
|
class CtoTString
|
|
{
|
|
void Init(const char* str, UINT cp);
|
|
void Init(const char* str);
|
|
public:
|
|
CtoTString(const char* str) { Init(str); }
|
|
CtoTString(const char* str, UINT cp) { Init(str, cp); }
|
|
CtoTString(const std::string& str) { Init(str.c_str()); }
|
|
|
|
~CtoTString();
|
|
|
|
operator const wchar_t*() const { return m_wStr; }
|
|
inline const wchar_t*GetTStr() const { return m_wStr; }
|
|
|
|
private:
|
|
wchar_t* m_wStr;
|
|
};
|
|
|
|
// There may be system things that require C strings but we
|
|
// may actually have Unicode strings.
|
|
class TtoCString
|
|
{
|
|
void Init(const wchar_t* str);
|
|
public:
|
|
TtoCString(const wchar_t* wStr) { Init(wStr); }
|
|
TtoCString(const tstring& wStr) { Init(wStr.c_str()); }
|
|
|
|
~TtoCString();
|
|
|
|
operator const char*() const { return m_cStr; };
|
|
|
|
private:
|
|
char* m_cStr;
|
|
};
|
|
#endif // _UNICODE
|
|
|
|
#define PosixBug_CtoTString CtoTString
|
|
#define PosixBug_TtoCString TtoCString
|
|
|
|
#endif // NSIS_TSTRING___H__
|