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); }
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); }
/* 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; }
/* 添加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); }
/* 在参数输入时,以下命令必须在最前边,源文件名在后边 */ 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; }
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); }
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); }
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; }
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; } } }