| /* |
| Copyright 2019 Alain Dargelas |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| /* |
| * File: SLAPI.h |
| * Author: alain |
| * |
| * Created on May 13, 2017, 9:46 AM |
| */ |
| |
| #ifndef SLAPI_H |
| #define SLAPI_H |
| |
| typedef unsigned int NodeId; |
| namespace SURELOG { |
| |
| class ModuleDefinition; |
| class FileContent; |
| class SV3_1aPythonListener; |
| class Design; |
| class ModuleDefinition; |
| class Program; |
| class Package; |
| class ClassDefinition; |
| class ModuleInstance; |
| class DesignComponent; |
| class ErrorContainer; |
| |
| typedef std::vector<unsigned int> UIntVector; |
| |
| /* Error DB API */ |
| void SLsetWaiver(const char* messageId, const char* fileName = 0, |
| unsigned int line = 0, const char* objectName = 0); |
| |
| void SLoverrideSeverity(const char* messageId, const char* severity); |
| |
| void SLregisterNewErrorType(const char* messageId, const char* text, |
| const char* secondLine); |
| |
| void SLaddError(ErrorContainer* container, const char* messageId, |
| const char* fileName, unsigned int line, unsigned int col, |
| const char* objectName); |
| |
| void SLaddErrorContext(SV3_1aPythonListener* prog, antlr4::ParserRuleContext* context, |
| const char* messageId, const char* objectName, |
| bool printColumn = 0); |
| |
| void SLaddMLErrorContext(SV3_1aPythonListener* prog, |
| antlr4::ParserRuleContext* context1, |
| antlr4::ParserRuleContext* context2, const char* messageId, |
| const char* objectName1, const char* objectName2, |
| bool printColumn = 0); |
| |
| void SLaddMLError(ErrorContainer* container, const char* messageId, |
| const char* fileName1, unsigned int line1, unsigned int col1, |
| const char* objectName1, const char* fileName2, |
| unsigned int line2, unsigned int col2, |
| const char* objectName2); |
| |
| /* File Listener API */ |
| std::string SLgetFile(SV3_1aPythonListener* prog, antlr4::ParserRuleContext* context); |
| |
| int SLgetLine(SV3_1aPythonListener* prog, antlr4::ParserRuleContext* context); |
| |
| int SLgetColumn(SV3_1aPythonListener* prog, antlr4::ParserRuleContext* context); |
| |
| std::string SLgetText(SV3_1aPythonListener* prog, antlr4::ParserRuleContext* context); |
| |
| std::vector<std::string> SLgetTokens(SV3_1aPythonListener* prog, |
| antlr4::ParserRuleContext* context); |
| |
| antlr4::ParserRuleContext* SLgetParentContext(SV3_1aPythonListener* prog, |
| antlr4::ParserRuleContext* context); |
| |
| std::vector<antlr4::ParserRuleContext*> SLgetChildrenContext( |
| SV3_1aPythonListener* prog, antlr4::ParserRuleContext* context); |
| |
| /* Parser API */ |
| NodeId SLgetRootNode(FileContent* fC); |
| |
| std::string SLgetFile(FileContent* fC, NodeId id); |
| |
| NodeId SLgetChild(FileContent* fC, NodeId index); |
| |
| NodeId SLgetSibling(FileContent* fC, NodeId index); |
| |
| NodeId SLgetParent(FileContent* fC, NodeId index); |
| |
| unsigned int SLgetLine(FileContent* fC, NodeId index); |
| |
| std::string SLgetName(FileContent* fC, NodeId index); |
| |
| unsigned int SLgetType(FileContent* fC, NodeId index); |
| |
| NodeId SLgetChild(FileContent* fC, NodeId parent, |
| unsigned int type); // Get first child item of type |
| |
| NodeId SLgetParent(FileContent* fC, NodeId parent, |
| unsigned int type); // Get first parent item of type |
| |
| UIntVector SLgetAll(FileContent* fC, NodeId parent, |
| unsigned int type); // get all child items of type |
| |
| UIntVector SLgetAll(FileContent* fC, NodeId parent, |
| UIntVector types); // get all child items of types |
| |
| NodeId SLcollect( |
| FileContent* fC, NodeId parent, |
| unsigned int type); // Recursively search for first item of type |
| |
| UIntVector SLcollectAll( |
| FileContent* fC, NodeId parent, unsigned int type, |
| bool first); // Recursively search for all items of type |
| |
| UIntVector SLcollectAll( |
| FileContent* fC, NodeId parent, UIntVector types, |
| bool first); // Recursively search for all items of types |
| |
| UIntVector SLcollectAll(FileContent* fC, NodeId parent, UIntVector types, |
| UIntVector stopPoints, bool first); |
| // Recursively search for all items of types |
| // and stops at types stopPoints |
| /* Design API */ |
| unsigned int SLgetnModuleDefinition(Design* design); |
| |
| unsigned int SLgetnProgramDefinition(Design* design); |
| |
| unsigned int SLgetnPackageDefinition(Design* design); |
| |
| unsigned int SLgetnClassDefinition(Design* design); |
| |
| unsigned int SLgetnTopModuleInstance(Design* design); |
| |
| ModuleDefinition* SLgetModuleDefinition(Design* design, unsigned int index); |
| |
| Program* SLgetProgramDefinition(Design* design, unsigned int index); |
| |
| Package* SLgetPackageDefinition(Design* design, unsigned int index); |
| |
| ClassDefinition* SLgetClassDefinition(Design* design, unsigned int index); |
| |
| ModuleInstance* SLgetTopModuleInstance(Design* design, unsigned int index); |
| |
| std::string SLgetModuleName(ModuleDefinition* module); |
| |
| std::string SLgetModuleFile(ModuleDefinition* module); |
| |
| VObjectType SLgetModuleType(ModuleDefinition* module); |
| |
| unsigned int SLgetModuleLine(ModuleDefinition* module); |
| |
| FileContent* SLgetModuleFileContent(ModuleDefinition* module); |
| |
| NodeId SLgetModuleRootNode(ModuleDefinition* module); |
| |
| std::string SLgetClassName(ClassDefinition* def); |
| |
| std::string SLgetClassFile(ClassDefinition* def); |
| |
| VObjectType SLgetClassType(ClassDefinition* def); |
| |
| unsigned int SLgetClassLine(ClassDefinition* def); |
| |
| FileContent* SLgetClassFileContent(ClassDefinition* def); |
| |
| NodeId SLgetClassRootNode(ClassDefinition* def); |
| |
| std::string SLgetPackageName(Package* def); |
| |
| std::string SLgetPackageFile(Package* def); |
| |
| VObjectType SLgetPackageType(Package* def); |
| |
| unsigned int SLgetPackageLine(Package* def); |
| |
| FileContent* SLgetPackageFileContent(Package* def); |
| |
| NodeId SLgetPackageRootNode(Package* def); |
| |
| std::string SLgetProgramName(Program* def); |
| |
| std::string SLgetProgramFile(Program* def); |
| |
| VObjectType SLgetProgramType(Program* def); |
| |
| unsigned int SLgetProgramLine(Program* def); |
| |
| FileContent* SLgetProgramFileContent(Program* def); |
| |
| NodeId SLgetProgramRootNode(Program* def); |
| |
| VObjectType SLgetInstanceType(ModuleInstance* instance); |
| |
| VObjectType SLgetInstanceModuleType(ModuleInstance* instance); |
| |
| std::string SLgetInstanceName(ModuleInstance* instance); |
| |
| std::string SLgetInstanceFullPathName(ModuleInstance* instance); |
| |
| std::string SLgetInstanceModuleName(ModuleInstance* instance); |
| |
| DesignComponent* SLgetInstanceDefinition(ModuleInstance* instance); |
| |
| std::string SLgetInstanceFileName(ModuleInstance* instance); |
| |
| FileContent* SLgetInstanceFileContent(ModuleInstance* instance); |
| |
| NodeId SLgetInstanceNodeId(ModuleInstance* instance); |
| |
| unsigned int SLgetInstanceLine(ModuleInstance* instance); |
| |
| unsigned int SLgetnInstanceChildren(ModuleInstance* instance); |
| |
| ModuleInstance* SLgetInstanceChildren(ModuleInstance* instance, unsigned int i); |
| |
| ModuleInstance* SLgetInstanceParent(ModuleInstance* instance); |
| |
| } // namespace SURELOG |
| |
| #endif |