1-
2- #ifndef UTILS_H
3- #define UTILS_H
1+ /*
2+ * Shortest path with turn restrictions algorithm for PostgreSQL
3+ *
4+ * Copyright (c) 2011 Stephen Woodbridge
5+ *
6+ * This program is free software; you can redistribute it and/or modify
7+ * it under the terms of the GNU General Public License as published by
8+ * the Free Software Foundation; either version 2 of the License, or
9+ * (at your option) any later version.
10+ *
11+ * This program is distributed in the hope that it will be useful,
12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+ * GNU General Public License for more details.
15+ *
16+ * You should have received a copy of the GNU General Public License
17+ * along with this program; if not, write to the Free Software
18+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19+ *
20+ */
21+
22+ #ifndef SRC_TRSP_SRC_UTILS_H_
23+ #define SRC_TRSP_SRC_UTILS_H_
424
525#include < string>
626#include < map>
@@ -17,90 +37,69 @@ typedef std::vector<double> DoubleVector;
1737typedef std::vector<std::string> StringVector;
1838
1939
20- class StringOperation
21- {
22-
23- public:
24-
25- static std::string TRIMWHITESPACE (std::string strInput)
26- {
27- std::string strOut = strInput;
28- std::string strWht = " \f\n\r\t\v " ;
29-
30- strOut.erase (0 ,strOut.find_first_not_of (strWht));
31- strOut.erase (strOut.find_last_not_of (strWht) + 1 );
32- return strOut;
33- };
40+ class StringOperation {
41+ public:
42+ static std::string TRIMWHITESPACE (std::string strInput) {
43+ std::string strOut = strInput;
44+ std::string strWht = " \f\n\r\t\v " ;
45+ strOut.erase (0 , strOut.find_first_not_of (strWht));
46+ strOut.erase (strOut.find_last_not_of (strWht) + 1 );
47+ return strOut;
48+ };
3449};
3550
36- class StringTokenizer
37- {
38- public:
39- StringTokenizer ()
40- {
41- reset ();
42- }
43-
44- void reset ()
45- {
46- vecTokens.clear ();
47- strInput = " " ;
48- }
49-
50- bool parse (std::string strInput, std::string chDelim)
51- {
52- size_t iStartPos = 0 ;
53- while (true )
54- {
55- size_t iPos = strInput.find (chDelim[0 ],iStartPos);
56- if (iPos != std::string::npos)
57- {
58- std::string strToken;
59- strToken = strInput.substr (iStartPos,iPos - iStartPos);
60- vecTokens.push_back (strToken);
61- iStartPos = iPos + 1 ;
62- }
63- else if (iPos == std::string::npos && strInput.length () > 0 )
64- {
65- std::string strToken;
66- strToken = strInput.substr (iStartPos, strInput.length () - iStartPos);
67- if (strToken.length () > 0 )
68- vecTokens.push_back (strToken);
69- break ;
70- }
71- else
72- break ;
73-
74- }
75- return true ;
76- }
77-
78- size_t getTokenCount ()
79- {
80- return vecTokens.size ();
81- }
82-
83- bool getToken (std::string& strToken, long iTokenIndex)
84- {
85- long lTokenCount = vecTokens.size ();
86- if (iTokenIndex < 0 || iTokenIndex < lTokenCount)
87- {
88- strToken = vecTokens[iTokenIndex];
89- return true ;
90- }
91- return false ;
92- }
93-
94- bool getTokens (StringVector& vecTokensRef)
95- {
96- vecTokensRef = vecTokens;
97- return true ;
98- }
99-
100- private:
101- std::string strInput;
102- StringVector vecTokens;
103-
51+ class StringTokenizer {
52+ public:
53+ StringTokenizer () {
54+ reset ();
55+ }
56+ void reset () {
57+ vecTokens.clear ();
58+ strInput = " " ;
59+ }
60+ bool parse (std::string strInput, std::string chDelim) {
61+ size_t iStartPos = 0 ;
62+ while (true ) {
63+ size_t iPos = strInput.find (chDelim[0 ], iStartPos);
64+ if (iPos != std::string::npos) {
65+ std::string strToken;
66+ strToken = strInput.substr (iStartPos, iPos - iStartPos);
67+ vecTokens.push_back (strToken);
68+ iStartPos = iPos + 1 ;
69+ } else if (iPos == std::string::npos && strInput.length () > 0 ) {
70+ std::string strToken;
71+ strToken = strInput.substr (iStartPos,
72+ strInput.length () - iStartPos);
73+ if (strToken.length () > 0 )
74+ vecTokens.push_back (strToken);
75+ break ;
76+ } else {
77+ break ;
78+ }
79+ }
80+ return true ;
81+ }
82+ size_t getTokenCount () {
83+ return vecTokens.size ();
84+ }
85+
86+ bool getToken (std::string& strToken, long iTokenIndex) {
87+ long lTokenCount = vecTokens.size ();
88+ if (iTokenIndex < 0 || iTokenIndex < lTokenCount) {
89+ strToken = vecTokens[iTokenIndex];
90+ return true ;
91+ }
92+ return false ;
93+ }
94+
95+ bool getTokens (StringVector& vecTokensRef) {
96+ vecTokensRef = vecTokens;
97+ return true ;
98+ }
99+
100+ private:
101+ std::string strInput;
102+ StringVector vecTokens;
104103};
105104
106- #endif
105+ #endif // SRC_TRSP_SRC_UTILS_H_
0 commit comments