String_128 Class Reference

Extends its String base class to become fixed-length and atomically allocatable, ie. a failed constructor call for this class will never leave the object in an illegal state. More...

#include <fixst128.h>

Inheritance diagram for String_128:

StringBase CCObject SimpleCCObject List of all members.

Public Member Functions

 String_128 (const TCHAR *psz=TEXT(""))
 Constructs a string of the appropriate maximum length.
 String_128 (const StringBase &other)
 String_128 (const String_128 &other)
 String_128 (UINT32 resID, UINT32 hinst=0)
 Loads the string resource into this String.
 String_128 (const wxString &wxs)
 Constructs a string of the appropriate maximum length.
virtual ~String_128 ()
 Destroys this fixed-length string.
virtual BOOL Alloc (INT32 nSize)
 Fixes Alloc() for fixed-length strings, which CAN be safely changed# to use a buffer on the heap. Scope: Public.

Private Member Functions

void CopyConstruct (const StringBase &other)
 Constructs a string of the appropriate maximum length. Duplicates the text of the other string.

Private Attributes

TCHAR fixedbuf [(((128)+1)*2)]

Static Private Attributes

static const INT32 FIX_LEN_BUFSIZE

Detailed Description

Extends its String base class to become fixed-length and atomically allocatable, ie. a failed constructor call for this class will never leave the object in an illegal state.

class String_128 : public StringBase

Author:
Justin_Flude (Xara Group Ltd) <camelotdev@xara.com>
Date:
12th August 1993

Definition at line 115 of file fixst128.h.


Constructor & Destructor Documentation

String_128::String_128 const TCHAR psz = TEXT("")  ) 
 

Constructs a string of the appropriate maximum length.

Author:
Justin_Flude (Xara Group Ltd) <camelotdev@xara.com>
Date:
12th August 1993
Parameters:
An optional pointer to a (constant) Unicode character array - if [INPUTS] omitted then the String becomes empty (NOT the null pointer).
Returns:
Errors: ASSERTion failure if the passed character array is too long for this length of string, or if psz is NULL. Scope: Public

Definition at line 117 of file fixst128.cpp.

00118 {
00119     *(text = fixedbuf) = 0;
00120     length = FIX_LEN_BUFSIZE;
00121     if (psz != 0)
00122     {
00123         ERROR3IF(camStrlen(psz) >= length, "String_128::String_128 overflow");
00124         camStrcpy(text, psz);
00125     }
00126 }

String_128::String_128 const StringBase other  )  [inline]
 

Definition at line 127 of file fixst128.h.

00127 { CopyConstruct( other ); }

String_128::String_128 const String_128 other  )  [inline]
 

Definition at line 128 of file fixst128.h.

00128 { CopyConstruct( other ); }

String_128::String_128 UINT32  resID,
UINT32  hinst = 0
 

Loads the string resource into this String.

Author:
Justin_Flude (Xara Group Ltd) <camelotdev@xara.com>
Date:
12th August 1993
Parameters:
A string resource numeric identifier, an optional resource module [INPUTS] handle (if not supplied, the default resource module is used).
Returns:
Errors: ENSURE failure if this string is not long enough to hold the resource, or if the resource cannot be found in the module. If it cannot be found, a very short temp string is built of the form "<%X:%X>" containing the ID and the module number, or if that is too long then simply "!". Scope: Public
See also:
SmartLoadString

Definition at line 198 of file fixst128.cpp.

00199 {
00200     *(text = fixedbuf) = 0;
00201     length = FIX_LEN_BUFSIZE;
00202     if (!Load(resID, hinst))
00203     {
00204         ERROR3("String resource failed to load");
00205         TCHAR buf[128];
00206         camSnprintf(buf, 128, TEXT("<%X:%X>"), (INT32) resID, (INT32) hinst);
00207         camStrcpy(text, (camStrlen(buf) <= 128) ? buf : TEXT("!"));
00208     }
00209 }

String_128::String_128 const wxString &  wxs  ) 
 

Constructs a string of the appropriate maximum length.

Author:
Phil_Martin (Xara Group Ltd) <camelotdev@xara.com>
Date:
28th January 2006
Parameters:
A wxString [INPUTS]
Returns:
Errors: ASSERTion failure if the passed character array is too long for this length of string, or if psz is NULL. Scope: Public

Definition at line 225 of file fixst128.cpp.

00226 {
00227     *(text = fixedbuf) = 0;
00228     length = FIX_LEN_BUFSIZE;
00229     ERROR3IF(wxs.Len() >= length, "String_128::String_128 overflow");
00230     camStrcpy(text, (LPCTSTR)wxs);
00231 }

String_128::~String_128  )  [inline, virtual]
 

Destroys this fixed-length string.

Author:
Justin_Flude (Xara Group Ltd) <camelotdev@xara.com>
Date:
12th August 1993

Definition at line 150 of file fixst128.h.

00151 {
00152     // If the string is using the fixed-length buffer then make sure the
00153     // base class doesn't try to delete[] it.
00154     if (text == fixedbuf) text = 0;
00155 }


Member Function Documentation

BOOL String_128::Alloc INT32  nSize  )  [virtual]
 

Fixes Alloc() for fixed-length strings, which CAN be safely changed# to use a buffer on the heap. Scope: Public.

Author:
Justin_Flude (Xara Group Ltd) <camelotdev@xara.com> & Andy
Date:
12th August 1993
See also:
StringBase::Alloc

Reimplemented from StringBase.

Definition at line 246 of file fixst128.cpp.

00247 {
00248     if (text == fixedbuf) text = 0;
00249     return StringBase::Alloc(nSize);
00250 }

void String_128::CopyConstruct const StringBase other  )  [private]
 

Constructs a string of the appropriate maximum length. Duplicates the text of the other string.

Author:
Justin_Flude (Xara Group Ltd) <camelotdev@xara.com>
Date:
12th August 1993
Parameters:
A constant reference to another string (can be of any length) [INPUTS]
Returns:
Errors: ASSERTion failure if this string is not long enough to hold a copy of the other string's text, or if the copied String has not been allocated. Scope: Public

Definition at line 169 of file fixst128.cpp.

00170 {
00171     *(text = fixedbuf) = 0;
00172     length = FIX_LEN_BUFSIZE;
00173     ERROR3IF((const TCHAR*) other == 0, "StringBase to be copied has not been ALLOCated");
00174     ERROR3IF(camStrlen((const TCHAR*) other) >= length,
00175                 "Constructed String_128 not large enough to hold StringBase copy");
00176     camStrcpy(text, (const TCHAR*) other);
00177 }


Member Data Documentation

const INT32 String_128::FIX_LEN_BUFSIZE [static, private]
 

Definition at line 117 of file fixst128.h.

TCHAR String_128::fixedbuf[(((128)+1)*2)] [private]
 

Definition at line 136 of file fixst128.h.


The documentation for this class was generated from the following files:
Generated on Sat Nov 10 04:01:27 2007 for Camelot by  doxygen 1.4.4