77  bool parse(
const std::string& document, 
Value& root,
 
   78             bool collectComments = 
true);
 
   96  bool parse(
const char* beginDoc, 
const char* endDoc, 
Value& root,
 
   97             bool collectComments = 
true);
 
  101  bool parse(
IStream& is, 
Value& root, 
bool collectComments = 
true);
 
  112  String getFormatedErrorMessages() const;
 
  121  String getFormattedErrorMessages() const;
 
  139  bool pushError(const 
Value& value, const 
String& message);
 
  149  bool pushError(const 
Value& value, const 
String& message, const 
Value& extra);
 
  160    tokenEndOfStream = 0,
 
  171    tokenMemberSeparator,
 
  190  using Errors = std::deque<ErrorInfo>;
 
  192  bool readToken(Token& token);
 
  193  bool readTokenSkippingComments(Token& token);
 
  195  bool match(
const Char* pattern, 
int patternLength);
 
  197  bool readCStyleComment();
 
  198  bool readCppStyleComment();
 
  202  bool readObject(Token& token);
 
  203  bool readArray(Token& token);
 
  204  bool decodeNumber(Token& token);
 
  205  bool decodeNumber(Token& token, Value& decoded);
 
  206  bool decodeString(Token& token);
 
  207  bool decodeString(Token& token, String& decoded);
 
  208  bool decodeDouble(Token& token);
 
  209  bool decodeDouble(Token& token, Value& decoded);
 
  210  bool decodeUnicodeCodePoint(Token& token, Location& current, Location end,
 
  211                              unsigned int& unicode);
 
  212  bool decodeUnicodeEscapeSequence(Token& token, Location& current,
 
  213                                   Location end, 
unsigned int& unicode);
 
  214  bool addError(
const String& message, Token& token, Location extra = 
nullptr);
 
  215  bool recoverFromError(TokenType skipUntilToken);
 
  216  bool addErrorAndRecover(
const String& message, Token& token,
 
  217                          TokenType skipUntilToken);
 
  218  void skipUntilSpace();
 
  219  Value& currentValue();
 
  221  void getLocationLineAndColumn(Location location, 
int& line,
 
  223  String getLocationLineAndColumn(Location location) 
const;
 
  224  void addComment(Location begin, Location end, CommentPlacement placement);
 
  226  static bool containsNewLine(Location begin, Location end);
 
  227  static String normalizeEOL(Location begin, Location end);
 
  229  using Nodes = std::stack<Value*>;
 
  236  Location lastValueEnd_{};
 
  240  bool collectComments_{};
 
 
bool parseFromStream(CharReader::Factory const &, IStream &, Value *root, String *errs)
Consume entire stream and use its begin/end.