#include "Col.ph" #ifdef __GNUG__ #pragma implementation #endif #include "SortedOList.h" #include "Class.h" //---- SortedObjList ----------------------------------------------------------- NewMetaImpl0(SortedObjList,ObjList); SortedObjList::SortedObjList(bool order) { if ( order == cSortAscending ) SetFlag(SObListAscending); } Object *SortedObjList::Add(Object *op) { register ObjLink *lnk; register int cmp; if ( IsArgNull("Add", op) ) return 0; for (lnk= head->Next(); lnk != head; lnk= lnk->Next()) { cmp= CompareObjects(op, lnk->GetObject()); if ((Ascending() && cmp < 0) || (! Ascending() && cmp > 0)) { InsertLink(op, lnk); return 0; } } ObjList::Add(op); return 0; } Object *SortedObjList::AddFirst(Object *op) { MayNotUse("AddFirst"); return Add(op); } Object *SortedObjList::AddLast(Object *op) { MayNotUse("AddLast"); return Add(op); } Object *SortedObjList::AddBefore(Object *op, Object *) { MayNotUse("AddBefore"); return Add(op); } Object *SortedObjList::AddAfter(Object *op, Object *) { MayNotUse("AddAfter"); return Add(op); } Object *SortedObjList::AddBeforePtr(Object *op, Object *) { MayNotUse("AddBeforePtr"); return Add(op); } Object *SortedObjList::AddAfterPtr(Object *op, Object *) { MayNotUse("AddAfterPtr"); return Add(op); } Object *SortedObjList::PutAt(Object *op, int) { MayNotUse("PutAt"); return Add(op); } int SortedObjList::CompareObjects(Object *op1, Object *op2) { return op1->Compare(op2); }