ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4String.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4String.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //
28 //
29 //---------------------------------------------------------------
30 // GEANT 4 class header file
31 //
32 // G4String
33 //
34 // Class description:
35 //
36 // Definition of a Geant4 string.
37 // Derived from the Rogue Wave implementation of RWCString;
38 // it uses intrinsically STL string.
39 
40 //---------------------------------------------------------------
41 
42 #ifndef __G4String
43 #define __G4String
44 
45 #include <stdio.h>
46 #include <string>
47 #include <cstring>
48 
49 #include "G4Types.hh"
50 #include <iostream>
51 
52 #ifdef WIN32
53  #define strcasecmp _stricmp
54 #endif
55 
56 typedef std::string::size_type str_size;
57 
58 class G4String : public std::string
59 {
60 
61  typedef std::string std_string;
62 
63 public:
64 
67 
68  inline G4String ();
69  inline G4String ( char );
70  inline G4String ( const char * );
71  inline G4String ( const char *, str_size );
72  inline G4String ( const G4String& );
73  inline G4String ( const std::string & );
74  inline G4String ( G4String&& ) = default;
75  ~G4String () {}
76 
77  inline G4String& operator=(const G4String&);
78  inline G4String& operator=(const std::string &);
79  inline G4String& operator=(const char*);
80  inline G4String& operator=(G4String&&) = default;
81 
82  inline char operator () (str_size) const;
83  inline char& operator () (str_size);
84 
85  inline G4String& operator+=(const char*);
86  inline G4String& operator+=(const std::string &);
87  inline G4String& operator+=(const char&);
88  inline G4bool operator==(const G4String&) const;
89  inline G4bool operator==(const char*) const;
90  inline G4bool operator!=(const G4String&) const;
91  inline G4bool operator!=(const char*) const;
92 
93  inline operator const char*() const;
95 
96  inline G4int compareTo(const char*, caseCompare mode=exact) const;
97  inline G4int compareTo(const G4String&, caseCompare mode=exact) const;
98 
99  inline G4String& prepend (const char*);
100  inline G4String& append (const G4String&);
101 
102  inline std::istream& readLine (std::istream&, G4bool skipWhite=true);
103 
104  inline G4String& replace (unsigned int, unsigned int,
105  const char*, unsigned int );
106  inline G4String& replace(str_size, str_size, const char*);
107 
108  inline G4String& remove(str_size);
109  inline G4String& remove(str_size, str_size);
110 
111  inline std::size_t first(char) const;
112  inline std::size_t last(char) const;
113 
114  inline G4bool contains(const std::string&) const;
115  inline G4bool contains(char) const;
116 
117  // stripType = 0 beginning
118  // stripType = 1 end
119  // stripType = 2 both
120  //
121  inline G4String strip (G4int strip_Type=trailing, char c=' ');
122 
123  inline void toLower ();
124  inline void toUpper ();
125 
126  inline G4bool isNull() const;
127 
128  inline str_size index (const char*, G4int pos=0) const;
129  inline str_size index (char, G4int pos=0) const;
130  inline str_size index (const G4String&, str_size, str_size, caseCompare) const;
131 
132  inline const char* data() const;
133 
134  inline G4int strcasecompare(const char*, const char*) const;
135 
136  inline unsigned int hash( caseCompare cmp = exact ) const;
137  inline unsigned int stlhash() const;
138 };
139 
140 #include "G4String.icc"
141 
142 #endif