Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtsearchpath / libCliSrv / cstring.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: cstring.h /main/3 1995/11/03 12:34:22 rswiston $ */
24 /*******************************************************************
25 **  (c) Copyright Hewlett-Packard Company, 1990, 1991, 1992, 1993.
26 **  All rights are reserved.  Copying or other reproduction of this
27 **  program except for archival purposes is prohibited without prior
28 **  written consent of Hewlett-Packard Company.
29 ********************************************************************
30 ****************************<+>*************************************/
31
32 #ifndef _CSTRING_H_
33 #define _CSTRING_H_
34
35 #include <iostream.h>
36 #include <string.h>
37
38 class CString {
39  public:
40   CString();
41   CString(const char * s, unsigned char = 1);
42   CString(const char, unsigned char = 1);
43   CString(const CString &);
44  ~CString();
45
46   int    length() const { return strlen(contents); }
47   char * data()   const { return contents; }
48
49   CString & operator= (const CString &);
50   CString & operator= (const char *);
51   CString & operator+= (const CString &);
52   CString & operator+= (const char *);
53
54   int operator!= (const CString &) const;
55   int operator== (const CString &) const;
56
57   char & operator[](int) const;
58
59   friend CString operator+ (const CString & s1, const CString & s2);
60   friend CString operator+ (const CString & s, const char * cs);
61   friend CString operator+ (const char * cs, const CString & s);
62
63   CString   copy (unsigned int, const char *);
64   CString   copy (const char *, const char *);
65   CString   find (const char *);
66   int       contains (const char *, const char * = "", const char * = "") const;
67   int       contains (const CString &, const char * = "", const char * = "") const;
68   int       isNull() const;
69   void      replace (const CString &, const CString &);
70
71   friend ostream & operator<< (ostream &, const CString &);
72
73  protected:
74   char *        contents;
75   unsigned char skipWhiteSpace;
76
77 };
78
79
80 class CTokenizedString : public CString {
81  public:
82   CTokenizedString();
83   CTokenizedString(const CTokenizedString &);
84   CTokenizedString(const CString &, char *, unsigned char = 1);
85  ~CTokenizedString();
86
87   int     Finished() { return finished == 1; }
88
89   CString next();
90
91  private:
92   char *  cursor;
93   char *  delimiter;
94   int     finished;
95 };
96
97 #endif