@@ -830,6 +830,43 @@ std::vector<Reader::StructuredError> Reader::getStructuredErrors() const {
830
830
return allErrors;
831
831
}
832
832
833
+ bool Reader::pushError (const Value& value, const std::string& message) {
834
+ if (value.getOffsetStart () > end_ - begin_
835
+ || value.getOffsetLimit () > end_ - begin_)
836
+ return false ;
837
+ Token token;
838
+ token.type_ = tokenError;
839
+ token.start_ = begin_ + value.getOffsetStart ();
840
+ token.end_ = end_ + value.getOffsetLimit ();
841
+ ErrorInfo info;
842
+ info.token_ = token;
843
+ info.message_ = message;
844
+ info.extra_ = 0 ;
845
+ errors_.push_back (info);
846
+ return true ;
847
+ }
848
+
849
+ bool Reader::pushError (const Value& value, const std::string& message, const Value& extra) {
850
+ if (value.getOffsetStart () > end_ - begin_
851
+ || value.getOffsetLimit () > end_ - begin_
852
+ || extra.getOffsetLimit () > end_ - begin_)
853
+ return false ;
854
+ Token token;
855
+ token.type_ = tokenError;
856
+ token.start_ = begin_ + value.getOffsetStart ();
857
+ token.end_ = begin_ + value.getOffsetLimit ();
858
+ ErrorInfo info;
859
+ info.token_ = token;
860
+ info.message_ = message;
861
+ info.extra_ = begin_ + extra.getOffsetStart ();
862
+ errors_.push_back (info);
863
+ return true ;
864
+ }
865
+
866
+ bool Reader::good () const {
867
+ return !errors_.size ();
868
+ }
869
+
833
870
std::istream& operator >>(std::istream& sin, Value& root) {
834
871
Json::Reader reader;
835
872
bool ok = reader.parse (sin , root, true );
0 commit comments