C++: Add Value::dump_file(), load_file() and loads() that take an std::string

This commit is contained in:
Petri Lehtinen 2010-02-04 21:07:02 +02:00
parent b8059a1880
commit adb1b58627
2 changed files with 16 additions and 0 deletions

View File

@ -128,6 +128,7 @@ namespace json {
// write the value to a file // write the value to a file
inline int dump_file(const char* path, int flags = 0) const; 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()!) // write the value to a string (caller must deallocate with free()!)
inline char* dumps(int flags = 0) const; inline char* dumps(int flags = 0) const;
@ -289,9 +290,11 @@ namespace json {
// load a file as a JSON value // load a file as a JSON value
inline Value load_file(const char* path, json_error_t* error = 0); 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 // load a string as a JSON value
inline Value loads(const char* string, json_error_t* error = 0); 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 } // namespace json

View File

@ -274,6 +274,11 @@ namespace json {
return json_dump_file(_Base::as_json(), path, flags); 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()!) // write the value to a string (caller must deallocate with free()!)
template <typename _Base> template <typename _Base>
char* ValueBase<_Base>::dumps(int flags) const { char* ValueBase<_Base>::dumps(int flags) const {
@ -439,11 +444,19 @@ namespace json {
return Value::take_ownership(json_load_file(path, error)); 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 // load a string as a JSON value
Value loads(const char* string, json_error_t* error) { Value loads(const char* string, json_error_t* error) {
return Value::take_ownership(json_loads(string, 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 } // namespace json
// stream JSON value out // stream JSON value out