#ifndef _GUITAR_REQUIREMENTS_HPP_ #define _GUITAR_REQUIREMENTS_HPP_ #ifndef _COMMON_ARRAY_HPP_ #include #endif #ifndef _GUITAR_ORDERING_HPP_ #include #endif #ifndef _GUITAR_NOTEPATH_HPP_ #include #endif #ifndef _GUITAR_REQUIREMENT_HPP_ #include #endif class Requirements : public Array { public: Requirements(void); Requirements(Block ¬es); virtual ~Requirements(); bool satisfyRequirements(NotePaths ¬ePaths); void setRequirements(Block ¬es); private: bool satisfyRequirement(NotePath ¬ePath); bool haveRequirement(const FrettedNote &frettedNote); bool isPositionAvailable(const FrettedNote &frettedNote,PtrRequirement &requirement); }; inline Requirements::Requirements(void) { } inline Requirements::Requirements(Block ¬es) { setRequirements(notes); } inline Requirements::~Requirements() { } #endif