windows-nt/Source/XPSP1/NT/admin/netui/common/h/strtchar.hxx

101 lines
2.6 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corp., 1991 **/
/**********************************************************************/
/*
strtchar.hxx
String classes for formatted output - definitions
This file defines the class TCHAR_STR.
Q.v. string.hxx and strnumer.hxx.
FILE HISTORY:
beng 25-Feb-1992 Created
*/
#ifndef _STRTCHAR_HXX_
#define _STRTCHAR_HXX_
#include "base.hxx"
#include "string.hxx"
/*************************************************************************
NAME: TCHAR_STR_IMPL
SYNOPSIS: Private to implementation of TCHAR_STR class
INTERFACE: TCHAR_STR_IMPL() - ctor. Takes the character to render.
NOTES:
Alas, cfront 2.0 does not implement nested types.
CAVEATS:
Ignore this class - it is private to class TCHAR_STR.
HISTORY:
beng 25-Feb-1992 Created
**************************************************************************/
DLL_CLASS TCHAR_STR_IMPL // Private to implementation of TCHAR_STR
{
public:
TCHAR _szStorage[2];
TCHAR_STR_IMPL( TCHAR ch )
{
_szStorage[0] = ch;
_szStorage[1] = 0;
}
};
/*************************************************************************
NAME: TCHAR_STR
SYNOPSIS: String formatted as a single character
INTERFACE: TCHAR_STR() - ctor. Takes the character to render.
PARENT: FORWARDING_BASE
USES: TCHAR_STR_IMPL
NOTES:
This class responds as an ALIAS_STR, although it doesn't inherit
from it. It exists only to copy elsewhere, into some other string
or formatted string. Its unusual implementation serves to
minimize allocation overhead (I boil with rage when imagining
allocating a two-TCHAR string in order to format a character)
while eliminating the compound nature of existing ALLOC_STR forms,
which would not work well within a FORMATTED_STR::Format expression.
HISTORY:
beng 25-Feb-1992 Created
**************************************************************************/
DLL_CLASS TCHAR_STR: public FORWARDING_BASE
{
private:
TCHAR_STR_IMPL _impl;
ALIAS_STR _nlsStorage;
public:
TCHAR_STR( TCHAR ch )
: FORWARDING_BASE(&_nlsStorage), // yes, not yet constructed
_impl(ch),
_nlsStorage(_impl._szStorage) {}
operator const ALIAS_STR &()
{ return _nlsStorage; }
};
#endif // _STRTCHAR_HXX_ - end of file