diff --git a/UnitTests/Basics/json-test.cpp b/UnitTests/Basics/json-test.cpp index ac991cc4a4..e134bb5468 100644 --- a/UnitTests/Basics/json-test.cpp +++ b/UnitTests/Basics/json-test.cpp @@ -263,129 +263,6 @@ BOOST_AUTO_TEST_CASE (tst_json_string2) { FREE_BUFFER } -//////////////////////////////////////////////////////////////////////////////// -/// @brief test string reference value -//////////////////////////////////////////////////////////////////////////////// - -BOOST_AUTO_TEST_CASE (tst_json_string_reference) { - INIT_BUFFER - - const char* data = "The Quick Brown Fox"; - char copy[64]; - - memset(copy, 0, sizeof(copy)); - memcpy(copy, data, strlen(data)); - - TRI_json_t* json = TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy, strlen(copy)); - BOOST_CHECK_EQUAL(true, TRI_IsStringJson(json)); - - STRINGIFY - BOOST_CHECK_EQUAL("\"The Quick Brown Fox\"", STRING_VALUE); - FREE_BUFFER - - FREE_JSON - - // freeing JSON should not affect our string - BOOST_CHECK_EQUAL("The Quick Brown Fox", copy); - - json = TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy, strlen(copy)); - BOOST_CHECK_EQUAL(true, TRI_IsStringJson(json)); - - // modify the string we're referring to - copy[0] = '*'; - copy[1] = '/'; - copy[2] = '+'; - copy[strlen(copy) - 1] = '!'; - - sb = TRI_CreateStringBuffer(TRI_UNKNOWN_MEM_ZONE); - STRINGIFY - BOOST_CHECK_EQUAL("\"*/+ Quick Brown Fo!\"", STRING_VALUE); - FREE_BUFFER - - BOOST_CHECK_EQUAL("*/+ Quick Brown Fo!", copy); - - FREE_JSON -} - -//////////////////////////////////////////////////////////////////////////////// -/// @brief test string reference value -//////////////////////////////////////////////////////////////////////////////// - -BOOST_AUTO_TEST_CASE (tst_json_string_reference2) { - INIT_BUFFER - - const char* data1 = "The first Brown Fox"; - const char* data2 = "The second Brown Fox"; - char copy1[64]; - char copy2[64]; - TRI_json_t* json; - size_t len1 = strlen(data1); - size_t len2 = strlen(data2); - - memset(copy1, 0, sizeof(copy1)); - memcpy(copy1, data1, len1); - - memset(copy2, 0, sizeof(copy2)); - memcpy(copy2, data2, len2); - - json = TRI_CreateObjectJson(TRI_UNKNOWN_MEM_ZONE); - - TRI_Insert3ObjectJson(TRI_UNKNOWN_MEM_ZONE, json, "first", - TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy1, strlen(copy1))); - - TRI_Insert3ObjectJson(TRI_UNKNOWN_MEM_ZONE, json, "second", - TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy2, len2)); - - BOOST_CHECK_EQUAL(true, TRI_IsObjectJson(json)); - - STRINGIFY - BOOST_CHECK_EQUAL("{\"first\":\"The first Brown Fox\",\"second\":\"The second Brown Fox\"}", STRING_VALUE); - FREE_BUFFER - - FREE_JSON - - // freeing JSON should not affect our string - BOOST_CHECK_EQUAL("The first Brown Fox", copy1); - BOOST_CHECK_EQUAL("The second Brown Fox", copy2); - - json = TRI_CreateObjectJson(TRI_UNKNOWN_MEM_ZONE); - - TRI_Insert3ObjectJson(TRI_UNKNOWN_MEM_ZONE, json, "first", - TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy1, strlen(copy1))); - - TRI_Insert3ObjectJson(TRI_UNKNOWN_MEM_ZONE, json, "second", - TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy2, len2)); - - BOOST_CHECK_EQUAL(true, TRI_IsObjectJson(json)); - - // modify the string we're referring to - copy1[0] = '*'; - copy1[1] = '/'; - copy1[2] = '+'; - copy1[len1 - 1] = '!'; - - copy2[0] = '*'; - copy2[1] = '/'; - copy2[2] = '+'; - copy2[len2 - 1] = '!'; - - BOOST_CHECK_EQUAL("*/+ first Brown Fo!", copy1); - BOOST_CHECK_EQUAL("*/+ second Brown Fo!", copy2); - - sb = TRI_CreateStringBuffer(TRI_UNKNOWN_MEM_ZONE); - STRINGIFY - BOOST_CHECK_EQUAL("{\"first\":\"*/+ first Brown Fo!\",\"second\":\"*/+ second Brown Fo!\"}", STRING_VALUE); - - FREE_BUFFER - - // freeing JSON should not affect our string - BOOST_CHECK_EQUAL("*/+ first Brown Fo!", copy1); - BOOST_CHECK_EQUAL("*/+ second Brown Fo!", copy2); - - FREE_JSON -} - - //////////////////////////////////////////////////////////////////////////////// /// @brief test string value (escaped) //////////////////////////////////////////////////////////////////////////////// diff --git a/lib/Basics/json.cpp b/lib/Basics/json.cpp index 3e77b930b0..eea4d81ae2 100644 --- a/lib/Basics/json.cpp +++ b/lib/Basics/json.cpp @@ -445,22 +445,6 @@ int TRI_InitStringCopyJson(TRI_memory_zone_t* zone, TRI_json_t* result, return TRI_ERROR_NO_ERROR; } -//////////////////////////////////////////////////////////////////////////////// -/// @brief creates a string reference object with given length -//////////////////////////////////////////////////////////////////////////////// - -TRI_json_t* TRI_CreateStringReferenceJson(TRI_memory_zone_t* zone, - char const* value, size_t length) { - TRI_json_t* result = - static_cast(TRI_Allocate(zone, sizeof(TRI_json_t), false)); - - if (result != nullptr) { - InitStringReference(result, value, length); - } - - return result; -} - //////////////////////////////////////////////////////////////////////////////// /// @brief initializes a string reference object //////////////////////////////////////////////////////////////////////////////// diff --git a/lib/Basics/json.h b/lib/Basics/json.h index 251d7512c9..9b3242fad5 100644 --- a/lib/Basics/json.h +++ b/lib/Basics/json.h @@ -121,13 +121,6 @@ void TRI_InitStringJson(TRI_json_t*, char*, size_t); int TRI_InitStringCopyJson(TRI_memory_zone_t*, TRI_json_t*, char const*, size_t); -//////////////////////////////////////////////////////////////////////////////// -/// @brief creates a string reference object with given length -//////////////////////////////////////////////////////////////////////////////// - -TRI_json_t* TRI_CreateStringReferenceJson(TRI_memory_zone_t*, char const* value, - size_t length); - //////////////////////////////////////////////////////////////////////////////// /// @brief creates a string reference object //////////////////////////////////////////////////////////////////////////////// @@ -306,12 +299,6 @@ TRI_json_t* TRI_CopyJson(TRI_memory_zone_t*, TRI_json_t const*); TRI_json_t* TRI_JsonString(TRI_memory_zone_t*, char const* text); -//////////////////////////////////////////////////////////////////////////////// -/// @brief parses a json file and returns error message -//////////////////////////////////////////////////////////////////////////////// - -TRI_json_t* TRI_JsonFile(TRI_memory_zone_t*, char const* path, char** error); - //////////////////////////////////////////////////////////////////////////////// /// @brief default deleter for TRI_json_t /// this can be used to put a TRI_json_t with TRI_UNKNOWN_MEM_ZONE into an diff --git a/lib/JsonParser/json-parser.ll b/lib/JsonParser/json-parser.ll index ef8fc72128..80062c9683 100644 --- a/lib/JsonParser/json-parser.ll +++ b/lib/JsonParser/json-parser.ll @@ -542,73 +542,3 @@ TRI_json_t* TRI_JsonString (TRI_memory_zone_t* zone, char const* text) { return object; } -//////////////////////////////////////////////////////////////////////////////// -/// @brief parses a json file -//////////////////////////////////////////////////////////////////////////////// - -TRI_json_t* TRI_JsonFile (TRI_memory_zone_t* zone, char const* path, char** error) { - FILE* in; - TRI_json_t* value; - int c; - struct yyguts_t * yyg; - yyscan_t scanner; - - value = static_cast(TRI_Allocate(zone, sizeof(TRI_json_t), false)); - - if (value == nullptr) { - // out of memory - return nullptr; - } - - in = fopen(path, "rb"); - - if (in == nullptr) { - TRI_Free(zone, value); - - return nullptr; - } - - // init as a JSON null object so the memory in value is initialized - TRI_InitNullJson(value); - - yylex_init(&scanner); - yyg = (struct yyguts_t*) scanner; - - yyextra._memoryZone = zone; - yyin = in; - - c = yylex(scanner); - if (! ParseValue(scanner, value, c)) { - TRI_FreeJson(zone, value); - value = nullptr; - } - else { - c = yylex(scanner); - - if (c != END_OF_FILE) { - TRI_FreeJson(zone, value); - value = nullptr; - } - } - - if (error != nullptr) { - if (yyextra._message != nullptr) { - *error = TRI_DuplicateString(yyextra._message); - } - else { - *error = nullptr; - } - } - - yylex_destroy(scanner); - - fclose(in); - - return value; -} - -// Local Variables: -// mode: C -// mode: outline-minor -// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @\\}\\)" -// End: