diff options
Diffstat (limited to 'storage/connect/Header.h')
-rw-r--r-- | storage/connect/Header.h | 395 |
1 files changed, 0 insertions, 395 deletions
diff --git a/storage/connect/Header.h b/storage/connect/Header.h deleted file mode 100644 index f9664befaa3..00000000000 --- a/storage/connect/Header.h +++ /dev/null @@ -1,395 +0,0 @@ -#pragma once -/**************** json H Declares Source Code File (.H) ****************/ -/* Name: json.h Version 1.2 */ -/* */ -/* (C) Copyright to the author Olivier BERTRAND 2014 - 2020 */ -/* */ -/* This file contains the JSON classes declares. */ -/***********************************************************************/ -#include <mysql_com.h> -#include "value.h" -#include "xobject.h" - -#if defined(_DEBUG) -#define X assert(false); -#else -#define X -#endif - -enum JTYP { - TYPE_NULL = TYPE_VOID, - TYPE_STRG = TYPE_STRING, - TYPE_DBL = TYPE_DOUBLE, - TYPE_BOOL = TYPE_TINY, - TYPE_BINT = TYPE_BIGINT, - TYPE_DTM = TYPE_DATE, - TYPE_INTG = TYPE_INT, - TYPE_VAL = 12, - TYPE_JSON, - TYPE_JAR, - TYPE_JOB, - TYPE_JVAL -}; - -class JDOC; -class JOUT; -class JSON; -class JVALUE; -class JOBJECT; -class JARRAY; - -typedef class JDOC* PJDOC; -typedef class JSON* PJSON; -typedef class JVALUE* PJVAL; -typedef class JOBJECT* PJOB; -typedef class JARRAY* PJAR; - -// BSON size should be equal on Linux and Windows -#define BMX 255 -typedef struct BSON* PBSON; -typedef struct JPAIR* PJPR; -//typedef struct VAL *PVL; - -/***********************************************************************/ -/* Structure JPAIR. The pairs of a json Object. */ -/***********************************************************************/ -struct JPAIR { - PCSZ Key; // This pair key name - PJVAL Val; // To the value of the pair - PJPR Next; // To the next pair -}; // end of struct JPAIR - -#if 0 -/***********************************************************************/ -/* Structure VAL (string, int, float, bool or null) */ -/***********************************************************************/ -struct VAL { - union { - char* Strp; // Ptr to a string - int N; // An integer value - long long LLn; // A big integer value - double F; // A float value - bool B; // True or false - }; - int Nd; // Decimal number - JTYP Type; // The value type -}; // end of struct VAL -#endif // 0 - -/***********************************************************************/ -/* Structure used to return binary json to Json UDF functions. */ -/***********************************************************************/ -struct BSON { - char Msg[BMX + 1]; - char* Filename; - PGLOBAL G; - int Pretty; - ulong Reslen; - my_bool Changed; - PJSON Top; - PJSON Jsp; - PBSON Bsp; -}; // end of struct BSON - -PBSON JbinAlloc(PGLOBAL g, UDF_ARGS* args, ulong len, PJSON jsp); -//PVL AllocVal(PGLOBAL g, JTYP type); -char* NextChr(PSZ s, char sep); -char* GetJsonNull(void); -const char* GetFmt(int type, bool un); - -PJSON ParseJson(PGLOBAL g, char* s, size_t n, int* prty = NULL, bool* b = NULL); -PSZ Serialize(PGLOBAL g, PJSON jsp, char* fn, int pretty); -DllExport bool IsNum(PSZ s); - -/***********************************************************************/ -/* Class JDOC. The class for parsing and serializing json documents. */ -/***********************************************************************/ -class JDOC : public BLOCK { - friend PJSON ParseJson(PGLOBAL, char*, size_t, int*, bool*); - friend PSZ Serialize(PGLOBAL, PJSON, char*, int); -public: - JDOC(void) : js(NULL), s(NULL), len(0), pty(NULL) {} - - void SetJp(JOUT* jp) { js = jp; } - -protected: - PJAR ParseArray(PGLOBAL g, int& i); - PJOB ParseObject(PGLOBAL g, int& i); - PJVAL ParseValue(PGLOBAL g, int& i); - char* ParseString(PGLOBAL g, int& i); - void ParseNumeric(PGLOBAL g, int& i, PJVAL jvp); - PJAR ParseAsArray(PGLOBAL g, int& i, int pretty, int* ptyp); - bool SerializeArray(PJAR jarp, bool b); - bool SerializeObject(PJOB jobp); - bool SerializeValue(PJVAL jvp); - - // Members used when parsing and serializing -private: - JOUT* js; - char* s; - int len; - bool* pty; -}; // end of class JDOC - -/***********************************************************************/ -/* Class JSON. The base class for all other json classes. */ -/***********************************************************************/ -class JSON : public BLOCK { -public: - // Constructor - JSON(void) { Type = TYPE_JSON; } - JSON(int) {} - - // Implementation - inline JTYP GetType(void) { return Type; } - - // Methods - virtual int size(void) { return 1; } - virtual void Clear(void) { X } - virtual PJOB GetObject(void) { return NULL; } - virtual PJAR GetArray(void) { return NULL; } - virtual PJVAL GetArrayValue(int i) { X return NULL; } - virtual int GetSize(bool b) { X return 0; } - virtual PJSON GetJsp(void) { X return NULL; } - virtual PJPR GetFirst(void) { X return NULL; } - virtual PSZ GetText(PGLOBAL g, PSTRG text) { X return NULL; } - virtual bool Merge(PGLOBAL g, PJSON jsp) { X return true; } - virtual void SetValue(PJSON jsp) { X } - virtual bool DeleteValue(int i) { X return true; } - virtual bool IsNull(void) { X return true; } - - // Members - JTYP Type; -}; // end of class JSON - -/***********************************************************************/ -/* Class JOBJECT: contains a list of value pairs. */ -/***********************************************************************/ -class JOBJECT : public JSON { - friend class JDOC; - friend class JSNX; - friend class SWAP; -public: - JOBJECT(void) : JSON() { Type = TYPE_JOB; First = Last = NULL; } - JOBJECT(int i) : JSON(i) {} - - // Methods - virtual void Clear(void) { First = Last = NULL; } - //virtual JTYP GetValType(void) {return TYPE_JOB;} - virtual PJPR GetFirst(void) { return First; } - virtual int GetSize(bool b); - virtual PJOB GetObject(void) { return this; } - virtual PSZ GetText(PGLOBAL g, PSTRG text); - virtual bool Merge(PGLOBAL g, PJSON jsp); - virtual bool IsNull(void); - - // Specific - PJPR AddPair(PGLOBAL g, PCSZ key); - PJVAL GetKeyValue(const char* key); - PJAR GetKeyList(PGLOBAL g); - PJAR GetValList(PGLOBAL g); - void SetKeyValue(PGLOBAL g, PJVAL jvp, PCSZ key); - void DeleteKey(PCSZ k); - -protected: - PJPR First; - PJPR Last; -}; // end of class JOBJECT - -/***********************************************************************/ -/* Class JARRAY. */ -/***********************************************************************/ -class JARRAY : public JSON { - friend class SWAP; -public: - JARRAY(void); - JARRAY(int i) : JSON(i) {} - - // Methods - virtual void Clear(void) { First = Last = NULL; Size = 0; } - virtual int size(void) { return Size; } - virtual PJAR GetArray(void) { return this; } - virtual int GetSize(bool b); - virtual PJVAL GetArrayValue(int i); - virtual PSZ GetText(PGLOBAL g, PSTRG text); - virtual bool Merge(PGLOBAL g, PJSON jsp); - virtual bool DeleteValue(int n); - virtual bool IsNull(void); - - // Specific - PJVAL AddArrayValue(PGLOBAL g, PJVAL jvp = NULL, int* x = NULL); - bool SetArrayValue(PGLOBAL g, PJVAL jvp, int i); - void InitArray(PGLOBAL g); - -protected: - // Members - int Size; // The number of items in the array - int Alloc; // The Mvals allocated size - PJVAL First; // Used when constructing - PJVAL Last; // Last constructed value - PJVAL* Mvals; // Allocated when finished -}; // end of class JARRAY - -/***********************************************************************/ -/* Class JVALUE. */ -/***********************************************************************/ -class JVALUE : public JSON { - friend class JARRAY; - friend class JSNX; - friend class JSONDISC; - friend class JSONCOL; - friend class JSON; - friend class JDOC; - friend class SWAP; -public: - JVALUE(void) : JSON() { Type = TYPE_JVAL; Clear(); } - JVALUE(PJSON jsp); - //JVALUE(PGLOBAL g, PVL vlp); - JVALUE(PGLOBAL g, PVAL valp); - JVALUE(PGLOBAL g, PCSZ strp); - JVALUE(int i) : JSON(i) {} - - //using JSON::GetVal; - //using JSON::SetVal; - - // Methods - virtual void Clear(void); - //virtual JTYP GetType(void) {return TYPE_JVAL;} - virtual JTYP GetValType(void); - virtual PJOB GetObject(void); - virtual PJAR GetArray(void); - virtual PJSON GetJsp(void) { return (DataType == TYPE_JSON ? Jsp : NULL); } - virtual PSZ GetText(PGLOBAL g, PSTRG text); - virtual bool IsNull(void); - - // Specific - //inline PVL GetVal(void) { return Val; } - //inline void SetVal(PVL vlp) { Val = vlp; } - inline PJSON GetJson(void) { return (DataType == TYPE_JSON ? Jsp : this); } - PSZ GetString(PGLOBAL g, char* buff = NULL); - int GetInteger(void); - long long GetBigint(void); - double GetFloat(void); - PVAL GetValue(PGLOBAL g); - void SetValue(PJSON jsp); - void SetValue(PGLOBAL g, PVAL valp); - void SetString(PGLOBAL g, PSZ s, int ci = 0); - void SetInteger(PGLOBAL g, int n); - void SetBigint(PGLOBAL g, longlong ll); - void SetFloat(PGLOBAL g, double f); - void SetBool(PGLOBAL g, bool b); - -protected: - union { - PJSON Jsp; // To the json value - char* Strp; // Ptr to a string - int N; // An integer value - long long LLn; // A big integer value - double F; // A (double) float value - bool B; // True or false - }; - //PVL Val; // To the string or numeric value - PJVAL Next; // Next value in array - JTYP DataType; // The data value type - int Nd; // Decimal number - bool Del; // True when deleted -}; // end of class JVALUE - - -/***********************************************************************/ -/* Class JOUT. Used by Serialize. */ -/***********************************************************************/ -class JOUT : public BLOCK { -public: - JOUT(PGLOBAL gp) : BLOCK() { g = gp; Pretty = 3; } - - virtual bool WriteStr(const char* s) = 0; - virtual bool WriteChr(const char c) = 0; - virtual bool Escape(const char* s) = 0; - int Prty(void) { return Pretty; } - - // Member - PGLOBAL g; - int Pretty; -}; // end of class JOUT - -/***********************************************************************/ -/* Class JOUTSTR. Used to Serialize to a string. */ -/***********************************************************************/ -class JOUTSTR : public JOUT { -public: - JOUTSTR(PGLOBAL g); - - virtual bool WriteStr(const char* s); - virtual bool WriteChr(const char c); - virtual bool Escape(const char* s); - - // Member - char* Strp; // The serialized string - size_t N; // Position of next char - size_t Max; // String max size -}; // end of class JOUTSTR - -/***********************************************************************/ -/* Class JOUTFILE. Used to Serialize to a file. */ -/***********************************************************************/ -class JOUTFILE : public JOUT { -public: - JOUTFILE(PGLOBAL g, FILE* str, int pty) : JOUT(g) { Stream = str; Pretty = pty; } - - virtual bool WriteStr(const char* s); - virtual bool WriteChr(const char c); - virtual bool Escape(const char* s); - - // Member - FILE* Stream; -}; // end of class JOUTFILE - -/***********************************************************************/ -/* Class JOUTPRT. Used to Serialize to a pretty file. */ -/***********************************************************************/ -class JOUTPRT : public JOUTFILE { -public: - JOUTPRT(PGLOBAL g, FILE* str) : JOUTFILE(g, str, 2) { M = 0; B = false; } - - virtual bool WriteStr(const char* s); - virtual bool WriteChr(const char c); - - // Member - int M; - bool B; -}; // end of class JOUTPRT - - -/***********************************************************************/ -/* Class SWAP. Used to make or unmake a JSON tree movable. */ -/* This is done by making all pointers to offsets. */ -/***********************************************************************/ -class SWAP : public BLOCK { -public: - // Constructor - SWAP(PGLOBAL g, PJSON jsp) { - G = g, Base = (char*)jsp - 8; - } - - // Methods - void SwapJson(PJSON jsp, bool move); - -protected: - size_t MoffJson(PJSON jnp); - size_t MoffArray(PJAR jarp); - size_t MoffObject(PJOB jobp); - size_t MoffJValue(PJVAL jvp); - size_t MoffPair(PJPR jpp); - //size_t MoffVal(PVL vlp); - PJSON MptrJson(PJSON jnp); - PJAR MptrArray(PJAR jarp); - PJOB MptrObject(PJOB jobp); - PJVAL MptrJValue(PJVAL jvp); - PJPR MptrPair(PJPR jpp); - //PVL MptrVal(PVL vlp); - - // Member - PGLOBAL G; - void* Base; -}; // end of class SWAP |