&
static_cast<AnyType*
>(0)[index];
74memset(obj, 0,
size);
96TMembers::const_iterator
next=
i;
113 i->get()->PrintSpecDump(
out,
indent, isAttlist ?
"A":
"F");
121 boolhasNotag =
data&&
data->Notag();
122list<string> this_req;
123list<string>& req = (hasNotag || contents_only) ? required : this_req;
128 if(!contents_only &&
m_Members.size()==1 &&
129(
m_Members.front()->GetType()->IsContainer() ||
m_Members.front()->GetType()->IsUniSeq())) {
143 if(hasUnnamedContainer) {
178 if(!contents_only) {
203 else if(member.
Notag()) {
219 if(!contents_only) {
225[](
const string& e) {
226return string(
"\"").append(e).append(
"\"");
236 if(hasUnnamedContainer) {
241 if(
data&& !
data->Notag() && !
data->Optional() && !
data->Attlist()) {
242required.push_back(
data->GetName());
250 int indent,
boolcontents_only)
const 255 boolhasAttlist=
false, isAttlist=
false;
256 boolhasNotag=
false, isOptionalMember=
false, isOptionalContent=
false;
257 boolisSimple=
false, isSimpleSeq=
false, isSeq=
false, isMixed=
false;
258 boolisSimpleContainer=
false, parent_isSeq=
false;
259 booldefineAsType =
false;
263list<string> opentag, closetag1, closetag2;
273 if(
i->get()->Attlist()) {
281 if(
i->get()->Notag()) {
298isOptionalMember = member->
Optional();
301isSeq = (typeSeq != 0);
306asnk =
data->GetASNKeyword();
310 if((hasAttlist &&
GetMembers().size()==2) ||
313 if(
i->get()->Attlist()) {
316 if(
i->get()->SimpleType()) {
318simpleType =
i->get()->GetType()->GetSchemaTypeString();
322 boolany = (typeSeq != 0) &&
327isSimpleSeq = !any && (typeSeq != 0 ||
data!= 0);
328isSimpleContainer =
data!= 0;
330isSeq = typeSeq != 0;
331 const CDataMember*mem =
i->get()->GetType()->GetDataMember();
337asnk =
data->GetASNKeyword();
339 if(m->get()->Notag()) {
349 if(mem->
Notag()) {
350isOptionalContent = mem->
Optional();
352isSeq = isSimpleSeq =
false;
356 if(
i->get()->Notag()) {
374 if(!isAttlist && !parent_isSeq) {
376 if(!contents_only) {
378 if(isGlobalType || isGlobalGroup) {
381 tmp=
"<xs:element name=\""+
tag+
"\"";
382 if(isOptionalMember) {
383 tmp+=
" minOccurs=\"0\"";
386 tmp+=
" nillable=\"true\"";
394 tmp+=
" type=\""+ tname +
"\"/>";
397 #if _DATATOOL_USE_SCHEMA_STYLE_COMMENTS 405 opentag.push_back(tmp); 407 closetag2.push_front("</xs:element>"); 411 tmp = isGlobalGroup ? "<xs:group" : "<xs:complexType"; 413 tmp += " mixed=\"true\""; 415 if (defineAsType || isGlobalType || isGlobalGroup) { 416 tmp += " name=\"" + tname + "\""; 417 if (!isGlobalType && !isGlobalGroup) { 422 opentag.push_back(tmp + ">"); 423 closetag2.push_front(isGlobalGroup ? "</xs:group" : "</xs:complexType>"); 426 if (!isGlobalGroup) { 427 if (!isSimple && !isSimpleContainer) { 428 if (!contents_only || hasNotag) { 429 if(NStr::CompareCase(asnk,"CHOICE")==0) { 431 } else if(NStr::CompareCase(asnk,"SEQUENCE")==0) { 433 } else if(NStr::CompareCase(asnk,"SET")==0) { 437 if (isOptionalContent || (hasNotag && isOptionalMember)) { 438 tmp += " minOccurs=\"0\""; 441 tmp += " maxOccurs=\"unbounded\""; 443 opentag.push_back(tmp + ">"); 444 closetag1.push_front("</xs:" + xsdk + ">"); 446 } else if (!simpleType.empty()) { 447 opentag.push_back("<xs:simpleContent>"); 448 closetag2.push_front("</xs:simpleContent>"); 449 opentag.push_back("<xs:extension base=\"" + simpleType + "\">"); 450 closetag2.push_front("</xs:extension>"); 454 ITERATE ( list<string>, s, opentag ) { 455 PrintASNNewLine(*os, indent++) << *s; 458 ITERATE ( TMembers, i, m_Members ) { 459 const CDataMember& member = **i; 460 member.PrintXMLSchema(*os, indent); 462 } else if (!isSimple) { 463 ITERATE ( TMembers, i, m_Members ) { 464 const CDataMember& member = **i; 465 if (member.Attlist()) { 468 if (isMixed && member.Notag()) { 469 if (dynamic_cast<const CStringDataType*>(member.GetType())) { 473 member.PrintXMLSchema(*os, indent, isSimpleSeq); 476 ITERATE ( list<string>, s, closetag1 ) { 477 PrintASNNewLine(*os, --indent) << *s; 480 ITERATE ( TMembers, i, m_Members ) { 481 const CDataMember& member = **i; 482 if (member.Attlist()) { 483 member.PrintXMLSchema(*os, indent); 487 ITERATE ( list<string>, s, closetag2 ) { 488 PrintASNNewLine(*os, --indent) << *s; 491 GetModule()->AddExtraSchemaOutput( CNcbiOstrstreamToString(otype) ); 493 m_LastComments.PrintDTD(out, CComments::eMultiline); 496 void CDataMemberContainerType::PrintDTDElement(CNcbiOstream& out, bool contents_only) const 498 string tag = XmlTagName(); 499 bool hasAttlist= false, isAttlist= false; 500 bool isSimple= false, isSeq= false; 502 if (GetEnforcedStdXml()) { 503 ITERATE ( TMembers, i, m_Members ) { 504 if (i->get()->Attlist()) { 509 if (GetDataMember()) { 510 isAttlist = GetDataMember()->Attlist(); 512 if (GetMembers().size()==1) { 513 const CDataMember* member = GetMembers().front().get(); 514 const CUniSequenceDataType* uniType = 515 dynamic_cast<const CUniSequenceDataType*>(member->GetType()); 516 if (uniType && member->Notag()) { 520 if (hasAttlist && GetMembers().size()==2) { 521 ITERATE ( TMembers, i, GetMembers() ) { 522 if (i->get()->Attlist()) { 525 if (i->get()->SimpleType()) { 527 i->get()->GetType()->PrintDTDElement(out); 529 const CUniSequenceDataType* uniType = 530 dynamic_cast<const CUniSequenceDataType*>(i->get()->GetType()); 531 if (uniType && i->get()->Notag()) { 540 ITERATE ( TMembers, i, m_Members ) { 541 (*i)->Comments().PrintDTD(out,CComments::eNoEOL); 542 i->get()->GetType()->PrintDTDElement(out); 547 if (!contents_only) { 548 out << "\n<!ELEMENT " << tag << " "; 553 bool need_separator = false; 554 ITERATE ( TMembers, i, m_Members ) { 555 if (need_separator) { 556 out << XmlMemberSeparator(); 558 need_separator = true; 559 const CDataMember& member = **i; 560 string member_name( member.GetType()->XmlTagName()); 561 const CUniSequenceDataType* uniType = 562 dynamic_cast<const CUniSequenceDataType*>(member.GetType()); 563 bool isOptional = member.Optional(); 564 if (GetEnforcedStdXml()) { 565 if (member.Attlist()) { 566 need_separator = false; 569 if (member.Notag()) { 570 const CStaticDataType* statType = 571 dynamic_cast<const CStaticDataType*>(member.GetType()); 572 bool need_open = !statType; 573 bool need_newline = !need_open; 574 const CDataMemberContainerType* data = 575 dynamic_cast<const CDataMemberContainerType*>(member.GetType()); 577 const CDataMember* data_member = data->GetMembers().front().get(); 578 if (data_member && data_member->Notag() && 579 data_member->GetType()->IsUniSeq()) { 582 need_newline = false; 591 member.GetType()->PrintDTDElement(out,true); 596 out << "\n " << member_name; 599 out << "\n " << member_name; 602 const CStaticDataType* elemType = 603 dynamic_cast<const CStaticDataType*>(uniType->GetElementType()); 604 if ((elemType || member.NoPrefix()) && GetEnforcedStdXml()) { 621 if (!contents_only) { 629 ITERATE ( TMembers, i, m_Members ) { 630 const CDataMember& member = **i; 631 if (member.Attlist()) { 632 member.GetComments().PrintDTD(out, CComments::eNoEOL); 633 out << "\n<!ATTLIST " << tag; 634 member.GetType()->PrintDTDElement(out); 642 void CDataMemberContainerType::PrintDTDExtra(CNcbiOstream& out) const 644 ITERATE ( TMembers, i, m_Members ) { 645 const CDataMember& member = **i; 646 if (member.Notag()) { 647 member.GetType()->PrintDTDExtra(out); 649 member.PrintDTD(out); 652 m_LastComments.PrintDTD(out, CComments::eMultiline); 655 void CDataMemberContainerType::FixTypeTree(void) const 657 CParent::FixTypeTree(); 658 ITERATE ( TMembers, i, m_Members ) { 659 (*i)->GetType()->SetParent(this, (*i)->GetName()); 663 bool CDataMemberContainerType::CheckType(void) const 666 ITERATE ( TMembers, i, m_Members ) { 667 if ( !(*i)->Check() ) 672 // All tags must be different 673 bool hasUntagged = false; 674 set< pair< CAsnBinaryDefs::TLongTag, CAsnBinaryDefs::ETagClass> > tag_inuse; 675 CAsnBinaryDefs::ETagType tagtype = GetTagType(); 676 bool ischoice = NStr::CompareCase(GetASNKeyword(),"CHOICE")==0; 678 if (tagtype == CAsnBinaryDefs::eAutomatic || 681 ITERATE ( TMembers, i, m_Members ) { 682 const CDataType* itype = (*i)->GetType(); 683 bool hastag = itype->HasTag(); 684 CAsnBinaryDefs::TLongTag itag = itype->GetTag(); 685 CAsnBinaryDefs::ETagClass tagclass = itype->GetTagClass(); 686 if (!hastag && itype->IsReference()) { 687 const CDataType* rtype = itype->Resolve(); 689 hastag = rtype->HasTag(); 690 itag = rtype->GetTag(); 691 tagclass = rtype->GetTagClass(); 695 pair< CAsnBinaryDefs::TLongTag, CAsnBinaryDefs::ETagClass> 696 tag = make_pair(itag, tagclass); 697 if (tag_inuse.find(tag) != tag_inuse.end()) { 698 NCBI_THROW(CDatatoolException,eInvalidData, 699 "Duplicate tag: " + itype->IdName() + 700 " [" + NStr::NumericToString(itag) + "] in " + 701 GetModule()->GetName()); 703 tag_inuse.insert(tag); 705 NCBI_THROW(CDatatoolException,eInvalidData, 706 "No explicit tag for " + itype->IdName() + " in " + 707 GetModule()->GetName()); 712 if (!tag_inuse.empty()) { 713 NCBI_THROW(CDatatoolException,eInvalidData, 714 "No explicit tag for " + itype->IdName() + " in " + 715 GetModule()->GetName()); 723 TObjectPtr CDataMemberContainerType::CreateDefault(const CDataValue& ) const 725 NCBI_THROW(CDatatoolException,eNotImplemented, 726 GetASNKeyword() + string(" default not implemented")); 729 bool CDataMemberContainerType::UniElementNameExists(const string& name) const 732 for (TMembers::const_iterator i = m_Members.begin(); 733 !res && i != m_Members.end(); ++i) { 734 const CUniSequenceDataType* mem = 735 dynamic_cast<const CUniSequenceDataType*>((*i)->GetType()); 737 const CDataMemberContainerType* elem = 738 dynamic_cast<const CDataMemberContainerType*>(mem->GetElementType()); 739 res = (elem != 0 && elem->GetMemberName() == name); 745 const char* CDataContainerType::XmlMemberSeparator(void) const 750 CTypeInfo* CDataContainerType::CreateTypeInfo(void) 752 return CreateClassInfo(); 755 CClassTypeInfo* CDataContainerType::CreateClassInfo(void) 757 size_t itemCount = 0; 758 // add place for 'isSet
' flags 759 ITERATE ( TMembers, i, GetMembers() ) { 761 CDataMember* mem = i->get(); 762 if ( mem->Optional() || mem->GetDefault() || mem->Nillable() ) 765 unique_ptr<CAnyTypeClassInfo> typeInfo(new CAnyTypeClassInfo( 766 HasExternalName() ? GlobalName() : kEmptyStr, itemCount)); 768 for ( TMembers::const_iterator i = GetMembers().begin(); 769 i != GetMembers().end(); ++i ) { 770 CDataMember* mem = i->get(); 771 CDataType* memType = mem->GetType(); 772 TConstObjectPtr memberPtr = typeInfo->GetAnyTypePtr(index++); 773 CMemberInfo* memInfo = 774 typeInfo->AddMember(mem->GetName(), memberPtr, 775 memType->GetTypeInfo()); 776 if ( mem->GetDefault() ) { 777 TObjectPtr defPtr = memType->CreateDefault(*mem->GetDefault()); 778 memInfo->SetDefault(defPtr); 780 if ( mem->Optional() ) { 781 memInfo->SetOptional(); 783 if ( mem->Optional() || mem->GetDefault() || mem->Nillable() ) { 784 memInfo->SetSetFlag(typeInfo->GetSetFlagPtr(index++)); 786 if (!IsASNDataSpec()) { 787 memInfo->SetNoPrefix(); 789 if (mem->Attlist()) { 790 memInfo->SetAttlist(); 795 if (dynamic_cast<const CAnyContentDataType*>(mem->GetType()) != 0) { 796 memInfo->SetAnyContent(); 798 if (mem->Nillable()) { 799 memInfo->SetNillable(); 802 typeInfo->AssignItemsTags(); 803 if ( HaveModuleName() ) 804 typeInfo->SetModuleName(GetModule()->GetName()); 805 return typeInfo.release(); 808 AutoPtr<CTypeStrings> CDataContainerType::GenerateCode(void) const 811 return GetFullCType(); 813 string alias = GetVar("_fullalias"); 815 return GetFullCType(); 817 const CDataType* aliastype = ResolveGlobal(alias); 819 NCBI_THROW(CDatatoolException,eWrongInput, 820 "cannot create type info of _fullalias " + alias); 822 AutoPtr<CTypeStrings> dType = aliastype->GetRefCType(); 823 dType->SetDataType(aliastype); 824 AutoPtr<CAliasTypeStrings> code(new CAliasTypeStrings(GlobalName(), 828 code->SetNamespaceName( GetNamespaceName()); 829 code->SetFullAlias(); 830 return AutoPtr<CTypeStrings>(code.release()); 834 AutoPtr<CTypeStrings> CDataContainerType::GetFullCType(void) const 836 AutoPtr<CClassTypeStrings> code(new CClassTypeStrings( 837 GlobalName(), ClassName(), GetNamespaceName(), this, Comments())); 838 return AddMembers(code); 841 AutoPtr<CTypeStrings> CDataContainerType::AddMembers( 842 AutoPtr<CClassTypeStrings>& code) const 844 bool isRootClass = GetParentType() == 0; 845 bool haveUserClass = isRootClass; 848 if ( haveUserClass ) { 852 isObject = GetBoolVar("_object"); 855 code->SetHaveUserClass(haveUserClass); 856 code->SetObject(true /*isObject*/ ); 857 ITERATE ( TMembers, i, GetMembers() ) { 859 bool optional = (*i)->Optional(); 860 const CDataValue* defaultValue = (*i)->GetDefault(); 861 if ( defaultValue ) { 862 defaultCode = (*i)->GetType()->GetDefaultString(*defaultValue); 863 _ASSERT(!defaultCode.empty()); 866 bool delayed = GetBoolVar((*i)->GetName()+"._delay"); 867 AutoPtr<CTypeStrings> memberType = (*i)->GetType()->GetFullCType(); 868 string external_name = (*i)->GetName(); 869 string member_name = (*i)->GetType()->DefClassMemberName(); 870 if (member_name.empty()) { 871 member_name = external_name; 873 code->AddMember(external_name, member_name, memberType, 874 (*i)->GetType()->GetVar("_pointer"), 875 optional, defaultCode, delayed, 876 (*i)->GetType()->GetTag(), 877 !IsASNDataSpec(), (*i)->Attlist(), (*i)->Notag(), 878 (*i)->SimpleType(),(*i)->GetType(),false, 880 (*i)->GetType()->SetTypeStr(&(*code)); 882 SetTypeStr(&(*code)); 883 SetParentClassTo(*code); 884 return AutoPtr<CTypeStrings>(code.release()); 887 AutoPtr<CTypeStrings> CDataContainerType::GetRefCType(void) const 889 return AutoPtr<CTypeStrings>(new CClassRefTypeStrings(ClassName(), 895 string CDataContainerType::GetSpecKeyword(void) const 897 bool hasAttlist = !m_Members.empty() && m_Members.front()->Attlist(); 898 if (( hasAttlist && m_Members.size() == 2) || 899 (!hasAttlist && m_Members.size() == 1)) { 900 const CDataMember* member = m_Members.back().get(); 901 if (!GetParentType() && (member->SimpleType() || member->Notag())) { 902 return member->GetType()->GetSpecKeyword(); 905 return GetASNKeyword(); 909 const char* CDataSetType::GetASNKeyword(void) const 914 const char* CDataSetType::GetDEFKeyword(void) const 919 bool CDataSetType::CheckValue(const CDataValue& value) const 921 const CBlockDataValue* block = 922 dynamic_cast<const CBlockDataValue*>(&value); 924 value.Warning("block of values expected", 2); 928 typedef map<string, const CDataMember*> TReadValues; 930 for ( TMembers::const_iterator m = GetMembers().begin(); 931 m != GetMembers().end(); ++m ) { 932 mms[m->get()->GetName()] = m->get(); 935 ITERATE ( CBlockDataValue::TValues, v, block->GetValues() ) { 936 const CNamedDataValue* currvalue = 937 dynamic_cast<const CNamedDataValue*>(v->get()); 939 v->get()->Warning("named value expected", 3); 942 TReadValues::iterator member = mms.find(currvalue->GetName()); 943 if ( member == mms.end() ) { 944 currvalue->Warning("unexpected member", 4); 947 if ( !member->second->GetType()->CheckValue(currvalue->GetValue()) ) { 953 for ( TReadValues::const_iterator member = mms.begin(); 954 member != mms.end(); ++member ) { 955 if ( !member->second->Optional() ) { 956 value.Warning(member->first + " member expected", 5); 963 CClassTypeInfo* CDataSetType::CreateClassInfo(void) 965 return CParent::CreateClassInfo()->SetRandomOrder(); 968 const char* CDataSequenceType::GetASNKeyword(void) const 973 const char* CDataSequenceType::GetDEFKeyword(void) const 978 bool CDataSequenceType::CheckValue(const CDataValue& value) const 980 const CBlockDataValue* block = 981 dynamic_cast<const CBlockDataValue*>(&value); 983 value.Warning("block of values expected", 6); 986 TMembers::const_iterator member = GetMembers().begin(); 987 CBlockDataValue::TValues::const_iterator cvalue = 988 block->GetValues().begin(); 989 while ( cvalue != block->GetValues().end() ) { 990 const CNamedDataValue* currvalue = 991 dynamic_cast<const CNamedDataValue*>(cvalue->get()); 993 cvalue->get()->Warning("named value expected", 7); 997 if ( member == GetMembers().end() ) { 998 currvalue->Warning("unexpected value", 8); 1001 if ( (*member)->GetName() == currvalue->GetName() ) 1003 if ( !(*member)->Optional() ) { 1004 currvalue->GetValue().Warning((*member)->GetName() + 1005 " member expected", 9); 1010 if ( !(*member)->GetType()->CheckValue(currvalue->GetValue()) ) { 1016 while ( member != GetMembers().end() ) { 1017 if ( !(*member)->Optional() ) { 1018 value.Warning((*member)->GetName() + " member expected", 10); 1025 AutoPtr<CTypeStrings> CWsdlDataType::GetFullCType(void) const 1027 AutoPtr<CClassTypeStrings> code(new CWsdlTypeStrings( 1028 GlobalName(), ClassName(), GetNamespaceName(), this, Comments())); 1029 code->SetHaveTypeInfo(false); 1030 return AddMembers(code); 1034 CDataMember::CDataMember(const string& name, const AutoPtr<CDataType>& type) 1035 : m_Name(name), m_Type(type), m_Optional(false), 1036 m_NoPrefix(false), m_Attlist(false), m_Notag(false), m_SimpleType(false), 1039 if ( m_Name.empty() ) { 1042 string loc("Invalid identifier name in ASN.1 specification"); 1044 loc += " (line " + NStr::IntToString(type->GetSourceLine()) + ")"; 1046 NCBI_THROW(CDatatoolException,eInvalidData, loc); 1049 m_Type->SetDataMember(this); 1052 CDataMember::~CDataMember(void) 1056 void CDataMember::PrintASN(CNcbiOstream& out, int indent, bool last) const 1058 GetType()->PrintASNTypeComments(out, indent); 1059 bool oneLineComment = m_Comments.OneLine(); 1060 if ( !oneLineComment ) 1061 m_Comments.PrintASN(out, indent); 1062 out << CDataTypeModule::ToAsnId(GetName()) << ' '; 1063 GetType()->PrintASN(out, indent); 1064 if ( GetDefault() ) { 1065 GetDefault()->PrintASN(out << " DEFAULT ", indent + 1); 1067 else if ( Optional() ) { 1072 if ( oneLineComment ) { 1074 m_Comments.PrintASN(out, indent, CComments::eOneLine); 1078 void CDataMember::PrintSpecDump(CNcbiOstream& out, int indent, const char* tag) const 1080 if (!SimpleType()) { 1081 const CDataType* type = GetType(); 1083 bool needTitle= !Notag() || (type->IsStdType() || type->IsPrimitive()); 1085 const CDataMemberContainerType* cont = 1086 dynamic_cast<const CDataMemberContainerType*>(type); 1089 const CDataMemberContainerType::TMembers& members = cont->GetMembers(); 1090 bool hasAttlist = !members.empty() && members.front()->Attlist(); 1091 if (( hasAttlist && members.size() == 2) || 1092 (!hasAttlist && members.size() == 1)) { 1093 const CDataMember* member = members.back().get(); 1094 needTitle = !member->GetType()->IsUniSeq(); 1099 } else if (type->IsUniSeq()) { 1100 const CDataType* parent = type->GetParentType(); 1101 needTitle = parent->GetDataMember() != 0; 1102 if (!needTitle && parent->IsContainer()) { 1103 cont = dynamic_cast<const CDataMemberContainerType*>(parent); 1104 needTitle = cont->GetMembers().size() == 1; 1107 const CUniSequenceDataType* uni = 1108 dynamic_cast<const CUniSequenceDataType*>(type); 1109 if (uni->GetElementType()->IsContainer()) { 1116 PrintASNNewLine(out, indent); 1117 out << tag << ',
' << 1118 type->GetSourceLine() <<","; 1119 out << type->GetFullName() << ',
' << type->GetSpecKeyword(); 1120 if ( GetDefault() ) { 1121 GetDefault()->PrintASN(out << ",DEFAULT,", indent + 1); 1123 else if ( Optional() ) { 1126 type->Comments().PrintASN(out, indent,CComments::eNoEOL); 1127 m_Comments.PrintASN(out, indent,CComments::eNoEOL); 1130 type->PrintSpecDump(out, indent); 1134 void CDataMember::PrintJSONSchema(CNcbiOstream& out, int indent, list<string>& required, bool contents_only) const 1136 GetType()->PrintJSONSchema(out, indent, required, contents_only); 1139 void CDataMember::PrintXMLSchema(CNcbiOstream& out, int indent, bool contents_only) const 1141 #if !_DATATOOL_USE_SCHEMA_STYLE_COMMENTS 1142 m_Comments.PrintDTD(out, CComments::eNoEOL); 1144 GetType()->PrintXMLSchema(out, indent, contents_only); 1147 void CDataMember::PrintDTD(CNcbiOstream& out) const 1149 GetType()->PrintDTD(out, m_Comments); 1152 bool CDataMember::Check(void) const 1154 if ( !m_Type->Check() ) 1158 return GetType()->CheckValue(*m_Default); 1161 void CDataMember::SetDefault(const AutoPtr<CDataValue>& value) 1166 void CDataMember::SetOptional(void) 1171 void CDataMember::SetNoPrefix(void) 1173 // m_NoPrefix = true; 1176 void CDataMember::SetAttlist(void) 1180 void CDataMember::SetNotag(void) 1184 void CDataMember::SetSimpleType(void) 1186 m_SimpleType = true; 1188 void CDataMember::SetNillable(void)void transform(Container &c, UnaryFunction *op)
const bool * GetSetFlagPtr(size_t index)
static const type_info * GetAnyTypeClassId(TConstObjectPtr)
CAnyTypeClassInfo(const string &name, size_t count)
const AnyType * GetAnyTypePtr(size_t index) const
static TObjectPtr CreateAnyTypeClass(TTypeInfo objectType, CObjectMemoryPool *)
virtual void PrintASN(CNcbiOstream &out, int indent) const override
void AddMember(const AutoPtr< CDataMember > &member)
const TMembers & GetMembers(void) const
list< AutoPtr< CDataMember > > TMembers
virtual void PrintXMLSchema(CNcbiOstream &out, int indent, bool contents_only=false) const override
virtual void PrintJSONSchema(CNcbiOstream &out, int indent, list< string > &required, bool contents_only=false) const override
virtual void PrintSpecDumpExtra(CNcbiOstream &out, int indent) const override
bool Optional(void) const
const string & GetName(void) const
CDataType * GetType(void)
void PrintJSONSchema(CNcbiOstream &out, int indent, list< string > &required, bool contents_only=false) const
void PrintASN(CNcbiOstream &out, int indent, bool last) const
EGlobalType GetGlobalType(void) const
const CDataMember * GetDataMember(void) const
CNcbiOstream & PrintASNTag(CNcbiOstream &out) const
bool IsReferenced(void) const
CComments & Comments(void)
virtual const char * GetASNKeyword(void) const
const CDataType * GetParentType(void) const
const TReferences & GetReferences(void) const
static bool GetEnforcedStdXml(void)
bool IsContainer(void) const
bool IsNillable(void) const
string XmlTagName(void) const
const string & GetMemberName(void) const
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
CDataType * GetElementType(void)
std::ofstream out("events_result.xml")
main entry point for tests
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char * str(char *buf, int n)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
const void * TConstObjectPtr
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
size_t GetSize(void) const
Get size of data object in memory (like sizeof in C)
double value_type
The numeric datatype used by the parser.
const struct ncbi::grid::netcache::search::fields::SIZE size
CNcbiOstream & PrintASNNewLine(CNcbiOstream &out, int indent)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4