diff --git a/src/gui/model/track.hpp b/src/gui/model/track.hpp index 37bbe955e..039d61969 100644 --- a/src/gui/model/track.hpp +++ b/src/gui/model/track.hpp @@ -31,40 +31,91 @@ namespace gui { namespace model { - + +/** + * The model representation of a track. This is the base class for all + * types of track that are implemented. + **/ class Track { protected: + /** + * Constructor + **/ Track(); public: + + /** + * Gets the list of child tracks. + **/ virtual std::list< boost::shared_ptr > get_child_tracks() const; - + + /** + * Gets the name of this track. + **/ const std::string get_name() const; + /** + * Sets the name of this track. + * @param[in] name The new name to set this track to. + **/ void set_name(const std::string &name); + /** + * Returns true if this track can own any child tracks. + **/ virtual bool can_host_children() const; + /** + * Tries to remove a given child track from the list. + * @param The model track to try and remove. + * @return Returns true if the track was successfully removed. + **/ virtual bool remove_child_track(const boost::shared_ptr track); + /** + * A debugging helper function that prints this track, and all it's + * child tracks in a human-readable form. + * @return Returns the human readable string. + **/ std::string print_branch(); + /** + * A pure-virtual function which is the base of functions that print + * this track in human readable form. + * @return Returns the human readable string. + **/ virtual std::string print_track() = 0; +protected: + static boost::shared_ptr find_parent(boost::shared_ptr root, boost::shared_ptr child); protected: + /** + * The internal implementation of print_branch. + * @param indentation The level of recursion into the tree. This value + * is used to specify the width of indentation to print with. + * @return Returns the human readable string. + **/ std::string print_branch_recursive(const unsigned int indentation); private: //----- Data -----// + /** + * The name of this track. + **/ std::string name; protected: + /** + * An object used internally as a return value for when there's no + * children. + **/ static const std::list< boost::shared_ptr > NoChildren; };