Doxygen
Loading...
Searching...
No Matches
requirement.cpp File Reference
#include "requirement.h"
#include <algorithm>
#include "config.h"
#include "doxygen.h"
#include "entry.h"
#include "language.h"
#include "linkedmap.h"
#include "message.h"
#include "outputlist.h"
#include "pagedef.h"
#include "section.h"
#include "trace.h"
#include "util.h"
Include dependency graph for requirement.cpp:

Go to the source code of this file.

Classes

struct  Requirement
class  RequirementManager::Private

Functions

void splitRequirementRefs (const RequirementRefs &inputReqRefs, RequirementRefs &satisfiesRefs, RequirementRefs &verifiesRefs)

Function Documentation

◆ splitRequirementRefs()

void splitRequirementRefs ( const RequirementRefs & inputReqRefs,
RequirementRefs & satisfiesRefs,
RequirementRefs & verifiesRefs )

Definition at line 408 of file requirement.cpp.

409{
410 auto makeUnique = [](RequirementRefs &uniqueRefs)
411 {
412 // sort results on itemId
413 std::stable_sort(uniqueRefs.begin(),uniqueRefs.end(),
414 [](const auto &left,const auto &right)
415 { return left.reqId()< right.reqId() ||
416 (left.reqId()==right.reqId() &&
417 dstricmp(left.title(),right.title())<0);
418 });
419
420 // filter out duplicates
421 auto last = std::unique(uniqueRefs.begin(),uniqueRefs.end(),
422 [](const auto &left,const auto &right)
423 { return left.reqId()==right.reqId() &&
424 dstricmp(left.title(),right.title())==0;
425 });
426
427 // remove unused part
428 uniqueRefs.erase(last, uniqueRefs.end());
429 };
430
431 // split into satisfied and verifies references
432 std::partition_copy(
433 inputReqRefs.begin(),
434 inputReqRefs.end(),
435 std::back_inserter(satisfiesRefs),
436 std::back_inserter(verifiesRefs),
437 [](const auto &ref) { return ref.type()==RequirementRefType::Satisfies; }
438 );
439
440 // remove duplicates
441 makeUnique(satisfiesRefs);
442 makeUnique(verifiesRefs);
443}
std::vector< RequirementRef > RequirementRefs
List of requirement references.
Definition requirement.h:56

Referenced by DefinitionImpl::writeRequirementRefs(), and writeRequirementRefs().