Arbiter
Dependency manager library that supports decentralization
Public Member Functions | Public Attributes | List of all members
Arbiter::Requirement::Exactly Class Referencefinal

A requirement satisfied only by one particular semantic version. More...

Collaboration diagram for Arbiter::Requirement::Exactly:
[legend]

Public Member Functions

 Exactly (ArbiterSemanticVersion version) noexcept
 
std::unique_ptr< Baseclone () const override
 
std::unique_ptr< ArbiterRequirementcloneRequirement () const
 
std::ostream & describe (std::ostream &os) const override
 
size_t hash () const noexcept override
 
std::unique_ptr< ArbiterRequirementintersect (const ArbiterRequirement &rhs) const override
 Attempts to create a requirement which expresses the intersection of this requirement and the given one. More...
 
bool operator!= (const Base &other) const
 
bool operator== (const Arbiter::Base &other) const override
 
virtual int priority () const noexcept
 Returns the priority of this requirement. More...
 
bool satisfiedBy (const ArbiterSelectedVersion &selectedVersion) const override
 Returns whether this requirement would be satisfied by using the given selected version. More...
 
bool satisfiedBy (const ArbiterSemanticVersion &version) const noexcept
 
virtual void visit (Arbiter::Requirement::Visitor &visitor) const
 Visits the requirement, then any child requirements. More...
 

Public Attributes

ArbiterSemanticVersion _version
 

Detailed Description

A requirement satisfied only by one particular semantic version.

Definition at line 187 of file Requirement.h.

Constructor & Destructor Documentation

§ Exactly()

Arbiter::Requirement::Exactly::Exactly ( ArbiterSemanticVersion  version)
explicitnoexcept

Definition at line 192 of file Requirement.h.

Member Function Documentation

§ clone()

std::unique_ptr<Base> Arbiter::Requirement::Exactly::clone ( ) const
overridevirtual

Implements Arbiter::Base.

Definition at line 205 of file Requirement.h.

§ cloneRequirement()

std::unique_ptr<ArbiterRequirement> ArbiterRequirement::cloneRequirement ( ) const
inherited

§ describe()

std::ostream& Arbiter::Requirement::Exactly::describe ( std::ostream &  os) const
overridevirtual

Implements Arbiter::Base.

§ hash()

size_t Arbiter::Requirement::Exactly::hash ( ) const
overridevirtualnoexcept

Implements ArbiterRequirement.

§ intersect()

std::unique_ptr<ArbiterRequirement> Arbiter::Requirement::Exactly::intersect ( const ArbiterRequirement rhs) const
overridevirtual

Attempts to create a requirement which expresses the intersection of this requirement and the given one.

In other words, this attempts to find the loosest possible requirement which is a superset of the two inputs. Any version which passes the intersected requirement would also pass either one of the original inputs.

Returns nullptr if no intersection is possible.

Implements ArbiterRequirement.

§ operator!=()

bool Arbiter::Base::operator!= ( const Base other) const
inherited

Definition at line 28 of file Types.h.

§ operator==()

bool Arbiter::Requirement::Exactly::operator== ( const Arbiter::Base other) const
overridevirtual

Implements Arbiter::Base.

§ priority()

virtual int ArbiterRequirement::priority ( ) const
virtualnoexceptinherited

Returns the priority of this requirement.

Reimplemented in Arbiter::Requirement::Prioritized, and Arbiter::Requirement::Compound.

Definition at line 36 of file Requirement.h.

§ satisfiedBy() [1/2]

bool Arbiter::Requirement::Exactly::satisfiedBy ( const ArbiterSelectedVersion selectedVersion) const
overridevirtual

Returns whether this requirement would be satisfied by using the given selected version.

Implements ArbiterRequirement.

Definition at line 196 of file Requirement.h.

§ satisfiedBy() [2/2]

bool Arbiter::Requirement::Exactly::satisfiedBy ( const ArbiterSemanticVersion version) const
noexcept

§ visit()

virtual void ArbiterRequirement::visit ( Arbiter::Requirement::Visitor visitor) const
virtualinherited

Visits the requirement, then any child requirements.

The default implementation simply visits this requirement.

Reimplemented in Arbiter::Requirement::Prioritized, and Arbiter::Requirement::Compound.

Member Data Documentation

§ _version

ArbiterSemanticVersion Arbiter::Requirement::Exactly::_version

Definition at line 190 of file Requirement.h.


The documentation for this class was generated from the following file: