C++: Add Value::dump_file(), load_file() and loads() that take an std::string
authorPetri Lehtinen <petri@digip.org>
Thu, 4 Feb 2010 19:07:02 +0000 (21:07 +0200)
committerPetri Lehtinen <petri@digip.org>
Thu, 4 Feb 2010 19:08:42 +0000 (21:08 +0200)
src/jansson.hpp
src/jansson.ipp

index de55b75..bf723bd 100644 (file)
@@ -128,6 +128,7 @@ namespace json {
 
             // write the value to a file
             inline int dump_file(const char* path, int flags = 0) const;
+            inline int dump_file(const std::string& path, int flags = 0) const;
 
             // write the value to a string (caller must deallocate with free()!)
             inline char* dumps(int flags = 0) const;
@@ -289,9 +290,11 @@ namespace json {
 
     // load a file as a JSON value
     inline Value load_file(const char* path, json_error_t* error = 0);
+    inline Value load_file(const std::string& path, json_error_t* error = 0);
 
     // load a string as a JSON value
     inline Value loads(const char* string, json_error_t* error = 0);
+    inline Value loads(const std::string& string, json_error_t* error = 0);
 
 } // namespace json
 
index fcb4a0c..5938f0f 100644 (file)
@@ -274,6 +274,11 @@ namespace json {
             return json_dump_file(_Base::as_json(), path, flags);
         }
 
+        template <typename _Base>
+        int ValueBase<_Base>::dump_file(const std::string& path, int flags) const {
+            return dump_file(path.c_str(), flags);
+        }
+
         // write the value to a string (caller must deallocate with free()!)
         template <typename _Base>
         char* ValueBase<_Base>::dumps(int flags) const {
@@ -439,11 +444,19 @@ namespace json {
         return Value::take_ownership(json_load_file(path, error));
     }
 
+    Value load_file(const std::string& path, json_error_t* error) {
+        return load_file(path.c_str(), error);
+    }
+
     // load a string as a JSON value
     Value loads(const char* string, json_error_t* error) {
         return Value::take_ownership(json_loads(string, error));
     }
 
+    Value loads(const std::string& string, json_error_t* error) {
+        return loads(string.c_str(), error);
+    }
+
 } // namespace json
 
 // stream JSON value out