1 #ifndef STATICTYPE_HPP 2 #define STATICTYPE_HPP 3 4 /* $Id: statictype.hpp 572331 2018-10-11 15:49:53Z gouriano $ 5 * =========================================================================== 6 * 7 * PUBLIC DOMAIN NOTICE 8 * National Center for Biotechnology Information 9 * 10 * This software/database is a "United States Government Work" under the 11 * terms of the United States Copyright Act. It was written as part of 12 * the author's official duties as a United States Government employee and 13 * thus cannot be copyrighted. This software/database is freely available 14 * to the public for use. The National Library of Medicine and the U.S. 15 * Government have not placed any restriction on its use or reproduction. 16 * 17 * Although all reasonable efforts have been taken to ensure the accuracy 18 * and reliability of the software and data, the NLM and the U.S. 19 * Government do not and cannot warrant the performance or results that 20 * may be obtained by using this software or data. The NLM and the U.S. 21 * Government disclaim all warranties, express or implied, including 22 * warranties of performance, merchantability or fitness for any particular 23 * purpose. 24 * 25 * Please cite the author in any work or product based on this material. 26 * 27 * =========================================================================== 28 * 29 * Author: Eugene Vasilchenko 30 * 31 * File Description: 32 * Predefined types: INTEGER, BOOLEAN, VisibleString etc. 33 * 34 */ 35 36 #include "type.hpp" 37 38 BEGIN_NCBI_SCOPE 39 40 class CStaticDataType : public CDataType { 41 typedef CDataType CParent; 42 public: 43 virtual void PrintASN(CNcbiOstream& out, int indent) const override; 44 virtual void PrintJSONSchema(CNcbiOstream& out, int indent, list<string>& required, bool contents_only=false) const override; 45 virtual void PrintXMLSchema(CNcbiOstream& out, int indent, bool contents_only=false) const override; 46 virtual void PrintDTDElement(CNcbiOstream& out, bool contents_only=false) const override; 47 48 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 49 50 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 51 //virtual string GetDefaultCType(void) const; 52 virtual const char* GetDefaultCType(void) const = 0; 53 virtual const char* GetXMLContents(void) const = 0; 54 virtual bool PrintXMLSchemaContents(CNcbiOstream& out, int indent, const CDataMember* mem) const; 55 }; 56 57 class CNullDataType : public CStaticDataType { 58 typedef CStaticDataType CParent; 59 public: 60 virtual bool CheckValue(const CDataValue& value) const override; 61 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 62 63 virtual CTypeRef GetTypeInfo(void) override; 64 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 65 virtual const char* GetDefaultCType(void) const override; 66 virtual const char* GetASNKeyword(void) const override; 67 virtual const char* GetDEFKeyword(void) const override; 68 virtual const char* GetXMLContents(void) const override; 69 virtual bool PrintXMLSchemaContents(CNcbiOstream& out, int indent, const CDataMember* mem) const override; 70 }; 71 72 class CBoolDataType : public CStaticDataType { 73 typedef CStaticDataType CParent; 74 public: 75 virtual bool CheckValue(const CDataValue& value) const override; 76 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 77 virtual string GetDefaultString(const CDataValue& value) const override; 78 79 virtual CTypeRef GetTypeInfo(void) override; 80 virtual const char* GetDefaultCType(void) const override; 81 virtual const char* GetASNKeyword(void) const override; 82 virtual const char* GetDEFKeyword(void) const override; 83 virtual const char* GetXMLContents(void) const override; 84 virtual string GetSchemaTypeString(void) const override; 85 virtual bool PrintXMLSchemaContents(CNcbiOstream& out, int indent, const CDataMember* mem) const override; 86 87 virtual void PrintDTDExtra(CNcbiOstream& out) const override; 88 }; 89 90 class CRealDataType : public CStaticDataType { 91 typedef CStaticDataType CParent; 92 public: 93 CRealDataType(void); 94 virtual bool CheckValue(const CDataValue& value) const override; 95 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 96 virtual string GetDefaultString(const CDataValue& value) const override; 97 98 virtual const CTypeInfo* GetRealTypeInfo(void) override; 99 virtual const char* GetDefaultCType(void) const override; 100 virtual const char* GetASNKeyword(void) const override; 101 virtual const char* GetDEFKeyword(void) const override; 102 virtual const char* GetXMLContents(void) const override; 103 virtual string GetSchemaTypeString(void) const override; 104 }; 105 106 class CStringDataType : public CStaticDataType { 107 typedef CStaticDataType CParent; 108 public: 109 enum EType { 110 eStringTypeVisible, 111 eStringTypeUTF8 112 }; 113 114 CStringDataType(EType type = eStringTypeVisible); 115 116 virtual bool CheckValue(const CDataValue& value) const override; 117 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 118 virtual string GetDefaultString(const CDataValue& value) const override; 119 120 virtual const CTypeInfo* GetRealTypeInfo(void) override; 121 virtual bool NeedAutoPointer(const CTypeInfo* typeInfo) const override; 122 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 123 virtual const char* GetDefaultCType(void) const override; 124 virtual const char* GetASNKeyword(void) const override; 125 virtual const char* GetDEFKeyword(void) const override; 126 virtual const char* GetXMLContents(void) const override; 127 virtual string GetSchemaTypeString(void) const override; 128 GetStringType(void) const129 EType GetStringType(void) const 130 { 131 return m_Type; 132 } 133 protected: 134 EType m_Type; 135 }; 136 137 class CStringStoreDataType : public CStringDataType { 138 typedef CStringDataType CParent; 139 public: 140 CStringStoreDataType(void); 141 142 virtual const CTypeInfo* GetRealTypeInfo(void) override; 143 virtual bool NeedAutoPointer(const CTypeInfo* typeInfo) const override; 144 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 145 virtual const char* GetASNKeyword(void) const override; 146 virtual const char* GetDEFKeyword(void) const override; 147 }; 148 149 class CBitStringDataType : public CStaticDataType { 150 typedef CStaticDataType CParent; 151 public: 152 CBitStringDataType(CDataType* bitenum = nullptr); 153 virtual void FixTypeTree(void) const override; 154 virtual bool CheckValue(const CDataValue& value) const override; 155 virtual const CTypeInfo* GetRealTypeInfo(void) override; 156 virtual bool NeedAutoPointer(const CTypeInfo* typeInfo) const override; 157 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 158 virtual const char* GetDefaultCType(void) const override; 159 virtual const char* GetASNKeyword(void) const override; 160 virtual const char* GetDEFKeyword(void) const override; 161 virtual const char* GetXMLContents(void) const override; 162 virtual bool PrintXMLSchemaContents(CNcbiOstream& out, int indent, const CDataMember* mem) const override; 163 private: 164 CDataType* m_BitStringEnum; 165 }; 166 167 class COctetStringDataType : public CBitStringDataType { 168 typedef CBitStringDataType CParent; 169 public: 170 virtual bool CheckValue(const CDataValue& value) const override; 171 virtual const CTypeInfo* GetRealTypeInfo(void) override; 172 virtual bool NeedAutoPointer(const CTypeInfo* typeInfo) const override; 173 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 174 virtual const char* GetDefaultCType(void) const override; 175 virtual const char* GetASNKeyword(void) const override; 176 virtual const char* GetDEFKeyword(void) const override; 177 virtual const char* GetXMLContents(void) const override; 178 virtual string GetSchemaTypeString(void) const override; 179 virtual bool IsCompressed(void) const; 180 protected: 181 virtual bool x_AsBitString(void) const; 182 }; 183 184 class CBase64BinaryDataType : public COctetStringDataType { 185 typedef COctetStringDataType CParent; 186 public: 187 virtual string GetSchemaTypeString(void) const override; 188 virtual bool IsCompressed(void) const override; 189 protected: 190 virtual bool x_AsBitString(void) const override; 191 }; 192 193 class CIntDataType : public CStaticDataType { 194 typedef CStaticDataType CParent; 195 public: 196 CIntDataType(void); 197 virtual bool CheckValue(const CDataValue& value) const override; 198 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 199 virtual string GetDefaultString(const CDataValue& value) const override; 200 201 virtual CTypeRef GetTypeInfo(void) override; 202 virtual const char* GetDefaultCType(void) const override; 203 virtual const char* GetASNKeyword(void) const override; 204 virtual const char* GetDEFKeyword(void) const override; 205 virtual const char* GetXMLContents(void) const override; 206 virtual string GetSchemaTypeString(void) const override; 207 }; 208 209 class CBigIntDataType : public CIntDataType { 210 typedef CIntDataType CParent; 211 public: CBigIntDataType(bool bAsnBigInt=false)212 CBigIntDataType(bool bAsnBigInt = false) : m_bAsnBigInt(bAsnBigInt) { 213 } 214 virtual bool CheckValue(const CDataValue& value) const override; 215 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 216 virtual string GetDefaultString(const CDataValue& value) const override; 217 218 virtual CTypeRef GetTypeInfo(void) override; 219 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 220 virtual const char* GetDefaultCType(void) const override; 221 virtual const char* GetASNKeyword(void) const override; 222 virtual const char* GetDEFKeyword(void) const override; 223 virtual const char* GetXMLContents(void) const override; 224 virtual string GetSchemaTypeString(void) const override; 225 protected: 226 bool m_bAsnBigInt; 227 }; 228 229 class CAnyContentDataType : public CStaticDataType { 230 public: 231 virtual bool CheckValue(const CDataValue& value) const override; 232 virtual void PrintASN(CNcbiOstream& out, int indent) const override; 233 virtual void PrintJSONSchema(CNcbiOstream& out, int indent, list<string>& required, bool contents_only=false) const override; 234 virtual void PrintXMLSchema(CNcbiOstream& out, int indent, bool contents_only=false) const override; 235 virtual void PrintDTDElement(CNcbiOstream& out, bool contents_only=false) const override; 236 237 virtual TObjectPtr CreateDefault(const CDataValue& value) const override; 238 239 virtual AutoPtr<CTypeStrings> GetFullCType(void) const override; 240 virtual const char* GetDefaultCType(void) const override; 241 virtual const char* GetASNKeyword(void) const override; 242 virtual const char* GetDEFKeyword(void) const override; 243 virtual const char* GetXMLContents(void) const override; 244 }; 245 246 END_NCBI_SCOPE 247 248 #endif 249