Skip to content

Commit c27b279

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

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
@@ -503,13 +503,6 @@ Json::Value obj_value(Json::objectValue); // {}
503503
iterator begin();
504504
iterator end();
505505

506-
// Accessors for the [start, limit) range of bytes within the JSON text from
507-
// which this value was parsed, if any.
508-
void setOffsetStart(size_t start);
509-
void setOffsetLimit(size_t limit);
510-
size_t getOffsetStart() const;
511-
size_t getOffsetLimit() const;
512-
513506
private:
514507
void initBasic(ValueType type, bool allocated = false);
515508

@@ -546,11 +539,6 @@ Json::Value obj_value(Json::objectValue); // {}
546539
unsigned int allocated_ : 1; // Notes: if declared as bool, bitfield is useless.
547540
// If not allocated_, string_ must be null-terminated.
548541
CommentInfo* comments_;
549-
550-
// [start, limit) byte offsets in the source JSON text from which this Value
551-
// was extracted.
552-
size_t start_;
553-
size_t limit_;
554542
};
555543

556544
/** \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:
@@ -208,13 +200,9 @@ bool Reader::readValue() {
208200
current_--;
209201
Value v;
210202
currentValue().swapPayload(v);
211-
currentValue().setOffsetStart(current_ - begin_ - 1);
212-
currentValue().setOffsetLimit(current_ - begin_);
213203
break;
214204
} // Else, fall through...
215205
default:
216-
currentValue().setOffsetStart(token.start_ - begin_);
217-
currentValue().setOffsetLimit(token.end_ - begin_);
218206
return addError("Syntax error: value, object or array expected.", token);
219207
}
220208

@@ -442,12 +430,11 @@ bool Reader::readString() {
442430
return c == '"';
443431
}
444432

445-
bool Reader::readObject(Token& tokenStart) {
433+
bool Reader::readObject(Token& /*tokenStart*/) {
446434
Token tokenName;
447435
std::string name;
448436
Value init(objectValue);
449437
currentValue().swapPayload(init);
450-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
451438
while (readToken(tokenName)) {
452439
bool initialTokenOk = true;
453440
while (tokenName.type_ == tokenComment && initialTokenOk)
@@ -498,10 +485,9 @@ bool Reader::readObject(Token& tokenStart) {
498485
"Missing '}' or object member name", tokenName, tokenObjectEnd);
499486
}
500487

501-
bool Reader::readArray(Token& tokenStart) {
488+
bool Reader::readArray(Token& /*tokenStart*/) {
502489
Value init(arrayValue);
503490
currentValue().swapPayload(init);
504-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
505491
skipSpaces();
506492
if (*current_ == ']') // empty array
507493
{
@@ -541,8 +527,6 @@ bool Reader::decodeNumber(Token& token) {
541527
if (!decodeNumber(token, decoded))
542528
return false;
543529
currentValue().swapPayload(decoded);
544-
currentValue().setOffsetStart(token.start_ - begin_);
545-
currentValue().setOffsetLimit(token.end_ - begin_);
546530
return true;
547531
}
548532

@@ -591,8 +575,6 @@ bool Reader::decodeDouble(Token& token) {
591575
if (!decodeDouble(token, decoded))
592576
return false;
593577
currentValue().swapPayload(decoded);
594-
currentValue().setOffsetStart(token.start_ - begin_);
595-
currentValue().setOffsetLimit(token.end_ - begin_);
596578
return true;
597579
}
598580

@@ -638,8 +620,6 @@ bool Reader::decodeString(Token& token) {
638620
return false;
639621
Value decoded(decoded_string);
640622
currentValue().swapPayload(decoded);
641-
currentValue().setOffsetStart(token.start_ - begin_);
642-
currentValue().setOffsetLimit(token.end_ - begin_);
643623
return true;
644624
}
645625

@@ -851,20 +831,6 @@ std::string Reader::getFormattedErrorMessages() const {
851831
return formattedMessage;
852832
}
853833

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

@@ -916,7 +882,6 @@ class OurReader {
916882
Value& root,
917883
bool collectComments = true);
918884
std::string getFormattedErrorMessages() const;
919-
std::vector<StructuredError> getStructuredErrors() const;
920885

921886
private:
922887
OurReader(OurReader const&); // no impl
@@ -1081,11 +1046,9 @@ bool OurReader::readValue() {
10811046
switch (token.type_) {
10821047
case tokenObjectBegin:
10831048
successful = readObject(token);
1084-
currentValue().setOffsetLimit(current_ - begin_);
10851049
break;
10861050
case tokenArrayBegin:
10871051
successful = readArray(token);
1088-
currentValue().setOffsetLimit(current_ - begin_);
10891052
break;
10901053
case tokenNumber:
10911054
successful = decodeNumber(token);
@@ -1097,24 +1060,18 @@ bool OurReader::readValue() {
10971060
{
10981061
Value v(true);
10991062
currentValue().swapPayload(v);
1100-
currentValue().setOffsetStart(token.start_ - begin_);
1101-
currentValue().setOffsetLimit(token.end_ - begin_);
11021063
}
11031064
break;
11041065
case tokenFalse:
11051066
{
11061067
Value v(false);
11071068
currentValue().swapPayload(v);
1108-
currentValue().setOffsetStart(token.start_ - begin_);
1109-
currentValue().setOffsetLimit(token.end_ - begin_);
11101069
}
11111070
break;
11121071
case tokenNull:
11131072
{
11141073
Value v;
11151074
currentValue().swapPayload(v);
1116-
currentValue().setOffsetStart(token.start_ - begin_);
1117-
currentValue().setOffsetLimit(token.end_ - begin_);
11181075
}
11191076
break;
11201077
case tokenArraySeparator:
@@ -1126,13 +1083,9 @@ 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
} // else, fall through ...
11331088
default:
1134-
currentValue().setOffsetStart(token.start_ - begin_);
1135-
currentValue().setOffsetLimit(token.end_ - begin_);
11361089
return addError("Syntax error: value, object or array expected.", token);
11371090
}
11381091

@@ -1364,7 +1317,6 @@ bool OurReader::readObject(Token& tokenStart) {
13641317
std::string name;
13651318
Value init(objectValue);
13661319
currentValue().swapPayload(init);
1367-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
13681320
while (readToken(tokenName)) {
13691321
bool initialTokenOk = true;
13701322
while (tokenName.type_ == tokenComment && initialTokenOk)
@@ -1424,7 +1376,6 @@ bool OurReader::readObject(Token& tokenStart) {
14241376
bool OurReader::readArray(Token& tokenStart) {
14251377
Value init(arrayValue);
14261378
currentValue().swapPayload(init);
1427-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
14281379
skipSpaces();
14291380
if (*current_ == ']') // empty array
14301381
{
@@ -1464,8 +1415,6 @@ bool OurReader::decodeNumber(Token& token) {
14641415
if (!decodeNumber(token, decoded))
14651416
return false;
14661417
currentValue().swapPayload(decoded);
1467-
currentValue().setOffsetStart(token.start_ - begin_);
1468-
currentValue().setOffsetLimit(token.end_ - begin_);
14691418
return true;
14701419
}
14711420

@@ -1514,8 +1463,6 @@ bool OurReader::decodeDouble(Token& token) {
15141463
if (!decodeDouble(token, decoded))
15151464
return false;
15161465
currentValue().swapPayload(decoded);
1517-
currentValue().setOffsetStart(token.start_ - begin_);
1518-
currentValue().setOffsetLimit(token.end_ - begin_);
15191466
return true;
15201467
}
15211468

@@ -1561,8 +1508,6 @@ bool OurReader::decodeString(Token& token) {
15611508
return false;
15621509
Value decoded(decoded_string);
15631510
currentValue().swapPayload(decoded);
1564-
currentValue().setOffsetStart(token.start_ - begin_);
1565-
currentValue().setOffsetLimit(token.end_ - begin_);
15661511
return true;
15671512
}
15681513

@@ -1769,21 +1714,6 @@ std::string OurReader::getFormattedErrorMessages() const {
17691714
return formattedMessage;
17701715
}
17711716

1772-
std::vector<OurReader::StructuredError> OurReader::getStructuredErrors() const {
1773-
std::vector<OurReader::StructuredError> allErrors;
1774-
for (Errors::const_iterator itError = errors_.begin();
1775-
itError != errors_.end();
1776-
++itError) {
1777-
const ErrorInfo& error = *itError;
1778-
OurReader::StructuredError structured;
1779-
structured.offset_start = error.token_.start_ - begin_;
1780-
structured.offset_limit = error.token_.end_ - begin_;
1781-
structured.message = error.message_;
1782-
allErrors.push_back(structured);
1783-
}
1784-
return allErrors;
1785-
}
1786-
17871717

17881718
class OurCharReader : public CharReader {
17891719
bool const collectComments_;

src/lib_json/json_value.cpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ Value::Value(bool value) {
356356
Value::Value(Value const& other)
357357
: type_(other.type_), allocated_(false)
358358
,
359-
comments_(0), start_(other.start_), limit_(other.limit_)
359+
comments_(0)
360360
{
361361
switch (type_) {
362362
case nullValue:
@@ -440,8 +440,6 @@ void Value::swapPayload(Value& other) {
440440
void Value::swap(Value& other) {
441441
swapPayload(other);
442442
std::swap(comments_, other.comments_);
443-
std::swap(start_, other.start_);
444-
std::swap(limit_, other.limit_);
445443
}
446444

447445
ValueType Value::type() const { return type_; }
@@ -843,8 +841,6 @@ void Value::clear() {
843841
JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue ||
844842
type_ == objectValue,
845843
"in Json::Value::clear(): requires complex value");
846-
start_ = 0;
847-
limit_ = 0;
848844
switch (type_) {
849845
case arrayValue:
850846
case objectValue:
@@ -920,8 +916,6 @@ void Value::initBasic(ValueType type, bool allocated) {
920916
type_ = type;
921917
allocated_ = allocated;
922918
comments_ = 0;
923-
start_ = 0;
924-
limit_ = 0;
925919
}
926920

927921
// Access an object value by name, create a null member if it does not exist.
@@ -1291,14 +1285,6 @@ std::string Value::getComment(CommentPlacement placement) const {
12911285
return "";
12921286
}
12931287

1294-
void Value::setOffsetStart(size_t start) { start_ = start; }
1295-
1296-
void Value::setOffsetLimit(size_t limit) { limit_ = limit; }
1297-
1298-
size_t Value::getOffsetStart() const { return start_; }
1299-
1300-
size_t Value::getOffsetLimit() const { return limit_; }
1301-
13021288
std::string Value::toStyledString() const {
13031289
StyledWriter writer;
13041290
return writer.write(*this);

0 commit comments

Comments
 (0)