[llvm-commits] CVS: llvm/lib/Support/StringExtras.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sun Dec 28 23:08:00 PST 2003
Changes in directory llvm/lib/Support:
StringExtras.cpp added (r1.1)
---
Log message:
implement new getToken function
---
Diffs of the changes: (+43 -0)
Index: llvm/lib/Support/StringExtras.cpp
diff -c /dev/null llvm/lib/Support/StringExtras.cpp:1.1
*** /dev/null Sun Dec 28 23:07:12 2003
--- llvm/lib/Support/StringExtras.cpp Sun Dec 28 23:07:02 2003
***************
*** 0 ****
--- 1,43 ----
+ //===-- StringExtras.cpp - Implement the StringExtras header --------------===//
+ //
+ // The LLVM Compiler Infrastructure
+ //
+ // This file was developed by the LLVM research group and is distributed under
+ // the University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // This file implements the StringExtras.h header
+ //
+ //===----------------------------------------------------------------------===//
+
+ #include "Support/StringExtras.h"
+ using namespace llvm;
+
+ /// getToken - This function extracts one token from source, ignoring any
+ /// leading characters that appear in the Delimiters string, and ending the
+ /// token at any of the characters that appear in the Delimiters string. If
+ /// there are no tokens in the source string, an empty string is returned.
+ /// The Source source string is updated in place to remove the returned string
+ /// and any delimiter prefix from it.
+ std::string llvm::getToken(std::string &Source, const char *Delimiters) {
+ unsigned NumDelimiters = std::strlen(Delimiters);
+
+ // Figure out where the token starts.
+ std::string::size_type Start =
+ Source.find_first_not_of(Delimiters, 0, NumDelimiters);
+ if (Start == std::string::npos) Start = Source.size();
+
+ // Find the next occurance of the delimiter.
+ std::string::size_type End =
+ Source.find_first_of(Delimiters, Start, NumDelimiters);
+ if (End == std::string::npos) End = Source.size();
+
+ // Create the return token.
+ std::string Result = std::string(Source.begin()+Start, Source.begin()+End);
+
+ // Erase the token that we read in.
+ Source.erase(Source.begin(), Source.begin()+End);
+
+ return Result;
+ }
More information about the llvm-commits
mailing list