static void createTag (tokenInfo *const token) { tagEntryInfo tag; /* Do nothing it tag name is empty or tag kind is disabled */ if (vStringLength (token->name) == 0 || ! kindEnabled (token->kind)) { return; } /* Create tag */ initTagEntryFull( &tag, vStringValue (token->name), token->lineNumber, getSourceLanguageName (), token->filePosition, getSourceFileTagPath (), kindFromKind (token->kind) ); verbose ("Adding tag %s (kind %d)", vStringValue (token->name), token->kind); if (currentContext->kind != K_UNDEFINED) { verbose (" to context %s\n", vStringValue (currentContext->name)); currentContext->lastKind = token->kind; tag.extensionFields.scopeKind = kindFromKind (currentContext->kind); tag.extensionFields.scopeName = vStringValue (currentContext->name); } verbose ("\n"); if (vStringLength (token->inheritance) > 0) { tag.extensionFields.inheritance = vStringValue (token->inheritance); verbose ("Class %s extends %s\n", vStringValue (token->name), tag.extensionFields.inheritance); } makeTagEntry (&tag); if (Option.include.qualifiedTags && currentContext->kind != K_UNDEFINED) { vString *const scopedName = vStringNew (); vStringCopy (scopedName, currentContext->name); vStringCatS (scopedName, "."); vStringCatS (scopedName, vStringValue (token->name)); tag.name = vStringValue (scopedName); makeTagEntry (&tag); vStringDelete (scopedName); } /* Push token as context if it is a container */ if (isContainer (token)) { tokenInfo *newScope = newToken (); vStringCopy (newScope->name, token->name); newScope->kind = token->kind; createContext (newScope); } /* Clear no longer required inheritance information */ vStringClear (token->inheritance); }
static void createTag (tokenInfo *const token) { tagEntryInfo tag; verilogKind kind; /* Determine if kind is prototype */ if (currentContext->prototype) { kind = K_PROTOTYPE; } else { kind = token->kind; } /* Do nothing it tag name is empty or tag kind is disabled */ if (vStringLength (token->name) == 0 || ! kindEnabled (kind)) { return; } /* Create tag */ initTagEntry (&tag, vStringValue (token->name), kindFromKind (kind)); tag.lineNumber = token->lineNumber; tag.filePosition = token->filePosition; verbose ("Adding tag %s (kind %d)", vStringValue (token->name), kind); if (currentContext->kind != K_UNDEFINED) { verbose (" to context %s\n", vStringValue (currentContext->name)); currentContext->lastKind = kind; tag.extensionFields.scopeKind = kindFromKind (currentContext->kind); tag.extensionFields.scopeName = vStringValue (currentContext->name); } verbose ("\n"); if (vStringLength (token->inheritance) > 0) { tag.extensionFields.inheritance = vStringValue (token->inheritance); verbose ("Class %s extends %s\n", vStringValue (token->name), tag.extensionFields.inheritance); } makeTagEntry (&tag); if (isXtagEnabled(XTAG_QUALIFIED_TAGS) && currentContext->kind != K_UNDEFINED) { vString *const scopedName = vStringNew (); vStringCopy (scopedName, currentContext->name); vStringPut (scopedName, '.'); vStringCatS (scopedName, vStringValue (token->name)); tag.name = vStringValue (scopedName); markTagExtraBit (&tag, XTAG_QUALIFIED_TAGS); makeTagEntry (&tag); vStringDelete (scopedName); } /* Push token as context if it is a container */ if (isContainer (token)) { tokenInfo *newScope = newToken (); vStringCopy (newScope->name, token->name); newScope->kind = kind; createContext (newScope); } /* Clear no longer required inheritance information */ vStringClear (token->inheritance); }