📄 statictype.cpp
字号:
void CRealDataType::GetXMLSchemaContents(string& type, string& contents) const{ type = "xs:decimal"; contents.erase();}bool CRealDataType::CheckValue(const CDataValue& value) const{ const CBlockDataValue* block = dynamic_cast<const CBlockDataValue*>(&value); if ( !block ) { return dynamic_cast<const CDoubleDataValue*>(&value) != 0; } if ( block->GetValues().size() != 3 ) { value.Warning("wrong number of elements in REAL value"); return false; } for ( CBlockDataValue::TValues::const_iterator i = block->GetValues().begin(); i != block->GetValues().end(); ++i ) { CheckValueType(**i, CIntDataValue, "INTEGER"); } return true;}TObjectPtr CRealDataType::CreateDefault(const CDataValue& value) const{ return new double(dynamic_cast<const CDoubleDataValue&>(value).GetValue());}string CRealDataType::GetDefaultString(const CDataValue& value) const{ const CDoubleDataValue* dbl = dynamic_cast<const CDoubleDataValue*>(&value); if (dbl) { return NStr::DoubleToString(dbl->GetValue()); } value.Warning("REAL value expected"); return kEmptyStr;}TTypeInfo CRealDataType::GetRealTypeInfo(void){ if ( HaveModuleName() ) return UpdateModuleName(CStdTypeInfo<double>::CreateTypeInfo()); return CStdTypeInfo<double>::GetTypeInfo();}const char* CRealDataType::GetDefaultCType(void) const{ return "double";}CStringDataType::CStringDataType(EType type) : m_Type(type){ ForbidVar("_type", "short"); ForbidVar("_type", "int"); ForbidVar("_type", "long"); ForbidVar("_type", "unsigned"); ForbidVar("_type", "unsigned short"); ForbidVar("_type", "unsigned int"); ForbidVar("_type", "unsigned long");}const char* CStringDataType::GetASNKeyword(void) const{ if (m_Type == eStringTypeUTF8) { return "UTF8String"; } return "VisibleString";}const char* CStringDataType::GetXMLContents(void) const{ return "( #PCDATA )";}void CStringDataType::GetXMLSchemaContents(string& type, string& contents) const{ type = "xs:string"; contents.erase();}bool CStringDataType::CheckValue(const CDataValue& value) const{ CheckValueType(value, CStringDataValue, "string"); return true;}TObjectPtr CStringDataType::CreateDefault(const CDataValue& value) const{ if (m_Type == eStringTypeUTF8) { return new (CStringUTF8*)(new CStringUTF8(dynamic_cast<const CStringDataValue&>(value).GetValue())); } return new (string*)(new string(dynamic_cast<const CStringDataValue&>(value).GetValue()));}string CStringDataType::GetDefaultString(const CDataValue& value) const{ string s; s += '\"'; const string& v = dynamic_cast<const CStringDataValue&>(value).GetValue(); for ( string::const_iterator i = v.begin(); i != v.end(); ++i ) { switch ( *i ) { case '\r': s += "\\r"; break; case '\n': s += "\\n"; break; case '\"': s += "\\\""; break; case '\\': s += "\\\\"; break; default: s += *i; } } return s + '\"';}TTypeInfo CStringDataType::GetRealTypeInfo(void){ if ( HaveModuleName() ) return UpdateModuleName(CStdTypeInfo<string>::CreateTypeInfo()); return CStdTypeInfo<string>::GetTypeInfo();}bool CStringDataType::NeedAutoPointer(TTypeInfo /*typeInfo*/) const{ return true;}AutoPtr<CTypeStrings> CStringDataType::GetFullCType(void) const{ string type = GetAndVerifyVar("_type"); if ( type.empty() ) type = GetDefaultCType(); return AutoPtr<CTypeStrings>(new CStringTypeStrings(type));}const char* CStringDataType::GetDefaultCType(void) const{ if (m_Type == eStringTypeUTF8) { return "ncbi::CStringUTF8"; } return "NCBI_NS_STD::string";}CStringStoreDataType::CStringStoreDataType(void){}const char* CStringStoreDataType::GetASNKeyword(void) const{ return "StringStore";}TTypeInfo CStringStoreDataType::GetRealTypeInfo(void){ return CStdTypeInfo<string>::GetTypeInfoStringStore();}bool CStringStoreDataType::NeedAutoPointer(TTypeInfo /*typeInfo*/) const{ return true;}AutoPtr<CTypeStrings> CStringStoreDataType::GetFullCType(void) const{ string type = GetAndVerifyVar("_type"); if ( type.empty() ) type = GetDefaultCType(); return AutoPtr<CTypeStrings>(new CStringStoreTypeStrings(type));}const char* CBitStringDataType::GetASNKeyword(void) const{ return "BIT STRING";}bool CBitStringDataType::CheckValue(const CDataValue& value) const{ CheckValueType(value, CBitStringDataValue, "BIT STRING"); return true;}const char* CBitStringDataType::GetXMLContents(void) const{ return "( %BITS; )";}void CBitStringDataType::GetXMLSchemaContents(string& type, string& contents) const{ type = "xs:hexBinary"; contents.erase();}const char* COctetStringDataType::GetASNKeyword(void) const{ return "OCTET STRING";}const char* COctetStringDataType::GetDefaultCType(void) const{ return "NCBI_NS_STD::vector<char>";}const char* COctetStringDataType::GetXMLContents(void) const{ return "( %OCTETS; )";}void COctetStringDataType::GetXMLSchemaContents(string& type, string& contents) const{ type = "xs:hexBinary"; contents.erase();}bool COctetStringDataType::CheckValue(const CDataValue& value) const{ CheckValueType(value, COctetStringDataType, "OCTET STRING"); return true;}TTypeInfo COctetStringDataType::GetRealTypeInfo(void){ if ( HaveModuleName() ) return UpdateModuleName(CStdTypeInfo<vector<char> >::CreateTypeInfo()); return CStdTypeInfo< vector<char> >::GetTypeInfo();}bool COctetStringDataType::NeedAutoPointer(TTypeInfo /*typeInfo*/) const{ return true;}AutoPtr<CTypeStrings> COctetStringDataType::GetFullCType(void) const{ string charType = GetVar("_char"); if ( charType.empty() ) charType = "char"; return AutoPtr<CTypeStrings>(new CVectorTypeStrings(charType));}CIntDataType::CIntDataType(void){ ForbidVar("_type", "string");}const char* CIntDataType::GetASNKeyword(void) const{ return "INTEGER";}const char* CIntDataType::GetXMLContents(void) const{ return "( %INTEGER; )";}void CIntDataType::GetXMLSchemaContents(string& type, string& contents) const{ type = "xs:integer"; contents.erase();}bool CIntDataType::CheckValue(const CDataValue& value) const{ CheckValueType(value, CIntDataValue, "INTEGER"); return true;}TObjectPtr CIntDataType::CreateDefault(const CDataValue& value) const{ return new Int4(dynamic_cast<const CIntDataValue&>(value).GetValue());}string CIntDataType::GetDefaultString(const CDataValue& value) const{ return NStr::IntToString(dynamic_cast<const CIntDataValue&>(value).GetValue());}CTypeRef CIntDataType::GetTypeInfo(void){ if ( HaveModuleName() ) return UpdateModuleName(CStdTypeInfo<Int4>::CreateTypeInfo()); return &CStdTypeInfo<Int4>::GetTypeInfo;}const char* CIntDataType::GetDefaultCType(void) const{ return "int";}const char* CBigIntDataType::GetASNKeyword(void) const{ return "BigInt";}const char* CBigIntDataType::GetXMLContents(void) const{ return "( %INTEGER; )";}void CBigIntDataType::GetXMLSchemaContents(string& type, string& contents) const{ type = "xs:integer"; contents.erase();}bool CBigIntDataType::CheckValue(const CDataValue& value) const{ CheckValueType(value, CIntDataValue, "BigInt"); return true;}TObjectPtr CBigIntDataType::CreateDefault(const CDataValue& value) const{ return new Int8(dynamic_cast<const CIntDataValue&>(value).GetValue());}string CBigIntDataType::GetDefaultString(const CDataValue& value) const{ return NStr::IntToString(dynamic_cast<const CIntDataValue&>(value).GetValue());}CTypeRef CBigIntDataType::GetTypeInfo(void){ if ( HaveModuleName() ) return UpdateModuleName(CStdTypeInfo<Int8>::CreateTypeInfo()); return &CStdTypeInfo<Int8>::GetTypeInfo;}const char* CBigIntDataType::GetDefaultCType(void) const{ return "Int8";}bool CAnyContentDataType::CheckValue(const CDataValue& value) const{ return true;}void CAnyContentDataType::PrintASN(CNcbiOstream& out, int indent) const{ out << GetASNKeyword();}void CAnyContentDataType::PrintDTDElement(CNcbiOstream& out) const{ out << "<!ELEMENT "<<XmlTagName()<<" "<<GetXMLContents()<<">";}void CAnyContentDataType::PrintXMLSchemaElement(CNcbiOstream& out) const{ out << "<xs:element name=\"" << XmlTagName() << "\">\n" " <xs:complexType>\n" " <xs:sequence>\n" " <xs:any processContext=\"lax\"/>\n" " </xs:sequence>\n" " </xs:complexType>\n" "</xs:element>\n";}TObjectPtr CAnyContentDataType::CreateDefault(const CDataValue& value) const{ return new (string*)(new string(dynamic_cast<const CStringDataValue&>(value).GetValue()));}AutoPtr<CTypeStrings> CAnyContentDataType::GetFullCType(void) const{// TO BE CHANGED !!! string type = GetAndVerifyVar("_type"); if ( type.empty() ) type = GetDefaultCType(); return AutoPtr<CTypeStrings>(new CAnyContentTypeStrings(type));}const char* CAnyContentDataType::GetDefaultCType(void) const{ return "ncbi::CAnyContentObject";}const char* CAnyContentDataType::GetASNKeyword(void) const{// not exactly, but...// (ASN.1 does not seem to suppport this type of data) return "VisibleString";}const char* CAnyContentDataType::GetXMLContents(void) const{ return "ANY";}void CAnyContentDataType::GetXMLSchemaContents(string& type, string& contents) const{ type.erase(); contents.erase();}END_NCBI_SCOPE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -