Пример #1
0
Файл: ucl.c Проект: M-ike/work
static void AddKeyword(char *str)
{
	char *p, *q;

	ExtraKeywords = CreateVector(1);
	p = str;
	while ((q = strchr(p, ',')) != NULL)
	{
		*q = 0;
		INSERT_ITEM(ExtraKeywords, p);
		p = q + 1;
	}
	INSERT_ITEM(ExtraKeywords, p);
}
Пример #2
0
Файл: ucl.c Проект: M-ike/work
static void AddWhiteSpace(char *str)
{
	char *p, *q;

	ExtraWhiteSpace = CreateVector(1);
	p = str;
	while ((q = strchr(p, ',')) != NULL)
	{
		*q = 0;
		INSERT_ITEM(ExtraWhiteSpace, p);
		p = q + 1;
	}
	INSERT_ITEM(ExtraWhiteSpace, p);
}
Пример #3
0
/* include import 加载文件 */
static int LoadFile (char *filename)
{
    /* 如果文件存在,
     * 保存以前的Input 信息
     * 读取新的文件 */
    if (FileExist (filename)) {
        
        Include p;
        CALLOC (p);

        p->PreInput = Input;
        p->isDef = false;
        ReadSourceFile (filename);
        p->PreTokenCoord = TokenCoord;
        p->endifCnt = endifCnt;
        INSERT_ITEM (InLink, p);

        TokenCoord.filename = filename;
        TokenCoord.line = TokenCoord.col = TokenCoord.ppline = 1;
        endifCnt = 0;
        INFO (4, "load %s file.", filename);

        return 1;
    }
    return 0;
}
Пример #4
0
/* 添加item 到v集合中 
 * str: 串如 abc,bcd,cde 用逗号分隔 */
