text: //===--- PrimitiveParsing.h - Primitive parsing routines ------------------===//
  //
  // This source file is part of the Swift.org open source project
  //
  // Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
  // Licensed under Apache License v2.0 with Runtime Library Exception
  //
  // See http://swift.org/LICENSE.txt for license information
  // See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
  //
  //===----------------------------------------------------------------------===//
  ///
  /// \file
  /// Primitive parsing routines useful in various places in the compiler.
  ///
  //===----------------------------------------------------------------------===//
  
  #ifndef SWIFT_BASIC_PRIMITIVEPARSING_H
  #define SWIFT_BASIC_PRIMITIVEPARSING_H
  
  #include "llvm/ADT/StringRef.h"
  #include "swift/Basic/LLVM.h"
  
  namespace swift {
  
  unsigned measureNewline(const char *BufferPtr, const char *BufferEnd);
  
  static inline unsigned measureNewline(StringRef S) {
    return measureNewline(S.data(), S.data() + S.size());
  }
  
  static inline bool startsWithNewline(StringRef S) {
    return S.startswith("\n") || S.startswith("\r\n");
  }
  
  /// Breaks a given string to lines and trims leading whitespace from them.
  void trimLeadingWhitespaceFromLines(StringRef Text, unsigned WhitespaceToTrim,
                                      SmallVectorImpl<StringRef> &Lines);
  
  static inline void splitIntoLines(StringRef Text,
                                    SmallVectorImpl<StringRef> &Lines) {
    trimLeadingWhitespaceFromLines(Text, 0, Lines);
  }
  
  } // namespace swift
  
  #endif // LLVM_SWIFT_BASIC_PRIMITIVEPARSING_H
  
  