Esempio n. 1
0
void TagManager::deleteTag(Tag* t)
{
    std::cout<<"J'ai utilisé deleteTag()\n";
     int i = getTagPos(t);
     for(unsigned int i=0;i<tabTags.size();i++)
     {
         Note* n = t->getNote(i);
         n->removeTag(t);
     }
    tabTags.removeAt(i);

}
Esempio n. 2
0
static void
get_member_list (JSContext *my_cx)
{
	GList *i;

	g_assert (my_cx != NULL);

	gint plen = strlen (PROTOTYPE);

	for (i = my_cx->local_var; i; i = g_list_next (i))
	{
		gint len;
		gchar *tstr;
		Var *t = (Var *)i->data;
		if (!t->name)
			continue;
		len = strlen (t->name);
		if (len <= plen)
			continue;
		if (tstr = strstr (t->name, PROTOTYPE), tstr == NULL)
			continue;
		if (strlen (tstr) != plen)
		{
//TODO:puts (t->name);
//Make tag
		}
		else
		{
			JSNode *node = t->node;
			JSNode* iter;

			g_assert (node->pn_type == TOK_RC);
	
			for (iter = node->pn_u.list.head; iter != NULL; iter = iter->pn_next)
			{
				const gchar* name = js_node_get_name (iter->pn_u.binary.left);
				const JSTokenPos* pos = getTagPos (iter->pn_u.binary.left);
				if (!name)
					g_assert_not_reached ();
				else
				{
					gchar *rname = g_strndup (t->name, len - plen);

					if (g_strcmp0 (name, "__proto__") == 0 )
					{
						GList *i;
						Type *t = js_context_get_node_type (my_cx, JS_NODE (iter->pn_u.binary.right));
						if (!t || !t->name)
							continue;
						for (i = tags; i != NULL; i = g_list_next (i))
							if (g_strcmp0 (((tagEntryInfo *)i->data)->name, rname) == 0)
							{
								gchar *tn = g_strdup (t->name), *tstr;
								if (tstr = strstr (tn, PROTOTYPE), tstr != NULL)
								{
									g_assert (strlen (tstr) == plen);
									*tstr = '\0';
								}
								((tagEntryInfo *)i->data)->extensionFields.inheritance = tn;
								break;
							}
					}
					else
					{
						tagEntryInfo *tag = (tagEntryInfo*)malloc (sizeof (tagEntryInfo));

						symbols = g_list_append (symbols, g_strdup (name));
						
						initTagEntry (tag, name);
						tag->isFileScope = 1;
						tag->kindName = "member";
						tag->kind = 'm';
						get_file_pos (pos->begin, &tag->filePosition, File.fp);
						tag->lineNumber = pos->begin;
						tag->extensionFields.scope[0]="class";
						tag->extensionFields.scope[1]=rname;
						JSNode *node = (JSNode *)iter->pn_u.binary.right;
						if (node && node->pn_arity == PN_FUNC && node->pn_u.func.args)
						{
							gchar *str = NULL, *t;
							JSNode *i = node->pn_u.func.args;
							g_assert (i->pn_arity == PN_LIST);
							for (i = (JSNode *)i->pn_u.list.head; i; i = (JSNode *)i->pn_next)
							{
								const gchar *name;
								g_assert (i->pn_arity == PN_NAME);
								name = js_node_get_name (i);
								g_assert (name != NULL);
								if (str == NULL)
									str = g_strdup_printf ("( %s", name);
								else
								{
									t = g_strdup_printf ("%s, %s", str, name);
									g_free (str);
									str = t;
								}
							}
							t = g_strdup_printf ("%s)", str);
							g_free (str);
							str = t;
							tag->extensionFields.signature = str;
						}
						makeTagEntry (tag);
					}
				}
			}
		}
	}
	for (i = my_cx->childs; i; i = g_list_next (i))
	{
		JSContext *t = (JSContext *)i->data;
		get_member_list (t);
	}

}