X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Fpcursor.hh;h=9e7959f8a126423b45a064a8c66081dd68c35f65;hb=59ed0cee2aae58a3f0483f21261c68aee406fa10;hp=dffe02b9ef1b7149b9c48b76dbd2baf7586f3b49;hpb=52102901e53611ad7bad111c2f9d414d2e593bc3;p=lilypond.git diff --git a/flower/include/pcursor.hh b/flower/include/pcursor.hh index dffe02b9ef..9e7959f8a1 100644 --- a/flower/include/pcursor.hh +++ b/flower/include/pcursor.hh @@ -10,59 +10,62 @@ #include "plist.hh" #include "cursor.hh" -/** cursor to go with Pointer_list. - don't create Pointer_list's. +/** cursor to go with Link_list. + don't create Link_list's. This cursor is just an interface class for Cursor. It takes care of the appropriate type casts */ template class PCursor : private Cursor { - friend class IPointer_list; + friend class Pointer_list; - /// delete contents - void junk(); + /// delete contents + void junk(); public: - Cursor::ok; - Cursor::del; - Cursor::backspace; - T remove_p() { - T p = ptr(); - Cursor::del(); - return p; - } - T remove_prev_p() { - assert( ok() ); - (*this)--; - return remove_p(); - } + Cursor::ok; + Cursor::del; + Cursor::backspace; + Cursor::next; + Cursor::previous; + + T remove_p() { + T p = ptr(); + Cursor::del(); + return p; + } + T remove_prev_p() { + assert (ok()); + (*this)--; + return remove_p(); + } - Pointer_list &list() { return (Pointer_list&)Cursor::list(); } - PCursor operator++(int) { return Cursor::operator++(0);} - PCursor operator--(int) { return Cursor::operator--(0); } - PCursor operator+=(int i) { return Cursor::operator+=(i);} - PCursor operator-=(int i) { return Cursor::operator-=(i); } - PCursor operator -(int no) const { return Cursor::operator-(no);} - int operator -(PCursor op) const { return Cursor::operator-(op);} - PCursor operator +( int no) const {return Cursor::operator+(no);} PCursor(const Pointer_list & l) : Cursor (l) {} - PCursor() : Cursor () {} - PCursor( const Cursor& cursor ) : Cursor(cursor) { } - void* vptr() const { return *((Cursor &) *this); } + Link_list *list_l() { return (Link_list *)Cursor::list_l (); } + PCursor operator++(int) { return Cursor::operator++(0);} + PCursor operator--(int) { return Cursor::operator--(0); } + PCursor operator+=(int i) { return Cursor::operator+=(i);} + PCursor operator-=(int i) { return Cursor::operator-=(i); } + PCursor operator -(int no) const { return Cursor::operator-(no);} + int operator -(PCursor op) const { return Cursor::operator-(op);} + PCursor operator +(int no) const {return Cursor::operator+(no);} + PCursor (const Link_list & l) : Cursor (l) {} + PCursor (const Cursor& cursor) : Cursor(cursor) { } + void* vptr() const { return *((Cursor &) *this); } - // should return T& ? - T ptr() const { return (T) vptr(); } - T operator ->() const { return ptr(); } - operator T() { return ptr(); } - T operator *() { return ptr(); } - void add(T const & p ) { Cursor::add((void*) p); } - void insert(T const & p ) { Cursor::insert((void*) p);} - static int compare(PCursor a,PCursorb) { - return Cursor::compare(a,b); - } + // should return T& ? + T ptr() const { return (T) vptr (); } + T operator ->() const { return ptr(); } + operator T() { return ptr(); } + T operator *() { return ptr(); } + void add (T const & p) { Cursor::add ((void*) p); } + void insert (T const & p) { Cursor::insert ((void*) p);} + static int compare (PCursor a,PCursorb) { + return Cursor::compare (a,b); + } }; #include "compare.hh" -template_instantiate_compare(PCursor, PCursor::compare, template); +TEMPLATE_INSTANTIATE_COMPARE(PCursor, PCursor::compare, template); #endif