static void AddItemToVector (Vector *v, char *str)
{
    char *p = str, *q;

    /* 如果data 为空则初始化 */
    if (NULL == *v)
        *v = CreateVector (1);

    /* 将元素添加到v 集合中 */
    while ((q = strchr (p, ','))) {
    
        *q = 0;
        INSERT_ITEM (*v, p);
        p = q + 1;
    }
    INSERT_ITEM (*v, p);
}
Пример #5
0
/* 在参数输入时,以下命令必须在最前边,源文件名在后边 */
static int ParseCommandLine (int argc, char *argv[])
{
    int i;
    
    UserIncPath = CreateVector (1);
    for (i = 0; i < argc; i++) {

        if (!strncmp (argv[i], "-ext:", 5)) {
            /* 设置汇编文件的扩展名 */
            ExtName = argv[i] + 5;
        } else if (!strcmp (argv[i], "-ignore")) {
            /* 添加要当成空白符处理的字符串 */
            AddWhiteSpace (argv[++i]);
        } else if (!strcmp (argv[i], "-keyword")) {
            /* 添加用户自定义关键字 */
            AddKeyword (argv[++i]);
        } else if (!strcmp (argv[i], "--dump-ast")) {
            /* 标志生成语法树 */
            DumpAST = 1;
        } else if (!strcmp (argv[i], "--dump-IR")) {
            /* 标志是否要生成中间代码 */
            DumpIR = 1;
        } else if (!strcmp (argv[i], "--test-lex")) {
            
            test_lex = 1;
        } else if (!strncmp (argv[i], "-I", 2)) {
            
            char *path;
            
            path = calloc (strlen (argv[i]+2) + 1, sizeof (char));
            strcpy (path, argv[i] + 2);
            INSERT_ITEM (UserIncPath, path);
        } else if (!strncmp (argv[i], "-VARINFO=", 9)) {
            
            VarInfo = atoi (argv[i] + 9);
            if (VarInfo > 7 || VarInfo < 0) 
                VarInfo = 0;
        } else if (!strcmp (argv[i], "--help")) { 
        
            #define HELP(help) PRINT ("%s\n", help);
            #include "include/confg/help.h"
            #undef  HELP
        } else if (!strcmp (argv[i], "--version")) {
            
            PRINT ("%s \n", VERSION);
        } else return i;
    } return i;
}
Пример #6
0
static void AddParameter(Vector params, char *id, Type ty, int reg, Coord coord)
{
	Parameter param;

	FOR_EACH_ITEM(Parameter, param, params)
		if (param->id && param->id == id)
		{
			Error(coord, "Redefine parameter %s", id);
			return;
		}
	ENDFOR

	ALLOC(param);

	param->id = id;
	param->ty = ty;
	param->reg = reg;
	INSERT_ITEM(params, param);
}
Пример #7
0
static int LoadDefine (Symbol def)
{
    Include p;
    CALLOC (p);

    p->PreInput = Input;
    p->isDef = true;
    Input.filename = def->name;
    Input.base = def->val.p;
    Input.size = strlen (Input.base);
    Input.base[Input.size] = END_OF_FILE;
    Input.current = Input.lineHead = Input.base;
    Input.line = 1;

    p->PreTokenCoord = TokenCoord;
    p->endifCnt = endifCnt;
    INSERT_ITEM (InLink, p);

    TokenCoord.filename = def->name;
    TokenCoord.line = TokenCoord.col = TokenCoord.ppline = 1;
    endifCnt = 0;
    INFO (4, "load %s define.", def->name);
}
Пример #8
0
bool CContactPersonalDetailInfo::InitInfoTypeKeyMap()
{
#define INSERT_ITEM(key, value) \
m_infoTypeKeyMap.insert(InfoTypeKeyMap_t::value_type((key), (value)))
	
	INSERT_ITEM(UID_INFO,	UID_KEYWROD_ID);							//用户id
	INSERT_ITEM(DISPNAME_INFO, NAME_KEYWORD_ID);						//姓名
	INSERT_ITEM(GENDER_INFO, GENDER_KEYWORD_ID);						//性别
	INSERT_ITEM(BIRTHDAY_INFO,	BIRTH_KEYWORD_ID);						//生日
	INSERT_ITEM(CONSTELLATION_INFO,	CONSTELLATION_KEYWORD_ID);			//星座
	INSERT_ITEM(SHENGXIAO_INFO,	SHENGXIAO_KEYWORD_ID);					//生肖
	INSERT_ITEM(COUNTRY_INFO, COUNTRY_KEYWORD_ID);						//国家
	INSERT_ITEM(PROVINCE_INFO, PROVINCE_KEYWORD_ID);					//省份
	INSERT_ITEM(CITY_INFO, CITY_KEYWORD_ID);							//城市
	INSERT_ITEM(MOBILEPHONE_INFO, MOBILE_KEYWORD_ID);					//手机
	INSERT_ITEM(TELEPHONE_INFO,	PHONE_KEYWORD_ID);						//电话
	INSERT_ITEM(EMAIL_INFO,	EMAIL_KEYWORD_ID);							//邮箱
	INSERT_ITEM(CAREER_INFO, CAREER_KEYWORD_ID);						//职业
	INSERT_ITEM(GRADSCHOOL_INFO, SCHOOL_KEYWORD_ID);					//毕业院校
	INSERT_ITEM(PERSONALWEBSITE_INFO, PERSONALWEBSITE_KEYWORD_ID);		//个人主页
	
	return true;
}
Пример #9
0
void CContactDetailInfoUtils::MakeDetailInfo(KeyValueMap_t  profileMap, CContactPersonalDetailInfo * detailInfo)
{
#if 0
	KeyValueMap_t profileMap;
   
#define INSERT_ITEM(key, value) profileMap.insert(KeyValueMap_t::value_type((key), (value)))
	
	INSERT_ITEM(UID_KEYWROD_ID, "cnalichnwirelesstest");							//用户id
	INSERT_ITEM(NAME_KEYWORD_ID, "徐明刚");						//姓名
	INSERT_ITEM(GENDER_KEYWORD_ID, "0");//保密						//性别
	INSERT_ITEM(BIRTH_KEYWORD_ID, "1983/1/1");						//生日
	INSERT_ITEM(CONSTELLATION_KEYWORD_ID, "3");	//双子座		//星座
	INSERT_ITEM(SHENGXIAO_KEYWORD_ID, "3");	//虎"				//生肖
	INSERT_ITEM(COUNTRY_KEYWORD_ID, "100000000");	//中国					//国家
	INSERT_ITEM(PROVINCE_KEYWORD_ID, "100330000");	//浙江省				//省份
	INSERT_ITEM(CITY_KEYWORD_ID, "100330800"); //衢州市							//城市
	INSERT_ITEM(MOBILE_KEYWORD_ID, "13666611111");					//手机
	INSERT_ITEM(PHONE_KEYWORD_ID, "0571-741741741");						//电话
	INSERT_ITEM(EMAIL_KEYWORD_ID, "*****@*****.**");							//邮箱
	INSERT_ITEM(CAREER_KEYWORD_ID, "drillmaster");	//培训师					//职业
	INSERT_ITEM(SCHOOL_KEYWORD_ID, "浙江名牌大学");					//毕业院校
	INSERT_ITEM(PERSONALWEBSITE_KEYWORD_ID, "www.sina.com.cn");		//个人主页
#endif	
	 
	MakeContactDetailInfo(profileMap, *detailInfo);
	
}
bool IMPluginSwitcher::keyPressed(QKeyEvent *p_keyPressEvent,  ZInputField* field)
//bool IMPluginSwitcher::keyReleased(QKeyEvent *p_keyPressEvent,  ZInputField* field)
//bool IMPluginSwitcher::hack(QKeyEvent *p_keyPressEvent,  ZInputField* field)
{
	toLog( "##### Start my keyPressed! ");

	bool ret = keyPressedInternal( p_keyPressEvent, field );

    if ( field != NULL && p_keyPressEvent->key() == KEY_GREEN )
    {
		toLog( "##### Key code is GREEN !!! " );
		toLog( "##### Getting editor" );
		
		QWidget * editor = field->getEditorWidget();
		
		toLog( "##### Create action dlg" );
		EDIT_FILD_TYPE tupeEditor = TYPE_UDEFINE;
		
		{ //For not use more memory, to store class name
		QString s = QString(editor->className());

		toLog( "##### Editor class: "+s );

		if ( s.find("MultiLineEdit") != -1)
			tupeEditor = TYPE_MULTI_LINE_EDIT; 
		else if ( s.find("LineEdit") != -1 )
			tupeEditor = TYPE_LINE_EDIT; 
		else if ( (s.find("ZTextEdit") != -1) || (s.find("MMS_PageWidget") != -1) )
			tupeEditor = TYPE_TEXT_EDIT;
		else if  ( s.find("SVGCanvas") != -1 )
			return false; //Copy past don't work(
	
		}

		int selected=CANCEL_CODE;
		
		if ( onSelectText )
		{
			toLog( "##### Auto select" );
			selected = ACTION_SELECT_END;
		} else
		{			
			QRect rect(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
			ZOptionsMenu * menu = new ZOptionsMenu (rect, editor);//editor->topLevelWidget()
			
			toLog( "##### Insert item to list" );		
			
			INSERT_ITEM(ZWidget::tr("TXT_RID_OPTION_COPY", "Copy"),  ACTION_COPY);
			INSERT_ITEM(ZWidget::tr("TXT_RID_OPTION_INSERT", "Paste"), ACTION_PAST);
			
			int x1=0,x2=0,y1,y2;
			bool oldSel=false;
			
			if ( tupeEditor != TYPE_UDEFINE )
			{
				INSERT_ITEM(ZWidget::tr("TXT_RID_MENU_CUT", "Cut"), ACTION_CUT);
		        INSERT_SEP();
		        INSERT_ITEM(ZWidget::tr("TXT_RID_OPTION_SELECT_ALL", "onSelectText all"), ACTION_SELECT_ALL);
				INSERT_ITEM(ZWidget::tr("TXT_RID_HEADER_SELECT", "Select"), ACTION_SELECT_START);
				
				//save curren state of input fild and get cursor point
				QPoint pos(0,0);
				switch ( tupeEditor )
				{
					case TYPE_MULTI_LINE_EDIT:
						pos = ((ZMultiLineEdit*)editor)->mapToGlobal(((ZMultiLineEdit*)editor)->cursorPoint());
						oldSel = ((ZMultiLineEdit*)editor)->hasMarkedText();
						if ( oldSel )
							((ZMultiLineEdit*)editor)->getMarkedRegion( &x1, &y1, &x2, &y2 );
						else
							((ZMultiLineEdit*)editor)->getCursorPosition( &x1, &y1 );
						break;
					case TYPE_LINE_EDIT:
						pos = ((ZLineEdit*)editor)->mapToGlobal(((ZLineEdit*)editor)->cursorPoint());
						oldSel = ((ZLineEdit*)editor)->hasMarkedText();
						if ( !oldSel )
							x1=((ZLineEdit*)editor)->cursorPosition();
						break;
					case TYPE_TEXT_EDIT:
					default:
						pos = editor->mapToGlobal( field->getCursorPos() );
						break;
				}
				menu->setPosition(ZOptionsMenu::TopLeft, pos );
			}
			
			toLog(  "##### Show dlg" );
			
			menu->popup();	
			while ( !menu->isHidden() ) qApp->processEvents();
			selected = menu->getCurrentSelectedItemId();

			//load state of input fild
			if ( tupeEditor>0 )
			{
				switch ( tupeEditor )
				{
					case TYPE_MULTI_LINE_EDIT:
						if ( oldSel )
							((ZMultiLineEdit*)editor)->setSelection( x1, y1, x2, y2 );
						else
							((ZMultiLineEdit*)editor)->setCursorPosition( x1, y1, false );
						break;
					case TYPE_LINE_EDIT:
						if ( oldSel )
						{
							if ( GET_CURSOR_Y == -1 )
								((ZLineEdit*)editor)->selectAll();
							else
								((ZLineEdit*)editor)->setSelection( GET_CURSOR_X, GET_CURSOR_Y );
						}
						else
							((ZLineEdit*)editor)->setCursorPosition(x1);
						break;
					default:
						break;					
				}				
			}

			toLog(  "##### Delete dlg" );		
			    	
			delete menu;
			menu = NULL;
		}		
		
		if ( selected >= 0 )
		{
			toLog( "##### Operate code:" << selected << " edit type:" << tupeEditor );		
				
			switch (tupeEditor)
			{
				case TYPE_UDEFINE:
				{
					switch (selected)
					{
						case ACTION_COPY:
						{
							QString text = field->getText(QPoint(-1,-1),true);
							QApplication::clipboard()->setText( text=="text/plain"?"":text );
							toLog( "##### >Text:" + text  );
							break;
						}
						case ACTION_PAST:
						{
							field->insertString( field->getCursorPos(), QApplication::clipboard()->text());
							break;
						}
					}
					break;
				}	
				case TYPE_MULTI_LINE_EDIT:
				{							
					switch (selected)
					{
						case ACTION_COPY:
						{
							((ZMultiLineEdit*)editor)->copy();
							break;
						}
						case ACTION_PAST:
						{
							((ZMultiLineEdit*)editor)->paste();
							break;
						}
						case ACTION_CUT:
						{							
							((ZMultiLineEdit*)editor)->cut();
							break;
						}
						case ACTION_SELECT_ALL:
						{
							((ZMultiLineEdit*)editor)->selectAll();
							break;
						}
						case ACTION_SELECT_START:
						{
							int iSelX = 0;
							int iSelY = 0;
							((ZMultiLineEdit*)editor)->getCursorPosition( &iSelX, &iSelY );
							
							onSelectText = true;
		    				SET_CURSOR
							break;
						}	
						case ACTION_SELECT_END:
						{
							if ( !onSelectText )
								break;

							int iSelX = 0;
							int iSelY = 0;
							((ZMultiLineEdit*)editor)->getCursorPosition( &iSelX, &iSelY );

		    				((ZMultiLineEdit*)editor)->setCursorPosition( GET_CURSOR_X, GET_CURSOR_Y, false );
							((ZMultiLineEdit*)editor)->setCursorPosition( iSelX, iSelY, true );
							
		    				onSelectText = false;			
							break;
						}															
					}
					break;
				}
				case TYPE_TEXT_EDIT:
				{				
					switch (selected)
					{
						case ACTION_COPY:
						{
							if ( ((ZTextEdit*)editor)->hasSelectedText() )
								QApplication::clipboard()->setText( ((ZTextEdit*)editor)->selectedText() );
							else
								QApplication::clipboard()->setText( ((ZTextEdit*)editor)->text() );
							break;
						}
						case ACTION_PAST:
						{
							if ( ((ZTextEdit*)editor)->hasSelectedText() )	
								((ZTextEdit*)editor)->del();

							int iSelX = 0;
							int iSelY = 0;
							
		    				((ZTextEdit*)editor)->getCursorPosition( &iSelX, &iSelY );
		    				((ZTextEdit*)editor)->insertAt(QApplication::clipboard()->text(), iSelX, iSelY);							
							break;
						}
						case ACTION_CUT:
						{
							if ( ((ZTextEdit*)editor)->hasSelectedText() )
								QApplication::clipboard()->setText( ((ZTextEdit*)editor)->selectedText() );
							else
								QApplication::clipboard()->setText( ((ZTextEdit*)editor)->text() );	
							if ( ((ZTextEdit*)editor)->hasSelectedText() )	
								((ZTextEdit*)editor)->del();
							else
								((ZTextEdit*)editor)->clear();						
							break;
						}
						case ACTION_SELECT_ALL:
						{
							((ZTextEdit*)editor)->selectAll(true);
							break;
						}
						case ACTION_SELECT_START:
						{
							int iSelX = 0;
							int iSelY = 0;
							
		    				((ZTextEdit*)editor)->getCursorPosition( &iSelX, &iSelY );
							onSelectText = true;
		    				SET_CURSOR
							break;
						}	
						case ACTION_SELECT_END:
						{
							if ( !onSelectText )
								break;

							int iSelX = 0;
							int iSelY = 0;

		    				((ZTextEdit*)editor)->getCursorPosition( &iSelX, &iSelY );					
							((ZTextEdit*)editor)->setSelection( GET_CURSOR_X, GET_CURSOR_Y, iSelX, iSelY );
							
		    				onSelectText = false;			
							break;
						}															
					}
					break;					
				} 
				case TYPE_LINE_EDIT:
				{				
					switch (selected)
					{
						case ACTION_COPY:
						{
							if ( ((ZLineEdit*)editor)->hasMarkedText() )
								QApplication::clipboard()->setText( ((ZLineEdit*)editor)->markedText() );
							else
							{
								QString text = ((ZLineEdit*)editor)->text();
								QApplication::clipboard()->setText( text=="text/plain"?"":text );
							}
							break;
						}
						case ACTION_PAST:
						{
		    				((ZLineEdit*)editor)->insert(QApplication::clipboard()->text());							
							break;
						}
						case ACTION_CUT:
						{
							if ( ((ZLineEdit*)editor)->hasMarkedText() )
								QApplication::clipboard()->setText( ((ZLineEdit*)editor)->markedText() );
							else
								QApplication::clipboard()->setText( ((ZLineEdit*)editor)->text() );	
							if ( ((ZLineEdit*)editor)->hasMarkedText() )	
								((ZLineEdit*)editor)->del();
							else
								((ZLineEdit*)editor)->clear();						
							break;
						}
						case ACTION_SELECT_ALL:
						{
							((ZLineEdit*)editor)->selectAll();
		    				int iSelX=-1;
		    				int iSelY=0;
		    				SET_CURSOR							
							break;
						}
						case ACTION_SELECT_START:
						{
		    				onSelectText = true;
		    				int iSelX=(((ZLineEdit*)editor)->cursorPosition());
		    				int iSelY=0;
		    				
		    				SET_CURSOR		
							break;
						}	
						case ACTION_SELECT_END:
						{
							if ( !onSelectText )
								break;		
							
							int iSelY = ((ZLineEdit*)editor)->cursorPosition()-GET_CURSOR_X;
							int iSelX=GET_CURSOR_X;
							if ( iSelY > 0 )
								((ZLineEdit*)editor)->setSelection( GET_CURSOR_X, iSelY );
		    				
		    				SET_CURSOR	
		    				
		    				onSelectText = false;				
							break;
						}														
					}
					break;					
				}
			}
		}