⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.cxx

📁 eCos1.31版
💻 CXX
📖 第 1 页 / 共 5 页
字号:
const std::vector<std::string>&CdlPackagesDatabaseBody::get_targets(void) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_targets");    CYG_PRECONDITION_THISC();    CYG_REPORT_RETURN();    return target_names;}boolCdlPackagesDatabaseBody::is_known_target(std::string name) const{    CYG_REPORT_FUNCNAMETYPE("CdlPackagesDatabase::is_known_target", "result %d");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    bool result = false;    if (std::find(target_names.begin(), target_names.end(), name) != target_names.end()) {        result = true;    }    CYG_REPORT_RETVAL(result);    return result;}const std::string&CdlPackagesDatabaseBody::get_target_description(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_description");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = targets.find(target_name);    if (target_i != targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.description;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_description()");    static std::string dummy = "";    return dummy;}const std::vector<std::string>&CdlPackagesDatabaseBody::get_target_aliases(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_aliases");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = targets.find(target_name);    if (target_i != targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.aliases;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_aliases()");    static std::vector<std::string> dummy;    return dummy;}const std::vector<std::string>&CdlPackagesDatabaseBody::get_target_packages(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_packages");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = targets.find(target_name);    if (target_i != targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.packages;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_packages()");    static std::vector<std::string> dummy;    return dummy;}const std::string&CdlPackagesDatabaseBody::get_target_command_prefix(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_command_prefix");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = targets.find(target_name);    if (target_i != targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.command_prefix;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_command_prefix()");    static std::string dummy = "";    return dummy;}const std::vector<std::pair<std::string,std::string> >&CdlPackagesDatabaseBody::get_target_compiler_flags(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_compiler_flags");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = targets.find(target_name);    if (target_i != targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.cflags;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_compiler_flags()");    static std::vector<std::pair<std::string,std::string> > dummy;    return dummy;}const std::vector<std::string>&CdlPackagesDatabaseBody::get_target_enables(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_enables");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = this->targets.find(target_name);    if (target_i != this->targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.enable;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_enables()");    static std::vector<std::string> dummy;    return dummy;}const std::vector<std::string>&CdlPackagesDatabaseBody::get_target_disables(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_disables");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = this->targets.find(target_name);    if (target_i != this->targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.disable;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_disables()");    static std::vector<std::string> dummy;    return dummy;}const std::vector<std::pair<std::string, std::string> >&CdlPackagesDatabaseBody::get_target_set_values(std::string target_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_target_set_values");    CYG_PRECONDITION_THISC();    std::map<std::string,target_data>::const_iterator target_i = this->targets.find(target_name);    if (target_i != this->targets.end()) {        CYG_REPORT_RETURN();        return target_i->second.set_values;    }        CYG_FAIL("Invalid target name passed to CdlPackagesDatabase::get_target_values()");    static std::vector<std::pair<std::string, std::string> > dummy;    return dummy;}//}}}//{{{  CdlPackagesDatabase:: get template information           // ----------------------------------------------------------------------------// Templates are different from packages and targets. The ecos.db file// does not contain all the information in one convenient file, instead// it is necessary to trawl through a templates sub-directory of the// component repository. There are no aliases. Descriptions can be obtained// only by executing the template file in a suitable interpreter.const std::vector<std::string>&CdlPackagesDatabaseBody::get_templates(void) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_templates");    CYG_PRECONDITION_THISC();    CYG_REPORT_RETURN();    return template_names;}boolCdlPackagesDatabaseBody::is_known_template(std::string name) const{    CYG_REPORT_FUNCNAMETYPE("CdlPackagesDatabase::is_known_template", "result %d");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    bool result = false;    if (std::find(template_names.begin(), template_names.end(), name) != template_names.end()) {        result = true;    }    CYG_REPORT_RETVAL(result);    return result;}const std::vector<std::string>&CdlPackagesDatabaseBody::get_template_versions(std::string template_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_template_versions");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    std::map<std::string,template_data>::const_iterator template_i = templates.find(template_name);    if (template_i != templates.end()) {        CYG_REPORT_RETURN();        return template_i->second.versions;    }        CYG_FAIL("Invalid template name passed to CdlPackagesDatabase::get_template_versions()");    static std::vector<std::string> dummy;    return dummy;}std::stringCdlPackagesDatabaseBody::get_template_filename(std::string template_name, std::string version_name) const{    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_template_filename");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    // Given the way templates are identified, the filename can be determined    // easily by concatenating a few strings. The only complication is that    // version_name may be an empty string, indicating that the most recent    // version should be used.    std::map<std::string,template_data>::const_iterator template_i = templates.find(template_name);    if (template_i == templates.end()) {        CYG_FAIL("Invalid template name passed to CdlPackagesDatabase::get_template_filename");        CYG_REPORT_RETURN();        return "";    }    if ("" == version_name) {        CYG_ASSERTC(0 != template_i->second.versions.size());        version_name = template_i->second.versions[0];    } else {        std::vector<std::string>::const_iterator vsn_i = std::find(template_i->second.versions.begin(),                                                                   template_i->second.versions.end(), version_name);        if (vsn_i == template_i->second.versions.end()) {            CYG_FAIL("Invalid template version passed to CdlPackagesDatabase::get_template_filename");            CYG_REPORT_RETURN();            return "";        }    }    std::string result = component_repository + "/templates/" + template_name + "/" + version_name + ".ect";    CYG_REPORT_RETURN();    return result;}// ----------------------------------------------------------------------------// The descriptions now live in an eCos savefile, i.e. a Tcl script, so// extracting them can be relatively expensive and needs to happen on// a just-in-time basis.const std::stringCdlPackagesDatabaseBody::get_template_description(std::string template_name, std::string version_name){    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_template_description");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    // Is this a known template?    std::map<std::string, struct template_data>::iterator template_i = templates.find(template_name);    if (template_i == templates.end()) {        CYG_FAIL("Invalid template name passed to CdlPackagesDatabase::get_template_description");        CYG_REPORT_RETURN();        return "";    }    // Is it a known version of the template?    if ("" == version_name) {        CYG_ASSERTC(0 != template_i->second.versions.size());        version_name = template_i->second.versions[0];    } else {        if (std::find(template_i->second.versions.begin(), template_i->second.versions.end(), version_name) ==            template_i->second.versions.end()) {            CYG_FAIL("Invalid template version passed to CdlPackagesDatabase::get_template_description");            CYG_REPORT_RETURN();            return "";        }    }    // We have a valid template and version. Has the version file in    // question been read in yet?    std::map<std::string, struct template_version_data>::iterator version_i;    version_i = template_i->second.version_details.find(version_name);    if (version_i != template_i->second.version_details.end()) {        CYG_REPORT_RETURN();        return version_i->second.description;    }        std::string filename = this->get_template_filename(template_name, version_name);    if ("" == filename) {        CYG_REPORT_RETURN();        return "";    }     extract_template_details(filename, template_i->second.version_details[version_name].description,                             template_i->second.version_details[version_name].packages);    CYG_REPORT_RETURN();    return template_i->second.version_details[version_name].description;}// ----------------------------------------------------------------------------// Similarly extracting package information needs to happen on a// just-in-time basis.const std::vector<std::string>&CdlPackagesDatabaseBody::get_template_packages(std::string template_name, std::string version_name){    CYG_REPORT_FUNCNAME("CdlPackagesDatabase::get_template_packages");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    static std::vector<std::string> dummy;        // Is this a known template?    std::map<std::string, struct template_data>::iterator template_i = templates.find(template_name);    if (template_i == templates.end()) {        CYG_FAIL("Invalid template name passed to CdlPackagesDatabase::get_template_packages");        CYG_REPORT_RETURN();        return dummy;    }    // Is it a known version of the template?    if ("" == version_name) {        CYG_ASSERTC(0 != template_i->second.versions.size());        version_name = template_i->second.versions[0];    } else {        if (std::find(template_i->second.versions.begin(), template_i->second.versions.end(), version_name) ==            template_i->second.versions.end()) {            CYG_FAIL("Invalid template version passed to CdlPackagesDatabase::get_packages");            CYG_REPORT_RETURN();            return dummy;        }    }    // 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -