summaryrefslogtreecommitdiffstats
path: root/xbmc/dbwrappers/qry_dat.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/dbwrappers/qry_dat.h')
-rw-r--r--xbmc/dbwrappers/qry_dat.h265
1 files changed, 265 insertions, 0 deletions
diff --git a/xbmc/dbwrappers/qry_dat.h b/xbmc/dbwrappers/qry_dat.h
new file mode 100644
index 0000000..150de2d
--- /dev/null
+++ b/xbmc/dbwrappers/qry_dat.h
@@ -0,0 +1,265 @@
+/*
+ * Copyright (C) 2004, Leo Seib, Hannover
+ *
+ * Project:Dataset C++ Dynamic Library
+ * Module: FieldValue class and result sets classes header file
+ * Author: Leo Seib E-Mail: leoseib@web.de
+ * Begin: 5/04/2002
+ *
+ * SPDX-License-Identifier: MIT
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include <iostream>
+#include <stdint.h>
+#include <string>
+#include <vector>
+
+namespace dbiplus
+{
+
+enum fType
+{
+ ft_String,
+ ft_Boolean,
+ ft_Char,
+ ft_WChar,
+ ft_WideString,
+ ft_Short,
+ ft_UShort,
+ ft_Int,
+ ft_UInt,
+ ft_Float,
+ ft_Double,
+ ft_LongDouble,
+ ft_Int64,
+ ft_Object
+};
+
+#ifdef TARGET_WINDOWS_STORE
+#pragma pack(push)
+#pragma pack(8)
+#endif
+
+class field_value
+{
+private:
+ fType field_type;
+ std::string str_value;
+ union
+ {
+ bool bool_value;
+ char char_value;
+ short short_value;
+ unsigned short ushort_value;
+ int int_value;
+ unsigned int uint_value;
+ float float_value;
+ double double_value;
+ int64_t int64_value;
+ void* object_value;
+ };
+
+ bool is_null;
+
+public:
+ field_value();
+ explicit field_value(const char* s);
+ explicit field_value(const bool b);
+ explicit field_value(const char c);
+ explicit field_value(const short s);
+ explicit field_value(const unsigned short us);
+ explicit field_value(const int l);
+ explicit field_value(const unsigned int ul);
+ explicit field_value(const float f);
+ explicit field_value(const double d);
+ explicit field_value(const int64_t i);
+ field_value(const field_value& fv);
+ ~field_value();
+
+ fType get_fType() const { return field_type; }
+ bool get_isNull() const { return is_null; }
+ std::string get_asString() const;
+ bool get_asBool() const;
+ char get_asChar() const;
+ short get_asShort() const;
+ unsigned short get_asUShort() const;
+ int get_asInt() const;
+ unsigned int get_asUInt() const;
+ float get_asFloat() const;
+ double get_asDouble() const;
+ int64_t get_asInt64() const;
+
+ field_value& operator=(const char* s)
+ {
+ set_asString(s);
+ return *this;
+ }
+ field_value& operator=(const std::string& s)
+ {
+ set_asString(s);
+ return *this;
+ }
+ field_value& operator=(const bool b)
+ {
+ set_asBool(b);
+ return *this;
+ }
+ field_value& operator=(const short s)
+ {
+ set_asShort(s);
+ return *this;
+ }
+ field_value& operator=(const unsigned short us)
+ {
+ set_asUShort(us);
+ return *this;
+ }
+ field_value& operator=(const int l)
+ {
+ set_asInt(l);
+ return *this;
+ }
+ field_value& operator=(const unsigned int l)
+ {
+ set_asUInt(l);
+ return *this;
+ }
+ field_value& operator=(const float f)
+ {
+ set_asFloat(f);
+ return *this;
+ }
+ field_value& operator=(const double d)
+ {
+ set_asDouble(d);
+ return *this;
+ }
+ field_value& operator=(const int64_t i)
+ {
+ set_asInt64(i);
+ return *this;
+ }
+ field_value& operator=(const field_value& fv);
+
+ //class ostream;
+ friend std::ostream& operator<<(std::ostream& os, const field_value& fv)
+ {
+ switch (fv.get_fType())
+ {
+ case ft_String:
+ {
+ return os << fv.get_asString();
+ break;
+ }
+ case ft_Boolean:
+ {
+ return os << fv.get_asBool();
+ break;
+ }
+ case ft_Char:
+ {
+ return os << fv.get_asChar();
+ break;
+ }
+ case ft_Short:
+ {
+ return os << fv.get_asShort();
+ break;
+ }
+ case ft_UShort:
+ {
+ return os << fv.get_asUShort();
+ break;
+ }
+ case ft_Int:
+ {
+ return os << fv.get_asInt();
+ break;
+ }
+ case ft_UInt:
+ {
+ return os << fv.get_asUInt();
+ break;
+ }
+ case ft_Float:
+ {
+ return os << fv.get_asFloat();
+ break;
+ }
+ case ft_Double:
+ {
+ return os << fv.get_asDouble();
+ break;
+ }
+ case ft_Int64:
+ {
+ return os << fv.get_asInt64();
+ break;
+ }
+ default:
+ {
+ return os;
+ break;
+ }
+ }
+ }
+
+ void set_isNull() { is_null = true; }
+ void set_asString(const char* s);
+ void set_asString(const std::string& s);
+ void set_asBool(const bool b);
+ void set_asChar(const char c);
+ void set_asShort(const short s);
+ void set_asUShort(const unsigned short us);
+ void set_asInt(const int l);
+ void set_asUInt(const unsigned int l);
+ void set_asFloat(const float f);
+ void set_asDouble(const double d);
+ void set_asInt64(const int64_t i);
+
+ fType get_field_type();
+ std::string gft();
+};
+
+struct field_prop
+{
+ std::string name;
+};
+
+struct field
+{
+ field_prop props;
+ field_value val;
+};
+
+typedef std::vector<field> Fields;
+typedef std::vector<field_value> sql_record;
+typedef std::vector<field_prop> record_prop;
+typedef std::vector<sql_record*> query_data;
+typedef field_value variant;
+
+class result_set
+{
+public:
+ result_set() = default;
+ ~result_set() { clear(); };
+ void clear()
+ {
+ for (unsigned int i = 0; i < records.size(); i++)
+ if (records[i])
+ delete records[i];
+ records.clear();
+ record_header.clear();
+ };
+
+ record_prop record_header;
+ query_data records;
+};
+
+#ifdef TARGET_WINDOWS_STORE
+#pragma pack(pop)
+#endif
+} // namespace dbiplus