std::string BaseGenerator::NamespaceDir(const Parser &parser, const std::string &path, const Namespace &ns) { EnsureDirExists(path.c_str()); if (parser.opts.one_file) return path; std::string namespace_dir = path; // Either empty or ends in separator. auto &namespaces = ns.components; for (auto it = namespaces.begin(); it != namespaces.end(); ++it) { namespace_dir += *it + kPathSeparator; EnsureDirExists(namespace_dir.c_str()); } return namespace_dir; }
// Save out the generated code for a Go Table type. static bool SaveType(const Parser &parser, const Definition &def, const std::string &classcode, const std::string &path, bool needs_imports) { if (!classcode.length()) return true; std::string namespace_name; std::string namespace_dir = path; // Either empty or ends in separator. auto &namespaces = parser.namespaces_.back()->components; for (auto it = namespaces.begin(); it != namespaces.end(); ++it) { if (namespace_name.length()) { namespace_name += "."; } namespace_name = *it; namespace_dir += *it + kPathSeparator; } EnsureDirExists(namespace_dir); std::string code = ""; BeginFile(namespace_name, needs_imports, &code); code += classcode; std::string filename = namespace_dir + def.name + ".go"; return SaveFile(filename.c_str(), code, false); }
Bot::Bot(bot_manager* mgr, const char* name, const char* workDir) { _mgr = mgr; _name = name; /*_workDir = std::string(ExePath()).c_str(); _workDir += L"\\plugins\\BMP\\"; TString botNamee = name; botNamee.ToUpper(); _workDir += botNamee.GetAsWChar(); MessageBox(NULL, _workDir.GetAsChar(), "Work Dir", 0);*/ setActive(); _workDir = workDir; _workDir += L"bmp\\"; bool isScriptOk = true; if (!EnsureDirExists(_workDir.GetAsWChar())) { isScriptOk = false; } _charset.color = RGB(0xff, 0x99, 0x00); _activeBot = this; _scriptFile = _workDir.GetAsWChar(); _scriptFile += L"main.js"; if (isScriptOk && !FileExists(std::string(_scriptFile.GetAsChar()))) { TString strSay = L"BMP Plugin will not work, please put file 'main.js' into work dir. ("; strSay += _scriptFile.GetAsWChar(); strSay += L")"; //say(strSay); MessageBox(NULL, strSay.GetAsChar(), "BMP Bot Alert", 0); isScriptOk = false; } v7 = v7_create(); enum v7_err rcode = V7_OK; v7_val_t result; //events function define v7_set_method(v7, v7_get_global(v7), "on", (v7_cfunction_t*)&jsBotEvent); //utilities functions v7_set_method(v7, v7_get_global(v7), "say", (v7_cfunction_t*)&jsBotSay); v7_set_method(v7, v7_get_global(v7), "setTimeout", (v7_cfunction_t*)&jsSetTimeout); v7_set_method(v7, v7_get_global(v7), "setInterval", (v7_cfunction_t*)&jsSetInterval); v7_set_method(v7, v7_get_global(v7), "clearTimeout", (v7_cfunction_t*)&jsClearTimeout); v7_set_method(v7, v7_get_global(v7), "clearInterval", (v7_cfunction_t*)&jsClearInterval); botObj = new v7_val_t; v7_own(v7, botObj); *botObj = v7_mk_object(v7); v7_val_t botName = v7_mk_string(v7, name, ~0, 1); v7_set(v7, *botObj, "name", ~0, botName); v7_set(v7, v7_get_global(v7), "BOT", ~0, *botObj); v7_set_method(v7, *botObj, "setFontStyle", (v7_cfunction_t*)&jsBotFontStyle); v7_set_method(v7, *botObj, "load", (v7_cfunction_t*)&jsBotLoadFile); //rcode = v7_exec(v7, "var a = \"aaa\"; say(a); print(\"Yeah\");", &result); if (isScriptOk) { rcode = v7_exec_file(v7, _scriptFile.GetAsChar(), &result); if (rcode != V7_OK) { if (result == V7_SYNTAX_ERROR) MessageBox(NULL, "script fail syntax error", "Nooo", 0); else if (result == V7_EXEC_EXCEPTION) MessageBox(NULL, "script fail, exception", "Nooo", 0); else if (result == V7_EXEC_EXCEPTION) MessageBox(NULL, "script fail, exception", "Nooo", 0); else if (result == V7_AST_TOO_LARGE) MessageBox(NULL, "script fail, ast too large", "Nooo", 0); } else { v7_val_t vObj; v7_own(v7, &vObj); vObj = v7_mk_object(v7); v7Obj = &vObj; } } }
int WINAPI _tWinMain (HINSTANCE hThisInstance, UNUSED HINSTANCE hPrevInstance, UNUSED LPTSTR lpszArgument, UNUSED int nCmdShow) { MSG messages; /* Here messages to the application are saved */ WNDCLASSEX wincl; /* Data structure for the windowclass */ DWORD shell32_version; /* Initialize handlers for manangement interface notifications */ mgmt_rtmsg_handler handler[] = { { ready, OnReady }, { hold, OnHold }, { log, OnLogLine }, { state, OnStateChange }, { password, OnPassword }, { proxy, OnProxy }, { stop, OnStop }, { 0, NULL } }; InitManagement(handler); /* initialize options to default state */ InitOptions(&o); #ifdef DEBUG /* Open debug file for output */ if (!(o.debug_fp = fopen(DEBUG_FILE, "w"))) { /* can't open debug file */ ShowLocalizedMsg(IDS_ERR_OPEN_DEBUG_FILE, DEBUG_FILE); exit(1); } PrintDebug(_T("Starting OpenVPN GUI v%S"), PACKAGE_VERSION); #endif o.hInstance = hThisInstance; if(!GetModuleHandle(_T("RICHED20.DLL"))) { LoadLibrary(_T("RICHED20.DLL")); } else { /* can't load riched20.dll */ ShowLocalizedMsg(IDS_ERR_LOAD_RICHED20); exit(1); } /* Check version of shell32.dll */ shell32_version=GetDllVersion(_T("shell32.dll")); if (shell32_version < PACKVERSION(5,0)) { /* shell32.dll version to low */ ShowLocalizedMsg(IDS_ERR_SHELL_DLL_VERSION, shell32_version); exit(1); } #ifdef DEBUG PrintDebug(_T("Shell32.dll version: 0x%lx"), shell32_version); #endif /* Parse command-line options */ ProcessCommandLine(&o, GetCommandLine()); /* Check if a previous instance is already running. */ if ((FindWindow (szClassName, NULL)) != NULL) { /* GUI already running */ ShowLocalizedMsg(IDS_ERR_GUI_ALREADY_RUNNING); exit(1); } if (!GetRegistryKeys()) { exit(1); } if (!CheckVersion()) { exit(1); } if (!EnsureDirExists(o.log_dir)) { ShowLocalizedMsg(IDS_ERR_CREATE_PATH, _T("log_dir"), o.log_dir); exit(1); } BuildFileList(); if (!VerifyAutoConnections()) { exit(1); } GetProxyRegistrySettings(); #ifndef DISABLE_CHANGE_PASSWORD /* Initialize OpenSSL */ OpenSSL_add_all_algorithms(); ERR_load_crypto_strings(); #endif /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* Use default icon and mouse-pointer */ wincl.hIcon = LoadLocalizedIcon(ID_ICO_APP); wincl.hIconSm = LoadLocalizedIcon(ID_ICO_APP); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH) COLOR_3DSHADOW; //COLOR_BACKGROUND; /* Register the window class, and if it fails quit the program */ if (!RegisterClassEx (&wincl)) return 1; /* The class is registered, let's create the program*/ CreateWindowEx ( 0, /* Extended possibilites for variation */ szClassName, /* Classname */ szTitleText, /* Title Text */ WS_OVERLAPPEDWINDOW, /* default window */ (int)CW_USEDEFAULT, /* Windows decides the position */ (int)CW_USEDEFAULT, /* where the window ends up on the screen */ 230, /* The programs width */ 200, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); /* Run the message loop. It will run until GetMessage() returns 0 */ while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } /* The program return-value is 0 - The value that PostQuitMessage() gave */ return messages.wParam; }