libcommonc++  0.7
CString.h++
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------
2  commonc++ - A C++ Common Class Library
3  Copyright (C) 2005-2014 Mark A Lindner
4 
5  This file is part of commonc++.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public
18  License along with this library; if not, write to the Free
19  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  ---------------------------------------------------------------------------
21 */
22 
23 #ifndef __ccxx_CString_hxx
24 #define __ccxx_CString_hxx
25 
26 #include <commonc++/Common.h++>
27 
28 namespace ccxx {
29 
30 class AtomicCounter;
31 
40 {
41  public:
42 
44  CString();
45 
49  explicit CString(const char* str);
50 
52  CString(const CString& other);
53 
55  virtual ~CString();
56 
58  inline const char* data() const
59  { return(_str); }
60 
62  inline const byte_t* bytes() const
63  { return(reinterpret_cast<const byte_t*>(_str)); }
64 
66  size_t length() const;
67 
69  inline operator const char*() const
70  { return(_str); }
71 
73  CString& operator=(const CString& other);
74 
76  inline bool isNull() const
77  { return(_str == NULL); }
78 
87  char operator[](int index) const;
88 
89  private:
90 
91  void _release();
92 
93  const char* _str;
94  AtomicCounter* _refs;
95 };
96 
97 } // namespace ccxx
98 
99 #endif // __ccxx_CString_hxx
bool isNull() const
Test if the string is NULL.
Definition: CString.h++:76
const char * data() const
Get a pointer to the character array.
Definition: CString.h++:58
const byte_t * bytes() const
Get a pointer to the character array, reinterpreted as a byte array.
Definition: CString.h++:62
An integer counter whose value is modified in an atomic fashion.
Definition: AtomicCounter.h++:36
#define COMMONCPP_API
Definition: Common.h++:126
An implicitly shared, reference-counted container for an immutable, NUL-terminated C string...
Definition: CString.h++:39
Definition: AllocationMap.c++:25
unsigned char byte_t
An unsigned 8-bit value.
Definition: Integers.h++:68