Beispiel #1
0
/* in OCaml the file name is the module name used in the language
 * with it first letter put in upper case */
static void computeModuleName ( void )
{
	/* in Ocaml the file name define a module.
	 * so we define a module =)
	 */
	const char *filename = getSourceFileName ();
	int beginIndex = 0;
	int endIndex = strlen (filename) - 1;
	vString *moduleName = vStringNew ();

	while (filename[endIndex] != '.' && endIndex > 0)
		endIndex--;

	/* avoid problem with path in front of filename */
	beginIndex = endIndex;
	while (beginIndex > 0)
	{
		if (filename[beginIndex] == '\\' || filename[beginIndex] == '/')
		{
			beginIndex++;
			break;
		}

		beginIndex--;
	}

	vStringNCopyS (moduleName, &filename[beginIndex], endIndex - beginIndex);
	vStringTerminate (moduleName);

	if (isLowerAlpha (moduleName->buffer[0]))
		moduleName->buffer[0] += ('A' - 'a');

	addTag (moduleName, K_MODULE);
	vStringDelete (moduleName);
}
Beispiel #2
0
static void addTag (vString* ident, const char* arg_list, int kind, unsigned long line, fpos_t pos, vString *scope, int parent_kind)
{
	if (kind == K_NONE || ! rustKinds[kind].enabled)
		return;
	tagEntryInfo tag;
	initTagEntry(&tag, ident->buffer, &(rustKinds[kind]));

	tag.lineNumber = line;
	tag.filePosition = pos;
	tag.sourceFileName = getSourceFileName();

	tag.extensionFields.signature = arg_list;
	/*tag.extensionFields.varType = type;*/ /* FIXME: map to typeRef[1]? */
	if (parent_kind != K_NONE)
	{
		tag.extensionFields.scopeKind = &(rustKinds[parent_kind]);
		tag.extensionFields.scopeName = scope->buffer;
	}
	makeTagEntry(&tag);
}
Beispiel #3
0
static void addTag (vString* ident, const char* type, const char* arg_list, int kind, unsigned long line, MIOPos pos, vString *scope, int parent_kind)
{
	if (kind == K_NONE)
		return;
	tagEntryInfo tag;
	initTagEntry(&tag, ident->buffer);

	tag.lineNumber = line;
	tag.filePosition = pos;
	tag.sourceFileName = getSourceFileName();

	tag.kindName = rustKinds[kind].name;
	tag.kind = rustKinds[kind].letter;

	tag.extensionFields.arglist = arg_list;
	tag.extensionFields.varType = type;
	if (parent_kind != K_NONE)
	{
		tag.extensionFields.scope[0] = rustKinds[parent_kind].name;
		tag.extensionFields.scope[1] = scope->buffer;
	}
	makeTagEntry(&tag);
}
Beispiel #4
0
static void findGenieTags (void) {
	if (visitor == NULL) {
		visitor = ctags_visitor_new();
	}
	ctags_visitor_parse_genie (visitor, getSourceFileName(), (CTagsEntryMaker) make_ctags_entry);
}