1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
#ifndef _DBASHARED_CONSTASCIISTRING_HXX_
#define _DBASHARED_CONSTASCIISTRING_HXX_
#ifndef CONSTASCII_INCLUDED_INDIRECT
#error "don't include this file directly! use stringconstants.hrc instead!"
#endif
// no namespaces. This file is included from several other files _within_ a namespace.
//============================================================
//= a helper for static ascii pseudo-unicode strings
//============================================================
// string constants
struct ConstAsciiString
{
const sal_Char* ascii;
sal_Int32 length;
inline operator const ::rtl::OUString& () const;
inline operator const sal_Char* () const { return ascii; }
inline ConstAsciiString(const sal_Char* _pAsciiZeroTerminated, const sal_Int32 _nLength);
inline ~ConstAsciiString();
private:
mutable ::rtl::OUString* ustring;
};
//------------------------------------------------------------
inline ConstAsciiString::ConstAsciiString(const sal_Char* _pAsciiZeroTerminated, const sal_Int32 _nLength)
:ascii(_pAsciiZeroTerminated)
,length(_nLength)
,ustring(NULL)
{
}
//------------------------------------------------------------
inline ConstAsciiString::~ConstAsciiString()
{
delete ustring;
ustring = NULL;
}
//------------------------------------------------------------
inline ConstAsciiString::operator const ::rtl::OUString& () const
{
if (!ustring)
ustring = new ::rtl::OUString(ascii, length, RTL_TEXTENCODING_ASCII_US);
return *ustring;
}
//============================================================
#define DECLARE_CONSTASCII_USTRING( name ) \
extern const ConstAsciiString name
#define IMPLEMENT_CONSTASCII_USTRING( name, string ) \
const ConstAsciiString name(string, sizeof(string)-1)
#endif // _DBASHARED_CONSTASCIISTRING_HXX_
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|