Exemple #1
0
void CClassView::RefreshTree()
{
	vfc_token_tree * tree = m_cb.get_tree();

	SetRedraw(FALSE);

	DeleteAllItems();
	m_itemRoot	= InsertItem(m_workName,0,0,TVI_ROOT,NULL);
	m_itemGlobalFunction = InsertItem(_T("Globals"),2,2,m_itemRoot,NULL);
	m_itemGlobalTypedef = InsertItem(_T("Globals Typedef"),14,14,m_itemRoot,NULL);
	m_itemGlobalDefine = InsertItem(_T("Globals Define"),12,12,m_itemRoot,NULL);

	vfc_token_array tks;
	if (!tree->get_token_array(&tks))
		return;
	for (size_t i = 0; i < tks.size(); i++)
	{
		vfc_token * tk = tks.at(i);
		if (tk && tk->get_parent() == NULL)
		{
			InsertToken(tk,m_itemRoot);
		}
	}

	Expand(m_itemRoot);

	SetRedraw(TRUE);
}
Exemple #2
0
bool CScript::IntroduceVirus()
{
    int     i, start, iFound;
    int     found[11*2];
    char*   newScript;

    const char*   names[11*2] =
    {
        "==",           "!=",
        "!=",           "==",
        ">",            "<",
        "<",            ">",
        "true",         "false",
        "false",        "true",
        "grab",         "drop",
        "drop",         "grab",
        "InFront",      "Behind",
        "Behind",       "EnergyCell",
        "EnergyCell",   "InFront",
    };

    iFound = 0;
    for ( i=0 ; i<11 ; i++ )
    {
        start = SearchToken(m_script, names[i*2]);
        if ( start != -1 )
        {
            found[iFound++] = i*2;
            found[iFound++] = start;
        }
    }
    if ( iFound == 0 )  return false;

    i = (rand()%(iFound/2))*2;
    start = found[i+1];
    i     = found[i+0];

    newScript = new char[m_len+strlen(names[i+1])+1];
    strcpy(newScript, m_script);
    delete[] m_script;
    m_script = newScript;

    DeleteToken(m_script, start, strlen(names[i]));
    InsertToken(m_script, start, names[i+1]);
    m_len = strlen(m_script);
    Compile();  // recompile with the virus

    return true;
}
Exemple #3
0
void CClassView::InsertToken(vfc_token *tk, HTREEITEM root)
{
	int kind = tk->get_uint(vt_TokenKind);
	int scope = tk->get_uint(vt_Scope);
	int image = 2;
	CString text = get_string(tk,vt_Name);
	text.ReleaseBuffer(-1);
	if (kind == vk_Class)
	{
		image = 1;
	}
	else if (kind & vk_AnyFunction)
	{
		text += get_string(tk,vt_RealArgs);
		image = 2;
		if (scope == vs_Protected)
			image = 8;
		else if (scope == vs_Private)
			image = 9;
	}
	else if (kind & vk_Variable)
	{
		text += _T(" : ");
		text += get_string(tk,vt_Type);
		image = 3;
		if (scope == vs_Protected)
			image = 10;
		else if (scope == vs_Private)
			image = 11;
	}
	else if (kind & vk_Mapping)
	{
		text += get_string(tk,vt_Args);
		image = 5;
	}
	else if (kind & vk_Enum)
	{
		image = 6;
	}
	else if (kind & vk_Enumerator)
	{
		image = 7;
	}
	else if (kind & vk_Namespace)
	{
		image = 13;
	}
	else if (kind & vk_Typedef)
	{
		image = 14;
	}

	if (tk->get_parent() != NULL ||
		kind & vk_Class || kind & vk_Namespace || kind & vk_Enum)
	{
		root = root;
	}
	else if (kind & vk_Function || kind & vk_Variable)
	{
		root = m_itemGlobalFunction;
	}
	else if (kind & vk_Typedef)
	{
		root = m_itemGlobalTypedef;
	}
	else
		root = m_itemGlobalDefine;

	HTREEITEM item = InsertItem(text,image,image,root,NULL);
	SetItemData(item,tk->get_uint(vt_Index)+1);

	vfc_int_array vti;
	if (tk->get_token_idx(vt_Children,&vti))
	{
		for (size_t i = 0; i < vti.size(); i++)
		{
			vfc_token * child = tk->get_tree()->get_token(vti.at(i));
			InsertToken(child,item);
		}
	}
}