Use access function instad of %module-public-interface
[clinton/bobotpp.git] / source / StringTokenizer.C
index f4bea1e..f45b67c 100644 (file)
@@ -1,5 +1,6 @@
 // StringTokenizer.C  -*- C++ -*-
 // Copyright (c) 1997, 1998 Etienne BERNARD
+// Copyright (c) 2005 Clinton Ebadi
 
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 #include "StringTokenizer.H"
 
-StringTokenizer::StringTokenizer(String string)
-  : st(string), pos(0)
+#include <string>
+
+#include <cstring>
+
+StringTokenizer::StringTokenizer(std::string s)
+  : st(s), pos(0)
 { }
 
 bool
-StringTokenizer::hasMoreTokens()
+StringTokenizer::more_tokens_p ()
 {
   if (pos == st.length())
     return false;
 
-  for (int i = pos; i < st.length(); i++)
+  for (std::string::size_type i = pos; i < st.length(); i++)
     if (st[i] != ' ' && st[i] != '\t')
       return true;
 
@@ -35,92 +40,103 @@ StringTokenizer::hasMoreTokens()
 }
 
 bool
-StringTokenizer::hasMoreTokens(char c)
+StringTokenizer::more_tokens_p (char c)
 {
   if (pos == st.length())
     return false;
 
-  for (int i = pos; i < st.length(); i++)
+  for (std::string::size_type i = pos; i < st.length(); i++)
     if (st[i] != c)
       return true;
 
   return false;
 }
 
-int
-StringTokenizer::countTokens()
+unsigned int
+StringTokenizer::count_tokens ()
 {
-  int i = 0;
-  StringTokenizer s(st);
+  unsigned int i = 0;
+  StringTokenizer s (st);
+  
+  while (s.more_tokens_p ())
+    {
+      s.next_token ();
+      i++;
+    }
   
-  while (s.hasMoreTokens()) {
-    s.nextToken();
-    i++;
-  }
-
   return i;
 }
 
-int
-StringTokenizer::countTokens(char c)
+unsigned int
+StringTokenizer::count_tokens (char c)
 {
-  int i = 0;
+  unsigned int i = 0;
   StringTokenizer s(st);
   
-  while (s.hasMoreTokens(c)) {
-    s.nextToken(c);
-    i++;
-  }
-
+  while (s.more_tokens_p (c))
+    {
+      s.next_token (c);
+      i++;
+    }
+  
   return i;
 }
 
-String
-StringTokenizer::nextToken()
+std::string
+StringTokenizer::next_token()
 {
-  int i = pos;
+  std::string::size_type i = pos;
   
   while (i < st.length() && (st[i] == ' ' || st[i] == '\t'))
     i++;
   
-  for (int j = i; j < st.length(); j++)
-    if (st[j] == ' ' || st[j] == '\t') {
-      pos = j + 1;
-      return st.subString(i, j - 1);
-    }
+  for (std::string::size_type j = i; j < st.length(); j++)
+    if (st[j] == ' ' || st[j] == '\t') 
+      {
+       pos = j + 1;
+       return st.substr (i, j - i);
+      }
 
   pos = st.length();
-  return st.subString(i, st.length() - 1);
+  return st.substr (i, st.length() - i);
 }
 
-String
-StringTokenizer::nextToken(char c, bool empty)
+std::string
+StringTokenizer::next_token (char c, bool empty)
 {
-  int i = pos;
+  std::string::size_type i = pos;
+  std::string::size_type j = 0;
 
   while (i < st.length() && (st[i] == c))
-    i++;
-  for (int j = i; j < st.length(); j++)
-    if (st[j] == c) {
-      pos = j + 1;
-      return st.subString(i, j - 1);
+    {
+      i++;
+    }
+
+  for (j = i; j < st.length(); j++)
+    {
+      if (st[j] == c)
+       {
+         pos = j + 1;
+         return st.substr (i, j - i);
+       }
     }
 
   if (empty)
     return "";
-
+  
   pos = st.length();
-  return st.subString(i, st.length() - 1);
+  return st.substr (i, st.length() - i);
 }
 
-String
+std::string
 StringTokenizer::rest()
 {
   if (pos == st.length())
     return "";
 
-  while (pos < st.length() && (st[pos] == ' ' || st[pos] == '\t'))
+  // Skip whitespace
+  while (pos < st.length() && (std::isspace (st[pos])))
     pos++;
 
-  return st.subString(pos, st.length() - 1);
+  return st.substr (pos, st.length() - pos);
 }