windows-nt/Source/XPSP1/NT/ds/security/csps/cryptoflex/scardlib/text.h

178 lines
3.8 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (C) Microsoft Corporation, 1995 - 1999
Module Name:
text
Abstract:
This header file provides a text handling class.
Author:
Doug Barlow (dbarlow) 10/5/1995
Environment:
Win32
Notes:
--*/
#ifndef _TEXT_H_
#define _TEXT_H_
//#include <string.h>
//#include <mbstring.h>
#include "buffers.h"
//
//==============================================================================
//
// CTextString
//
class CTextString
{
public:
// Constructors & Destructor
CTextString()
: m_bfUnicode(),
m_bfAnsi()
{ m_fFlags = fBothGood; };
virtual ~CTextString() {};
// Properties
// Methods
void Clear(void)
{
m_bfUnicode.Clear();
m_bfAnsi.Clear();
m_fFlags = fBothGood;
};
void Reset(void)
{
m_bfUnicode.Reset();
m_bfAnsi.Reset();
m_fFlags = fBothGood;
};
virtual DWORD Length(void);
// Operators
CTextString &operator=(const CTextString &tz);
LPCSTR operator=(LPCSTR sz);
LPCWSTR operator=(LPCWSTR wsz);
CTextString &operator+=(const CTextString &tz);
LPCSTR operator+=(LPCSTR sz);
LPCWSTR operator+=( LPCWSTR wsz);
BOOL operator==(const CTextString &tz)
{ return (0 == Compare(tz)); };
BOOL operator==(LPCSTR sz)
{ return (0 == Compare(sz)); };
BOOL operator==(LPCWSTR wsz)
{ return (0 == Compare(wsz)); };
BOOL operator!=(const CTextString &tz)
{ return (0 != Compare(tz)); };
BOOL operator!=(LPCSTR sz)
{ return (0 != Compare(sz)); };
BOOL operator!=(LPCWSTR wsz)
{ return (0 != Compare(wsz)); };
BOOL operator<=(const CTextString &tz)
{ return (0 <= Compare(tz)); };
BOOL operator<=(LPCSTR sz)
{ return (0 <= Compare(sz)); };
BOOL operator<=(LPCWSTR wsz)
{ return (0 <= Compare(wsz)); };
BOOL operator>=(const CTextString &tz)
{ return (0 >= Compare(tz)); };
BOOL operator>=(LPCSTR sz)
{ return (0 >= Compare(sz)); };
BOOL operator>=(LPCWSTR wsz)
{ return (0 >= Compare(wsz)); };
BOOL operator<(const CTextString &tz)
{ return (0 < Compare(tz)); };
BOOL operator<(LPCSTR sz)
{ return (0 < Compare(sz)); };
BOOL operator<(LPCWSTR wsz)
{ return (0 < Compare(wsz)); };
BOOL operator>(const CTextString &tz)
{ return (0 > Compare(tz)); };
BOOL operator>(LPCSTR sz)
{ return (0 > Compare(sz)); };
BOOL operator>(LPCWSTR wsz)
{ return (0 > Compare(wsz)); };
operator LPCSTR(void)
{ return Ansi(); };
operator LPCWSTR(void)
{ return Unicode(); };
protected:
enum {
fNoneGood = 0,
fAnsiGood = 1,
fUnicodeGood = 2,
fBothGood = 3
} m_fFlags;
// Properties
CBuffer
m_bfUnicode,
m_bfAnsi;
// Methods
LPCWSTR Unicode(void); // Return the text as a Unicode string.
LPCSTR Ansi(void); // Return the text as an Ansi string.
int Compare(const CTextString &tz);
int Compare(LPCSTR sz);
int Compare(LPCWSTR wsz);
virtual DWORD Length(LPCSTR szString);
virtual DWORD Length(LPCWSTR szString);
};
//
//==============================================================================
//
// CTextMultistring
//
class CTextMultistring
: public CTextString
{
public:
// Constructors & Destructor
CTextMultistring()
: CTextString()
{};
// Properties
// Methods
virtual DWORD Length(void);
// Operators
CTextMultistring &operator=(const CTextMultistring &tz);
CTextMultistring &operator+=(const CTextMultistring &tz);
LPCSTR operator=(LPCSTR sz);
LPCWSTR operator=(LPCWSTR wsz);
LPCSTR operator+=(LPCSTR sz);
LPCWSTR operator+=( LPCWSTR wsz);
protected:
// Properties
// Methods
virtual DWORD Length(LPCSTR szString);
virtual DWORD Length(LPCWSTR szString);
};
#endif // _TEXT_H_