📄 main.cxx
字号:
fields[i].GenerateCplusplusConstraints(" choice->", hdr, cxx); cxx << " return TRUE;\n"; } } if (outputEnum) cxx << " }\n" "\n"; for (i = 0; i < fields.GetSize(); i++) { if (fields[i].GetTag().mode != Tag::Automatic && fields[i].IsChoice()) cxx << " choice = new " << fields[i].GetTypeName() << "(tag, tagClass);\n" " if (((PASN_Choice*)choice)->CreateObject())\n" " return TRUE;\n" " delete choice;\n" "\n"; } cxx << " choice = NULL;\n" " return FALSE;\n"; EndGenerateCplusplus(hdr, cxx);}void ChoiceType::GenerateForwardDecls(ostream & hdr){ // Output forward declarations for choice pointers, but not standard classes BOOL needExtraLine = FALSE; PStringSet typesOutput(PARRAYSIZE(StandardClasses), StandardClasses); typesOutput += GetIdentifier(); for (PINDEX i = 0; i < fields.GetSize(); i++) { PString type = fields[i].GetTypeName(); if (!fields[i].IsParameterizedType() && !typesOutput.Contains(type)) { hdr << "class " << type << ";\n"; needExtraLine = TRUE; } } if (needExtraLine) hdr << '\n';}BOOL ChoiceType::IsPrimitiveType() const{ return FALSE;}BOOL ChoiceType::IsChoice() const{ return TRUE;}const char * ChoiceType::GetAncestorClass() const{ return "PASN_Choice";}BOOL ChoiceType::ReferencesType(const TypeBase & type){ for (PINDEX i = 0; i < fields.GetSize(); i++) { if (fields[i].ReferencesType(type) && fields[i].IsParameterizedType()) return TRUE; } return FALSE;}/////////////////////////////////////////////////////////EmbeddedPDVType::EmbeddedPDVType() : TypeBase(Tag::UniversalEmbeddedPDV){}const char * EmbeddedPDVType::GetAncestorClass() const{ return "PASN_OctetString";}/////////////////////////////////////////////////////////ExternalType::ExternalType() : TypeBase(Tag::UniversalExternalType){}const char * ExternalType::GetAncestorClass() const{ return "PASN_OctetString";}/////////////////////////////////////////////////////////AnyType::AnyType(PString * ident) : TypeBase(Tag::UniversalExternalType){ if (ident != NULL) { identifier = *ident; delete ident; }}void AnyType::PrintOn(ostream & strm) const{ PrintStart(strm); if (!identifier) strm << "Defined by " << identifier; PrintFinish(strm);}const char * AnyType::GetAncestorClass() const{ return "PASN_OctetString";}/////////////////////////////////////////////////////////StringTypeBase::StringTypeBase(int tag) : TypeBase(tag){}int StringTypeBase::GetBraceTokenContext() const{ return STRING_BRACE;}void StringTypeBase::GenerateOperators(ostream & hdr, ostream & cxx, const TypeBase & actualType){ hdr << " " << actualType.GetIdentifier() << " & operator=(const char * v)"; if (Module->UsingInlines()) hdr << " { SetValue(v); return *this; }\n"; else { hdr << ";\n"; cxx << actualType.GetTemplatePrefix() << actualType.GetIdentifier() << " & " << actualType.GetClassNameString() << "::operator=(const char * v)\n" "{\n" " SetValue(v);\n" " return *this;\n" "}\n" "\n" "\n"; } hdr << " " << actualType.GetIdentifier() << " & operator=(const PString & v)"; if (Module->UsingInlines()) hdr << " { SetValue(v); return *this; }\n"; else { hdr << ";\n"; cxx << actualType.GetTemplatePrefix() << actualType.GetIdentifier() << " & " << actualType.GetClassNameString() << "::operator=(const PString & v)\n" "{\n" " SetValue(v);\n" " return *this;\n" "}\n" "\n" "\n"; }}/////////////////////////////////////////////////////////BMPStringType::BMPStringType() : StringTypeBase(Tag::UniversalBMPString){}const char * BMPStringType::GetAncestorClass() const{ return "PASN_BMPString";}/////////////////////////////////////////////////////////GeneralStringType::GeneralStringType() : StringTypeBase(Tag::UniversalGeneralString){}const char * GeneralStringType::GetAncestorClass() const{ return "PASN_GeneralString";}/////////////////////////////////////////////////////////GraphicStringType::GraphicStringType() : StringTypeBase(Tag::UniversalGraphicString){}const char * GraphicStringType::GetAncestorClass() const{ return "PASN_GraphicString";}/////////////////////////////////////////////////////////IA5StringType::IA5StringType() : StringTypeBase(Tag::UniversalIA5String){}const char * IA5StringType::GetAncestorClass() const{ return "PASN_IA5String";}/////////////////////////////////////////////////////////ISO646StringType::ISO646StringType() : StringTypeBase(Tag::UniversalVisibleString){}const char * ISO646StringType::GetAncestorClass() const{ return "PASN_ISO646String";}/////////////////////////////////////////////////////////NumericStringType::NumericStringType() : StringTypeBase(Tag::UniversalNumericString){}const char * NumericStringType::GetAncestorClass() const{ return "PASN_NumericString";}/////////////////////////////////////////////////////////PrintableStringType::PrintableStringType() : StringTypeBase(Tag::UniversalPrintableString){}const char * PrintableStringType::GetAncestorClass() const{ return "PASN_PrintableString";}/////////////////////////////////////////////////////////TeletexStringType::TeletexStringType() : StringTypeBase(Tag::UniversalTeletexString){}const char * TeletexStringType::GetAncestorClass() const{ return "PASN_TeletexString";}/////////////////////////////////////////////////////////T61StringType::T61StringType() : StringTypeBase(Tag::UniversalTeletexString){}const char * T61StringType::GetAncestorClass() const{ return "PASN_T61String";}/////////////////////////////////////////////////////////UniversalStringType::UniversalStringType() : StringTypeBase(Tag::UniversalUniversalString){}const char * UniversalStringType::GetAncestorClass() const{ return "PASN_UniversalString";}/////////////////////////////////////////////////////////VideotexStringType::VideotexStringType() : StringTypeBase(Tag::UniversalVideotexString){}const char * VideotexStringType::GetAncestorClass() const{ return "PASN_VideotexString";}/////////////////////////////////////////////////////////VisibleStringType::VisibleStringType() : StringTypeBase(Tag::UniversalVisibleString){}const char * VisibleStringType::GetAncestorClass() const{ return "PASN_VisibleString";}/////////////////////////////////////////////////////////UnrestrictedCharacterStringType::UnrestrictedCharacterStringType() : StringTypeBase(Tag::UniversalUniversalString){}const char * UnrestrictedCharacterStringType::GetAncestorClass() const{ return "PASN_UnrestrictedString";}/////////////////////////////////////////////////////////GeneralizedTimeType::GeneralizedTimeType() : TypeBase(Tag::UniversalGeneralisedTime){}const char * GeneralizedTimeType::GetAncestorClass() const{ return "PASN_GeneralizedTime";}/////////////////////////////////////////////////////////UTCTimeType::UTCTimeType() : TypeBase(Tag::UniversalUTCTime){}const char * UTCTimeType::GetAncestorClass() const{ return "PASN_UTCTime";}/////////////////////////////////////////////////////////ObjectDescriptorType::ObjectDescriptorType() : TypeBase(Tag::UniversalObjectDescriptor){}const char * ObjectDescriptorType::GetAncestorClass() const{ return "PASN_ObectDescriptor";}/////////////////////////////////////////////////////////ObjectIdentifierType::ObjectIdentifierType() : TypeBase(Tag::UniversalObjectId){}int ObjectIdentifierType::GetIdentifierTokenContext() const{ return OID_IDENTIFIER;}int ObjectIdentifierType::GetBraceTokenContext() const{ return OID_BRACE;}const char * ObjectIdentifierType::GetAncestorClass() const{ return "PASN_ObjectId";}/////////////////////////////////////////////////////////ObjectClassFieldType::ObjectClassFieldType(PString * objclass, PString * field) : TypeBase(Tag::IllegalUniversalTag), asnObjectClassName(*objclass), asnObjectClassField(*field){ delete objclass; delete field;}const char * ObjectClassFieldType::GetAncestorClass() const{ return "";}void ObjectClassFieldType::PrintOn(ostream & strm) const{ PrintStart(strm); strm << asnObjectClassName << '.' << asnObjectClassField; PrintFinish(strm);}void ObjectClassFieldType::GenerateCplusplus(ostream & hdr, ostream & cxx){ hdr << "//\n" "// " << GetName() << "\n" "//\n" "\n" "typedef "; GenerateCplusplusConstraints(PString(), hdr, cxx); hdr << ' ' << GetIdentifier() << ";\n" "\n" "\n";}BOOL ObjectClassFieldType::CanReferenceType() const{ return TRUE;}BOOL ObjectClassFieldType::ReferencesType(const TypeBase & type){ for (PINDEX i = 0; i < constraints.GetSize(); i++) { if (constraints[i].ReferencesType(type)) return TRUE; } return FALSE;}/////////////////////////////////////////////////////////ImportedType::ImportedType(PString * theName, BOOL param) : TypeBase(Tag::IllegalUniversalTag){ identifier = name = *theName; delete theName; parameterised = param;}const char * ImportedType::GetAncestorClass() const{ return identifier;}void ImportedType::AdjustIdentifier(){ identifier = modulePrefix + '_' + MakeIdentifierC(name);}void ImportedType::GenerateCplusplus(ostream &, ostream &){}void ImportedType::SetImportPrefix(const PString & prefix){ modulePrefix = prefix;}BOOL ImportedType::IsParameterisedImport() const{ return parameterised;}/////////////////////////////////////////////////////////SearchType::SearchType(const PString & theName) : TypeBase(Tag::IllegalUniversalTag){ identifier = name = theName;}const char * SearchType::GetAncestorClass() const{ return identifier;}/////////////////////////////////////////////////////////void ValueBase::SetValueName(PString * name){ valueName = *name; delete name;}void ValueBase::PrintBase(ostream & strm) const{ if (!valueName) strm << '\n' << indent() << valueName << '=';}void ValueBase::GenerateCplusplus(ostream &, ostream &){ PError << StdError(Warning) << "unsupported value type." << endl;}/////////////////////////////////////////////////////////DefinedValue::DefinedValue(PString * name) : referenceName(*name){ delete name; actualValue = NULL; unresolved = TRUE;}void DefinedValue::PrintOn(ostream & strm) const{ PrintBase(strm); strm << referenceName;}void DefinedValue::GenerateCplusplus(ostream & hdr, ostream & cxx){ if (unresolved) { unresolved = FALSE; const ValuesList & values = Module->GetValues(); for (PINDEX i = 0; i < values.GetSize(); i++) { if (v
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -