MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / importPackage

Method importPackage

src/DesignCompile/CompileHelper.cpp:127–340  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125}
126
127bool CompileHelper::importPackage(DesignComponent* scope, Design* design,
128 const FileContent* fC, NodeId id,
129 CompileDesign* compileDesign,
130 bool inPackage) {
131 Serializer& s = compileDesign->getSerializer();
132 FileCNodeId fnid(fC, id);
133 scope->addObject(VObjectType::paPackage_import_item, fnid);
134
135 NodeId nameId = fC->Child(id);
136 const std::string_view pack_name = fC->SymName(nameId);
137 std::string object_name;
138 if (NodeId objId = fC->Sibling(nameId)) {
139 if (fC->Type(objId) == VObjectType::slStringConst) {
140 object_name = fC->SymName(objId);
141 }
142 }
143 Package* def = design->getPackage(pack_name);
144 if (def) {
145 if (def == scope) // skip
146 return true;
147 scope->addAccessPackage(def);
148 auto& classSet = def->getObjects(VObjectType::paClass_declaration);
149 for (const auto& cls : classSet) {
150 const FileContent* packageFile = cls.fC;
151 NodeId classDef = packageFile->Sibling(cls.nodeId);
152 const std::string_view name = packageFile->SymName(classDef);
153 if (!object_name.empty()) {
154 if (name != object_name) continue;
155 }
156 std::string fullName = StrCat(def->getName(), "::", name);
157 DesignComponent* comp = packageFile->getComponentDefinition(fullName);
158 FileCNodeId fnid(packageFile, classDef);
159 scope->addNamedObject(name, fnid, comp);
160 scope->insertDataType(name, (ClassDefinition*)comp);
161 }
162 // Typespecs
163 auto& typeSet = def->getDataTypeMap();
164 for (auto& type : typeSet) {
165 if (!object_name.empty()) {
166 if (type.first != object_name) continue;
167 }
168 scope->insertDataType(type.first, type.second);
169 }
170 // Variables
171 auto& variableSet = def->getVariables();
172 for (auto& var : variableSet) {
173 if (!object_name.empty()) {
174 if (var.first != object_name) continue;
175 }
176 scope->addVariable(var.second);
177 Value* val = def->getValue(var.first);
178 if (val) {
179 scope->setValue(var.first, m_exprBuilder.clone(val), m_exprBuilder);
180 }
181 }
182 // Nets
183 auto& netSet = def->getSignals();
184 for (auto& net : netSet) {

Callers 6

collectObjects_Method · 0.80
collectObjects_Method · 0.80
collectModuleObjects_Method · 0.80
compileMethod · 0.80
collectObjects_Method · 0.80

Calls 15

StrCatFunction · 0.85
addAccessPackageMethod · 0.80
addNamedObjectMethod · 0.80
insertDataTypeMethod · 0.80
cloneMethod · 0.80
needLateBindingMethod · 0.80
setImportedPackageMethod · 0.80
insertParameterMethod · 0.80
getUhdmParamMethod · 0.80
getParametersMethod · 0.80
setParametersMethod · 0.80

Tested by

no test coverage detected