Elm  1.0
ELM is a library providing generic data structures, OS-independent interface, plugins and XML.
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CString.h
1 /*
2  * $Id$
3  * Copyright (c) 2004-07, IRIT - UPS.
4  *
5  * CString class
6  */
7 #ifndef ELM_STRING_CSTRING_H
8 #define ELM_STRING_CSTRING_H
9 
10 #include <string.h>
11 
12 namespace elm {
13 
14 class String;
15 
16 // CString class
17 class CString {
18 protected:
19  const char *buf;
20 public:
21  inline CString(void): buf("") { };
22  inline CString(const char *str): buf(str ? str : "") { };
23  inline CString(const CString& str): buf(str.buf) { };
24  inline CString& operator=(const CString& str) { buf = str.buf; return *this; };
25 
26  inline int length(void) const { return strlen(buf); };
27  inline const char *chars(void) const { return buf; };
28  inline int compare(const CString& str) const { return strcmp(buf, str.buf); };
29  inline const char *operator&(void) const { return buf; };
30 
31  inline bool isEmpty(void) const { return !*buf; };
32  inline operator bool(void) const { return !isEmpty(); };
33 
34  inline char charAt(int index) const { return buf[index]; };
35  inline char operator[](int index) const { return charAt(index); };
36  inline CString substring(int pos) const;
37  inline String substring(int pos, int len) const;
38 
39  inline String concat(const CString str) const;
40  inline String concat(const String& str) const;
41 
42  inline int indexOf(char chr) const { return indexOf(chr, 0); };
43  inline int indexOf(char chr, int pos) const
44  { for(const char *p = buf + pos; *p; p++) if(*p == chr) return p - buf; return -1; };
45  inline int lastIndexOf(char chr) const { return lastIndexOf(chr, length()); };
46  inline int lastIndexOf(char chr, int pos) const
47  { for(const char *p = buf + pos - 1; p >= buf; p--) if(*p == chr) return p - buf; return -1; };
48 
49  // Suffix and prefix
50  inline bool startsWith(const char *str) const;
51  inline bool startsWith(const CString str) const;
52  inline bool startsWith(const String& str) const;
53  inline bool endsWith(const CString str) const;
54  inline bool endsWith(const String& str) const;
55 
56  // Automatic conversion
57  inline operator const char *(void) const { return buf; };
58 };
59 
60 // Type shortcut
61 #ifndef ELM_NO_STRING_SHORTCUT
62  typedef CString cstring;
63 #endif
64 
65 } // elm
66 
67 #endif // ELM_STRING_CSTRING_H
CString substring(int pos) const
Definition: string.h:19
Definition: CString.h:17
const char * operator&(void) const
Definition: CString.h:29
const char * buf
Definition: CString.h:19
CString(const CString &str)
Definition: CString.h:23
char charAt(int index) const
Definition: CString.h:34
char operator[](int index) const
Definition: CString.h:35
CString & operator=(const CString &str)
Definition: CString.h:24
int lastIndexOf(char chr) const
Definition: CString.h:45
String concat(const CString str) const
Definition: string.h:21
bool endsWith(const CString str) const
Definition: string.h:26
int lastIndexOf(char chr, int pos) const
Definition: CString.h:46
Definition: String.h:31
CString(const char *str)
Definition: CString.h:22
int indexOf(char chr) const
Definition: CString.h:42
CString(void)
Definition: CString.h:21
bool startsWith(const char *str) const
Definition: string.h:23
bool isEmpty(void) const
Definition: CString.h:31
CString cstring
Definition: CString.h:62
int length(void) const
Definition: CString.h:26
int indexOf(char chr, int pos) const
Definition: CString.h:43
const char * chars(void) const
Definition: CString.h:27
int compare(const CString &str) const
Definition: CString.h:28