std::pair<SectionMap::mapping, bool> SectionMap::insert(const std::string& pInputSection, const std::string& pOutputSection, InputSectDesc::KeepPolicy pPolicy) { iterator out, outBegin = begin(), outEnd = end(); for (out = outBegin; out != outEnd; ++out) { if ((*out)->name().compare(pOutputSection) == 0) break; } if (out != end()) { Output::iterator in, inBegin = (*out)->begin(), inEnd = (*out)->end(); for (in = inBegin; in != inEnd; ++in) { if ((*in)->getSection()->name().compare(pInputSection) == 0) break; } if (in != (*out)->end()) { return std::make_pair(std::make_pair(*out, *in), false); } else { Input* input = new Input(pInputSection, pPolicy); (*out)->append(input); return std::make_pair(std::make_pair(*out, input), true); } } Output* output = new Output(pOutputSection); m_OutputDescList.push_back(output); Input* input = new Input(pInputSection, pPolicy); output->append(input); return std::make_pair(std::make_pair(output, input), true); }
SectionMap::iterator SectionMap::insert(iterator pPosition, LDSection* pSection) { Output* output = new Output(pSection->name()); output->append(new Input(pSection->name(), InputSectDesc::NoKeep)); output->setSection(pSection); return m_OutputDescList.insert(pPosition, output); }
std::pair<SectionMap::mapping, bool> SectionMap::insert(const InputSectDesc& pInputDesc, const OutputSectDesc& pOutputDesc) { iterator out, outBegin = begin(), outEnd = end(); for (out = outBegin; out != outEnd; ++out) { if ((*out)->name().compare(pOutputDesc.name()) == 0 && (*out)->prolog() == pOutputDesc.prolog() && (*out)->epilog() == pOutputDesc.epilog()) break; } if (out != end()) { Output::iterator in, inBegin = (*out)->begin(), inEnd = (*out)->end(); for (in = inBegin; in != inEnd; ++in) { if ((*in)->policy() == pInputDesc.policy() && (*in)->spec() == pInputDesc.spec()) break; } if (in != (*out)->end()) { return std::make_pair(std::make_pair(*out, *in), false); } else { Input* input = new Input(pInputDesc); (*out)->append(input); return std::make_pair(std::make_pair(*out, input), true); } } Output* output = new Output(pOutputDesc); m_OutputDescList.push_back(output); Input* input = new Input(pInputDesc); output->append(input); return std::make_pair(std::make_pair(output, input), true); }