void Arbol::recorrer(char val) { if(!raiz) return; Arbol* temp; while(!temp) { switch(val) { case '+': SDMR(val); break; case '-': SDMR(val); break; case '*': SDMR(val); break; case '/': SDMR(val); break; } temp = temp->siguiente; } }
unsigned UserDefinedCodeViewTypesBuilder::GetCompleteClassTypeIndex( const ClassTypeDescriptor &ClassDescriptor, const ClassFieldsTypeDescriptior &ClassFieldsDescriptor, const DataFieldDescriptor *FieldsDescriptors, const StaticDataFieldDescriptor *StaticsDescriptors) { FieldListRecordBuilder FLBR(TypeTable); FLBR.begin(); uint16_t memberCount = 0; if (!ClassDescriptor.IsStruct) { memberCount++; AddClassVTShape(FLBR); } if (ClassDescriptor.BaseClassId != 0) { memberCount++; AddBaseClass(FLBR, ClassDescriptor.BaseClassId); } for (int i = 0; i < ClassFieldsDescriptor.FieldsCount; ++i) { DataFieldDescriptor desc = FieldsDescriptors[i]; MemberAccess Access = MemberAccess::Public; TypeIndex MemberBaseType(desc.FieldTypeIndex); if (desc.Offset == 0xFFFFFFFF) { StaticDataMemberRecord SDMR(Access, MemberBaseType, desc.Name); FLBR.writeMemberType(SDMR); } else { int MemberOffsetInBytes = desc.Offset; DataMemberRecord DMR(Access, MemberBaseType, MemberOffsetInBytes, desc.Name); FLBR.writeMemberType(DMR); } memberCount++; } TypeIndex FieldListIndex = FLBR.end(true); TypeRecordKind Kind = ClassDescriptor.IsStruct ? TypeRecordKind::Struct : TypeRecordKind::Class; ClassOptions CO = GetCommonClassOptions(); ClassRecord CR(Kind, memberCount, CO, FieldListIndex, TypeIndex(), TypeIndex(), ClassFieldsDescriptor.Size, ClassDescriptor.Name, StringRef()); TypeIndex ClassIndex = TypeTable.writeKnownType(CR); UserDefinedTypes.push_back(std::make_pair(ClassDescriptor.Name, ClassIndex.getIndex())); return ClassIndex.getIndex(); }