⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cxx

📁 radius协议源码÷The Radius Stack will connect to a Radius Server. This stack implementation is built upo
💻 CXX
📖 第 1 页 / 共 5 页
字号:
DefinedType::DefinedType(PString * name, BOOL parameter)  : TypeBase(Tag::IllegalUniversalTag),    referenceName(*name){  delete name;  baseType = NULL;  unresolved = !parameter;}DefinedType::DefinedType(TypeBase * refType, TypeBase * bType)  : TypeBase(refType),    referenceName(bType->GetName()){  MoveConstraints(refType);  baseType = bType;  unresolved = FALSE;}DefinedType::DefinedType(TypeBase * refType, const PString & refName)  : TypeBase(refType){  MoveConstraints(refType);  ConstructFromType(refType, refName);}DefinedType::DefinedType(TypeBase * refType, const TypeBase & parent)  : TypeBase(refType){  if (!name)    ConstructFromType(refType, parent.GetName() + '_' + name);  else    ConstructFromType(refType, parent.GetName() + "_subtype");}void DefinedType::ConstructFromType(TypeBase * refType, const PString & name){  referenceName = name;  refType->SetName(new PString(name));  Module->AppendType(refType);  baseType = refType;  unresolved = FALSE;}void DefinedType::PrintOn(ostream & strm) const{  PrintStart(strm);  strm << referenceName << ' ';  PrintFinish(strm);}BOOL DefinedType::CanReferenceType() const{  return TRUE;}BOOL DefinedType::IsChoice() const{  if (baseType != NULL)    return baseType->IsChoice();  return FALSE;}BOOL DefinedType::IsParameterizedType() const{  if (baseType != NULL)    return baseType->IsParameterizedType();  return FALSE;}BOOL DefinedType::ReferencesType(const TypeBase & type){  if (unresolved) {    unresolved = FALSE;    if ((baseType = Module->FindType(referenceName)) == NULL)      PError << StdError(Warning) << "unresolved symbol: " << referenceName << endl;    else {      if (!HasNonStandardTag())        defaultTag = tag = baseType->GetTag();    }  }  return type.GetName() == referenceName;}void DefinedType::GenerateOperators(ostream & hdr, ostream & cxx, const TypeBase & actualType){  if (baseType != NULL)    baseType->GenerateOperators(hdr, cxx, actualType);}const char * DefinedType::GetAncestorClass() const{  if (baseType != NULL)    return baseType->GetAncestorClass();  return NULL;}PString DefinedType::GetTypeName() const{  if (baseType == NULL)    return referenceName;  if (HasConstraints() && baseType->IsPrimitiveType())    return baseType->GetTypeName();  return baseType->GetIdentifier();}/////////////////////////////////////////////////////////ParameterizedType::ParameterizedType(PString * name, TypesList * args)  : DefinedType(name, FALSE),    arguments(*args){  delete args;}void ParameterizedType::PrintOn(ostream & strm) const{  PrintStart(strm);  strm << referenceName << " { ";  for (PINDEX i = 0; i < arguments.GetSize(); i++) {    if (i > 0)      strm << ", ";    strm << arguments[i].GetTypeName();  }  strm << " }";  PrintFinish(strm);}BOOL ParameterizedType::IsParameterizedType() const{  return TRUE;}BOOL ParameterizedType::ReferencesType(const TypeBase & type){  for (PINDEX i = 0; i < arguments.GetSize(); i++) {    if (arguments[i].ReferencesType(type))      return TRUE;  }  return DefinedType::ReferencesType(type);}PString ParameterizedType::GetTypeName() const{  PString typeName = DefinedType::GetTypeName();  if (!arguments.IsEmpty()) {    typeName += '<';    for (PINDEX i = 0; i < arguments.GetSize(); i++) {      if (i > 0)        typeName += ", ";      typeName += arguments[i].GetTypeName();    }    typeName += '>';  }  return typeName;}/////////////////////////////////////////////////////////SelectionType::SelectionType(PString * name, TypeBase * base)  : TypeBase(Tag::IllegalUniversalTag),    selection(*name){  delete name;  baseType = PAssertNULL(base);}SelectionType::~SelectionType(){  delete baseType;}void SelectionType::PrintOn(ostream & strm) const{  PrintStart(strm);  strm << selection << '<' << *baseType;  PrintFinish(strm);}void SelectionType::FlattenUsedTypes(){  baseType = baseType->FlattenThisType(*this);}TypeBase * SelectionType::FlattenThisType(const TypeBase & parent){  return new DefinedType(this, parent);}void SelectionType::GenerateCplusplus(ostream &, ostream &){  PError << StdError(Fatal) << "Cannot generate code for Selection type" << endl;  isGenerated = TRUE;}const char * SelectionType::GetAncestorClass() const{  return "";}BOOL SelectionType::CanReferenceType() const{  return TRUE;}BOOL SelectionType::ReferencesType(const TypeBase & type){  return baseType->ReferencesType(type);}/////////////////////////////////////////////////////////BooleanType::BooleanType()  : TypeBase(Tag::UniversalBoolean){}void BooleanType::GenerateOperators(ostream & hdr, ostream & cxx, const TypeBase & actualType){  hdr << "    " << actualType.GetIdentifier() << " & operator=(BOOL v)";  if (Module->UsingInlines())    hdr << " { SetValue(v);  return *this; }\n";  else {    hdr << ";\n";    cxx << actualType.GetTemplatePrefix()        << actualType.GetIdentifier() << " & "        << actualType.GetClassNameString() << "::operator=(BOOL v)\n"           "{\n"           "  SetValue(v);\n"           "  return *this;\n"           "}\n"           "\n"           "\n";  }}const char * BooleanType::GetAncestorClass() const{  return "PASN_Boolean";}/////////////////////////////////////////////////////////IntegerType::IntegerType()  : TypeBase(Tag::UniversalInteger){}IntegerType::IntegerType(NamedNumberList * lst)  : TypeBase(Tag::UniversalInteger),    allowedValues(*lst){  delete lst;}void IntegerType::GenerateOperators(ostream & hdr, ostream & cxx, const TypeBase & actualType){  hdr << "    " << actualType.GetIdentifier() << " & operator=(int v)";  if (Module->UsingInlines())    hdr << " { SetValue(v);  return *this; }\n";  else {    hdr << ";\n";    cxx << actualType.GetTemplatePrefix()        << actualType.GetIdentifier() << " & "        << actualType.GetClassNameString() << "::operator=(int v)\n"           "{\n"           "  SetValue(v);\n"           "  return *this;\n"           "}\n"           "\n"           "\n";  }  hdr << "    " << actualType.GetIdentifier() << " & operator=(unsigned v)";  if (Module->UsingInlines())    hdr << " { SetValue(v);  return *this; }\n";  else {    hdr << ";\n";    cxx  << actualType.GetTemplatePrefix()        << actualType.GetIdentifier() << " & "        << actualType.GetClassNameString() << "::operator=(unsigned v)\n"           "{\n"           "  SetValue(v);\n"           "  return *this;\n"           "}\n"           "\n"           "\n";  }}const char * IntegerType::GetAncestorClass() const{  return "PASN_Integer";}/////////////////////////////////////////////////////////EnumeratedType::EnumeratedType(NamedNumberList * enums, BOOL extend, NamedNumberList * ext)  : TypeBase(Tag::UniversalEnumeration),    enumerations(*enums){  numEnums = enums->GetSize();  delete enums;  extendable = extend;  if (ext != NULL) {    ext->DisallowDeleteObjects();    for (PINDEX i = 0; i < ext->GetSize(); i++)      enumerations.Append(ext->GetAt(i));    delete ext;  }}void EnumeratedType::PrintOn(ostream & strm) const{  PrintStart(strm);  strm << '\n';  PINDEX i;  for (i = 0; i < numEnums; i++)    strm << indent() << enumerations[i] << '\n';  if (extendable) {    strm << "...\n";    for (; i < enumerations.GetSize(); i++)      strm << indent() << enumerations[i] << '\n';  }  PrintFinish(strm);}TypeBase * EnumeratedType::FlattenThisType(const TypeBase & parent){  return new DefinedType(this, parent);}void EnumeratedType::GenerateCplusplus(ostream & hdr, ostream & cxx){  PINDEX i;  BeginGenerateCplusplus(hdr, cxx);  int maxEnumValue = 0;  for (i = 0; i < enumerations.GetSize(); i++) {    int num = enumerations[i].GetNumber();    if (maxEnumValue < num)      maxEnumValue = num;  }  // Generate enumerations and complete the constructor implementation  hdr << "    enum Enumerations {\n";  cxx << ", " << maxEnumValue << ", " << (extendable ? "TRUE" : "FALSE") << "\n"         "#ifndef PASN_NOPRINTON\n"         "      , \"";  int prevNum = -1;  for (i = 0; i < enumerations.GetSize(); i++) {    if (i > 0) {      hdr << ",\n";      cxx << "        \"";    }    hdr << "      e_" << MakeIdentifierC(enumerations[i].GetName());    cxx << enumerations[i].GetName();    int num = enumerations[i].GetNumber();    if (num != prevNum+1) {      hdr << " = " << num;      cxx << '=' << num;    }    prevNum = num;    cxx << " \"\n";  }  hdr << "\n"         "    };\n"         "\n";  cxx << "#endif\n"         "    )\n"         "{\n";  GenerateCplusplusConstraints(PString(), hdr, cxx);  EndGenerateCplusplus(hdr, cxx);}void EnumeratedType::GenerateOperators(ostream & hdr, ostream & cxx, const TypeBase & actualType){  hdr << "    " << actualType.GetIdentifier() << " & operator=(unsigned v)";  if (Module->UsingInlines())    hdr << " { SetValue(v);  return *this; }\n";  else {    hdr << ";\n";    cxx << actualType.GetTemplatePrefix()        << actualType.GetIdentifier() << " & "        << actualType.GetClassNameString() << "::operator=(unsigned v)\n"           "{\n"           "  SetValue(v);\n"           "  return *this;\n"           "}\n"           "\n"           "\n";  }}const char * EnumeratedType::GetAncestorClass() const{  return "PASN_Enumeration";}/////////////////////////////////////////////////////////RealType::RealType()  : TypeBase(Tag::UniversalReal){}const char * RealType::GetAncestorClass() const{  return "PASN_Real";}/////////////////////////////////////////////////////////BitStringType::BitStringType()  : TypeBase(Tag::UniversalBitString){}BitStringType::BitStringType(NamedNumberList * lst)  : TypeBase(Tag::UniversalBitString),    allowedBits(*lst){  delete lst;}int BitStringType::GetIdentifierTokenContext() const{  return OID_IDENTIFIER;}int BitStringType::GetBraceTokenContext() const{  return BITSTRING_BRACE;}const char * BitStringType::GetAncestorClass() const{  return "PASN_BitString";}/////////////////////////////////////////////////////////OctetStringType::OctetStringType()  : TypeBase(Tag::UniversalOctetString){}void OctetStringType::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";  }  hdr << "    " << actualType.GetIdentifier() << " & operator=(const PBYTEArray & v)";  if (Module->UsingInlines())    hdr << " { SetValue(v);  return *this; }\n";  else {    hdr << ";\n";    cxx << actualType.GetTemplatePrefix()        << actualType.GetIdentifier() << " & "        << actualType.GetClassNameString() << "::operator=(const PBYTEArray & v)\n"           "{\n"           "  SetValue(v);\n"           "  return *this;\n"           "}\n"           "\n"           "\n";  }}const char * OctetStringType::GetAncestorClass() const{  return "PASN_OctetString";}/////////////////////////////////////////////////////////NullType::NullType()  : TypeBase(Tag::UniversalNull){}const char * NullType::GetAncestorClass() const{  return "PASN_Null";}/////////////////////////////////////////////////////////SequenceType::SequenceType(TypesList * stnd,                           BOOL extend,                           TypesList * ext,                           unsigned tagNum)  : TypeBase(tagNum){  if (stnd != NULL) {    numFields = stnd->GetSize();    fields = *stnd;    delete stnd;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -