Skip to content

Commit 8719073

Browse files
committed
revert 'Added structured error reporting to Reader.'
revert 68db655 issue #147
1 parent 1b09a82 commit 8719073

File tree

5 files changed

+3
-180
lines changed

5 files changed

+3
-180
lines changed

include/json/reader.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,6 @@ class JSON_API Reader {
3535
typedef char Char;
3636
typedef const Char* Location;
3737

38-
/** \brief An error tagged with where in the JSON text it was encountered.
39-
*
40-
* The offsets give the [start, limit) range of bytes within the text. Note
41-
* that this is bytes, not codepoints.
42-
*
43-
*/
44-
struct StructuredError {
45-
size_t offset_start;
46-
size_t offset_limit;
47-
std::string message;
48-
};
49-
5038
/** \brief Constructs a Reader allowing all features
5139
* for parsing.
5240
*/
@@ -123,15 +111,6 @@ class JSON_API Reader {
123111
*/
124112
std::string getFormattedErrorMessages() const;
125113

126-
/** \brief Returns a vector of structured erros encounted while parsing.
127-
* \return A (possibly empty) vector of StructuredError objects. Currently
128-
* only one error can be returned, but the caller should tolerate
129-
* multiple
130-
* errors. This can occur if the parser recovers from a non-fatal
131-
* parse error and then encounters additional errors.
132-
*/
133-
std::vector<StructuredError> getStructuredErrors() const;
134-
135114
private:
136115
enum TokenType {
137116
tokenEndOfStream = 0,

include/json/value.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -451,13 +451,6 @@ Json::Value obj_value(Json::objectValue); // {}
451451
iterator begin();
452452
iterator end();
453453

454-
// Accessors for the [start, limit) range of bytes within the JSON text from
455-
// which this value was parsed, if any.
456-
void setOffsetStart(size_t start);
457-
void setOffsetLimit(size_t limit);
458-
size_t getOffsetStart() const;
459-
size_t getOffsetLimit() const;
460-
461454
private:
462455
void initBasic(ValueType type, bool allocated = false);
463456

@@ -514,11 +507,6 @@ Json::Value obj_value(Json::objectValue); // {}
514507
unsigned int memberNameIsStatic_ : 1; // used by the ValueInternalMap container.
515508
#endif
516509
CommentInfo* comments_;
517-
518-
// [start, limit) byte offsets in the source JSON text from which this Value
519-
// was extracted.
520-
size_t start_;
521-
size_t limit_;
522510
};
523511

524512
/** \brief Experimental and untested: represents an element of the "path" to

src/lib_json/json_reader.cpp

Lines changed: 2 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,9 @@ bool Reader::readValue() {
163163
switch (token.type_) {
164164
case tokenObjectBegin:
165165
successful = readObject(token);
166-
currentValue().setOffsetLimit(current_ - begin_);
167166
break;
168167
case tokenArrayBegin:
169168
successful = readArray(token);
170-
currentValue().setOffsetLimit(current_ - begin_);
171169
break;
172170
case tokenNumber:
173171
successful = decodeNumber(token);
@@ -179,24 +177,18 @@ bool Reader::readValue() {
179177
{
180178
Value v(true);
181179
currentValue().swapPayload(v);
182-
currentValue().setOffsetStart(token.start_ - begin_);
183-
currentValue().setOffsetLimit(token.end_ - begin_);
184180
}
185181
break;
186182
case tokenFalse:
187183
{
188184
Value v(false);
189185
currentValue().swapPayload(v);
190-
currentValue().setOffsetStart(token.start_ - begin_);
191-
currentValue().setOffsetLimit(token.end_ - begin_);
192186
}
193187
break;
194188
case tokenNull:
195189
{
196190
Value v;
197191
currentValue().swapPayload(v);
198-
currentValue().setOffsetStart(token.start_ - begin_);
199-
currentValue().setOffsetLimit(token.end_ - begin_);
200192
}
201193
break;
202194
case tokenArraySeparator:
@@ -206,14 +198,10 @@ bool Reader::readValue() {
206198
current_--;
207199
Value v;
208200
currentValue().swapPayload(v);
209-
currentValue().setOffsetStart(current_ - begin_ - 1);
210-
currentValue().setOffsetLimit(current_ - begin_);
211201
break;
212202
}
213203
// Else, fall through...
214204
default:
215-
currentValue().setOffsetStart(token.start_ - begin_);
216-
currentValue().setOffsetLimit(token.end_ - begin_);
217205
return addError("Syntax error: value, object or array expected.", token);
218206
}
219207

@@ -441,12 +429,11 @@ bool Reader::readString() {
441429
return c == '"';
442430
}
443431

444-
bool Reader::readObject(Token& tokenStart) {
432+
bool Reader::readObject(Token& /*tokenStart*/) {
445433
Token tokenName;
446434
std::string name;
447435
Value init(objectValue);
448436
currentValue().swapPayload(init);
449-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
450437
while (readToken(tokenName)) {
451438
bool initialTokenOk = true;
452439
while (tokenName.type_ == tokenComment && initialTokenOk)
@@ -497,10 +484,9 @@ bool Reader::readObject(Token& tokenStart) {
497484
"Missing '}' or object member name", tokenName, tokenObjectEnd);
498485
}
499486

500-
bool Reader::readArray(Token& tokenStart) {
487+
bool Reader::readArray(Token& /*tokenStart*/) {
501488
Value init(arrayValue);
502489
currentValue().swapPayload(init);
503-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
504490
skipSpaces();
505491
if (*current_ == ']') // empty array
506492
{
@@ -540,8 +526,6 @@ bool Reader::decodeNumber(Token& token) {
540526
if (!decodeNumber(token, decoded))
541527
return false;
542528
currentValue().swapPayload(decoded);
543-
currentValue().setOffsetStart(token.start_ - begin_);
544-
currentValue().setOffsetLimit(token.end_ - begin_);
545529
return true;
546530
}
547531

@@ -590,8 +574,6 @@ bool Reader::decodeDouble(Token& token) {
590574
if (!decodeDouble(token, decoded))
591575
return false;
592576
currentValue().swapPayload(decoded);
593-
currentValue().setOffsetStart(token.start_ - begin_);
594-
currentValue().setOffsetLimit(token.end_ - begin_);
595577
return true;
596578
}
597579

@@ -637,8 +619,6 @@ bool Reader::decodeString(Token& token) {
637619
return false;
638620
Value decoded(decoded_string);
639621
currentValue().swapPayload(decoded);
640-
currentValue().setOffsetStart(token.start_ - begin_);
641-
currentValue().setOffsetLimit(token.end_ - begin_);
642622
return true;
643623
}
644624

@@ -850,20 +830,6 @@ std::string Reader::getFormattedErrorMessages() const {
850830
return formattedMessage;
851831
}
852832

853-
std::vector<Reader::StructuredError> Reader::getStructuredErrors() const {
854-
std::vector<Reader::StructuredError> allErrors;
855-
for (Errors::const_iterator itError = errors_.begin();
856-
itError != errors_.end();
857-
++itError) {
858-
const ErrorInfo& error = *itError;
859-
Reader::StructuredError structured;
860-
structured.offset_start = error.token_.start_ - begin_;
861-
structured.offset_limit = error.token_.end_ - begin_;
862-
structured.message = error.message_;
863-
allErrors.push_back(structured);
864-
}
865-
return allErrors;
866-
}
867833
// Reader
868834
/////////////////////////
869835

@@ -919,7 +885,6 @@ class OurReader {
919885
Value& root,
920886
bool collectComments = true);
921887
std::string getFormattedErrorMessages() const;
922-
std::vector<StructuredError> getStructuredErrors() const;
923888

924889
private:
925890
OurReader(OurReader const&); // no impl
@@ -1083,11 +1048,9 @@ bool OurReader::readValue() {
10831048
switch (token.type_) {
10841049
case tokenObjectBegin:
10851050
successful = readObject(token);
1086-
currentValue().setOffsetLimit(current_ - begin_);
10871051
break;
10881052
case tokenArrayBegin:
10891053
successful = readArray(token);
1090-
currentValue().setOffsetLimit(current_ - begin_);
10911054
break;
10921055
case tokenNumber:
10931056
successful = decodeNumber(token);
@@ -1099,24 +1062,18 @@ bool OurReader::readValue() {
10991062
{
11001063
Value v(true);
11011064
currentValue().swapPayload(v);
1102-
currentValue().setOffsetStart(token.start_ - begin_);
1103-
currentValue().setOffsetLimit(token.end_ - begin_);
11041065
}
11051066
break;
11061067
case tokenFalse:
11071068
{
11081069
Value v(false);
11091070
currentValue().swapPayload(v);
1110-
currentValue().setOffsetStart(token.start_ - begin_);
1111-
currentValue().setOffsetLimit(token.end_ - begin_);
11121071
}
11131072
break;
11141073
case tokenNull:
11151074
{
11161075
Value v;
11171076
currentValue().swapPayload(v);
1118-
currentValue().setOffsetStart(token.start_ - begin_);
1119-
currentValue().setOffsetLimit(token.end_ - begin_);
11201077
}
11211078
break;
11221079
case tokenArraySeparator:
@@ -1126,14 +1083,10 @@ bool OurReader::readValue() {
11261083
current_--;
11271084
Value v;
11281085
currentValue().swapPayload(v);
1129-
currentValue().setOffsetStart(current_ - begin_ - 1);
1130-
currentValue().setOffsetLimit(current_ - begin_);
11311086
break;
11321087
}
11331088
// Else, fall through...
11341089
default:
1135-
currentValue().setOffsetStart(token.start_ - begin_);
1136-
currentValue().setOffsetLimit(token.end_ - begin_);
11371090
return addError("Syntax error: value, object or array expected.", token);
11381091
}
11391092

@@ -1347,7 +1300,6 @@ bool OurReader::readObject(Token& tokenStart) {
13471300
std::string name;
13481301
Value init(objectValue);
13491302
currentValue().swapPayload(init);
1350-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
13511303
while (readToken(tokenName)) {
13521304
bool initialTokenOk = true;
13531305
while (tokenName.type_ == tokenComment && initialTokenOk)
@@ -1401,7 +1353,6 @@ bool OurReader::readObject(Token& tokenStart) {
14011353
bool OurReader::readArray(Token& tokenStart) {
14021354
Value init(arrayValue);
14031355
currentValue().swapPayload(init);
1404-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
14051356
skipSpaces();
14061357
if (*current_ == ']') // empty array
14071358
{
@@ -1441,8 +1392,6 @@ bool OurReader::decodeNumber(Token& token) {
14411392
if (!decodeNumber(token, decoded))
14421393
return false;
14431394
currentValue().swapPayload(decoded);
1444-
currentValue().setOffsetStart(token.start_ - begin_);
1445-
currentValue().setOffsetLimit(token.end_ - begin_);
14461395
return true;
14471396
}
14481397

@@ -1491,8 +1440,6 @@ bool OurReader::decodeDouble(Token& token) {
14911440
if (!decodeDouble(token, decoded))
14921441
return false;
14931442
currentValue().swapPayload(decoded);
1494-
currentValue().setOffsetStart(token.start_ - begin_);
1495-
currentValue().setOffsetLimit(token.end_ - begin_);
14961443
return true;
14971444
}
14981445

@@ -1538,8 +1485,6 @@ bool OurReader::decodeString(Token& token) {
15381485
return false;
15391486
Value decoded(decoded_string);
15401487
currentValue().swapPayload(decoded);
1541-
currentValue().setOffsetStart(token.start_ - begin_);
1542-
currentValue().setOffsetLimit(token.end_ - begin_);
15431488
return true;
15441489
}
15451490

@@ -1746,21 +1691,6 @@ std::string OurReader::getFormattedErrorMessages() const {
17461691
return formattedMessage;
17471692
}
17481693

1749-
std::vector<OurReader::StructuredError> OurReader::getStructuredErrors() const {
1750-
std::vector<OurReader::StructuredError> allErrors;
1751-
for (Errors::const_iterator itError = errors_.begin();
1752-
itError != errors_.end();
1753-
++itError) {
1754-
const ErrorInfo& error = *itError;
1755-
OurReader::StructuredError structured;
1756-
structured.offset_start = error.token_.start_ - begin_;
1757-
structured.offset_limit = error.token_.end_ - begin_;
1758-
structured.message = error.message_;
1759-
allErrors.push_back(structured);
1760-
}
1761-
return allErrors;
1762-
}
1763-
17641694

17651695
class OurCharReader : public CharReader {
17661696
bool const collectComments_;

src/lib_json/json_value.cpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ Value::Value(const Value& other)
332332
itemIsUsed_(0)
333333
#endif
334334
,
335-
comments_(0), start_(other.start_), limit_(other.limit_) {
335+
comments_(0) {
336336
switch (type_) {
337337
case nullValue:
338338
case intValue:
@@ -429,8 +429,6 @@ void Value::swapPayload(Value& other) {
429429
void Value::swap(Value& other) {
430430
swapPayload(other);
431431
std::swap(comments_, other.comments_);
432-
std::swap(start_, other.start_);
433-
std::swap(limit_, other.limit_);
434432
}
435433

436434
ValueType Value::type() const { return type_; }
@@ -805,8 +803,6 @@ void Value::clear() {
805803
JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue ||
806804
type_ == objectValue,
807805
"in Json::Value::clear(): requires complex value");
808-
start_ = 0;
809-
limit_ = 0;
810806
switch (type_) {
811807
#ifndef JSON_VALUE_USE_INTERNAL_MAP
812808
case arrayValue:
@@ -911,8 +907,6 @@ void Value::initBasic(ValueType type, bool allocated) {
911907
itemIsUsed_ = 0;
912908
#endif
913909
comments_ = 0;
914-
start_ = 0;
915-
limit_ = 0;
916910
}
917911

918912
Value& Value::resolveReference(const char* key, bool isStatic) {
@@ -1259,14 +1253,6 @@ std::string Value::getComment(CommentPlacement placement) const {
12591253
return "";
12601254
}
12611255

1262-
void Value::setOffsetStart(size_t start) { start_ = start; }
1263-
1264-
void Value::setOffsetLimit(size_t limit) { limit_ = limit; }
1265-
1266-
size_t Value::getOffsetStart() const { return start_; }
1267-
1268-
size_t Value::getOffsetLimit() const { return limit_; }
1269-
12701256
std::string Value::toStyledString() const {
12711257
StyledWriter writer;
12721258
return writer.write(*this);

0 commit comments

Comments
 (0)