Edge * v_connect (Vertex *src, Vertex *dst, int cost) { Edge *ee = e_new (dst, cost); ee->next = src->out; src->out = ee; return ee; }
void perform_test(const TestParameter& P = TestParameter()) { // throws only TestException try { perform_test_trivial(); if (not P.empty()) perform_test_nontrivial(P); } catch(const TestException&) { throw; } catch(const std::exception& e) { TestException e_new(std::string("std::exception: what = ") + e.what() + "\ntype = " + typeid(e).name()); e_new.add(OKLIB_TESTDESCRIPTION); throw e_new; } catch(...) { TestException e("exception ...\n "); e.add(OKLIB_TESTDESCRIPTION); throw e; } }
bool SnapGadgets::AcceptMessage(const Message &message) { if(EditorUtils::activeEditBtn != EditorUtils::SnapGadgetAdd) { return false; } if(message.is("KeyPress")) { int key = utils::lexical_cast<int>(message.getData()); if(key == 'n') { if(_currentEditorGadget) { SnapGadgetReleaseBorderElement::SHARED_PTR e_new(new SnapGadgetReleaseBorderElement()); e_new->SetIndex(GameSettings::underMouseIndex); _dragElementId = _currentEditorGadget->AddElement(e_new); } }else if(key == ' ') { if(_dragGadget && _dragElementId > -1) { SnapGadgetBaseElement::SHARED_PTR e = _dragGadget->GetElement(_dragElementId); if(SnapGadgetCaptureElement::Is(e.get())) { SnapGadgetCaptureElement::SHARED_PTR e_new = SnapGadgetCaptureElement::SHARED_PTR(new SnapGadgetCaptureElement()); e_new->SetIndex(e->GetIndex()); e_new->activateType = e->activateType; _dragGadget->RemoveElement(_dragElementId); _dragGadget->AddElement(e_new); e.reset(); }else if(SnapGadgetReleaseElement::Is(e.get())) { SnapGadgetReleaseElement::SHARED_PTR e_new = SnapGadgetReleaseElement::SHARED_PTR(new SnapGadgetReleaseElement()); e_new->SetIndex(e->GetIndex()); e_new->activateType = e->activateType; _dragGadget->RemoveElement(_dragElementId); _dragGadget->AddElement(e_new); e.reset(); } }else{ _currentEditorGadget = NULL; size_t count = _gadgets.size(); for(size_t i = 0; i < count;i++) { if(_gadgets[i]->Editor_CaptureGadget(Core::mainInput.GetMousePos()) != -1) { _currentEditorGadget = _gadgets[i]; break; } } if(_currentEditorGadget){ SnapGadgetReleaseElement::SHARED_PTR e_new = SnapGadgetReleaseElement::SHARED_PTR(new SnapGadgetReleaseElement()); e_new->SetIndex(GameSettings::GetMouseAddress(Core::mainInput.GetMousePos()).ToPoint()); size_t captured = _currentEditorGadget -> AddElement(e_new); _dragGadget = _currentEditorGadget; _dragElementId = captured; } } return true; } } return false; }
int main(const int ac, const char* av[]) { poptContext optCon=0; gint rc; gint status = 0; const gchar* arg; struct error* err; #ifdef __DEBUG g_mem_set_vtable(glib_mem_profiler_table); #endif err = e_new(); /* check if we have enough privileges */ #ifndef __WIN32__ unsetenv("LD_LIBRARY_PATH"); #else putenv("LD_LIBRARY_PATH"); putenv("LD_LIBRARY_PATH="); #endif /* load blacklists from SPKG_CONFDIR */ gchar** bl_symopts = load_blacklist(SPKG_CONFDIR "/symopts_blacklist"); if (bl_symopts) cmd_opts.bl_symopts = bl_symopts; /* preset ROOT */ cmd_opts.root = getenv("ROOT"); /* initialize popt context */ optCon = poptGetContext("spkg", ac, av, opts, 0); poptSetOtherOptionHelp(optCon, "<command> [options] [packages...]"); /* parse options */ while ((rc = poptGetNextOpt(optCon)) != -1) { if (rc == 1) verbose++; else if (rc == 2) quiet++; if (rc < -1) { fprintf(stderr, "ERROR: Invalid argument: %s (%s)\n", poptStrerror(rc), poptBadOption(optCon, POPT_BADOPTION_NOALIAS)); goto err_1; } } /* these are help handlers */ if (help) { printf( PACKAGE_STRING "\n" "\n" "Written by Ondrej Jirman, 2005-2006.\n" "\n" "This is free software. Not like a beer or like in a \"freedom\",\n" "but like in \"I don't care what you are going to do with it.\"\n" "\n" ); poptPrintHelp(optCon, stdout, 0); printf( "\n" "Examples:\n" " spkg -i <packages> [--install]\n" " spkg -u <packages> [--upgrade]\n" " spkg -vd <packages> [--verbose --remove]\n" " spkg -l kde* [--list]\n" " spkg -vnu <packages> [--upgrade --verbose --dry-run]\n" "\n" "Official website: http://spkg.megous.com\n" "Bug reports can be sent to <*****@*****.**>.\n" ); goto out; } if (usage) { printf("Usage: spkg [-i|-u|-d|-l] [--root=ROOT] [-n] [-s] [-q] [-v] [packages...]\n"); goto out; } if (version) { printf("%s\n", PACKAGE_STRING); goto out; } /* check verbosity options */ if (verbose && quiet) { fprintf(stderr, "ERROR: Verbose or quiet?\n"); goto err_1; } cmd_opts.verbosity += verbose; cmd_opts.verbosity -= quiet; /* check command options */ switch (command) { case CMD_INSTALL: if (!cmd_opts.dryrun && !is_root()) goto err_noroot; if (poptPeekArg(optCon) == 0) goto err_nopackages; break; case CMD_UPGRADE: if (!cmd_opts.dryrun && !is_root()) goto err_noroot; if (poptPeekArg(optCon) == 0) goto err_nopackages; break; case CMD_REMOVE: if (!cmd_opts.dryrun && !is_root()) goto err_noroot; if (poptPeekArg(optCon) == 0) goto err_nopackages; break; case CMD_LIST: break; case 0: if (poptPeekArg(optCon) == 0) { printf("Usage: spkg [-i|-u|-d|-l] [--root=ROOT] [-n] [-s] [-q] [-v] [packages...]\n"); goto out; } if (!cmd_opts.dryrun && !is_root()) goto err_noroot; command = CMD_UPGRADE; install_new = TRUE; break; default: fprintf(stderr, "ERROR: Schizofrenic command usage.\n"); goto err_1; } /* init signal trap */ if (sig_trap(err)) goto err_2; /* open db */ gboolean readonly = cmd_opts.dryrun || !is_root(); if (db_open(cmd_opts.root, readonly, err)) goto err_2; switch (command) { case CMD_INSTALL: { while ((arg = poptGetArg(optCon)) != 0 && !sig_break) { if (cmd_install(arg, &cmd_opts, err)) { if (e_errno(err) & CMD_EXIST) { gchar* pkgname = parse_pkgname(arg, 5); _inform("Skipping package %s (package with same base name is already installed)...", pkgname ? pkgname : arg); g_free(pkgname); e_clean(err); } else { e_print(err); e_clean(err); status = 2; } } } } break; case CMD_UPGRADE: { while ((arg = poptGetArg(optCon)) != 0 && !sig_break) { if (cmd_upgrade(arg, &cmd_opts, err)) { if (install_new && (e_errno(err) & CMD_NOTEX)) { e_clean(err); if (cmd_install(arg, &cmd_opts, err)) { e_print(err); e_clean(err); status = 2; } } else if (e_errno(err) & CMD_NOTEX) { gchar* pkgname = parse_pkgname(arg, 5); _inform("Skipping package %s (package with same base name is NOT installed)...", pkgname ? pkgname : arg); g_free(pkgname); e_clean(err); } else if (e_errno(err) & CMD_EXIST) { gchar* pkgname = parse_pkgname(arg, 5); _inform("Skipping package %s (already uptodate)...", pkgname ? pkgname : arg); g_free(pkgname); e_clean(err); } else { e_print(err); e_clean(err); status = 2; } } } } break; case CMD_REMOVE: { while ((arg = poptGetArg(optCon)) != 0 && !sig_break) { if (cmd_remove(arg, &cmd_opts, err)) { e_print(err); e_clean(err); status = 2; } } } break; case CMD_LIST: { GSList* arglist = NULL; while ((arg = poptGetArg(optCon)) != 0) arglist = g_slist_append(arglist, g_strdup(arg)); if (cmd_list(arglist, &cmd_opts, err)) { e_print(err); e_clean(err); status = 2; } g_slist_foreach(arglist, (GFunc)g_free, 0); g_slist_free(arglist); } break; } db_close(); out: poptFreeContext(optCon); e_free(err); #ifdef __DEBUG g_mem_profile(); #endif /* 0 = all ok * 1 = command line error * 2 = package manager error */ return status; err_1: status = 1; goto out; err_2: status = 2; e_print(err); goto out; err_nopackages: fprintf(stderr, "ERROR: No packages specified.\n"); goto err_1; err_noroot: fprintf(stderr, "ERROR: You need root privileges to run this command. Try using --dry-run.\n"); goto err_1; }