OMNeT++ NEDXML
6.0.3
|
#include <nedresourcecache.h>
Stores loaded NED files, and keeps track of components in them.
This class can be turned into a cache (discarding and reloading NED files on demand) if such need arises.
Classes | |
class | CachedTypeNames |
class | INedTypeNames |
struct | PendingNedType |
Public Member Functions | |
NedResourceCache () | |
virtual | ~NedResourceCache () |
virtual int | loadNedSourceFolder (const char *foldername, const char *excludedPackages) |
virtual void | loadNedFile (const char *nedfname, const char *expectedPackage, bool isXML) |
virtual void | loadNedText (const char *name, const char *nedtext, const char *expectedPackage, bool isXML) |
virtual void | doneLoadingNedFiles () |
std::vector< NedFileElement * > | getPackageNedListForLookup (const char *packageName) const |
virtual NedTypeInfo * | lookup (const char *qname) const |
virtual NedTypeInfo * | getDecl (const char *qname) const |
virtual std::string | resolveNedType (const NedLookupContext &context, const char *nedtypename, INedTypeNames *qnames) |
virtual std::string | resolveNedType (const NedLookupContext &context, const char *nedtypename) |
virtual const std::vector< std::string > & | getTypeNames () const |
virtual std::string | getNedPackageForFolder (const char *folder) const |
Static Public Member Functions | |
static NedLookupContext | getParentContextOf (const char *qname, ASTNode *node) |
Protected Types | |
typedef std::map< std::string, std::string > | StringMap |
Protected Member Functions | |
virtual void | addFile (const char *fname, NedFileElement *node) |
virtual void | registerBuiltinDeclarations () |
virtual int | doLoadNedSourceFolder (const char *foldername, const char *expectedPackage, const std::vector< std::string > &excludedFolders) |
virtual void | doLoadNedFileOrText (const char *nedfname, const char *nedtext, const char *expectedPackage, bool isXML) |
virtual NedFileElement * | parseAndValidateNedFileOrText (const char *nedfname, const char *nedtext, bool isXML) |
virtual std::string | determineRootPackageName (const char *nedSourceFolderName) |
virtual std::string | getNedSourceFolderForFolder (const char *folder) const |
virtual void | collectNedTypesFrom (ASTNode *node, const std::string &packagePrefix, bool areInnerTypes) |
virtual void | collectNedType (const char *qname, bool isInnerType, ASTNode *node) |
virtual bool | areDependenciesResolved (const char *qname, ASTNode *node) |
virtual void | registerPendingNedTypes () |
virtual void | registerNedType (const char *qname, bool isInnerType, ASTNode *node) |
virtual std::string | getFirstError (ErrorStore *errors, const char *prefix=nullptr) |
Protected Attributes | |
std::map< std::string, NedFileElement * > | nedFiles |
std::map< std::string, NedFileElement * > | packageDotNedFiles |
bool | doneLoadingNedFilesCalled = false |
std::map< std::string, NedTypeInfo * > | nedTypes |
std::vector< std::string > | nedTypeNames |
StringMap | folderPackages |
std::vector< PendingNedType > | pendingList |
|
protected |
|
inline |
Constructor
|
virtual |
Destructor
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
virtual |
Load all NED files from a NED source folder. This involves visiting each subdirectory, and loading all "*.ned" files from there. The given folder is assumed to be the root of the NED package hierarchy. A list of packages to skip may be specified in the excludedPackages parameter (items must be separated with a semicolon).
The function returns the number of NED files loaded.
Note: doneLoadingNedFiles() must be called after the last loadNedSourceFolder()/loadNedFile()/loadNedText() call.
|
virtual |
Load a single NED file. If the expected package is given (non-nullptr), it should match the package declaration inside the NED file.
Note: doneLoadingNedFiles() must be called after the last loadNedSourceFolder()/loadNedFile()/loadNedText() call.
|
virtual |
Parses and loads the NED source code passed in the nedtext argument. The name argument will be used as filename in error messages, and and should be unique among the files loaded. If the expected package is given (non-nullptr), it should match the package declaration inside the NED file.
Note: doneLoadingNedFiles() must be called after the last loadNedSourceFolder()/loadNedFile()/loadNedText() call.
|
virtual |
To be called after all NED folders / files have been loaded. May be redefined to issue errors for components that could not be fully resolved because of missing base types or interfaces.
std::vector<NedFileElement*> getPackageNedListForLookup | ( | const char * | packageName | ) | const |
Return a list of "package.ned" files relevant for the given package. Files are in bottom-up order, the order they should be searched for package properties.
|
virtual |
Look up a fully qualified NED type name from the cache. Returns nullptr if not found.
Referenced by NedResourceCache::CachedTypeNames::contains().
|
virtual |
Like lookup(), but asserts non-nullptr return value
|
virtual |
Resolves the given NED type name in the given context, among the given type names. Returns "" if not found.
|
inlinevirtual |
Resolves NED type name, based on the NED files loaded
|
virtual |
Available NED type names
Referenced by NedResourceCache::CachedTypeNames::get(), and NedResourceCache::CachedTypeNames::size().
|
virtual |
Returns the NED package that corresponds to the given folder. Returns "" for the default package, and "-" if the folder is outside all NED folders.
|
static |
Utility method, useful with resolveNedType()/resolveComponentType()
|
protected |
|
protected |
|
protected |
|
protected |
|
mutableprotected |
|
protected |
|
protected |