make extent_hooks static.
[folly.git] / folly / StringBase.cpp
index 6c428d687bd2fcd2f5b43867a7e46b2fd397dd64..da98e2ed367c9249ecf819aa07683dd4a0cfd469 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 namespace folly {
 
-StringPiece skipWhitespace(StringPiece sp) {
+static inline bool is_oddspace(char c) {
+  return c == '\n' || c == '\t' || c == '\r';
+}
+
+StringPiece ltrimWhitespace(StringPiece sp) {
   // Spaces other than ' ' characters are less common but should be
   // checked.  This configuration where we loop on the ' '
   // separately from oddspaces was empirically fastest.
-  auto oddspace = [] (char c) {
-    return c == '\n' || c == '\t' || c == '\r';
-  };
 
 loop:
   for (; !sp.empty() && sp.front() == ' '; sp.pop_front()) {
   }
-  if (!sp.empty() && oddspace(sp.front())) {
+  if (!sp.empty() && is_oddspace(sp.front())) {
     sp.pop_front();
     goto loop;
   }
@@ -37,4 +38,20 @@ loop:
   return sp;
 }
 
+StringPiece rtrimWhitespace(StringPiece sp) {
+  // Spaces other than ' ' characters are less common but should be
+  // checked.  This configuration where we loop on the ' '
+  // separately from oddspaces was empirically fastest.
+
+loop:
+  for (; !sp.empty() && sp.back() == ' '; sp.pop_back()) {
+  }
+  if (!sp.empty() && is_oddspace(sp.back())) {
+    sp.pop_back();
+    goto loop;
+  }
+
+  return sp;
+}
+
 }