// assumes UnregisterHotKeys was called before static int RegisterHotKeys() { hMessageWindow = CreateWindowEx(0, _T("STATIC"), NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL); SetWindowLongPtr(hMessageWindow, GWLP_WNDPROC, (LONG_PTR)MessageWndProc); int count = GetProfileCount(0, 0); for ( int i=0; i < count; i++ ) { if (!db_get_b(NULL, MODULENAME, OptName(i, SETTING_REGHOTKEY), 0)) continue; WORD wHotKey = db_get_w(NULL, MODULENAME, OptName(i, SETTING_HOTKEY), 0); hkInfo = ( HKINFO* )realloc(hkInfo, (hkiCount+1)*sizeof(HKINFO)); if (hkInfo == NULL) return -1; char atomname[255]; mir_snprintf(atomname, _countof(atomname), "StatusProfile_%d", i); hkInfo[hkiCount].id = GlobalAddAtomA(atomname); if (hkInfo[hkiCount].id == 0) continue; hkInfo[hkiCount].profile = i; hkiCount ++; RegisterHotKey(hMessageWindow, (int)hkInfo[hkiCount-1].id, GetFsModifiers(wHotKey), LOBYTE(wHotKey)); } if (hkiCount == 0) UnregisterHotKeys(); return 0; }
static int CreateMainMenuItems(WPARAM, LPARAM) { char servicename[128]; int i, count; CMenuItem mi; mi.position = 2000100000; mi.flags = CMIF_TCHAR; mcount = 0; count = GetProfileCount(0, 0); for (i = 0; i < count; i++) { TCHAR profilename[128]; if (!db_get_b(NULL, MODULENAME, OptName(i, SETTING_CREATEMMITEM), 0) || GetProfileName(i, (LPARAM)profilename)) continue; if (db_get_b(NULL, MODULENAME, OptName(i, SETTING_INSUBMENU), 1)) mi.root = Menu_CreateRoot(MO_STATUS, LPGENT("Status profiles"), 2000100000); mi.name.t = profilename; mi.position = 2000100000 + mcount; mir_snprintf(servicename, _countof(servicename), "%s%d", MS_SS_MENUSETPROFILEPREFIX, mcount); switch(mcount) { case 0: hProfileServices[mcount] = CreateServiceFunction(servicename, profileService0); break; case 1: hProfileServices[mcount] = CreateServiceFunction(servicename, profileService1); break; case 2: hProfileServices[mcount] = CreateServiceFunction(servicename, profileService2); break; case 3: hProfileServices[mcount] = CreateServiceFunction(servicename, profileService3); break; case 4: hProfileServices[mcount] = CreateServiceFunction(servicename, profileService4); break; case 5: hProfileServices[mcount] = CreateServiceFunction(servicename, profileService5); break; default: MessageBox(NULL, TranslateT("There is a maximum of 6 menu items"), TranslateT("StartupStatus"), MB_OK); return 0; } mi.pszService = servicename; if (Menu_AddStatusMenuItem(&mi)) { menuprofiles[mcount] = i; mcount += 1; } } return 0; }
/*--------- get an integer array ---------------------------*/ void OptionIntArr(char *name,int *arr,int elems,char * comment) { char ** option; int i; int optFound = 0; char buff[1000]; IsInitialized(); if (NULL != (option=GetOption(name,elems))) { for(i=0; i<elems;i++) if (1 != sscanf(option[i+1],"%d ",&arr[i])) { ErrIncorrectType(name); break; } if (i == elems) optFound = 1; } /* a more efficient version with %n instead of strlen didn't work ??gcc */ sprintf(buff,"%s (",OptName(name)); for(i=0;i<elems;i++) sprintf(buff+strlen(buff),"%d ",arr[i]); sprintf(buff+strlen(buff),") [?] %s",comment); Usage(strdup(buff)); }
static void setStaticAnalyzerCheckerOpts(const ClangTidyOptions &Opts, AnalyzerOptionsRef AnalyzerOptions) { StringRef AnalyzerPrefix(AnalyzerCheckNamePrefix); for (const auto &Opt : Opts.CheckOptions) { StringRef OptName(Opt.first); if (!OptName.startswith(AnalyzerPrefix)) continue; AnalyzerOptions->Config[OptName.substr(AnalyzerPrefix.size())] = Opt.second; } }
/*------- get a single integer -------------------------------*/ int OptionInt(char * name, int def, char * comment) { int value = def; char ** option; IsInitialized(); if (NULL != (option=GetOption(name,1))) if (1 != sscanf(option[1],"%d",&value)) ErrIncorrectType(name); Usage(ConsStr("%s (%d) [%d] %s",OptName(name),value,def,comment)); return value; }
/*-------- get an integer pair -----------------------------*/ void OptionIntInt(char * name, int *v1,int *v2, int def1, int def2, char * comment) { char ** option; IsInitialized(); * v1 = def1; * v2 = def2; if (NULL != (option=GetOption(name,2))) { if (1 != sscanf(option[1],"%d ",v1)) ErrIncorrectType(name); if (1 != sscanf(option[2],"%d ",v2)) ErrIncorrectType(name); } Usage( ConsStr("%s (%d %d) [%d %d] %s", OptName(name),*v1,*v2,def1,def2,comment)); }
//.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtOptItem::ParseOpt -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- // void DtOptItem::ParseOpt(DtOptItem* Options, int NumOpt, int argc, char* argv[], list<wstring>& FreeArgs) { // First assign default values to all options for (int i=0; i<NumOpt; i++) { Options[i].m_Option.m_Type = Options[i].m_Type; switch (Options[i].m_Type) { case OPT_TYPE_BOOL: case OPT_TYPE_INT: Options[i].m_Option.m_IntValue = Options[i].m_IntValue; break; case OPT_TYPE_INT64: Options[i].m_Option.m_Int64Value = Options[i].m_Int64Value; break; case OPT_TYPE_DOUBLE: Options[i].m_Option.m_DoubleValue = Options[i].m_DoubleValue; break; case OPT_TYPE_STRING: break; case OPT_TYPE_STRING_LIST: Options[i].m_Option.m_Strings.clear(); Options[i].m_Option.m_IntValue = Options[i].m_IntValue; for (int j=0; j<Options[i].m_Option.m_IntValue; j++) Options[i].m_Option.m_Strings.push_back(wstring()); break; default: assert(false); } } bool CheckOptions = true; // And then parse the actual commandline arguments for (int i=1; i<argc; i++) { #ifdef WINBUILD if (CheckOptions && (argv[i][0]=='-' || argv[i][0]=='/')) #else if (CheckOptions && argv[i][0]=='-') #endif { if (argv[i][1] == '-') { CheckOptions = false; continue; } string OptName(argv[i] + 1); wstring WOptName(OptName.begin(), OptName.end()); int j; for (j=0; j<NumOpt; j++) { if (Options[j].m_Name != WOptName) continue; Options[j].m_Option.m_IsSet = true; if (Options[j].m_Type == OPT_TYPE_BOOL) { Options[j].m_Option.m_IntValue = true; break; } if (Options[j].m_Type == OPT_TYPE_STRING_LIST) { if (i == argc - Options[j].m_IntValue) throw DtOptException(L"Not enough arguments for command-line " L"option: -%ls (expected %d)", WOptName.c_str(), Options[j].m_IntValue); list<wstring>::iterator It=Options[j].m_Option.m_Strings.begin(); for (int k=0; k<Options[j].m_IntValue; k++) { string OptArg(argv[++i]); *It = wstring(OptArg.begin(), OptArg.end()); It++; } break; } if (i == argc - 1) throw DtOptException(L"Missing argument for command-line option: -%ls", WOptName.c_str()); string OptArg(argv[++i]); Options[j].m_Option.m_StrValue = wstring(OptArg.begin(), OptArg.end()); if (Options[j].m_Type == OPT_TYPE_DOUBLE) Options[j].ParseDoubleOpt(); else if (Options[j].m_Type == OPT_TYPE_INT) Options[j].ParseIntOpt(); else if (Options[j].m_Type == OPT_TYPE_INT64) Options[j].ParseInt64Opt(); break; } if (j == NumOpt) throw DtOptException(L"Unknown command-line option (-%ls) encountered", WOptName.c_str()); } else { string Opt(argv[i]); FreeArgs.push_back(wstring(Opt.begin(), Opt.end())); } } }