コード例 #1
0
ファイル: id_manager.cpp プロジェクト: CASL/vera_tpls
    id_placeholder* id_state::add_id_to_section(
            std::string const& id,
            id_category category,
            boost::intrusive_ptr<section_info> const& section)
    {
        std::string id_part = id;

        // Note: Normalizing id according to file compatibility version, but
        // adding to section according to section compatibility version.

        if (current_file->compatibility_version >= 106u &&
                category.c < id_category::explicit_id) {
            id_part = normalize_id(id);
        }

        if(!section || section->compatibility_version >= 106u) {
            return add_placeholder(id_part, category,
                section ? section->placeholder_1_6 : 0);
        }
        else {
            std::string const& qualified_id = section->id_1_1;

            std::string new_id;
            if (!section->placeholder_1_6)
                new_id = current_file->doc_id_1_1;
            if (!new_id.empty() && !qualified_id.empty()) new_id += '.';
            new_id += qualified_id;
            if (!new_id.empty() && !id_part.empty()) new_id += '.';
            new_id += id_part;

            return add_placeholder(new_id, category,
                section->placeholder_1_6);
        }
    }
コード例 #2
0
ファイル: document_state.cpp プロジェクト: AlexMioMio/boost
    id_placeholder const* document_state_impl::add_id_to_section(
            boost::string_ref id,
            id_category category,
            boost::shared_ptr<section_info> const& section)
    {
        std::string id_part(id.begin(), id.end());

        // Note: Normalizing id according to file compatibility version, but
        // adding to section according to section compatibility version.

        if (current_file->compatibility_version >= 106u &&
                category.c < id_category::explicit_id) {
            id_part = normalize_id(id);
        }

        id_placeholder const* placeholder_1_6 = get_id_placeholder(section);

        if(!section || section->compatibility_version >= 106u) {
            return add_placeholder(id_part, category, placeholder_1_6);
        }
        else {
            std::string const& qualified_id = section->id_1_1;

            std::string new_id;
            if (!placeholder_1_6)
                new_id = current_file->doc_id_1_1;
            if (!new_id.empty() && !qualified_id.empty()) new_id += '.';
            new_id += qualified_id;
            if (!new_id.empty() && !id_part.empty()) new_id += '.';
            new_id += id_part;

            return add_placeholder(new_id, category, placeholder_1_6);
        }
    }
コード例 #3
0
ファイル: id_manager.cpp プロジェクト: CASL/vera_tpls
 id_generation_data(std::string const& src_id)
   : child_start(src_id.rfind('.') + 1),
     id(normalize_id(src_id, child_start, max_size - 1)),
         // 'max_size - 1' leaves a character to append
         // a number.
     count(0)
 {
     if (std::isdigit(id[id.length() - 1]))
     {
         if (child_length() < max_size - 1)
             id += '_';
         else
             reduce_id();
     }
 }