String_256 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 <fixst256.h>

Inheritance diagram for String_256:

StringBase CCObject SimpleCCObject List of all members.

Public Member Functions

 String_256 (const TCHAR *psz=TEXT(""))
 Constructs a string of the appropriate maximum length.
 String_256 (const StringBase &other)
 String_256 (const String_256 &other)
 String_256 (UINT32 resID, UINT32 hinst=0)
 Loads the string resource into this String.
 String_256 (const wxString &wxs)
 Constructs a string of the appropriate maximum length.
virtual ~String_256 ()
 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 [(((256)+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_256 : public StringBase

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

Definition at line 116 of file fixst256.h.


Constructor & Destructor Documentation

String_256::String_256 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 118 of file fixst256.cpp.

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

String_256::String_256 const StringBase other  )  [inline]
 

Definition at line 128 of file fixst256.h.

00128 { CopyConstruct( other ); }

String_256::String_256 const String_256 other  )  [inline]
 

Definition at line 129 of file fixst256.h.

00129 { CopyConstruct( other ); }

String_256::String_256 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 199 of file fixst256.cpp.

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

String_256::String_256 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 226 of file fixst256.cpp.

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

String_256::~String_256  )  [inline, virtual]
 

Destroys this fixed-length string.

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

Definition at line 151 of file fixst256.h.

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


Member Function Documentation

BOOL String_256::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 247 of file fixst256.cpp.

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

void String_256::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 170 of file fixst256.cpp.

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


Member Data Documentation

const INT32 String_256::FIX_LEN_BUFSIZE [static, private]
 

Definition at line 118 of file fixst256.h.

TCHAR String_256::fixedbuf[(((256)+1)*2)] [private]
 

Definition at line 137 of file fixst256.h.


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