]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Hide intrusive tests from public interface.
authorJesse F. Williamson <jfw@ibm.com>
Wed, 14 Jan 2026 23:17:43 +0000 (15:17 -0800)
committerJesse F. Williamson <jfw@ibm.com>
Thu, 12 Feb 2026 18:53:32 +0000 (10:53 -0800)
Signed-off-by: Jesse F. Williamson <jfw@ibm.com>
src/common/ceph_json.cc
src/common/ceph_json.h

index e68a68a182dcc131b3f9490dd739ade520b6a998..83fa8bdec34b79de59acb6dbe44f4620b140535e 100644 (file)
@@ -175,6 +175,65 @@ bool JSONFormattable::val_bool() const {
           boost::iequals(value.str, "yes"));
 }
 
+std::list<JSONFormattable> JSONFormattable::generate_test_instances() {
+    std::list<JSONFormattable> o;
+    o.emplace_back();
+    o.emplace_back();
+    o.back().set_type(FMT_VALUE);
+    o.back().value.str = "foo";
+    o.back().value.quoted = true;
+    o.emplace_back();
+    o.back().set_type(FMT_VALUE);
+    o.back().value.str = "foo";
+    o.back().value.quoted = false;
+    o.emplace_back();
+    o.back().set_type(FMT_ARRAY);
+    o.back().arr.push_back(JSONFormattable());
+    o.back().arr.back().set_type(FMT_VALUE);
+    o.back().arr.back().value.str = "foo";
+    o.back().arr.back().value.quoted = true;
+    o.back().arr.push_back(JSONFormattable());
+    o.back().arr.back().set_type(FMT_VALUE);
+    o.back().arr.back().value.str = "bar";
+    o.back().arr.back().value.quoted = true;
+    o.emplace_back();
+    o.back().set_type(FMT_OBJ);
+    o.back().obj["foo"] = JSONFormattable();
+    o.back().obj["foo"].set_type(FMT_VALUE);
+    o.back().obj["foo"].value.str = "bar";
+    o.back().obj["foo"].value.quoted = true;
+    return o;
+  }
+
+void JSONFormattable::generate_test_instances(std::list<JSONFormattable*>& o) {
+    o.push_back(new JSONFormattable);
+    o.push_back(new JSONFormattable);
+    o.back()->set_type(FMT_VALUE);
+    o.back()->value.str = "foo";
+    o.back()->value.quoted = true;
+    o.push_back(new JSONFormattable);
+    o.back()->set_type(FMT_VALUE);
+    o.back()->value.str = "foo";
+    o.back()->value.quoted = false;
+    o.push_back(new JSONFormattable);
+    o.back()->set_type(FMT_ARRAY);
+    o.back()->arr.push_back(JSONFormattable());
+    o.back()->arr.back().set_type(FMT_VALUE);
+    o.back()->arr.back().value.str = "foo";
+    o.back()->arr.back().value.quoted = true;
+    o.back()->arr.push_back(JSONFormattable());
+    o.back()->arr.back().set_type(FMT_VALUE);
+    o.back()->arr.back().value.str = "bar";
+    o.back()->arr.back().value.quoted = true;
+    o.push_back(new JSONFormattable);
+    o.back()->set_type(FMT_OBJ);
+    o.back()->obj["foo"] = JSONFormattable();
+    o.back()->obj["foo"].set_type(FMT_VALUE);
+    o.back()->obj["foo"].value.str = "bar";
+    o.back()->obj["foo"].value.quoted = true;
+  }
+
+
 struct field_entity {
   bool is_obj{false}; /* either obj field or array entity */
   string name; /* if obj */
index 567ceebb316cd6d2dbb66d106644e8a8dbbbc2f0..4d90d789d4b473972b70ac6c4fe5b729826874fa 100644 (file)
@@ -1039,69 +1039,17 @@ public:
 
   bool is_array() const { return type == FMT_ARRAY; }
 
-public:
-  static std::list<JSONFormattable> generate_test_instances() {
-    std::list<JSONFormattable> o;
-    o.emplace_back();
-    o.emplace_back();
-    o.back().set_type(FMT_VALUE);
-    o.back().value.str = "foo";
-    o.back().value.quoted = true;
-    o.emplace_back();
-    o.back().set_type(FMT_VALUE);
-    o.back().value.str = "foo";
-    o.back().value.quoted = false;
-    o.emplace_back();
-    o.back().set_type(FMT_ARRAY);
-    o.back().arr.push_back(JSONFormattable());
-    o.back().arr.back().set_type(FMT_VALUE);
-    o.back().arr.back().value.str = "foo";
-    o.back().arr.back().value.quoted = true;
-    o.back().arr.push_back(JSONFormattable());
-    o.back().arr.back().set_type(FMT_VALUE);
-    o.back().arr.back().value.str = "bar";
-    o.back().arr.back().value.quoted = true;
-    o.emplace_back();
-    o.back().set_type(FMT_OBJ);
-    o.back().obj["foo"] = JSONFormattable();
-    o.back().obj["foo"].set_type(FMT_VALUE);
-    o.back().obj["foo"].value.str = "bar";
-    o.back().obj["foo"].value.quoted = true;
-    return o;
-  }
-
-  static void generate_test_instances(std::list<JSONFormattable*>& o) {
-    o.push_back(new JSONFormattable);
-    o.push_back(new JSONFormattable);
-    o.back()->set_type(FMT_VALUE);
-    o.back()->value.str = "foo";
-    o.back()->value.quoted = true;
-    o.push_back(new JSONFormattable);
-    o.back()->set_type(FMT_VALUE);
-    o.back()->value.str = "foo";
-    o.back()->value.quoted = false;
-    o.push_back(new JSONFormattable);
-    o.back()->set_type(FMT_ARRAY);
-    o.back()->arr.push_back(JSONFormattable());
-    o.back()->arr.back().set_type(FMT_VALUE);
-    o.back()->arr.back().value.str = "foo";
-    o.back()->arr.back().value.quoted = true;
-    o.back()->arr.push_back(JSONFormattable());
-    o.back()->arr.back().set_type(FMT_VALUE);
-    o.back()->arr.back().value.str = "bar";
-    o.back()->arr.back().value.quoted = true;
-    o.push_back(new JSONFormattable);
-    o.back()->set_type(FMT_OBJ);
-    o.back()->obj["foo"] = JSONFormattable();
-    o.back()->obj["foo"].set_type(FMT_VALUE);
-    o.back()->obj["foo"].value.str = "bar";
-    o.back()->obj["foo"].value.quoted = true;
-  }
+  // Intrusive test support:
+  private:
+  template <typename> friend class DencoderBase;
+  static std::list<JSONFormattable> generate_test_instances();
+  static void generate_test_instances(std::list<JSONFormattable*>& o);
 };
 WRITE_CLASS_ENCODER(JSONFormattable)
 
 static inline JSONFormattable default_formattable;
 
+// Note that this does NOT have the same semantics as an STL container:
 inline JSONFormattable& JSONFormattable::operator[](const std::string& name) {
        if (const auto i = obj.find(name); end(obj) != i)
         return i->second;