]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/input_output/string_utilities.h
Compile under MSVC9
[flightgear.git] / src / FDM / JSBSim / input_output / string_utilities.h
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
3  Header:       string_utilities.h
4  Author:       Jon S. Berndt
5  Date started: 06/01/09
6
7  ------------- Copyright (C) 2009  Jon S. Berndt (jsb@hal-pc.org) -------------
8
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
17  details.
18
19  You should have received a copy of the GNU Lesser General Public License along with
20  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21  Place - Suite 330, Boston, MA  02111-1307, USA.
22
23  Further information about the GNU Lesser General Public License can also be found on
24  the world wide web at http://www.gnu.org.
25
26 HISTORY
27 --------------------------------------------------------------------------------
28 06/01/09  JSB  Created
29
30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 SENTRY
32 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
33
34 #ifndef STRINGUTILS_H
35 #define STRINGUTILS_H
36
37 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 INCLUDES
39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40
41 #include <vector>
42 #include <ctype.h>
43
44 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
45 DEFINITIONS
46 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
47
48 #define ID_STRINGUTILS "$Id$"
49
50 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 FORWARD DECLARATIONS
52 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
53
54 using namespace std;
55
56 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57 CLASS DOCUMENTATION
58 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
59
60
61 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
62 CLASS DECLARATION
63 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
64
65 #if !defined(BASE)
66   extern string& trim_left(string& str);
67   extern string& trim_right(string& str);
68   extern string& trim(string& str);
69   extern string& to_upper(string& str);
70   extern string& to_lower(string& str);
71   extern bool is_number(string& str);
72   vector <string> split(string str, char d);
73 #else
74
75   string& trim_left(string& str)
76   {
77     while ( !isgraph(str[0]) ) {
78       str = str.erase(0,1);
79       if (str.size() == 0) break;
80     }
81     return str;
82   }
83
84   string& trim_right(string& str)
85   {
86     while (!isgraph(str[str.size()-1])) {
87       str = str.erase(str.size()-1,1);
88       if (str.size() == 0) break;
89     }
90     return str;
91   }
92
93   string& trim(string& str)
94   {
95     if (str.size() == 0) return str;
96     string temp_str = trim_right(str);
97     return str = trim_left(temp_str);
98   }
99
100   string& to_upper(string& str)
101   {
102     for (int i=0; i<str.size(); i++) str[i] = toupper(str[i]);
103     return str;
104   }
105
106   string& to_lower(string& str)
107   {
108     for (int i=0; i<str.size(); i++) str[i] = tolower(str[i]);
109     return str;
110   }
111
112   bool is_number(string& str)
113   {
114     return (str.find_first_not_of("+-.0123456789Ee") == string::npos);
115   }
116
117   vector <string> split(string str, char d)
118   {
119     vector <string> str_array;
120     int index=0;
121     string temp = "";
122
123     trim(str);
124     index = str.find(d);
125     while (index != string::npos) {
126       temp = str.substr(0,index);
127       trim(temp);
128       if (temp.size() > 0) str_array.push_back(temp);
129       str = str.erase(0,index+1);
130       index = str.find(d);
131     }
132     if (str.size() > 0) {
133       temp = trim(str);
134       if (temp.size() > 0) str_array.push_back(temp);
135     }
136
137     return str_array;
138   }
139
140 #endif
141
142 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
143
144 #endif