TEST_F(ConversionsTests, test_json_merge_object) { auto doc1 = JSON::newObject(); size_t value = 10_sz; doc1.add("key", value); std::string value2 = "value"; doc1.addRef("key2", value2); { std::string temp_value = "temp_value"; doc1.addCopy("temp_key", temp_value); auto arr = doc1.getArray(); doc1.add("array", arr); } auto doc2 = JSON::newObject(); doc2.add("new_key", 10_sz); doc2.addCopy("new_key1", "new_value"); doc2.mergeObject(doc2.doc(), doc1.doc()); std::string result; EXPECT_TRUE(doc2.toString(result)); std::string expected = "{\"new_key\":10,\"new_key1\":\"new_value\",\"key\":10,\"key2\":" "\"value\",\"temp_key\":\"temp_value\",\"array\":[]}"; EXPECT_EQ(expected, result); }
SoFieldContainer * SoGate::copyThroughConnection() const // //////////////////////////////////////////////////////////////////////// { // See SoEngine::copyThroughConnection() for details of this... SoFieldContainer *copy = findCopy(this, TRUE); if (copy != NULL) return copy; if (shouldCopy()) { // Create and add a new instance to the dictionary SoType inputType = SoType::fromName(typeField.getValue()); SoEngine *newEngine = new SoGate(inputType); newEngine->ref(); addCopy(this, newEngine); // Adds a ref() newEngine->unrefNoDelete(); // Find the copy and return it; this has the side effect of // copying the contents and letting the dictionary know it has // been copied once. return findCopy(this, TRUE); } // Otherwise, just return this return (SoFieldContainer *) this; }
std::pair<JSON, Row> getSerializedRow(bool unordered_and_repeated) { auto cns = getSerializedRowColumnNames(unordered_and_repeated); Row r; auto doc = JSON::newObject(); for (const auto& cn : cns) { auto c_value = cn + "_value"; r[cn] = c_value; doc.addCopy(cn, c_value); } return std::make_pair(std::move(doc), r); }
TEST_F(ConversionsTests, test_json_strings) { auto doc = JSON::newObject(); { std::string value("value"); doc.addCopy("key", value); } std::string value2("value2"); doc.addRef("key2", value2); std::string result; EXPECT_TRUE(doc.toString(result)); std::string expected = "{\"key\":\"value\",\"key2\":\"value2\"}"; EXPECT_EQ(expected, result); }
SoNode * SoUnknownNode::addToCopyDict() const // //////////////////////////////////////////////////////////////////////// { // If this node is already in the dictionary, nothing else to do SoNode *copy = (SoNode *) checkCopy(this); if (copy == NULL) { // Create and add a new instance to the dictionary copy = new SoUnknownNode; copy->ref(); addCopy(this, copy); // Adds a ref() copy->unrefNoDelete(); // Recurse on children, if any for (int i = 0; i < hiddenChildren.getLength(); i++) hiddenChildren[i]->addToCopyDict(); } return copy; }