aboutsummaryrefslogtreecommitdiff
path: root/src/univalue/univalue.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/univalue/univalue.h')
-rw-r--r--src/univalue/univalue.h248
1 files changed, 0 insertions, 248 deletions
diff --git a/src/univalue/univalue.h b/src/univalue/univalue.h
deleted file mode 100644
index 4742b56f3d..0000000000
--- a/src/univalue/univalue.h
+++ /dev/null
@@ -1,248 +0,0 @@
-// Copyright 2014 BitPay Inc.
-// Distributed under the MIT software license, see the accompanying
-// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-
-#ifndef BITCOIN_UNIVALUE_UNIVALUE_H
-#define BITCOIN_UNIVALUE_UNIVALUE_H
-
-#include <stdint.h>
-#include <string>
-#include <vector>
-#include <map>
-#include <cassert>
-
-#include <sstream> // .get_int64()
-#include <utility> // std::pair
-
-class UniValue {
-public:
- enum VType { VNULL, VOBJ, VARR, VSTR, VNUM, VBOOL, };
-
- UniValue() { typ = VNULL; }
- UniValue(UniValue::VType initialType, const std::string& initialStr = "") {
- typ = initialType;
- val = initialStr;
- }
- UniValue(uint64_t val_) {
- setInt(val_);
- }
- UniValue(int64_t val_) {
- setInt(val_);
- }
- UniValue(bool val_) {
- setBool(val_);
- }
- UniValue(int val_) {
- setInt(val_);
- }
- UniValue(double val_) {
- setFloat(val_);
- }
- UniValue(const std::string& val_) {
- setStr(val_);
- }
- UniValue(const char *val_) {
- std::string s(val_);
- setStr(s);
- }
- ~UniValue() {}
-
- void clear();
-
- bool setNull();
- bool setBool(bool val);
- bool setNumStr(const std::string& val);
- bool setInt(uint64_t val);
- bool setInt(int64_t val);
- bool setInt(int val) { return setInt((int64_t)val); }
- bool setFloat(double val);
- bool setStr(const std::string& val);
- bool setArray();
- bool setObject();
-
- enum VType getType() const { return typ; }
- const std::string& getValStr() const { return val; }
- bool empty() const { return (values.size() == 0); }
-
- size_t size() const { return values.size(); }
-
- bool getBool() const { return isTrue(); }
- bool checkObject(const std::map<std::string,UniValue::VType>& memberTypes);
- const UniValue& operator[](const std::string& key) const;
- const UniValue& operator[](unsigned int index) const;
- bool exists(const std::string& key) const { return (findKey(key) >= 0); }
-
- bool isNull() const { return (typ == VNULL); }
- bool isTrue() const { return (typ == VBOOL) && (val == "1"); }
- bool isFalse() const { return (typ == VBOOL) && (val != "1"); }
- bool isBool() const { return (typ == VBOOL); }
- bool isStr() const { return (typ == VSTR); }
- bool isNum() const { return (typ == VNUM); }
- bool isArray() const { return (typ == VARR); }
- bool isObject() const { return (typ == VOBJ); }
-
- bool push_back(const UniValue& val);
- bool push_back(const std::string& val_) {
- UniValue tmpVal(VSTR, val_);
- return push_back(tmpVal);
- }
- bool push_back(const char *val_) {
- std::string s(val_);
- return push_back(s);
- }
- bool push_backV(const std::vector<UniValue>& vec);
-
- bool pushKV(const std::string& key, const UniValue& val);
- bool pushKV(const std::string& key, const std::string& val) {
- UniValue tmpVal(VSTR, val);
- return pushKV(key, tmpVal);
- }
- bool pushKV(const std::string& key, const char *val_) {
- std::string val(val_);
- return pushKV(key, val);
- }
- bool pushKV(const std::string& key, int64_t val) {
- UniValue tmpVal(val);
- return pushKV(key, tmpVal);
- }
- bool pushKV(const std::string& key, uint64_t val) {
- UniValue tmpVal(val);
- return pushKV(key, tmpVal);
- }
- bool pushKV(const std::string& key, int val) {
- UniValue tmpVal((int64_t)val);
- return pushKV(key, tmpVal);
- }
- bool pushKV(const std::string& key, double val) {
- UniValue tmpVal(val);
- return pushKV(key, tmpVal);
- }
- bool pushKVs(const UniValue& obj);
-
- std::string write(unsigned int prettyIndent = 0,
- unsigned int indentLevel = 0) const;
-
- bool read(const char *raw);
- bool read(const std::string& rawStr) {
- return read(rawStr.c_str());
- }
-
-private:
- UniValue::VType typ;
- std::string val; // numbers are stored as C++ strings
- std::vector<std::string> keys;
- std::vector<UniValue> values;
-
- int findKey(const std::string& key) const;
- void writeArray(unsigned int prettyIndent, unsigned int indentLevel, std::string& s) const;
- void writeObject(unsigned int prettyIndent, unsigned int indentLevel, std::string& s) const;
-
-public:
- // Strict type-specific getters, these throw std::runtime_error if the
- // value is of unexpected type
- std::vector<std::string> getKeys() const;
- std::vector<UniValue> getValues() const;
- bool get_bool() const;
- std::string get_str() const;
- int get_int() const;
- int64_t get_int64() const;
- double get_real() const;
- const UniValue& get_obj() const;
- const UniValue& get_array() const;
-
- enum VType type() const { return getType(); }
- bool push_back(std::pair<std::string,UniValue> pear) {
- return pushKV(pear.first, pear.second);
- }
- friend const UniValue& find_value( const UniValue& obj, const std::string& name);
-};
-
-//
-// The following were added for compatibility with json_spirit.
-// Most duplicate other methods, and should be removed.
-//
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, const char *cVal)
-{
- std::string key(cKey);
- UniValue uVal(cVal);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, std::string strVal)
-{
- std::string key(cKey);
- UniValue uVal(strVal);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, uint64_t u64Val)
-{
- std::string key(cKey);
- UniValue uVal(u64Val);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, int64_t i64Val)
-{
- std::string key(cKey);
- UniValue uVal(i64Val);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, bool iVal)
-{
- std::string key(cKey);
- UniValue uVal(iVal);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, int iVal)
-{
- std::string key(cKey);
- UniValue uVal(iVal);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, double dVal)
-{
- std::string key(cKey);
- UniValue uVal(dVal);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(const char *cKey, const UniValue& uVal)
-{
- std::string key(cKey);
- return std::make_pair(key, uVal);
-}
-
-static inline std::pair<std::string,UniValue> Pair(std::string key, const UniValue& uVal)
-{
- return std::make_pair(key, uVal);
-}
-
-enum jtokentype {
- JTOK_ERR = -1,
- JTOK_NONE = 0, // eof
- JTOK_OBJ_OPEN,
- JTOK_OBJ_CLOSE,
- JTOK_ARR_OPEN,
- JTOK_ARR_CLOSE,
- JTOK_COLON,
- JTOK_COMMA,
- JTOK_KW_NULL,
- JTOK_KW_TRUE,
- JTOK_KW_FALSE,
- JTOK_NUMBER,
- JTOK_STRING,
-};
-
-extern enum jtokentype getJsonToken(std::string& tokenVal,
- unsigned int& consumed, const char *raw);
-extern const char *uvTypeName(UniValue::VType t);
-
-extern const UniValue NullUniValue;
-
-const UniValue& find_value( const UniValue& obj, const std::string& name);
-
-#endif // BITCOIN_UNIVALUE_UNIVALUE_H