int ModelVirtuals::lookUpOrAdd(const std::vector<CUDFVersionedPackage*>& disj) { std::string key = name(disj); auto e = virtuals_.find(key); if (e == virtuals_.end()) { int newVirtual = packages().size() + virtuals_.size(); virtuals_[key] = newVirtual; return newVirtual; } return e->second; }
void add_nodes(node_names_t& nodes, node_names_t& deps, const std::string field_name) { dot.printf("/* Field: %s */\n", field_name.c_str()); for(node_names_t::const_iterator it(nodes.begin()); it != nodes.end(); ++it) { if(manager.field_is_defined(it->f_filename, field_name)) { wpkg_dependencies::dependencies depends(manager.get_dependencies(it->f_filename, field_name)); for(int i(0); i < depends.size(); ++i) { const wpkg_dependencies::dependencies::dependency_t& dep(depends.get_dependency(i)); node_names_t packages(find_nodes(nodes, dep.f_name)); if(packages.empty()) { packages = find_nodes(deps, dep.f_name); if(packages.empty()) { // it's not defined yet, add it as a dependency package_info_t info; info.f_package = dep.f_name; info.f_filename = dep.f_name; info.f_nodecount = node_count; deps.push_back(info); dot.printf("n%d [label=\"%s\",shape=ellipse];\n", node_count, dep.f_name.c_str()); ++node_count; packages = find_nodes(deps, dep.f_name); } } if(dep.f_operator == wpkg_dependencies::dependencies::operator_any) { // if any operator, then version doesn't apply, // put an empty string instead dot.printf("edge [headlabel=\"\"];\n"); } else { std::string op(dep.operator_to_string()); if(op.length() == 0) { op = "="; } std::string version(op + " " + dep.f_version); dot.printf("edge [headlabel=\"\\rversion %s\"];\n", version.c_str()); } for(node_names_t::const_iterator pt(packages.begin()); pt != packages.end(); ++pt) { dot.printf("n%d -> n%d;\n", it->f_nodecount, pt->f_nodecount); } } } } }
string getDBStructure() { return "----------------------------------------------------------------------\n\ --\n\ -- MOPSLinux package system\n\ -- Database creation script\n\ -- $Id: dbstruct.cpp,v 1.3 2007/11/02 20:19:45 i27249 Exp $\n\ --\n\ ----------------------------------------------------------------------\n\ \n\ create table packages (\n\ package_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ package_name TEXT NOT NULL,\n\ package_version TEXT NOT NULL,\n\ package_arch TEXT NOT NULL,\n\ package_build TEXT NULL,\n\ package_compressed_size TEXT NOT NULL,\n\ package_installed_size TEXT NOT NULL,\n\ package_short_description TEXT NULL,\n\ package_description TEXT NULL, \n\ package_changelog TEXT NULL,\n\ package_packager TEXT NULL,\n\ package_packager_email TEXT NULL,\n\ package_installed INTEGER NOT NULL,\n\ package_configexist INTEGER NOT NULL,\n\ package_action INTEGER NOT NULL,\n\ package_md5 TEXT NOT NULL,\n\ package_filename TEXT NOT NULL,\n\ package_betarelease TEXT NOT NULL,\n\ package_installed_by_dependency INTEGER NOT NULL DEFAULT '0',\n\ package_type INTEGER NOT NULL DEFAULT '0'\n\ );\n\ create index ppname on packages (package_id, package_name, package_version, package_action, package_installed, package_md5);\n\ \n\ create table files (\n\ file_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ file_name TEXT NOT NULL,\n\ file_type INTEGER NOT NULL,\n\ packages_package_id INTEGER NOT NULL\n\ );\n\ create index pname on files (file_name, packages_package_id);\n\ \n\ create table conflicts (\n\ conflict_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ conflict_file_name TEXT NOT NULL,\n\ backup_file TEXT NOT NULL,\n\ conflicted_package_id INTEGER NOT NULL\n\ );\n\ \n\ create table locations (\n\ location_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ packages_package_id INTEGER NOT NULL,\n\ server_url TEXT NOT NULL,\n\ location_path TEXT NOT NULL\n\ );\n\ create index locpid on locations(packages_package_id, location_path, server_url);\n\ create table tags (\n\ tags_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ tags_name TEXT NOT NULL\n\ );\n\ create index ptag on tags (tags_id, tags_name);\n\ \n\ create table tags_links (\n\ tags_link_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ packages_package_id INTEGER NOT NULL,\n\ tags_tag_id INTEGER NOT NULL\n\ );\n\ create index ptaglink on tags_links (packages_package_id, tags_tag_id);\n\ \n\ create table dependencies (\n\ dependency_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ packages_package_id INTEGER NOT NULL,\n\ dependency_condition INTEGER NOT NULL DEFAULT '1',\n\ dependency_type INTEGER NOT NULL DEFAULT '1',\n\ dependency_package_name TEXT NOT NULL,\n\ dependency_package_version TEXT NULL,\n\ dependency_build_only INTEGER NOT NULL DEFAULT '0' \ );\n\ \n\ create index pdeps on dependencies (packages_package_id, dependency_id, dependency_package_name, dependency_package_version, dependency_condition);\n\ \n\ -- INTERNATIONAL SUPPORT\n\ \n\ --create table descriptions (\n\ -- description_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ -- packages_package_id INTEGER NOT NULL,\n\ -- description_language TEXT NOT NULL,\n\ -- description_text TEXT NOT NULL,\n\ -- short_description_text TEXT NOT NULL\n\ --);\n\ \n\ --create table changelogs (\n\ -- changelog_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ -- packages_package_id INTEGER NOT NULL,\n\ -- changelog_language TEXT NOT NULL,\n\ -- changelog_text TEXT NOT NULL\n\ --);\n\ \n\ -- RATING SYSTEM - SUPPORT FOR FUTURE\n\ --create table ratings (\n\ -- rating_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,\n\ -- rating_value INTEGER NOT NULL,\n\ -- packages_package_name TEXT NOT NULL\n\ --);\n\ "; }
// ---------------------------------------------------------------------------------------------- // M A I N // ---------------------------------------------------------------------------------------------- void main(void) { port_init(); timer0_init(); timer0_Delay(1000); SPI_masterInit(); LED_RUN_ON; LED_ERROR_ON; CAN_Init(CAN_PARAMS, CAN_BAUD_500); CAN_setAcceptFilter(CAN_PARAMS, 2, 0x200); LED_ERROR_OFF; timer0_Delay(1000); can_msg_out.ID = 0x100; can_msg_out.DLEN = 2; //рабочий цикл while(1) { //------------------------------------- // собираем пакет packages(); //------------------------------------------------------ //Посылаем пакет if ( (timer0_getCounter() - hbit) > 200) { CAN_Msg_Send(CAN_PARAMS,&can_msg_out); hbit = timer0_getCounter(); LED_RUN_SWITCH; } //Получаем КАН сообщение if (CAN_msg_Read(CAN_PARAMS, &can_msg_in)) { //Обнуляем флаг ошибки if (err_flag) {LED_ERROR_OFF; err_flag = 0;} //Обрабатываем Process_data(); //Запоминаем, когда последний раз получили timestamp1 = timer0_getCounter(); } //если не получили, проверяем тайм аут if ( (timer0_getCounter() - timestamp1) > MAX_timeout ) { err_flag = 1; //смотрим, горит ли error //если не горит - включаем и запоминаем когда включили if ( (timer0_getCounter() - timestamp2) > timeout) if ( (PORTD & BIT(6)) ) { LED_ERROR_ON; B1LED_ON; B2LED_ON; timestamp2 = timer0_getCounter(); if (!kolvo) {timeout = 600;} else {timeout = 500; } } else { LED_ERROR_OFF; B1LED_OFF; B2LED_OFF; timestamp2 = timer0_getCounter(); if (kolvo) {timeout = 600;kolvo=0;} else {timeout = 500;kolvo=1; } } } } }
bool ModelVirtuals::isVirtual(int p) const { return static_cast<unsigned int>(p) >= packages().size(); }