#include <String.hpp>
Public Methods | |
JString () | |
JString (const char *s) | |
JString (const char *s, ULONG nBuffer) | |
JString (const JString &src) | |
JString (char ch) | |
JString (char ch, ULONG nRepeat) | |
JString (JStringData *sd) | |
virtual | ~JString () |
bool | OK () const |
bool | isEmpty () const |
bool | isFilled () const |
void | Clear () |
void | Empty () |
void | FillString (char ch) |
void | FillBuffer (char ch) |
__inline void | Display () const |
__inline ULONG | length () |
__inline ULONG | getLength () |
__inline ULONG | getAllocLength () const |
__inline ULONG | getBufferSize () const |
__inline int | getLockNb () const |
__inline bool | isLock () const |
__inline bool | isUnlock () const |
JString | at (ULONG startpos) |
JString | at (ULONG startpos, ULONG length) |
JString | at (const char *s, ULONG startpos) |
JString | at (const char *s, ULONG startpos, ULONG length) |
__inline JString | at () |
__inline JString | at (const char *s) |
__inline JString | at (const JString &S) |
__inline JString | at (const JString &S, ULONG startpos) |
__inline JString | at (const JString &S, ULONG startpos, ULONG length) |
JString & | setAt (ULONG nIndex, char ch) |
__inline char | charAt () |
__inline char | charAt (const char *s) |
__inline char | charAt (const JString &S) |
__inline const JString & | modifyAt (const JString &S) |
__inline const JString & | modifyAt (const JString &S, ULONG offset) |
__inline const JString & | modifyAt (const JString &S, ULONG offset, ULONG length) |
__inline const JString & | modifyAt (const char *s) |
__inline const JString & | modifyAt (const char *s, ULONG offset) |
__inline const JString & | modifyAt (const char *s, ULONG offset, ULONG length) |
__inline char | getAt (ULONG nIndex) const |
__inline char | operator[] (long nIndex) const |
__inline JString | right (ULONG length) |
__inline JString | left (ULONG length) |
__inline JString | mid (const char *s, ULONG startpos, ULONG length) |
__inline JString | mid (const JString &S, ULONG startpos, ULONG length) |
__inline JString | after (const char *s) |
__inline JString | after (const char *s, ULONG startpos) |
__inline JString | after (const char *s, ULONG startpos, ULONG length) |
__inline JString | before (const char *s) |
__inline JString | before (const char *s, ULONG startpos) |
__inline JString | beforeStr (const char *s, ULONG startpos) |
__inline JString | before (const char *s, ULONG startpos, ULONG length) |
JString | ltrim (char ch) const |
JString | rtrim (char ch) const |
JString | trim (char ch) const |
JString | trimCharset (const char *charset) const |
JString | keepCharset (const char *charset) const |
__inline JString | operator() (ULONG startpos) |
__inline JString | operator() (ULONG startpos, ULONG length) |
__inline JString | operator() (const char *s) |
__inline JString | operator() (const JString &S) |
__inline JString | operator() (const char *s, ULONG startpos) |
__inline JString | operator() (const JString &S, ULONG startpos) |
__inline JString | operator() (const char *s, ULONG startpos, ULONG length) |
__inline JString | operator() (const JString &S, ULONG startpos, ULONG length) |
__inline int | compare (const JString &right) const |
__inline int | compare (const char *right) const |
int | compare (char right) const |
__inline bool | operator< (const JString &right) const |
__inline bool | operator< (const char *right) const |
__inline bool | operator< (char right) const |
__inline bool | operator> (const JString &right) const |
__inline bool | operator> (const char *right) const |
__inline bool | operator> (char right) const |
__inline bool | operator<= (const JString &right) const |
__inline bool | operator<= (const char *right) const |
__inline bool | operator<= (char right) const |
__inline bool | operator>= (const JString &right) const |
__inline bool | operator>= (const char *right) const |
__inline bool | operator>= (char right) const |
__inline bool | operator== (const char *right) const |
__inline bool | operator== (const JString &right) const |
__inline bool | operator== (char right) const |
__inline bool | operator!= (const char *right) const |
__inline bool | operator!= (const JString &right) const |
__inline bool | operator!= (char right) const |
__inline | operator char * () const |
__inline | operator int () const |
__inline | operator long () const |
__inline | operator double () const |
__inline int | parseInt () const |
__inline long | parseLong () const |
__inline double | parseDouble () const |
char * | parseString () const |
__inline char * | toString () const |
__inline char * | getText () const |
void | CopyBeforeWrite () |
const JString & | operator= (const JString &s) |
const JString & | operator= (const char *s) |
const JString & | operator= (char ch) |
void | Append (const char *s, ULONG Len) |
const JString & | operator+= (const JString &s) |
const JString & | operator+= (const char *s) |
const JString & | operator+= (char ch) |
void | MakeUpper () |
void | MakeLower () |
void | MakeReverse () |
__inline void | UCase () |
__inline void | LCase () |
__inline void | Reverse () |
char * | getLower () |
char * | getUpper () |
char * | getReverse () |
__inline JString & | setLower () |
__inline JString & | setUpper () |
__inline JString & | setReverse () |
long | Find (char ch) const |
long | ReverseFind (char ch) const |
__inline long | Find (const char *s) const |
long | Find (const char *s, ULONG offset) const |
__inline JString | getFind (const char *s) |
JString | getFind (const char *s, ULONG offset) |
__inline long | Find (const JString &S) const |
__inline long | Find (const JString &S, ULONG offset) const |
char * | getConcatenate (const char *src) |
JString & | setConcatenate (const char *src) |
char * | getConcatenateWithLimits (const char *src, ULONG n) |
JString & | setConcatenateWithLimits (const char *src, ULONG n) |
long | firstCharFound (const int c) |
long | lastCharFound (const int c) |
int | compare (const char *src) |
int | compareIgnoreCase (const char *src) |
int | compareUsingLocaleCollate (const char *src) |
int | compareWithLimits (const char *src, ULONG n) |
int | compareIgnoreCaseWithLimits (const char *src, ULONG n) |
char * | copy () |
JString | getCopy () |
char * | copyWithLimits (ULONG n) |
JString | getCopyWithLimits (ULONG n) |
ULONG | getNbCharNotFromCharSet (const char *charset) |
JString | getDate () |
JString & | setDate () |
JString & | setTime (ULONG maxSize, const char *format, const struct tm *currTime) |
char * | duplicate () |
JString | duplicateString () |
JString | getError (int errnb) |
JString & | setError (int errnb) |
JString | getTimeFormat (ULONG maxSize, const char *format, const struct tm *currTime) |
JString & | setTimeFormat (ULONG maxSize, const char *format, const struct tm *currTime) |
JString | getTime () |
JString & | setTime () |
char * | getFillWithChar (const int ch) |
JString & | setFillWithChar (const int ch) |
char * | getFillWithChar (const int ch, ULONG n) |
JString & | setFillWithChar (const int ch, ULONG n) |
long | locateCharSet (const char *charset) |
long | locateCharSet (const char *charset, ULONG startAt) |
ULONG | findCharset (const char *charset) |
ULONG | findCharset (const char *charset, ULONG startAt) |
long | findString (const char *s) |
long | findString (const char *s, ULONG startAt) |
double | toDouble () |
double | toDouble (ULONG startAt) |
long | toLong () |
long | toLong (ULONG base) |
long | toLong (ULONG startAt, ULONG base) |
ULONG | toULONG () |
ULONG | toULONG (ULONG base) |
ULONG | toULONG (ULONG startAt, ULONG base) |
char * | getTransform (const char *src, ULONG n) |
JString & | setTransform (const char *src, ULONG n) |
char * | getTokens (const char *delims, ULONG startAt) |
JString | getStringTokens (const char *delims, ULONG startAt) |
char * | getMoreTokens (const char *delims) |
JString | getMoreStringTokens (const char *delims) |
__inline void | AllocBuffer (ULONG nLen) |
__inline void | AllocBeforeWrite (ULONG nLen) |
__inline char * | LockBuffer () |
__inline void | UnlockBuffer () |
void | FreeExtra () |
char * | GetBuffer (ULONG minBufferLength) |
__inline void | ReleaseBuffer () |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5, const JString &S6,\const JString &S7, const JString &S8) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5, const JString &S6,\const JString &S7) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5, const JString &S6) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5) |
const JString & | Add (const JString &S1, const JString &S2,\const JString &S3, const JString &S4) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3) |
__inline bool | contains (const JString &S, ULONG offset) const |
__inline bool | contains (const char *s, ULONG offset) const |
__inline bool | contains (char c, ULONG offset) const |
__inline bool | contains (const JString &S) const |
__inline bool | contains (const char *s) const |
__inline bool | contains (char c) const |
__inline const JString & | append (const JString &S) |
__inline const JString & | prepend (const JString &S) |
__inline const JString & | append (const char *s) |
__inline const JString & | prepend (const char *s) |
__inline const JString & | append (char c) |
__inline const JString & | prepend (char c) |
JString () | |
JString (const char *s) | |
JString (const char *s, size_t nBuffer) | |
JString (const JString &src) | |
JString (char ch) | |
JString (char ch, size_t nRepeat) | |
JString (JStringData *sd) | |
virtual | ~JString () |
bool | OK () const |
bool | isEmpty () const |
bool | isFilled () const |
void | Clear () |
void | Empty () |
void | FillString (char ch) |
void | FillBuffer (char ch) |
void | Display () const |
size_t | length () |
size_t | getLength () |
size_t | getAllocLength () const |
size_t | getBufferSize () const |
int | getLockNb () const |
bool | isLock () const |
bool | isUnlock () const |
JString | at (size_t startpos) |
JString | at (size_t startpos, size_t length) |
JString | at (const char *s, size_t startpos) |
JString | at (const char *s, size_t startpos, size_t length) |
JString | at () |
JString | at (const char *s) |
JString | at (const JString &S) |
JString | at (const JString &S, size_t startpos) |
JString | at (const JString &S, size_t startpos, size_t length) |
JString & | setAt (size_t nIndex, char ch) |
char | getAt (size_t nIndex) const |
char | operator[] (long nIndex) const |
JString | right (size_t length) |
JString | left (size_t length) |
JString | mid (const char *s, size_t startpos, size_t length) |
JString | mid (const JString &S, size_t startpos, size_t length) |
JString | ltrim (char ch) const |
JString | rtrim (char ch) const |
JString | trim (char ch) const |
JString | trimCharset (const char *charset) const |
JString | keepCharset (const char *charset) const |
JString | operator() (size_t startpos) |
JString | operator() (size_t startpos, size_t length) |
JString | operator() (const char *s) |
JString | operator() (const JString &S) |
JString | operator() (const char *s, size_t startpos) |
JString | operator() (const JString &S, size_t startpos) |
JString | operator() (const char *s, size_t startpos, size_t length) |
JString | operator() (const JString &S, size_t startpos, size_t length) |
int | compare (const JString &right) const |
int | compare (const char *right) const |
int | compare (char right) const |
bool | operator< (const JString &right) const |
bool | operator< (const char *right) const |
bool | operator< (char right) const |
bool | operator> (const JString &right) const |
bool | operator> (const char *right) const |
bool | operator> (char right) const |
bool | operator<= (const JString &right) const |
bool | operator<= (const char *right) const |
bool | operator<= (char right) const |
bool | operator>= (const JString &right) const |
bool | operator>= (const char *right) const |
bool | operator>= (char right) const |
bool | operator== (const char *right) const |
bool | operator== (const JString &right) const |
bool | operator== (char right) const |
bool | operator!= (const char *right) const |
bool | operator!= (const JString &right) const |
bool | operator!= (char right) const |
operator char * () const | |
operator int () const | |
operator long () const | |
operator double () const | |
int | parseInt () const |
long | parseLong () const |
double | parseDouble () const |
char * | parseString () const |
char * | toString () const |
char * | getText () const |
void | CopyBeforeWrite () |
const JString & | operator= (const JString &s) |
const JString & | operator= (const char *s) |
const JString & | operator= (char ch) |
void | Append (const char *s, size_t Len) |
const JString & | operator+= (const JString &s) |
const JString & | operator+= (const char *s) |
const JString & | operator+= (char ch) |
void | MakeUpper () |
void | MakeLower () |
void | MakeReverse () |
void | UCase () |
void | LCase () |
void | Reverse () |
char * | getLower () |
char * | getUpper () |
char * | getReverse () |
JString & | setLower () |
JString & | setUpper () |
JString & | setReverse () |
JString | JString::Reverse (JString &S) |
JString | JString::UCase (JString &S) |
JString | JString::LCase (JString &S) |
long | Find (char ch) const |
long | ReverseFind (char ch) const |
long | Find (const char *s) const |
long | Find (const char *s, size_t offset) const |
JString | getFind (const char *s) |
JString | getFind (const char *s, size_t offset) |
char * | getConcatenate (const char *src) |
JString & | setConcatenate (const char *src) |
char * | getConcatenateWithLimits (const char *src, size_t n) |
JString & | setConcatenateWithLimits (const char *src, size_t n) |
long | firstCharFound (const int c) |
long | lastCharFound (const int c) |
int | compare (const char *src) |
int | compareIgnoreCase (const char *src) |
int | compareUsingLocaleCollate (const char *src) |
int | compareWithLimits (const char *src, size_t n) |
int | compareIgnoreCaseWithLimits (const char *src, size_t n) |
char * | copy () |
JString | getCopy () |
char * | copyWithLimits (size_t n) |
JString | getCopyWithLimits (size_t n) |
size_t | getNbCharNotFromCharSet (const char *charset) |
JString | getDate () |
JString & | setDate () |
JString & | setTime (size_t maxSize, const char *format, const struct tm *currTime) |
char * | duplicate () |
JString | duplicateString () |
JString | getError (int errnb) |
JString & | setError (int errnb) |
JString | getTimeFormat (size_t maxSize, const char *format, const struct tm *currTime) |
JString & | setTimeFormat (size_t maxSize, const char *format, const struct tm *currTime) |
JString | getTime () |
JString & | setTime () |
char * | getFillWithChar (const int ch) |
JString & | setFillWithChar (const int ch) |
char * | getFillWithChar (const int ch, size_t n) |
JString & | setFillWithChar (const int ch, size_t n) |
long | locateCharSet (const char *charset) |
long | locateCharSet (const char *charset, size_t startAt) |
size_t | findCharset (const char *charset) |
size_t | findCharset (const char *charset, size_t startAt) |
long | findString (const char *s) |
long | findString (const char *s, size_t startAt) |
double | toDouble () |
double | toDouble (size_t startAt) |
long | toLong () |
long | toLong (size_t base) |
long | toLong (size_t startAt, size_t base) |
ULONG | toULONG () |
ULONG | toULONG (size_t base) |
ULONG | toULONG (size_t startAt, size_t base) |
char * | getTransform (const char *src, size_t n) |
JString & | setTransform (const char *src, size_t n) |
char * | getTokens (const char *delims, size_t startAt) |
JString | getStringTokens (const char *delims, size_t startAt) |
char * | getMoreTokens (const char *delims) |
JString | getMoreStringTokens (const char *delims) |
void | AllocBuffer (size_t nLen) |
void | AllocBeforeWrite (size_t nLen) |
char * | LockBuffer () |
void | UnlockBuffer () |
void | FreeExtra () |
char * | GetBuffer (size_t minBufferLength) |
void | ReleaseBuffer () |
JString () | |
JString (const char *s) | |
JString (const char *s, size_t nBuffer) | |
JString (const JString &src) | |
JString (char ch) | |
JString (char ch, size_t nRepeat) | |
JString (JStringData *sd) | |
virtual | ~JString () |
bool | OK () const |
bool | isEmpty () const |
bool | isFilled () const |
void | Clear () |
void | Empty () |
void | FillString (char ch) |
void | FillBuffer (char ch) |
__inline void | Display () const |
__inline size_t | length () |
__inline size_t | getLength () |
__inline size_t | getAllocLength () const |
__inline size_t | getBufferSize () const |
__inline int | getLockNb () const |
__inline bool | isLock () const |
__inline bool | isUnlock () const |
JString | at (size_t startpos) |
JString | at (size_t startpos, size_t length) |
JString | at (const char *s, size_t startpos) |
JString | at (const char *s, size_t startpos, size_t length) |
__inline JString | at () |
__inline JString | at (const char *s) |
__inline JString | at (const JString &S) |
__inline JString | at (const JString &S, size_t startpos) |
__inline JString | at (const JString &S, size_t startpos, size_t length) |
JString & | setAt (size_t nIndex, char ch) |
__inline char | charAt () |
__inline char | charAt (const char *s) |
__inline char | charAt (const JString &S) |
__inline const JString & | modifyAt (const JString &S) |
__inline const JString & | modifyAt (const JString &S, size_t offset) |
__inline const JString & | modifyAt (const JString &S, size_t offset, size_t length) |
__inline const JString & | modifyAt (const char *s) |
__inline const JString & | modifyAt (const char *s, size_t offset) |
__inline const JString & | modifyAt (const char *s, size_t offset, size_t length) |
__inline char | getAt (size_t nIndex) const |
__inline char | operator[] (long nIndex) const |
__inline JString | right (size_t length) |
__inline JString | left (size_t length) |
__inline JString | mid (const char *s, size_t startpos, size_t length) |
__inline JString | mid (const JString &S, size_t startpos, size_t length) |
__inline JString | after (const char *s) |
__inline JString | after (const char *s, size_t startpos) |
__inline JString | after (const char *s, size_t startpos, size_t length) |
__inline JString | before (const char *s) |
__inline JString | before (const char *s, size_t startpos) |
__inline JString | beforeStr (const char *s, size_t startpos) |
__inline JString | before (const char *s, size_t startpos, size_t length) |
JString | ltrim (char ch) const |
JString | rtrim (char ch) const |
JString | trim (char ch) const |
JString | trimCharset (const char *charset) const |
JString | keepCharset (const char *charset) const |
__inline JString | operator() (size_t startpos) |
__inline JString | operator() (size_t startpos, size_t length) |
__inline JString | operator() (const char *s) |
__inline JString | operator() (const JString &S) |
__inline JString | operator() (const char *s, size_t startpos) |
__inline JString | operator() (const JString &S, size_t startpos) |
__inline JString | operator() (const char *s, size_t startpos, size_t length) |
__inline JString | operator() (const JString &S, size_t startpos, size_t length) |
__inline int | compare (const JString &right) const |
__inline int | compare (const char *right) const |
int | compare (char right) const |
__inline bool | operator< (const JString &right) const |
__inline bool | operator< (const char *right) const |
__inline bool | operator< (char right) const |
__inline bool | operator> (const JString &right) const |
__inline bool | operator> (const char *right) const |
__inline bool | operator> (char right) const |
__inline bool | operator<= (const JString &right) const |
__inline bool | operator<= (const char *right) const |
__inline bool | operator<= (char right) const |
__inline bool | operator>= (const JString &right) const |
__inline bool | operator>= (const char *right) const |
__inline bool | operator>= (char right) const |
__inline bool | operator== (const char *right) const |
__inline bool | operator== (const JString &right) const |
__inline bool | operator== (char right) const |
__inline bool | operator!= (const char *right) const |
__inline bool | operator!= (const JString &right) const |
__inline bool | operator!= (char right) const |
__inline | operator char * () const |
__inline | operator int () const |
__inline | operator long () const |
__inline | operator double () const |
__inline int | parseInt () const |
__inline long | parseLong () const |
__inline double | parseDouble () const |
char * | parseString () const |
__inline char * | toString () const |
__inline char * | getText () const |
void | CopyBeforeWrite () |
const JString & | operator= (const JString &s) |
const JString & | operator= (const char *s) |
const JString & | operator= (char ch) |
void | Append (const char *s, size_t Len) |
const JString & | operator+= (const JString &s) |
const JString & | operator+= (const char *s) |
const JString & | operator+= (char ch) |
void | MakeUpper () |
void | MakeLower () |
void | MakeReverse () |
__inline void | UCase () |
__inline void | LCase () |
__inline void | Reverse () |
char * | getLower () |
char * | getUpper () |
char * | getReverse () |
__inline JString & | setLower () |
__inline JString & | setUpper () |
__inline JString & | setReverse () |
long | Find (char ch) const |
long | ReverseFind (char ch) const |
__inline long | Find (const char *s) const |
long | Find (const char *s, size_t offset) const |
__inline JString | getFind (const char *s) |
JString | getFind (const char *s, size_t offset) |
__inline long | Find (const JString &S) const |
__inline long | Find (const JString &S, size_t offset) const |
char * | getConcatenate (const char *src) |
JString & | setConcatenate (const char *src) |
char * | getConcatenateWithLimits (const char *src, size_t n) |
JString & | setConcatenateWithLimits (const char *src, size_t n) |
long | firstCharFound (const int c) |
long | lastCharFound (const int c) |
int | compareIgnoreCase (const char *src) |
int | compareUsingLocaleCollate (const char *src) |
int | compareWithLimits (const char *src, size_t n) |
int | compareIgnoreCaseWithLimits (const char *src, size_t n) |
char * | copy () |
JString | getCopy () |
char * | copyWithLimits (size_t n) |
JString | getCopyWithLimits (size_t n) |
size_t | getNbCharNotFromCharSet (const char *charset) |
JString | getDate () |
JString & | setDate () |
JString & | setTime (size_t maxSize, const char *format, const struct tm *currTime) |
char * | duplicate () |
JString | duplicateString () |
JString | getError (int errnb) |
JString & | setError (int errnb) |
JString | getTimeFormat (size_t maxSize, const char *format, const struct tm *currTime) |
JString & | setTimeFormat (size_t maxSize, const char *format, const struct tm *currTime) |
JString | getTime () |
JString & | setTime () |
char * | getFillWithChar (const int ch) |
JString & | setFillWithChar (const int ch) |
char * | getFillWithChar (const int ch, size_t n) |
JString & | setFillWithChar (const int ch, size_t n) |
long | locateCharSet (const char *charset) |
long | locateCharSet (const char *charset, size_t startAt) |
size_t | findCharset (const char *charset) |
size_t | findCharset (const char *charset, size_t startAt) |
long | findString (const char *s) |
long | findString (const char *s, size_t startAt) |
double | toDouble () |
double | toDouble (size_t startAt) |
long | toLong () |
long | toLong (size_t base) |
long | toLong (size_t startAt, size_t base) |
ULONG | toULONG () |
ULONG | toULONG (size_t base) |
ULONG | toULONG (size_t startAt, size_t base) |
char * | getTransform (const char *src, size_t n) |
JString & | setTransform (const char *src, size_t n) |
char * | getTokens (const char *delims, size_t startAt) |
JString | getStringTokens (const char *delims, size_t startAt) |
char * | getMoreTokens (const char *delims) |
JString | getMoreStringTokens (const char *delims) |
__inline void | AllocBuffer (size_t nLen) |
__inline void | AllocBeforeWrite (size_t nLen) |
__inline char * | LockBuffer () |
__inline void | UnlockBuffer () |
void | FreeExtra () |
char * | GetBuffer (size_t minBufferLength) |
__inline void | ReleaseBuffer () |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5, const JString &S6,\const JString &S7, const JString &S8) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5, const JString &S6,\const JString &S7) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5, const JString &S6) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3,\const JString &S4, const JString &S5) |
const JString & | Add (const JString &S1, const JString &S2,\const JString &S3, const JString &S4) |
const JString & | Add (const JString &S1, const JString &S2, const JString &S3) |
__inline bool | contains (const JString &S, size_t offset) const |
__inline bool | contains (const char *s, size_t offset) const |
__inline bool | contains (char c, size_t offset) const |
__inline bool | contains (const JString &S) const |
__inline bool | contains (const char *s) const |
__inline bool | contains (char c) const |
__inline const JString & | append (const JString &S) |
__inline const JString & | prepend (const JString &S) |
__inline const JString & | append (const char *s) |
__inline const JString & | prepend (const char *s) |
__inline const JString & | append (char c) |
__inline const JString & | prepend (char c) |
Private Methods | |
__inline void | Add (const char *s1, const char *s2, ULONG Len1, ULONG Len2) |
void | Add (const char *s1, const char *s2, ULONG Len1, ULONG Len2, ULONG LenExtra) |
void | Add (const char *s1=NULL, ULONG Len1=0,\const char *s2=NULL, ULONG Len2=0,\const char *s3=NULL, ULONG Len3=0,\const char *s4=NULL, ULONG Len4=0,\const char *s5=NULL, ULONG Len5=0,\const char *s6=NULL, ULONG Len6=0,\const char *s7=NULL, ULONG Len7=0,\const char *s8=NULL, ULONG Len8=0,\const char *s9=NULL, ULONG Len9=0,\ULONG LenExtra=0) |
void | Add (const char *s1, const char *s2, size_t Len1, size_t Len2) |
__inline void | Add (const char *s1, const char *s2, size_t Len1, size_t Len2) |
void | Add (const char *s1, const char *s2, size_t Len1, size_t Len2, size_t LenExtra) |
void | Add (const char *s1=NULL, size_t Len1=0,\const char *s2=NULL, size_t Len2=0,\const char *s3=NULL, size_t Len3=0,\const char *s4=NULL, size_t Len4=0,\const char *s5=NULL, size_t Len5=0,\const char *s6=NULL, size_t Len6=0,\const char *s7=NULL, size_t Len7=0,\const char *s8=NULL, size_t Len8=0,\const char *s9=NULL, size_t Len9=0,\size_t LenExtra=0) |
Private Attributes | |
JStringData * | pData |
friend | JSubString |
JStringData * | pData |
JStringData * | pData |
Friends | |
ostream & | operator<< (ostream &os, const JString &s) |
JString | operator+ (const JString &s1, const JString &s2) |
JString | operator+ (const JString &s1, const char *s2) |
JString | operator+ (const char *s1, const JString &s2) |
JString | operator+ (const JString &s, char ch) |
JString | operator+ (char ch, const JString &s) |
ostream & | operator<< (ostream &os, const JString &s) |
JString | operator+ (const JString &s1, const JString &s2) |
JString | operator+ (const JString &s1, const char *s2) |
JString | operator+ (const char *s1, const JString &s2) |
JString | operator+ (const JString &s, char ch) |
JString | operator+ (char ch, const JString &s) |
ostream & | operator<< (ostream &os, const JString &s) |
JString | operator+ (const JString &s1, const JString &s2) |
JString | operator+ (const JString &s1, const char *s2) |
JString | operator+ (const char *s1, const JString &s2) |
JString | operator+ (const JString &s, char ch) |
JString | operator+ (char ch, const JString &s) |
|
Constructor, Copy Constructor and Destructor //////////////////////////////////////////////////////////////////////////// Defined in: StrBuild.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 10 of file StrBuild.cpp. Referenced by at(), duplicateString(), getCopy(), getCopyWithLimits(), getDate(), getError(), getFind(), getMoreStringTokens(), getStringTokens(), getTime(), getTimeFormat(), keepCharset(), ltrim(), rtrim(), trim(), and trimCharset().
00011 : pData( strNull ) { } |
|
Definition at line 21 of file StrBuild.cpp. |
|
Definition at line 44 of file StrBuild.cpp. 00045 { 00046 if ( nBuffer < 1 ) { 00047 pData = strNull; 00048 } else { 00049 pData = new JStringData( s, nBuffer ); 00050 } 00051 } |
|
Definition at line 61 of file StrBuild.cpp. |
|
Definition at line 53 of file StrBuild.cpp. 00054 : pData( new JStringData( ch, 1 ) ) { } |
|
Definition at line 56 of file StrBuild.cpp. 00057 : pData( new JStringData( ch, nRepeat ) ) { } |
|
Definition at line 13 of file StrBuild.cpp. 00014 : pData( sd ) 00015 { 00016 if ( sd == NULL ) { 00017 pData = strNull; 00018 } 00019 } |
|
Definition at line 68 of file StrBuild.cpp. |
|
Constructor, Copy Constructor and Destructor //////////////////////////////////////////////////////////////////////////// Defined in: StrBuild.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
|
|
Definition at line 39 of file StrBuild.cpp. |
|
|
|
|
|
Definition at line 45 of file StrBuild.cpp. 00046 : pData( new JStringData( ch, nRepeat ) ) { } |
|
|
|
|
|
Constructor, Copy Constructor and Destructor //////////////////////////////////////////////////////////////////////////// Defined in: StrBuild.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Extra stuff for compatibility with the widely used Linux String class ///////////////////////////////////////////////////////////////////////////// Defined in: StrLinux.cpp (NOT FULLY SUPPORTED YET) /////////////////////////////////////////////////////////////////////////////.
Definition at line 8 of file StrLinux.cpp. 00018 { 00019 // -- Modify THIS JString Object. 00020 00021 // Take care of NULL JString parameters, if any. 00022 if ( s1 == NULL || *s1 == '\0' ) { Len1 = 0; } 00023 if ( s2 == NULL || *s2 == '\0' ) { Len2 = 0; } 00024 if ( s3 == NULL || *s3 == '\0' ) { Len3 = 0; } 00025 if ( s4 == NULL || *s4 == '\0' ) { Len4 = 0; } 00026 if ( s5 == NULL || *s5 == '\0' ) { Len5 = 0; } 00027 if ( s6 == NULL || *s6 == '\0' ) { Len6 = 0; } 00028 if ( s7 == NULL || *s7 == '\0' ) { Len7 = 0; } 00029 if ( s8 == NULL || *s8 == '\0' ) { Len8 = 0; } 00030 if ( s9 == NULL || *s9 == '\0' ) { Len9 = 0; } 00031 00032 size_t newLen = Len1 + Len2 + Len3 + Len4 + Len5 + Len6 + Len7 + Len8 + Len9; 00033 00034 // Don't delete now, since memcpy will occur 00035 // in the case we delete ourself before copy ! 00036 JStringData* sd = pData; 00037 00038 if ( newLen > 0 ) { 00039 00040 pData = new JStringData( newLen + LenExtra ); 00041 00042 size_t pos = 0; 00043 00044 if ( Len1 > 0 ) { memcpy( pData->data + pos, s1, Len1 ); pos += Len1; } 00045 if ( Len2 > 0 ) { memcpy( pData->data + pos, s2, Len2 ); pos += Len2; } 00046 if ( Len3 > 0 ) { memcpy( pData->data + pos, s3, Len3 ); pos += Len3; } 00047 if ( Len4 > 0 ) { memcpy( pData->data + pos, s4, Len4 ); pos += Len4; } 00048 if ( Len5 > 0 ) { memcpy( pData->data + pos, s5, Len5 ); pos += Len5; } 00049 if ( Len6 > 0 ) { memcpy( pData->data + pos, s6, Len6 ); pos += Len6; } 00050 if ( Len7 > 0 ) { memcpy( pData->data + pos, s7, Len7 ); pos += Len7; } 00051 if ( Len8 > 0 ) { memcpy( pData->data + pos, s8, Len8 ); pos += Len8; } 00052 if ( Len9 > 0 ) { memcpy( pData->data + pos, s9, Len9 ); pos += Len9; } 00053 00054 pData->length = newLen; 00055 pData->data[ newLen ] = '\0'; 00056 00057 /* 00058 This Null ending is needed since the last string 00059 might not be ended by '\0' or in case the copy 00060 doesn't go up to Zero. To be checked! 00061 00062 i.e. If we pass a 'char c' as &c instead of a char* s = { c, 0 } 00063 */ 00064 00065 } else { // strNull 00066 pData = strNull; 00067 } 00068 00069 sd->Dec(); // Now you can suicide, we don't care. 00070 } |
|
Concatenation of JStrings /// "operator+" is done as friend functions for simplicity /// There are five variants: /// JString + JString /// JString + char /// JString + const char* /// char + JString /// const char* + JString /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.
Definition at line 53 of file StrAdd.cpp. 00055 { 00056 // -- Modify THIS JString Object. 00057 00058 // Take care of NULL JString parameters, if any. 00059 if ( s1 == NULL || *s2 == (char)NULL ) { Len1 = 0; } 00060 if ( s2 == NULL || *s2 == (char)NULL ) { Len2 = 0; } 00061 00062 size_t newLen = Len1 + Len2; 00063 00064 // Don't delete now, since memcpy will occur 00065 // in the case we delete ourself before copy ! 00066 JStringData* sd = pData; 00067 00068 pData = new JStringData( newLen + LenExtra ); 00069 00070 // Will fill this String with '\0' 00071 00072 if ( Len1 > 0 ) { memcpy( pData->data, s1, Len1 ); } 00073 if ( Len2 > 0 ) { memcpy( pData->data + Len1, s2, Len2 ); } 00074 00075 pData->length = newLen; 00076 pData->data[ newLen ] = '\0'; 00077 00078 /* 00079 This Null ending is needed since the last string 00080 might not be ended by '\0' or in case the copy 00081 doesn't go up to Zero. To be checked! 00082 */ 00083 00084 sd->Dec(); // Now you can suicide, we don't care. 00085 } |
|
JString Addition //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
JString Addition //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 43 of file StrAdd.inl. 00045 { 00046 Add( s1, s2, Len1, Len2, 0 ); 00047 } |
|
Definition at line 131 of file StrLinux.cpp. |
|
|
|
|
|
Definition at line 99 of file StrLinux.cpp. 00101 { 00102 Add( pData->data, pData->length, S1.pData->data, S1.pData->length, \ 00103 S2.pData->data, S2.pData->length, \ 00104 S3.pData->data, S3.pData->length, S4.pData->data, S4.pData->length, \ 00105 S5.pData->data, S5.pData->length, S6.pData->data, S6.pData->length ); 00106 00107 return *this; 00108 } |
|
Definition at line 86 of file StrLinux.cpp. 00089 { 00090 Add( pData->data, pData->length, S1.pData->data, S1.pData->length, \ 00091 S2.pData->data, S2.pData->length, \ 00092 S3.pData->data, S3.pData->length, S4.pData->data, S4.pData->length, \ 00093 S5.pData->data, S5.pData->length, S6.pData->data, S6.pData->length, \ 00094 S7.pData->data, S7.pData->length ); 00095 00096 return *this; 00097 } |
|
Definition at line 72 of file StrLinux.cpp. 00075 { 00076 Add( pData->data, pData->length, S1.pData->data, S1.pData->length, \ 00077 S2.pData->data, S2.pData->length, \ 00078 S3.pData->data, S3.pData->length, S4.pData->data, S4.pData->length, \ 00079 S5.pData->data, S5.pData->length, S6.pData->data, S6.pData->length, \ 00080 S7.pData->data, S7.pData->length, S8.pData->data, S8.pData->length, 0 ); 00081 00082 return *this; 00083 } |
|
Extra stuff for compatibility with the widely used Linux String class ///////////////////////////////////////////////////////////////////////////// Defined in: StrLinux.cpp (NOT FULLY SUPPORTED YET) /////////////////////////////////////////////////////////////////////////////.
Definition at line 8 of file StrLinux.cpp. 00018 { 00019 // -- Modify THIS JString Object. 00020 00021 // Take care of NULL JString parameters, if any. 00022 if ( s1 == NULL || *s1 == '\0' ) { Len1 = 0; } 00023 if ( s2 == NULL || *s2 == '\0' ) { Len2 = 0; } 00024 if ( s3 == NULL || *s3 == '\0' ) { Len3 = 0; } 00025 if ( s4 == NULL || *s4 == '\0' ) { Len4 = 0; } 00026 if ( s5 == NULL || *s5 == '\0' ) { Len5 = 0; } 00027 if ( s6 == NULL || *s6 == '\0' ) { Len6 = 0; } 00028 if ( s7 == NULL || *s7 == '\0' ) { Len7 = 0; } 00029 if ( s8 == NULL || *s8 == '\0' ) { Len8 = 0; } 00030 if ( s9 == NULL || *s9 == '\0' ) { Len9 = 0; } 00031 00032 ULONG newLen = Len1 + Len2 + Len3 + Len4 + Len5 + Len6 + Len7 + Len8 + Len9; 00033 00034 // Don't delete now, since memcpy will occur 00035 // in the case we delete ourself before copy ! 00036 JStringData* sd = pData; 00037 00038 if ( newLen > 0 ) { 00039 00040 pData = new JStringData( newLen + LenExtra ); 00041 00042 ULONG pos = 0; 00043 00044 if ( Len1 > 0 ) { memcpy( pData->data + pos, s1, Len1 ); pos += Len1; } 00045 if ( Len2 > 0 ) { memcpy( pData->data + pos, s2, Len2 ); pos += Len2; } 00046 if ( Len3 > 0 ) { memcpy( pData->data + pos, s3, Len3 ); pos += Len3; } 00047 if ( Len4 > 0 ) { memcpy( pData->data + pos, s4, Len4 ); pos += Len4; } 00048 if ( Len5 > 0 ) { memcpy( pData->data + pos, s5, Len5 ); pos += Len5; } 00049 if ( Len6 > 0 ) { memcpy( pData->data + pos, s6, Len6 ); pos += Len6; } 00050 if ( Len7 > 0 ) { memcpy( pData->data + pos, s7, Len7 ); pos += Len7; } 00051 if ( Len8 > 0 ) { memcpy( pData->data + pos, s8, Len8 ); pos += Len8; } 00052 if ( Len9 > 0 ) { memcpy( pData->data + pos, s9, Len9 ); pos += Len9; } 00053 00054 pData->length = newLen; 00055 pData->data[ newLen ] = '\0'; 00056 00057 /* 00058 This Null ending is needed since the last string 00059 might not be ended by '\0' or in case the copy 00060 doesn't go up to Zero. To be checked! 00061 00062 i.e. If we pass a 'char c' as &c instead of a char* s = { c, 0 } 00063 */ 00064 00065 } else { // strNull 00066 pData = strNull; 00067 } 00068 00069 sd->Dec(); // Now you can suicide, we don't care. 00070 } |
|
Concatenation of JStrings /// "operator+" is done as friend functions for simplicity /// There are five variants: /// JString + JString /// JString + char /// JString + const char* /// char + JString /// const char* + JString /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.
Definition at line 53 of file StrAdd.cpp. 00055 { 00056 // -- Modify THIS JString Object. 00057 00058 // Take care of NULL JString parameters, if any. 00059 if ( s1 == NULL || *s2 == (char)NULL ) { Len1 = 0; } 00060 if ( s2 == NULL || *s2 == (char)NULL ) { Len2 = 0; } 00061 00062 ULONG newLen = Len1 + Len2; 00063 00064 00065 // Don't delete now, since memcpy will occur 00066 // in the case we delete ourself before copy ! 00067 JStringData* sd = pData; 00068 00069 if ( newLen > 0 ) { 00070 pData = new JStringData( newLen + LenExtra ); 00071 00072 if ( Len1 > 0 ) { memcpy( pData->data, s1, Len1); } 00073 if ( Len2 > 0 ) { memcpy( pData->data + Len1, s2, Len2); } 00074 00075 pData->length = newLen; 00076 pData->data[ newLen ] = '\0'; 00077 00078 /* 00079 This Null ending is needed since the last string 00080 might not be ended by '\0' or in case the copy 00081 doesn't go up to Zero. To be checked! 00082 */ 00083 00084 } else { // strNull 00085 pData = strNull; 00086 } 00087 00088 sd->Dec(); // Now you can suicide, we don't care. 00089 } |
|
JString Addition //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 43 of file StrAdd.inl. Referenced by Add(), Append(), append(), cat(), operator+(), and prepend().
00045 { 00046 Add( s1, s2, Len1, Len2, 0 ); 00047 } |
|
|
|
Definition at line 42 of file StrExtra.cpp. 00042 { 00043 if ( pData == strNull || pData->nbRefs > 1 || Len > pData->bufferSize ) { 00044 pData->Dec(); 00045 pData = new JStringData( Len ); 00046 } 00047 } |
|
Definition at line 42 of file StrExtra.cpp. 00042 { 00043 if ( pData == strNull || pData->nbRefs > 1 || Len > pData->bufferSize ) { 00044 pData->Dec(); 00045 pData = new JStringData( Len ); 00046 } 00047 } |
|
Unlock/Lock Buffer turn Ref counting on/off (MFC JString compatible) /// AND everything else related to Buffer and Allocation... //////////////////////////////////////////////////////////////////////////// Defined in: StrExtra.cpp (NOT FULLY SUPPORTED YET) ////////////////////////////////////////////////////////////////////////////.
|
|
Unlock/Lock Buffer turn Ref counting on/off (MFC JString compatible) /// AND everything else related to Buffer and Allocation... //////////////////////////////////////////////////////////////////////////// Defined in: StrExtra.cpp (NOT FULLY SUPPORTED YET) ////////////////////////////////////////////////////////////////////////////. I didn't know the term "external usage". What does that mean ? That users of the class can use these methods but implementer are forbidden to ? No, it comes from CString, it means that users are able to screw up the char* as they want. "External usage of internal privates..." Definition at line 37 of file StrExtra.cpp. 00037 { 00038 pData->Dec(); 00039 pData = new JStringData( Len ); 00040 } |
|
Unlock/Lock Buffer turn Ref counting on/off (MFC JString compatible) /// AND everything else related to Buffer and Allocation... //////////////////////////////////////////////////////////////////////////// Defined in: StrExtra.cpp (NOT FULLY SUPPORTED YET) ////////////////////////////////////////////////////////////////////////////. I didn't know the term "external usage". What does that mean ? That users of the class can use these methods but implementer are forbidden to ? No, it comes from CString, it means that users are able to screw up the char* as they want. "External usage of internal privates..." Definition at line 37 of file StrExtra.cpp. 00037 { 00038 pData->Dec(); 00039 pData = new JStringData( Len ); 00040 } |
|
JString Concatenation //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
JString Concatenation //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 96 of file StrAdd.cpp. 00096 { 00097 00098 if ( s == NULL || *s == (char)NULL ) return; // Nothing to do, so Return. 00099 00100 size_t newSize = pData->length + Len; 00101 00102 if ( pData == strNull || pData->nbRefs > 1 || newSize > pData->bufferSize ) 00103 { 00104 00105 //////////////////////////////////////////////////////////////////////////// 00106 /// If the buffer is too small, or if we have a width mismatch, /// 00107 /// or if THIS points to strNull then we must allocate a new buffer /// 00108 /// (Worst Case) /// 00109 //////////////////////////////////////////////////////////////////////////// 00110 Add(pData->data, s, pData->length, Len ); // Add() call Dec() already ! 00111 00112 } else { 00113 00114 //////////////////////////////////////////////////////////////////////////// 00115 /// If the buffer is big enough, append the new JString to the buffer. /// 00116 /// (Best Case) /// 00117 //////////////////////////////////////////////////////////////////////////// 00118 memcpy( (pData->data + pData->length), s, Len); 00119 00120 assert( (pData->length + Len ) <= (pData->bufferSize) ); 00121 pData->length = newSize; 00122 pData->data[ pData->length ] = '\0'; 00123 } 00124 } |
|
JString Concatenation //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 100 of file StrAdd.cpp. Referenced by operator+=().
00100 { 00101 00102 if ( s == NULL || *s == (char)NULL ) return; // Nothing to do, so Return. 00103 00104 ULONG newSize = pData->length + Len; 00105 00106 if ( pData == strNull || pData->nbRefs > 1 || newSize > pData->bufferSize ) 00107 { 00108 00109 //////////////////////////////////////////////////////////////////////////// 00110 /// If the buffer is too small, or if we have a width mismatch, /// 00111 /// or if THIS points to strNull then we must allocate a new buffer /// 00112 /// (Worst Case) /// 00113 //////////////////////////////////////////////////////////////////////////// 00114 Add(pData->data, s, pData->length, Len ); // Add() call Dec() already ! 00115 00116 } else { 00117 00118 //////////////////////////////////////////////////////////////////////////// 00119 /// If the buffer is big enough, append the new JString to the buffer. /// 00120 /// (Best Case) /// 00121 //////////////////////////////////////////////////////////////////////////// 00122 memcpy( (pData->data + pData->length), s, Len); 00123 00124 assert( (pData->length + Len ) <= (pData->bufferSize) ); 00125 pData->length = newSize; 00126 pData->data[ pData->length ] = '\0'; 00127 } 00128 } |
|
|
|
|
|
Definition at line 16 of file StrTools.cpp. |
|
JString Assignment //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
JString Assignment //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
JString Assignment //////////////////////////////////////////////////////////////////////////// Defined in: StrAdd.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 26 of file StrAdd.cpp. Referenced by MakeLower(), MakeReverse(), MakeUpper(), modifyAt(), and setAt().
00026 { 00027 if ( pData == strNull || pData->nbRefs > 1 || pData->lock != 0 ) { 00028 JStringData* sd = pData; 00029 pData = new JStringData( *sd ); 00030 sd->Dec(); 00031 } 00032 00033 #ifdef __J2K__DEBUG 00034 else { 00035 printf("Data is unique, so no copy was made !\n"); 00036 } 00037 #endif 00038 00039 } |
|
|
|
|
|
Definition at line 37 of file StrTools.inl. 00037 { 00038 cout << pData->data; 00039 } |
|
|
|
|
|
Definition at line 7 of file StrTools.cpp. |
|
|
|
|
|
Definition at line 45 of file StrTools.cpp. 00045 { 00046 register ULONG i = 0; 00047 if ( pData->bufferSize < 1 ) return; 00048 if ( pData->nbRefs == 1 && pData != strNull && pData->lock == 0 ) { 00049 for( ; i < pData->bufferSize; i++ ) { 00050 pData->data[i] = ch; 00051 } 00052 } else { 00053 JStringData* sd = pData; 00054 pData = new JStringData( ch, pData->bufferSize, pData->bufferSize ); 00055 sd->Dec(); 00056 } 00057 pData->length = pData->bufferSize; 00058 pData->data[pData->length] = '\0'; 00059 } |
|
|
|
|
|
Definition at line 26 of file StrTools.cpp. 00026 { 00027 register ULONG i = 0; 00028 if ( pData->length < 1 ) return; 00029 if ( pData->nbRefs == 1 && pData != strNull && pData->lock == 0 ) { 00030 for( ; i < pData->length; i++ ) { 00031 pData->data[i] = ch; 00032 } 00033 for( i = pData->length; i <= pData->bufferSize; i++ ) { 00034 pData->data[i] = '\0'; 00035 } 00036 } else { 00037 ULONG nRepeat = pData->length; 00038 JStringData* sd = pData; 00039 pData = new JStringData(ch, pData->length, pData->bufferSize ); 00040 sd->Dec(); 00041 } 00042 pData->data[pData->length] = '\0'; 00043 } |
|
Definition at line 17 of file StrFind.inl. 00018 { 00019 return Find( S.parseString(), sz ); 00020 } |
|
|
|
|
|
|
|
Search/Find/ReverseFind function (QuickBasic Compatible) //////////////////////////////////////////////////////////////////////////// Defined in: StrFind.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Definition at line 12 of file StrFind.cpp. |
|
|
|
Search/Find/ReverseFind function (QuickBasic Compatible) //////////////////////////////////////////////////////////////////////////// Defined in: StrFind.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Definition at line 17 of file StrFind.inl. 00018 { 00019 return Find( S.parseString(), sz ); 00020 } |
|
Definition at line 12 of file StrFind.inl. 00013 { 00014 return Find( S.parseString(), 0 ); 00015 } |
|
Definition at line 12 of file StrFind.cpp. |
|
Definition at line 41 of file StrFind.inl. |
|
Search/Find/ReverseFind function (QuickBasic Compatible) //////////////////////////////////////////////////////////////////////////// Defined in: StrFind.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 22 of file StrFind.inl. Referenced by Find(), after(), before(), beforeStr(), contains(), and modifyAt().
|
|
|
|
|
|
ANDREA ***************************************************. After calling ReleaseBuffer the string object is pointing to an istance of JStringData that has been destroyed. NO? Unless the user delete it ? I should check maybe for pData == NULL ? This means that when the string object will be destroyed too it will call Dec() on a dead object. This means undefined behaviour. hmmm. Definition at line 130 of file StrExtra.cpp. 00130 { 00131 if (pData == strNull ) return; 00132 if (pData->length <= 0 ) { 00133 pData->Dec(); 00134 pData = strNull; 00135 return; 00136 } 00137 00138 if (pData->length < pData->bufferSize) { 00139 JStringData* pOldData = pData; 00140 pData = new JStringData( pOldData->data, pOldData->length ); 00141 pOldData->Dec(); 00142 } 00143 } |
|
|
|
Definition at line 53 of file StrExtra.cpp. 00053 { 00054 00055 if (pData == strNull) { 00056 return ""; 00057 } 00058 00059 /** ANDREA *************************************************** 00060 00061 We are ignoring the minBuf parameter. Is this the intended 00062 behaviour ? This surprises me. It means that 00063 00064 char *b=s.GetBuffer(100); 00065 // Now i've a pointer to 100 chars (minimum) 00066 // or may be not if the string was initially empty. 00067 00068 If it's empty then you get nothing, maybe I could provide an empty bigger ?! 00069 00070 *************************************************************/ 00071 00072 if (pData->lock != 0) { // Already locked ! 00073 pData->lock++; 00074 return pData->data; 00075 } 00076 00077 /** ANDREA *************************************************** 00078 00079 Here we ignored the minBuf parameter. Is this correct ? 00080 This surprises me even more. 00081 00082 char *b=s.GetBuffer(100); 00083 // Now i've a pointer to 100 chars (minimum) 00084 // or may be less if someone got the buffer too 00085 // before me and asked for a smaller minimum size. 00086 00087 If it's lock it's lock. 00088 It's not expected behavior. 00089 00090 *************************************************************/ 00091 00092 if ( pData->nbRefs > 1 || minBuf > pData->bufferSize) { 00093 // We have to create a new buffer 00094 if ( minBuf < pData->length ) { 00095 minBuf = pData->length; 00096 } 00097 00098 JStringData* pOldData = pData; 00099 pData = new JStringData( pData->data, minBuf ); 00100 pOldData->Dec(); 00101 } 00102 00103 pData->lock = 1; 00104 00105 // return a pointer to the character storage for this JString 00106 return pData->data; 00107 } |
|
Definition at line 53 of file StrExtra.cpp. Referenced by LockBuffer().
00053 { 00054 00055 if (pData == strNull) { 00056 return ""; 00057 } 00058 00059 /** ANDREA *************************************************** 00060 00061 We are ignoring the minBuf parameter. Is this the intended 00062 behaviour ? This surprises me. It means that 00063 00064 char *b=s.GetBuffer(100); 00065 // Now i've a pointer to 100 chars (minimum) 00066 // or may be not if the string was initially empty. 00067 00068 If it's empty then you get nothing, maybe I could provide an empty bigger ?! 00069 00070 *************************************************************/ 00071 00072 if (pData->lock != 0) { // Already locked ! 00073 pData->lock++; 00074 return pData->data; 00075 } 00076 00077 /** ANDREA *************************************************** 00078 00079 Here we ignored the minBuf parameter. Is this correct ? 00080 This surprises me even more. 00081 00082 char *b=s.GetBuffer(100); 00083 // Now i've a pointer to 100 chars (minimum) 00084 // or may be less if someone got the buffer too 00085 // before me and asked for a smaller minimum size. 00086 00087 If it's lock it's lock. 00088 It's not expected behavior. 00089 00090 *************************************************************/ 00091 00092 if ( pData->nbRefs > 1 || minBuf > pData->bufferSize) { 00093 // We have to create a new buffer 00094 if ( minBuf < pData->length ) { 00095 minBuf = pData->length; 00096 } 00097 00098 JStringData* pOldData = pData; 00099 pData = new JStringData( pData->data, minBuf ); 00100 pOldData->Dec(); 00101 } 00102 00103 pData->lock = 1; 00104 00105 // return a pointer to the character storage for this JString 00106 return pData->data; 00107 } |
|
Definition at line 271 of file String.hpp. |
|
Definition at line 259 of file String.hpp. 00259 { 00260 JString temp( S ); 00261 temp.MakeReverse(); 00262 return temp; 00263 } |
|
Definition at line 265 of file String.hpp. |
|
|
|
|
|
Definition at line 14 of file StrMorph.cpp. 00014 { 00015 MakeLower(); 00016 } |
|
|
|
|
|
Definition at line 145 of file StrExtra.cpp. 00145 { 00146 return GetBuffer( 0 ); 00147 } |
|
|
|
|
|
Definition at line 27 of file StrMorph.cpp. Referenced by JString::LCase(), LCase(), LCase(), and setLower().
00027 { 00028 CopyBeforeWrite(); 00029 strlwr(pData->data); 00030 } |
|
|
|
|
|
Definition at line 32 of file StrMorph.cpp. Referenced by JString::Reverse(), Reverse(), Reverse(), and setReverse().
00032 { 00033 CopyBeforeWrite(); 00034 strrev(pData->data); 00035 } |
|
Upper/Lower/Reverse Conversion (QuickBasic Compatible) //////////////////////////////////////////////////////////////////////////// Defined in: StrTools.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Upper/Lower/Reverse Conversion (QuickBasic Compatible) //////////////////////////////////////////////////////////////////////////// Defined in: StrTools.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Upper/Lower/Reverse Conversion (QuickBasic Compatible) //////////////////////////////////////////////////////////////////////////// Defined in: StrTools.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 22 of file StrMorph.cpp. Referenced by JString::UCase(), UCase(), UCase(), and setUpper().
00022 { 00023 CopyBeforeWrite(); 00024 strupr(pData->data); 00025 } |
|
Simple Attributes & Operations... //////////////////////////////////////////////////////////////////////////// Defined in: StrTools.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Simple Attributes & Operations... //////////////////////////////////////////////////////////////////////////// Defined in: StrTools.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Simple Attributes & Operations... //////////////////////////////////////////////////////////////////////////// Defined in: StrTools.cpp ////////////////////////////////////////////////////////////////////////////. I can reassure you that your code is not boring at all. It's full of surprises... (it was a joke) Definition at line 71 of file StrTools.cpp. Referenced by SubString::OK().
00072 { 00073 if ( pData != NULL ) { 00074 if ( pData->length > pData->bufferSize ) { 00075 printf( "ERROR in JString: JString length > buffer" ); 00076 return FALSE; 00077 } 00078 if ( pData->data == "" ) { 00079 printf( "data = empty" ); 00080 } 00081 00082 if ( pData->data[ pData->length ] != 0 ) { 00083 printf( "ERROR in JString: JString not NULL terminated" ); 00084 return FALSE; 00085 } 00086 00087 if ( pData->data[ pData->bufferSize ] != 0 ) { 00088 printf( "ERROR in JString: JString Buffer not NULL terminated" ); 00089 return FALSE; 00090 } 00091 00092 if ( pData->length != strlen( pData->data ) ) { 00093 printf( "ERROR in JString: Length is not equal to strlen( data )" ); 00094 return FALSE; 00095 } 00096 00097 if ( pData->bufferSize < strlen( pData->data ) ) { 00098 printf( "ERROR in JString: Buffer Size is lower than strlen( data )" ); 00099 return FALSE; 00100 } 00101 } else { 00102 printf( "ERROR in JString: pData is NULL" ); 00103 return FALSE; 00104 } 00105 00106 #ifndef __J2K__QUIET 00107 printf("OK!\n"); 00108 #endif 00109 00110 return TRUE; 00111 } |
|
|
|
|
|
ANDREA ***************************************************. Here we ignored the minBuf parameter. Is this correct ? This surprises me even more. char *b=s.GetBuffer(100); Now i've a pointer to 100 chars (minimum) or may be less if someone got the buffer too before me and asked for a smaller minimum size. If it's lock it's lock. It's not expected behavior. Definition at line 109 of file StrExtra.cpp. Referenced by UnlockBuffer().
00109 { 00110 if (pData == strNull) return; 00111 pData->lock--; 00112 pData->Dec(); // Destroy the object, if NO Lock ! 00113 00114 /** ANDREA *************************************************** 00115 00116 After calling ReleaseBuffer the string object is pointing 00117 to an istance of JStringData that has been destroyed. 00118 00119 NO? Unless the user delete it ? 00120 I should check maybe for pData == NULL ? 00121 00122 This means that when the string object will be destroyed 00123 too it will call Dec() on a dead object. 00124 This means undefined behaviour. 00125 00126 hmmm. 00127 *************************************************************/ 00128 } |
|
|
|
|
|
Definition at line 18 of file StrMorph.cpp. 00018 { 00019 MakeReverse(); 00020 } |
|
|
|
|
|
Definition at line 31 of file StrFind.inl. |
|
|
|
|
|
Aliases.
Definition at line 10 of file StrMorph.cpp. 00010 { 00011 MakeUpper(); 00012 } |
|
|
|
|
|
Definition at line 149 of file StrExtra.cpp. 00149 { 00150 ReleaseBuffer(); // The object is Destroy, if NO Lock ! 00151 /** ANDREA *************************************************** 00152 00153 No... the JStringData object is destroyed; not the object. 00154 This generates a serious double-destroy problem or a may 00155 be more subtle memory overwrite: normally good debug memory 00156 handlers can detect a simple double destruction, but if the 00157 memory is reallocated to some other object then you're just 00158 going to access some raw memory considering it a JStringData 00159 object. Even worse there is an high probability that the 00160 memory area will be allocated to just another JStringData 00161 object with even more subtle long-term effects. 00162 00163 And your wonderful "safety checks" are probably going to 00164 further delay the discovery of such problems probably 00165 several millions instructions after this bug gave its bite. 00166 00167 But if you got your A+ in the meanwhile... 00168 00169 00170 Let me think about it again, it comes from CString ( MFC lib ) 00171 it not a safe feature, but I wanted to be compatible... hmmm. 00172 *************************************************************/ 00173 } |
|
Definition at line 164 of file StringAt.inl. |
|
Definition at line 153 of file StringAt.inl. |
|
|
|
|
|
|
|
Definition at line 142 of file StringAt.inl. |
|
|
|
|
|
|
|
Definition at line 206 of file StrLinux.cpp. |
|
Definition at line 187 of file StrLinux.cpp. |
|
Definition at line 175 of file StrLinux.cpp. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
At X do this... //////////////////////////////////////////////////////////////////////////// Defined in: JStringAt.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Definition at line 42 of file StringAt.inl. |
|
Definition at line 38 of file StringAt.inl. |
|
|
|
|
|
|
|
Definition at line 25 of file StringAt.cpp. 00025 { 00026 if ( (long)startpos == -1 ) return JString(); 00027 if ( (long)length == -1 ) length = pData->length; 00028 if ( startpos+length > pData->length ) return JString(); 00029 const char* r = pData->data + startpos; 00030 char* r2 = strstr( r, s ); 00031 00032 JStringData* sd = new JStringData( r2, length ); 00033 00034 /* 00035 char* c = new char[ length + 1 ]; 00036 memcpy( c, r2, length ); 00037 c[length] = '\0'; 00038 */ 00039 00040 return JString( sd ); 00041 } |
|
Definition at line 18 of file StringAt.cpp. |
|
Definition at line 43 of file StringAt.cpp. 00043 { 00044 if ( (long)startpos == -1 ) return JString(); 00045 if ( (long)length == -1 ) length = pData->length; 00046 if ( startpos > pData->length ) return JString(); 00047 const char* r = pData->data + startpos; 00048 00049 /* 00050 char* c = new char[ length + 1 ]; 00051 memcpy( c, r, length ); 00052 c[length] = '\0'; 00053 return JString( c ); 00054 */ 00055 00056 JStringData* sd = new JStringData( r, length ); 00057 return JString( sd ); 00058 00059 /** ANDREA *************************************************** 00060 00061 This is leaking memory. The temporary buffer you allocated 00062 will be abandoned on the free store after having been 00063 used to create the JString object. 00064 00065 What !? 00066 Oh I see ! =) 00067 00068 *************************************************************/ 00069 } |
|
At X do this... //////////////////////////////////////////////////////////////////////////// Defined in: JStringAt.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 11 of file StringAt.cpp. |
|
|
|
|
|
Definition at line 36 of file StringAt.inl. |
|
Definition at line 35 of file StringAt.inl. |
|
Definition at line 33 of file StringAt.inl. Referenced by after(), at(), before(), beforeStr(), charAt(), left(), mid(), operator()(), and right().
00033 { return JString( *this ); } // get a copy |
|
Definition at line 25 of file StringAt.cpp. 00025 { 00026 if ( (long)startpos == -1 ) return JString(); 00027 if ( (long)length == -1 ) length = pData->length; 00028 if ( startpos > pData->length ) return JString(); 00029 if ( length > pData->length ) return JString(); 00030 if ( startpos+length > pData->length ) return JString(); 00031 const char* r = pData->data + startpos; 00032 char* r2 = strstr( r, s ); 00033 00034 00035 // JStringData( char* s, ULONG nBuffer ) 00036 JStringData* sd = new JStringData( r2, length ); 00037 00038 return JString( sd ); 00039 } |
|
Definition at line 18 of file StringAt.cpp. |
|
Definition at line 41 of file StringAt.cpp. 00041 { 00042 if ( (long)startpos == -1 ) return JString(); 00043 if ( (long)length == -1 ) length = pData->length; 00044 if ( startpos > pData->length ) return JString(); 00045 const char* r = pData->data + startpos; 00046 00047 JStringData* sd = new JStringData( r, length ); 00048 return JString( sd ); 00049 00050 /** ANDREA *************************************************** 00051 00052 This is leaking memory. The temporary buffer you allocated 00053 will be abandoned on the free store after having been 00054 used to create the JString object. 00055 00056 What !? 00057 Oh I see ! =) 00058 I use JStringData to avoid that. 00059 00060 *************************************************************/ 00061 } |
|
At X do this... //////////////////////////////////////////////////////////////////////////// Defined in: JStringAt.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 11 of file StringAt.cpp. |
|
Definition at line 211 of file StringAt.inl. 00211 { 00212 if ( s == NULL || *s == '\0' ) return *this; 00213 long where = Find( s + startpos, (size_t)0 ); 00214 if ( where >= 0 ) 00215 { 00216 long ini = where - (long)length; 00217 if ( ini < 0 ) ini = 0; 00218 return at( (size_t)ini , (size_t)where ); 00219 } else { 00220 return *this; 00221 } 00222 } |
|
Definition at line 189 of file StringAt.inl. |
|
|
|
|
|
|
|
Definition at line 175 of file StringAt.inl. |
|
Definition at line 200 of file StringAt.inl. |
|
|
|
|
|
|
|
|
|
Definition at line 47 of file StringAt.inl. |
|
Definition at line 40 of file StringAt.inl. |
|
Definition at line 33 of file StringAt.inl. |
|
|
|
|
|
Compare utilities... //////////////////////////////////////////////////////////////////////////// Defined in: StrComp.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
|
|
|
|
|
|
Compare utilities... //////////////////////////////////////////////////////////////////////////// Defined in: StrComp.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Definition at line 55 of file StrANSI.cpp. 00055 { 00056 return strcmp( pData->data, src ); 00057 } |
|
Definition at line 8 of file StrComp.cpp. |
|
Definition at line 15 of file StrComp.inl. |
|
Compare utilities... //////////////////////////////////////////////////////////////////////////// Defined in: StrComp.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 10 of file StrComp.inl. Referenced by DBase::CompareID(), operator!=(), operator<(), operator<=(), operator==(), operator>(), and operator>=().
|
|
|
|
|
|
Definition at line 59 of file StrANSI.cpp. |
|
|
|
Definition at line 191 of file StrANSI.cpp. |
|
Definition at line 187 of file StrANSI.cpp. |
|
|
|
|
|
Definition at line 70 of file StrANSI.cpp. 00070 { 00071 return strcoll( pData->data, src ); // Useless, if extern "C" or "C++" 00072 } |
|
|
|
Definition at line 187 of file StrANSI.cpp. 00187 { 00188 return strncmp( pData->data, src, n ); 00189 } |
|
Definition at line 183 of file StrANSI.cpp. 00183 { 00184 return strncmp( pData->data, src, n ); 00185 } |
|
|
|
|
|
|
|
Definition at line 152 of file StrLinux.cpp. 00153 { 00154 return( Find( c, offset ) >= 0 ); 00155 } |
|
Definition at line 147 of file StrLinux.cpp. |
|
Definition at line 142 of file StrLinux.cpp. 00143 { 00144 return( Find( S, offset ) >= 0 ); 00145 } |
|
Definition at line 167 of file StrLinux.cpp. 00168 { 00169 return( Find( c, 0 ) >= 0 ); 00170 } |
|
Definition at line 162 of file StrLinux.cpp. |
|
Definition at line 157 of file StrLinux.cpp. 00158 { 00159 return( Find( S, 0 ) >= 0 ); 00160 } |
|
Definition at line 152 of file StrLinux.cpp. 00153 { 00154 return( Find( c, offset ) >= 0 ); 00155 } |
|
Definition at line 147 of file StrLinux.cpp. |
|
Definition at line 142 of file StrLinux.cpp. 00143 { 00144 return( Find( S, offset ) >= 0 ); 00145 } |
|
|
|
|
|
Definition at line 74 of file StrANSI.cpp. |
|
|
|
Definition at line 199 of file StrANSI.cpp. |
|
Definition at line 195 of file StrANSI.cpp. |
|
|
|
|
|
Definition at line 113 of file StrANSI.cpp. 00113 { 00114 return strdup( pData->data ); 00115 } |
|
|
|
|
|
Definition at line 117 of file StrANSI.cpp. |
|
|
|
|
|
Definition at line 256 of file StrANSI.cpp. |
|
|
|
Definition at line 252 of file StrANSI.cpp. |
|
Definition at line 247 of file StrANSI.cpp. 00247 { 00248 return findCharset( charset, 0 ); 00249 } |
|
|
|
|
|
Definition at line 267 of file StrANSI.cpp. |
|
|
|
Definition at line 263 of file StrANSI.cpp. |
|
Definition at line 258 of file StrANSI.cpp. 00258 { 00259 return findString( s, 0 ); 00260 } |
|
|
|
|
|
Definition at line 31 of file StrANSI.cpp. 00031 { 00032 if ( pData->data == NULL ) return (-1); 00033 // Direct (Forward search) 00034 char* where = strchr( pData->data, c ); 00035 if ( where == NULL ) return (-1); 00036 00037 // e.g. 0xfff10 -= 0xfff00 => position 0x10 00038 long w = (long)where; 00039 w -= (long)pData->data; 00040 return w; 00041 } |
|
|
|
|
|
Definition at line 29 of file StrTools.inl. 00029 { 00030 return pData->bufferSize; 00031 } |
|
|
|
Definition at line 24 of file StringAt.inl. |
|
Referenced by operator[]().
|
|
|
|
|
|
Definition at line 33 of file StrTools.inl. 00033 { 00034 return pData->bufferSize; 00035 } |
|
Every function str* from ANSI definition //////////////////////////////////////////////////////////////////////////// Defined in: StrANSI.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Every function str* from ANSI definition //////////////////////////////////////////////////////////////////////////// Defined in: StrANSI.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Every function str* from ANSI definition //////////////////////////////////////////////////////////////////////////// Defined in: StrANSI.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 7 of file StrANSI.cpp. |
|
|
|
Definition at line 166 of file StrANSI.cpp. |
|
Definition at line 162 of file StrANSI.cpp. |
|
|
|
|
|
Definition at line 79 of file StrANSI.cpp. 00079 { 00080 JStringData* sd = new JStringData( pData->length ); 00081 strcpy( sd->data, pData->data ); 00082 return JString( sd ); 00083 } |
|
|
|
Definition at line 204 of file StrANSI.cpp. 00204 { 00205 JStringData* sd = new JStringData( pData->length ); 00206 strncpy( sd->data, pData->data, n ); 00207 return JString( sd ); 00208 } |
|
Definition at line 200 of file StrANSI.cpp. 00200 { 00201 JStringData* sd = new JStringData( pData->length ); 00202 strncpy( sd->data, pData->data, n ); 00203 return JString( sd ); 00204 } |
|
|
|
|
|
Definition at line 89 of file StrANSI.cpp. 00089 { // MM/DD/YY format (not Y2K complient !) 00090 JStringData* sd = new JStringData( 9 ); 00091 _strdate( sd->data ); 00092 return JString( sd ); 00093 } |
|
|
|
|
|
Definition at line 121 of file StrANSI.cpp. 00121 { 00122 char* err = strerror( errnb ); 00123 return JString( err ); 00124 } |
|
|
|
|
|
Definition at line 219 of file StrANSI.cpp. |
|
|
|
Definition at line 215 of file StrANSI.cpp. |
|
Definition at line 206 of file StrANSI.cpp. 00206 { 00207 return getFillWithChar( ch, pData->length ); 00208 } // Same as strset() |
|
|
|
|
|
Definition at line 20 of file StrFind.cpp. 00020 { 00021 // On error return Null String 00022 if ( s == NULL ) return JString(); 00023 if ( offset >= pData->length ) return JString(); 00024 char* p = pData->data + offset; 00025 char* s2 = strstr(p, s); 00026 if ( s2 == NULL ) { 00027 return JString(); 00028 } 00029 00030 size_t sz = pData->length - (size_t)(s2 - p); 00031 return JString( (char*)(s2 - p), sz ); 00032 } |
|
|
|
Definition at line 20 of file StrFind.cpp. 00020 { 00021 // On error return Null String 00022 if ( s == NULL ) return JString(); 00023 if ( offset >= pData->length ) return JString(); 00024 char* p = pData->data + offset; 00025 char* s2 = strstr(p, s); 00026 if ( s2 == NULL ) { 00027 return JString(); 00028 } 00029 00030 ULONG sz = pData->length - (ULONG)(s2 - p); 00031 return JString( (char*)(s2 - p), sz ); 00032 } |
|
Definition at line 45 of file StrFind.inl. |
|
|
|
|
|
Definition at line 24 of file StrTools.inl. |
|
|
|
|
|
Definition at line 7 of file StrTools.inl. 00007 { 00008 return pData->lock; 00009 } |
|
|
|
|
|
Definition at line 41 of file StrMorph.cpp. 00041 { 00042 return strlwr( strdup( pData->data ) ); 00043 } |
|
|
|
|
|
Definition at line 352 of file StrANSI.cpp. 00352 { 00353 return JString( strtok( NULL, delims ) ); 00354 } |
|
|
|
|
|
Definition at line 339 of file StrANSI.cpp. 00339 { 00340 return strtok( NULL, delims ); 00341 } |
|
|
|
|
|
Definition at line 85 of file StrANSI.cpp. 00085 { 00086 return strcspn( pData->data, charset ); 00087 } |
|
|
|
|
|
Definition at line 45 of file StrMorph.cpp. 00045 { 00046 return strrev( strdup( pData->data ) ); 00047 } |
|
|
|
Definition at line 344 of file StrANSI.cpp. |
|
Definition at line 343 of file StrANSI.cpp. |
|
|
|
|
|
Definition at line 90 of file StrMorph.cpp. 00090 { 00091 return parseString(); 00092 } |
|
|
|
|
|
Definition at line 148 of file StrANSI.cpp. 00148 { // HH:MM:SS (24h) 00149 JStringData* sd = new JStringData( 8 ); 00150 _strtime( sd->data ); 00151 return JString( sd ); 00152 } |
|
|
|
Definition at line 136 of file StrANSI.cpp. 00137 { 00138 JStringData* sd = new JStringData( maxSize ); 00139 strftime( sd->data, maxSize, format, currTime ); 00140 return JString( sd ); 00141 } |
|
Definition at line 132 of file StrANSI.cpp. 00133 { 00134 JStringData* sd = new JStringData( maxSize ); 00135 strftime( sd->data, maxSize, format, currTime ); 00136 return JString( sd ); 00137 } |
|
|
|
Definition at line 332 of file StrANSI.cpp. |
|
Definition at line 330 of file StrANSI.cpp. |
|
|
|
Definition at line 312 of file StrANSI.cpp. |
|
Definition at line 308 of file StrANSI.cpp. |
|
|
|
|
|
Definition at line 37 of file StrMorph.cpp. 00037 { 00038 return strupr( strdup( pData->data ) ); 00039 } |
|
|
|
|
|
Definition at line 41 of file StrTools.inl. Referenced by isFilled().
|
|
|
|
|
|
Definition at line 50 of file StrTools.inl. 00050 { 00051 return !( isEmpty() ); 00052 } |
|
|
|
|
|
Definition at line 11 of file StrTools.inl. 00011 { 00012 return (pData->lock != 0); 00013 } |
|
|
|
|
|
Definition at line 15 of file StrTools.inl. 00015 { 00016 return (pData->lock == 0); 00017 } |
|
|
|
|
|
Definition at line 153 of file StringAt.cpp. 00153 { 00154 // find first single character 00155 // return -1 if not found and index otherwise 00156 JStringData* sd = new JStringData( pData->length ); 00157 00158 // char* s = new char[ pData->length + 1 ]; 00159 00160 ULONG p = 0; 00161 ULONG l = 0; 00162 ULONG m = 0; 00163 ULONG mc = strlen( charset ); 00164 BOOL found = FALSE; 00165 00166 for( l = 0; l < pData->length; l++ ) { 00167 found = FALSE; 00168 for( m = 0; m < mc; m++ ) { 00169 if ( pData->data[l] == charset[m] ) { 00170 found == TRUE; 00171 m = mc; 00172 } 00173 } 00174 00175 if ( found == TRUE ) { // Only change from trim 00176 sd->data[ p++ ] = pData->data[l]; 00177 } 00178 } 00179 00180 if ( p == 0 ) { 00181 delete sd; 00182 return JString(); 00183 } 00184 00185 sd->data[ p ] = '\0'; 00186 return JString( sd ); 00187 } |
|
|
|
|
|
Definition at line 43 of file StrANSI.cpp. 00043 { 00044 if ( pData->data == NULL) return (-1); 00045 // Reverse (Backward search) 00046 char* where = strrchr( pData->data, c ); 00047 if ( where == NULL ) return (-1); 00048 00049 // e.g. 0xfff10 -= 0xfff00 => position 0x10 00050 long w = (long)where; 00051 w -= (long)pData->data; 00052 return w; 00053 } |
|
|
|
Definition at line 50 of file StringAt.inl. 00050 { 00051 return at( (size_t)0, length ); 00052 } |
|
|
|
|
|
|
|
Definition at line 19 of file StrTools.inl. Referenced by JSubString::JSubString(), String::_gsub(), String::after(), String::at(), String::before(), cat(), common_prefix(), common_suffix(), compare(), SubString::contains(), String::contains(), String::del(), String::elem(), fcompare(), String::freq(), String::from(), String::gsub(), String::index(), join(), String::lastchar(), String::matches(), SubString::operator=(), String::operator[](), String::prepend(), replicate(), split(), and String::through().
|
|
|
|
|
|
Definition at line 244 of file StrANSI.cpp. |
|
|
|
Definition at line 240 of file StrANSI.cpp. |
|
Definition at line 235 of file StrANSI.cpp. 00235 { 00236 return locateCharSet( charset, 0 ); 00237 } |
|
ANDREA ***************************************************. If I remember correctly 'Mid' is an l-value in QuickBasic. You can write statements like mid(a$,2,3)="Hello!!!" both r-value and l-value. I implement ONLY the r-value version: A$ = "hello" print mid$(A$, 2, 3) |
|
ANDREA ***************************************************. If I remember correctly 'Mid' is an l-value in QuickBasic. You can write statements like mid(a$,2,3)="Hello!!!" both r-value and l-value. I implement ONLY the r-value version: A$ = "hello" print mid$(A$, 2, 3) |
|
ANDREA ***************************************************. If I remember correctly 'Mid' is an l-value in QuickBasic. You can write statements like mid(a$,2,3)="Hello!!!" both r-value and l-value. I implement ONLY the r-value version: A$ = "hello" print mid$(A$, 2, 3) Definition at line 62 of file StringAt.inl. |
|
|
|
|
|
Definition at line 54 of file StringAt.inl. |
|
Definition at line 58 of file StringAt.inl. |
|
|
|
|
|
Definition at line 79 of file StringAt.inl. 00080 { 00081 if ( s == NULL || *s == '\0' ) return *this; 00082 00083 long where = Find( s, offset ); 00084 00085 if ( where >= 0 ) 00086 { 00087 // -- Modify THIS JString Object. 00088 00089 JStringData* sd = pData; 00090 00091 size_t l = strlen( s ); 00092 long len = (long)length; 00093 00094 if ( length > l || length == 0 ) len = l; 00095 00096 long delta = (long)length - (long)offset - len; 00097 00098 if ( delta >= 0 ) { // No buffer increase 00099 CopyBeforeWrite(); 00100 memcpy( pData->data + where, s, len ); 00101 00102 pData->data[ pData->length ] = '\0'; 00103 00104 } else { 00105 size_t newLen = sd->length - delta; 00106 pData = new JStringData( sd->data, newLen ); // It's -(delta < 0) give us a + 00107 memcpy( pData->data + where, s, len ); 00108 00109 pData->length = newLen; 00110 pData->data[ newLen ] = '\0'; 00111 00112 /* 00113 This Null ending is needed since the last string 00114 might not be ended by '\0' or in case the copy 00115 doesn't go up to Zero. To be checked! 00116 */ 00117 00118 sd->Dec(); // Suicide we don't care. 00119 } 00120 } 00121 00122 return *this; 00123 } |
|
Definition at line 74 of file StringAt.inl. |
|
|
|
Definition at line 64 of file StringAt.inl. |
|
Definition at line 59 of file StringAt.inl. |
|
|
|
|
|
|
|
Definition at line 69 of file StringAt.inl. |
|
|
|
|
|
Definition at line 54 of file StringAt.inl. Referenced by modifyAt().
|
|
Parsing and Casting utilities... //////////////////////////////////////////////////////////////////////////// Defined in: StrMorph.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Parsing and Casting utilities... //////////////////////////////////////////////////////////////////////////// Defined in: StrMorph.cpp ////////////////////////////////////////////////////////////////////////////.
|
|
Parsing and Casting utilities... //////////////////////////////////////////////////////////////////////////// Defined in: StrMorph.cpp ////////////////////////////////////////////////////////////////////////////.
Definition at line 97 of file StrMorph.cpp. 00097 { 00098 return parseString(); 00099 } |
|
|
|
|
|
Definition at line 109 of file StrMorph.cpp. 00109 { 00110 return parseDouble(); 00111 } |
|
|
|
|
|
Definition at line 101 of file StrMorph.cpp. 00101 { 00102 return parseInt(); 00103 } |
|
|
|
|
|
Definition at line 105 of file StrMorph.cpp. 00105 { 00106 return parseLong(); 00107 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 89 of file StrComp.inl. 00089 { 00090 return ( compare(right) != 0 ); 00091 } |
|
Definition at line 81 of file StrComp.inl. 00081 { 00082 return ( compare(right) != 0 ); 00083 } |
|
Definition at line 85 of file StrComp.inl. 00085 { 00086 return ( compare(right) != 0 ); 00087 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 94 of file StringAt.inl. |
|
Definition at line 90 of file StringAt.inl. |
|
Definition at line 86 of file StringAt.inl. |
|
Definition at line 82 of file StringAt.inl. |
|
|
|
|
|
Definition at line 74 of file StringAt.inl. 00074 { 00075 return at( startpos, length ); 00076 } |
|
Definition at line 78 of file StringAt.inl. 00078 { return at( startpos ); } |
|
|
|
|
|
|
|
|
|
Definition at line 80 of file StringAt.inl. |
|
Definition at line 79 of file StringAt.inl. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 32 of file StrAdd.inl. 00032 { 00033 char tmp[2] = { ch, '\0' }; 00034 Append( tmp, 1 ); 00035 return *this; 00036 } |
|
Definition at line 23 of file StrAdd.inl. |
|
Definition at line 38 of file StrAdd.inl. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 29 of file StrComp.inl. 00029 { 00030 return ( compare(right) < 0 ); 00031 } |
|
Definition at line 25 of file StrComp.inl. 00025 { 00026 return ( compare(right) < 0 ); 00027 } |
|
Definition at line 21 of file StrComp.inl. 00021 { 00022 return ( compare(right) < 0 ); 00023 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 53 of file StrComp.inl. 00053 { 00054 return ( compare(right) <= 0 ); 00055 } |
|
Definition at line 49 of file StrComp.inl. 00049 { 00050 return ( compare(right) <= 0 ); 00051 } |
|
Definition at line 45 of file StrComp.inl. 00045 { 00046 return ( compare(right) <= 0 ); 00047 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 172 of file StrAdd.cpp. 00172 { 00173 JStringData* sd = pData; 00174 00175 if ( ch == '\0' || ch == (char)NULL ) { 00176 pData = strNull; 00177 } else { 00178 pData = new JStringData( ch, 1 ); 00179 } 00180 00181 // Possible case, we assign a char of ourself. 00182 sd->Dec(); 00183 return *this; 00184 } |
|
Assignment operators: /// All assign a new value to the JString object: /// (a) first see, if the buffer is big enough /// (b) if enough room, copy on top of old buffer, set size and type /// (c) otherwise free old JString data, and create a new one /// /// All routines return the new JString (but as a 'const JString&') /// this way, assigning it again will cause a copy ! /// e.g.: s1 = s2 = "hi there". /// /// There are three variants: /// JString + JString /// JString + char /// JString + const char* /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.
Definition at line 160 of file StrAdd.cpp. |
|
Definition at line 130 of file StrAdd.cpp. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 77 of file StrComp.inl. 00077 { 00078 return ( compare(right) == 0 ); 00079 } |
|
Definition at line 69 of file StrComp.inl. 00069 { 00070 return ( compare(right) == 0 ); 00071 } |
|
Definition at line 73 of file StrComp.inl. 00073 { 00074 return ( compare(right) == 0 ); 00075 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 41 of file StrComp.inl. 00041 { 00042 return ( compare(right) > 0 ); 00043 } |
|
Definition at line 37 of file StrComp.inl. 00037 { 00038 return ( compare(right) > 0 ); 00039 } |
|
Definition at line 33 of file StrComp.inl. 00033 { 00034 return ( compare(right) > 0 ); 00035 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 65 of file StrComp.inl. 00065 { 00066 return ( compare(right) >= 0 ); 00067 } |
|
Definition at line 61 of file StrComp.inl. 00061 { 00062 return ( compare(right) >= 0 ); 00063 } |
|
Definition at line 57 of file StrComp.inl. 00057 { 00058 return ( compare(right) >= 0 ); 00059 } |
|
|
|
|
|
ANDREA ***************************************************. This module defines a few inline and a few regular methods. How do you think one can use it ? including a .cpp (so recompiling all the functions every time) ? Definition at line 19 of file StringAt.inl. 00019 { 00020 if ( index < 0 ) return (char)NULL; 00021 return getAt( (size_t)index ); 00022 } |
|
|
|
|
|
Definition at line 74 of file StrMorph.cpp. Referenced by operator double().
00074 { 00075 return atof( pData->data ); 00076 } |
|
|
|
|
|
Definition at line 66 of file StrMorph.cpp. Referenced by operator int().
00066 { 00067 return atoi( pData->data ); 00068 } |
|
|
|
|
|
Definition at line 70 of file StrMorph.cpp. Referenced by operator long().
00070 { 00071 return atol( pData->data ); 00072 } |
|
|
|
|
|
Definition at line 78 of file StrMorph.cpp. Referenced by Find(), getText(), operator char *(), and toString().
00078 { 00079 if ( pData == &strNull ) { 00080 return ""; 00081 } else { 00082 return strdup( pData->data ); 00083 } 00084 } |
|
|
|
|
|
|
|
Definition at line 214 of file StrLinux.cpp. |
|
Definition at line 195 of file StrLinux.cpp. |
|
Definition at line 181 of file StrLinux.cpp. |
|
|
|
Definition at line 46 of file StringAt.inl. |
|
|
|
|
|
|
|
Definition at line 73 of file StringAt.cpp. 00073 { 00074 // find first single character 00075 // return -1 if not found and index otherwise 00076 for( ULONG l = pData->length - 1; l >= 0; l-- ) { 00077 if ( pData->data[l] == ch ) { 00078 const char* r = pData->data + l; 00079 ULONG length = (ULONG)(pData->length) - l; 00080 00081 JStringData* sd = new JStringData( r, length ); 00082 /* 00083 char* c = new char[ length + 1 ]; 00084 memcpy( c, r, length ); 00085 c[length] = '\0'; 00086 return JString( c ); 00087 */ 00088 return JString( sd ); 00089 } 00090 } 00091 return JString(); 00092 } |
|
|
|
ANDREA ***************************************************. This is leaking memory. The temporary buffer you allocated will be abandoned on the free store after having been used to create the JString object. What !? Oh I see ! =) Definition at line 71 of file StringAt.cpp. 00071 { 00072 if ( (long)index == -1 ) return *this; 00073 if (index > pData->length) { 00074 index = pData->length; 00075 } 00076 CopyBeforeWrite(); 00077 pData->data[index] = ch; 00078 return *this; 00079 } |
|
ANDREA ***************************************************. This is leaking memory. The temporary buffer you allocated will be abandoned on the free store after having been used to create the JString object. What !? Oh I see ! =) I use JStringData to avoid that. Definition at line 63 of file StringAt.cpp. 00063 { 00064 if ( (long)index == -1 ) return *this; 00065 if (index > pData->length) { 00066 index = pData->length; 00067 } 00068 CopyBeforeWrite(); 00069 pData->data[index] = ch; 00070 return *this; 00071 } |
|
|
|
|
|
Definition at line 17 of file StrANSI.cpp. 00018 { 00019 if ( src == NULL ) return *this; 00020 ULONG newLen = pData->length + strlen(src); 00021 JStringData* sd = new JStringData( pData->data, newLen ); 00022 JStringData* bsd = pData; // Late delete 00023 pData = sd; 00024 strcat( pData->data, src ); 00025 pData->data[ newLen ] = '\0'; // Safety Net. 00026 pData->length = strlen( sd->data ); 00027 bsd->Dec(); 00028 return ( *this ); 00029 } |
|
|
|
Definition at line 175 of file StrANSI.cpp. 00175 { 00176 if ( src == NULL ) return *this; 00177 size_t newLen = pData->length + n; 00178 JStringData* sd = new JStringData( pData->data, newLen ); 00179 pData->Dec(); 00180 pData = sd; 00181 strncat( pData->data, src, n ); 00182 pData->data[ newLen ] = '\0'; // Safety Net. 00183 pData->length = strlen( sd->data ); 00184 return ( *this ); 00185 } |
|
Definition at line 171 of file StrANSI.cpp. 00171 { 00172 if ( src == NULL ) return *this; 00173 ULONG newLen = pData->length + n; 00174 JStringData* sd = new JStringData( pData->data, newLen ); 00175 pData->Dec(); 00176 pData = sd; 00177 strncat( pData->data, src, n ); 00178 pData->data[ newLen ] = '\0'; // Safety Net. 00179 pData->length = strlen( sd->data ); 00180 return ( *this ); 00181 } |
|
|
|
|
|
Definition at line 95 of file StrANSI.cpp. 00095 { // MM/DD/YY format (not Y2K complient !) 00096 JStringData* sd = new JStringData( 9 ); 00097 _strdate( sd->data ); 00098 pData->Dec(); 00099 pData = sd; 00100 return ( *this ); 00101 } |
|
|
|
|
|
Definition at line 126 of file StrANSI.cpp. 00126 { 00127 char* err = strerror( errnb ); 00128 // this = new JString( err ); // To Be FIXED 00129 return ( *this ); 00130 } |
|
|
|
|
|
Definition at line 228 of file StrANSI.cpp. 00228 { 00229 size_t newLen = pData->length; 00230 JStringData* sd = new JStringData( pData->data, newLen ); 00231 pData->Dec(); 00232 pData = sd; 00233 strnset( pData->data, ch, n ); 00234 pData->data[ newLen ] = '\0'; // Safety Net. 00235 pData->length = strlen( sd->data ); 00236 return ( *this ); 00237 } |
|
|
|
Definition at line 224 of file StrANSI.cpp. 00224 { 00225 ULONG newLen = pData->length; 00226 JStringData* sd = new JStringData( pData->data, newLen ); 00227 pData->Dec(); 00228 pData = sd; 00229 strnset( pData->data, ch, n ); 00230 pData->data[ newLen ] = '\0'; // Safety Net. 00231 pData->length = strlen( sd->data ); 00232 return ( *this ); 00233 } |
|
Definition at line 210 of file StrANSI.cpp. 00210 { 00211 return setFillWithChar( ch, pData->length ); 00212 } // Same as strset() |
|
|
|
|
|
Definition at line 54 of file StrMorph.cpp. 00054 { 00055 MakeLower(); 00056 return *this; 00057 } |
|
|
|
|
|
Definition at line 59 of file StrMorph.cpp. 00059 { 00060 MakeReverse(); 00061 return *this; 00062 } |
|
|
|
|
|
|
|
Definition at line 104 of file StrANSI.cpp. 00106 { 00107 JStringData* sd = new JStringData( maxSize ); 00108 strftime( sd->data, maxSize, format, currTime ); 00109 pData->Dec(); 00110 pData = sd; 00111 return ( *this ); 00112 } |
|
Definition at line 154 of file StrANSI.cpp. 00154 { // HH:MM:SS (24h) 00155 JStringData* sd = new JStringData( 8 ); 00156 _strtime( sd->data ); 00157 pData->Dec(); 00158 pData = sd; 00159 return ( *this ); 00160 } |
|
Definition at line 103 of file StrANSI.cpp. 00105 { 00106 JStringData* sd = new JStringData( maxSize ); 00107 strftime( sd->data, maxSize, format, currTime ); 00108 pData->Dec(); 00109 pData = sd; 00110 return ( *this ); 00111 } |
|
|
|
Definition at line 143 of file StrANSI.cpp. 00144 { 00145 JStringData* sd = new JStringData( maxSize ); 00146 strftime( sd->data, maxSize, format, currTime ); 00147 pData->Dec(); 00148 pData = sd; 00149 return ( *this ); 00150 } |
|
Definition at line 139 of file StrANSI.cpp. 00140 { 00141 JStringData* sd = new JStringData( maxSize ); 00142 strftime( sd->data, maxSize, format, currTime ); 00143 pData->Dec(); 00144 pData = sd; 00145 return ( *this ); 00146 } |
|
|
|
Definition at line 321 of file StrANSI.cpp. 00321 { 00322 size_t newLen = pData->length + n; 00323 JStringData* sd = new JStringData( pData->data, newLen ); 00324 pData->Dec(); 00325 pData = sd; 00326 strxfrm( pData->data, src, n ); 00327 pData->data[ newLen ] = '\0'; // Safety Net. 00328 pData->length = strlen( sd->data ); 00329 return ( *this ); 00330 } |
|
Definition at line 318 of file StrANSI.cpp. 00319 { 00320 ULONG newLen = pData->length + n; 00321 JStringData* sd = new JStringData( pData->data, newLen ); 00322 pData->Dec(); 00323 pData = sd; 00324 strxfrm( pData->data, src, n ); 00325 pData->data[ newLen ] = '\0'; // Safety Net. 00326 pData->length = strlen( sd->data ); 00327 return ( *this ); 00328 } |
|
|
|
|
|
Definition at line 49 of file StrMorph.cpp. 00049 { 00050 MakeUpper(); 00051 return *this; 00052 } |
|
|
|
|
|
Definition at line 278 of file StrANSI.cpp. |
|
|
|
Definition at line 274 of file StrANSI.cpp. |
|
Definition at line 270 of file StrANSI.cpp. 00270 { 00271 return toDouble( 0 ); 00272 } |
|
|
|
|
|
|
|
Definition at line 292 of file StrANSI.cpp. |
|
Definition at line 288 of file StrANSI.cpp. 00288 { 00289 return toLong( 0, base ); // No OffSet, Base chosen 00290 } |
|
|
|
Definition at line 288 of file StrANSI.cpp. |
|
Definition at line 284 of file StrANSI.cpp. 00284 { 00285 return toLong( 0, base ); // No OffSet, Base chosen 00286 } |
|
Definition at line 280 of file StrANSI.cpp. Referenced by toLong().
00280 { 00281 return toLong( 0, 10 ); // No OffSet, Decimal 00282 } |
|
|
|
|
|
Definition at line 86 of file StrMorph.cpp. 00086 { 00087 return parseString(); 00088 } |
|
|
|
|
|
|
|
Definition at line 306 of file StrANSI.cpp. |
|
Definition at line 302 of file StrANSI.cpp. 00302 { 00303 return toULONG( 0, base ); // No OffSet, Base chosen 00304 } |
|
|
|
Definition at line 302 of file StrANSI.cpp. |
|
Definition at line 298 of file StrANSI.cpp. 00298 { 00299 return toULONG( 0, base ); // No OffSet, Base chosen 00300 } |
|
Definition at line 294 of file StrANSI.cpp. Referenced by toULONG().
00294 { 00295 return toULONG( 0, 10 ); // No OffSet, Decimal 00296 } |
|
|
|
|
|
Definition at line 94 of file StringAt.cpp. 00094 { 00095 // find first single character 00096 // return -1 if not found and index otherwise 00097 00098 JStringData* sd = new JStringData( pData->length ); 00099 00100 // char* s = new char[ pData->length + 1 ]; 00101 00102 ULONG p = 0; 00103 for( ULONG l = 0; l < pData->length; l++ ) { 00104 if ( pData->data[l] != ch ) { 00105 sd->data[ p++ ] = pData->data[l]; 00106 } 00107 } 00108 if ( p == 0 ) { 00109 delete sd; 00110 return JString(); 00111 } 00112 00113 sd->data[ p ] = '\0'; 00114 return JString( sd ); 00115 } |
|
|
|
|
|
Definition at line 117 of file StringAt.cpp. 00117 { 00118 // find first single character 00119 // return -1 if not found and index otherwise 00120 00121 JStringData* sd = new JStringData( pData->length ); 00122 // char* s = new char[ pData->length + 1 ]; 00123 00124 ULONG p = 0; 00125 ULONG l = 0; 00126 ULONG m = 0; 00127 ULONG mc = strlen( charset ); 00128 BOOL found = FALSE; 00129 00130 for( l = 0; l < pData->length; l++ ) { 00131 found = FALSE; 00132 for( m = 0; m < mc; m++ ) { 00133 if ( pData->data[l] == charset[m] ) { 00134 found == TRUE; 00135 m = mc; 00136 } 00137 } 00138 00139 if ( found == FALSE ) { 00140 sd->data[ p++ ] = pData->data[l]; 00141 } 00142 } 00143 00144 if ( p == 0 ) { 00145 delete sd; 00146 return JString(); 00147 } 00148 00149 sd->data[ p ] = '\0'; 00150 return JString( sd ); 00151 } |
|
Definition at line 268 of file StrAdd.cpp. 00268 { 00269 JString* s = new JString(); // JStringData = &strNull 00270 char s1[2] = { c, '\0' }; 00271 00272 if ( c == '\0' || c == (char)NULL ) { // No addition needed 00273 s->pData = S2.pData; // s1 is NULL, assign S2 00274 } else if ( S2.pData == strNull ) { 00275 s->pData = new JStringData( c ); // Only s1 is not NULL 00276 } else { // Normal Addition, None are NULL 00277 s->Add( s1, S2.pData->data, 1, S2.pData->length ); 00278 } 00279 00280 assert( s->pData->data[s->pData->length] == '\0'); 00281 00282 return *s; 00283 } |
|
Definition at line 251 of file StrAdd.cpp. 00251 { 00252 JString* s = new JString(); // JStringData = &strNull 00253 char s2[2] = { c, '\0' }; 00254 00255 if ( c == '\0' || c == (char)NULL ) { // No addition needed 00256 s->pData = S1.pData; 00257 } else if ( S1.pData == strNull ) { 00258 s->pData = new JStringData( c ); // Only s2 is not NULL 00259 } else { // Normal Addition, None are NULL 00260 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00261 s->Add( S1.pData->data, s2, S1.pData->length, 1 ); 00262 } 00263 00264 assert( s->pData->data[s->pData->length] == '\0'); 00265 return *s; 00266 } |
|
Definition at line 234 of file StrAdd.cpp. 00234 { 00235 JString* s = new JString(); // JStringData = &strNull 00236 00237 if ( s1 == NULL || *s1 == (char)NULL ) { // No addition needed 00238 s->pData = S2.pData; // s1 is NULL, assign S2 00239 } else if ( S2.pData == strNull ) { 00240 s->pData = new JStringData( s1 ); // Only s1 is not NULL 00241 } else { // Normal Addition, None are NULL 00242 ULONG Len = strlen( s1 ); 00243 s->Add( s1, S2.pData->data, Len, S2.pData->length ); 00244 } 00245 00246 assert( s->pData->data[s->pData->length] == '\0'); 00247 00248 return *s; 00249 } |
|
Definition at line 216 of file StrAdd.cpp. 00216 { 00217 JString* s = new JString(); // JStringData = &strNull 00218 00219 if ( s2 == NULL || *s2 == (char)NULL ) { // No addition needed 00220 s->pData = S1.pData; 00221 } else if ( S1.pData == strNull ) { 00222 s->pData = new JStringData( s2 ); // Only s2 is not NULL 00223 } else { // Normal Addition, None are NULL 00224 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00225 00226 ULONG Len = strlen( s2 ); 00227 s->Add( S1.pData->data, s2, S1.pData->length, Len ); 00228 } 00229 00230 assert( s->pData->data[s->pData->length] == '\0'); 00231 return *s; 00232 } |
|
Definition at line 186 of file StrAdd.cpp. 00186 { 00187 JString* s = new JString(); // JStringData = &strNull 00188 00189 if ( S1.pData == strNull ) { 00190 // S1.pData->Dec(); // Not Needed, NO decrement on Null 00191 s->pData = S2.pData; // S1 is NULL, assign S2. 00192 00193 S2.pData->Inc(); 00194 00195 // Inc() & Dec() checks for strNull and don't increase or decrease it 00196 00197 } else if ( S2.pData == strNull ) { 00198 // S2.pData->Dec(); // Not Needed, NO decrement on Null 00199 s->pData = S1.pData; // S2 is NULL, assign S1. 00200 S1.pData->Inc(); 00201 } else { // Normal Addition, None are NULL 00202 00203 // Will change this == 's', 00204 // it works since 's' call it's own function ! 00205 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00206 S2.pData->data[ S2.pData->length ] = '\0'; // Safety feature 00207 00208 s->Add( S1.pData->data, S2.pData->data, 00209 S1.pData->length, S2.pData->length ); 00210 } 00211 00212 assert( s->pData->data[s->pData->length] == '\0'); 00213 return *s; 00214 } |
|
Definition at line 268 of file StrAdd.cpp. 00268 { 00269 JString* s = new JString(); // JStringData = &strNull 00270 char s1[2] = { c, '\0' }; 00271 00272 if ( c == '\0' || c == (char)NULL ) { // No addition needed 00273 s->pData = S2.pData; // s1 is NULL, assign S2 00274 } else if ( S2.pData == strNull ) { 00275 s->pData = new JStringData( c ); // Only s1 is not NULL 00276 } else { // Normal Addition, None are NULL 00277 s->Add( s1, S2.pData->data, 1, S2.pData->length ); 00278 } 00279 00280 assert( s->pData->data[s->pData->length] == '\0'); 00281 00282 return *s; 00283 } |
|
Definition at line 251 of file StrAdd.cpp. 00251 { 00252 JString* s = new JString(); // JStringData = &strNull 00253 char s2[2] = { c, '\0' }; 00254 00255 if ( c == '\0' || c == (char)NULL ) { // No addition needed 00256 s->pData = S1.pData; 00257 } else if ( S1.pData == strNull ) { 00258 s->pData = new JStringData( c ); // Only s2 is not NULL 00259 } else { // Normal Addition, None are NULL 00260 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00261 s->Add( S1.pData->data, s2, S1.pData->length, 1 ); 00262 } 00263 00264 assert( s->pData->data[s->pData->length] == '\0'); 00265 return *s; 00266 } |
|
Definition at line 234 of file StrAdd.cpp. 00234 { 00235 JString* s = new JString(); // JStringData = &strNull 00236 00237 if ( s1 == NULL || *s1 == (char)NULL ) { // No addition needed 00238 s->pData = S2.pData; // s1 is NULL, assign S2 00239 } else if ( S2.pData == strNull ) { 00240 s->pData = new JStringData( s1 ); // Only s1 is not NULL 00241 } else { // Normal Addition, None are NULL 00242 ULONG Len = strlen( s1 ); 00243 s->Add( s1, S2.pData->data, Len, S2.pData->length ); 00244 } 00245 00246 assert( s->pData->data[s->pData->length] == '\0'); 00247 00248 return *s; 00249 } |
|
Definition at line 216 of file StrAdd.cpp. 00216 { 00217 JString* s = new JString(); // JStringData = &strNull 00218 00219 if ( s2 == NULL || *s2 == (char)NULL ) { // No addition needed 00220 s->pData = S1.pData; 00221 } else if ( S1.pData == strNull ) { 00222 s->pData = new JStringData( s2 ); // Only s2 is not NULL 00223 } else { // Normal Addition, None are NULL 00224 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00225 00226 ULONG Len = strlen( s2 ); 00227 s->Add( S1.pData->data, s2, S1.pData->length, Len ); 00228 } 00229 00230 assert( s->pData->data[s->pData->length] == '\0'); 00231 return *s; 00232 } |
|
Definition at line 186 of file StrAdd.cpp. 00186 { 00187 JString* s = new JString(); // JStringData = &strNull 00188 00189 if ( S1.pData == strNull ) { 00190 // S1.pData->Dec(); // Not Needed, NO decrement on Null 00191 s->pData = S2.pData; // S1 is NULL, assign S2. 00192 00193 S2.pData->Inc(); 00194 00195 // Inc() & Dec() checks for strNull and don't increase or decrease it 00196 00197 } else if ( S2.pData == strNull ) { 00198 // S2.pData->Dec(); // Not Needed, NO decrement on Null 00199 s->pData = S1.pData; // S2 is NULL, assign S1. 00200 S1.pData->Inc(); 00201 } else { // Normal Addition, None are NULL 00202 00203 // Will change this == 's', 00204 // it works since 's' call it's own function ! 00205 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00206 S2.pData->data[ S2.pData->length ] = '\0'; // Safety feature 00207 00208 s->Add( S1.pData->data, S2.pData->data, 00209 S1.pData->length, S2.pData->length ); 00210 } 00211 00212 assert( s->pData->data[s->pData->length] == '\0'); 00213 return *s; 00214 } |
|
Definition at line 268 of file StrAdd.cpp. 00268 { 00269 JString* s = new JString(); // JStringData = &strNull 00270 char s1[2] = { c, '\0' }; 00271 00272 if ( c == '\0' || c == (char)NULL ) { // No addition needed 00273 s->pData = S2.pData; // s1 is NULL, assign S2 00274 } else if ( S2.pData == strNull ) { 00275 s->pData = new JStringData( c ); // Only s1 is not NULL 00276 } else { // Normal Addition, None are NULL 00277 s->Add( s1, S2.pData->data, 1, S2.pData->length ); 00278 } 00279 00280 assert( s->pData->data[s->pData->length] == '\0'); 00281 00282 return *s; 00283 } |
|
Definition at line 251 of file StrAdd.cpp. 00251 { 00252 JString* s = new JString(); // JStringData = &strNull 00253 char s2[2] = { c, '\0' }; 00254 00255 if ( c == '\0' || c == (char)NULL ) { // No addition needed 00256 s->pData = S1.pData; 00257 } else if ( S1.pData == strNull ) { 00258 s->pData = new JStringData( c ); // Only s2 is not NULL 00259 } else { // Normal Addition, None are NULL 00260 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00261 s->Add( S1.pData->data, s2, S1.pData->length, 1 ); 00262 } 00263 00264 assert( s->pData->data[s->pData->length] == '\0'); 00265 return *s; 00266 } |
|
Definition at line 234 of file StrAdd.cpp. 00234 { 00235 JString* s = new JString(); // JStringData = &strNull 00236 00237 if ( s1 == NULL || *s1 == (char)NULL ) { // No addition needed 00238 s->pData = S2.pData; // s1 is NULL, assign S2 00239 } else if ( S2.pData == strNull ) { 00240 s->pData = new JStringData( s1 ); // Only s1 is not NULL 00241 } else { // Normal Addition, None are NULL 00242 ULONG Len = strlen( s1 ); 00243 s->Add( s1, S2.pData->data, Len, S2.pData->length ); 00244 } 00245 00246 assert( s->pData->data[s->pData->length] == '\0'); 00247 00248 return *s; 00249 } |
|
Definition at line 216 of file StrAdd.cpp. 00216 { 00217 JString* s = new JString(); // JStringData = &strNull 00218 00219 if ( s2 == NULL || *s2 == (char)NULL ) { // No addition needed 00220 s->pData = S1.pData; 00221 } else if ( S1.pData == strNull ) { 00222 s->pData = new JStringData( s2 ); // Only s2 is not NULL 00223 } else { // Normal Addition, None are NULL 00224 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00225 00226 ULONG Len = strlen( s2 ); 00227 s->Add( S1.pData->data, s2, S1.pData->length, Len ); 00228 } 00229 00230 assert( s->pData->data[s->pData->length] == '\0'); 00231 return *s; 00232 } |
|
Definition at line 186 of file StrAdd.cpp. 00186 { 00187 JString* s = new JString(); // JStringData = &strNull 00188 00189 if ( S1.pData == strNull ) { 00190 // S1.pData->Dec(); // Not Needed, NO decrement on Null 00191 s->pData = S2.pData; // S1 is NULL, assign S2. 00192 00193 S2.pData->Inc(); 00194 00195 // Inc() & Dec() checks for strNull and don't increase or decrease it 00196 00197 } else if ( S2.pData == strNull ) { 00198 // S2.pData->Dec(); // Not Needed, NO decrement on Null 00199 s->pData = S1.pData; // S2 is NULL, assign S1. 00200 S1.pData->Inc(); 00201 } else { // Normal Addition, None are NULL 00202 00203 // Will change this == 's', 00204 // it works since 's' call it's own function ! 00205 S1.pData->data[ S1.pData->length ] = '\0'; // Safety feature 00206 S2.pData->data[ S2.pData->length ] = '\0'; // Safety feature 00207 00208 s->Add( S1.pData->data, S2.pData->data, 00209 S1.pData->length, S2.pData->length ); 00210 } 00211 00212 assert( s->pData->data[s->pData->length] == '\0'); 00213 return *s; 00214 } |
|
Stream utilities... ////////////////////////////////////////////////////////////////////////////.
Definition at line 213 of file String.hpp. |
|
Stream utilities... ////////////////////////////////////////////////////////////////////////////.
Definition at line 190 of file String.hpp. |
|
Stream utilities... ////////////////////////////////////////////////////////////////////////////.
Definition at line 215 of file String.hpp. |
|
Definition at line 497 of file String.hpp. |
|
Definition at line 494 of file String.hpp. |
|
Definition at line 429 of file String.hpp. |
|
Definition at line 495 of file String.hpp. Referenced by Add(), append(), at(), charAt(), mid(), modifyAt(), operator()(), operator+(), operator+=(), operator<<(), operator=(), and prepend().
|