#ifndef __AFIGURE_HH__ #define __AFIGURE_HH__ //--- C/C++ icludes --- #include #include "APoint.hh" #include "AAtom.hh" class AFigure { public: //--- Constructors --- virtual AFigure *newFigure() = 0; //--- Destructor --- virtual ~AFigure() {} //--- Access to the next atom --- virtual AFigure *getNext() = 0; virtual AFigure *setNext(AFigure* figure) = 0; // Not recommended for use //--- Access to points --- virtual APoint *getFirstPoint() = 0; virtual APoint *getPoints() = 0; virtual APoint *getPointFor(AAtom* atom) = 0; virtual bool hasThePoint(APoint* _point) = 0; virtual bool hasTheCoor(CoordType* _coor) = 0; virtual bool hasTheAtom(AAtom* atom) = 0; virtual bool addIfNotHave(CoordType* p) = 0; virtual bool addIfNotHave(AAtom* atom) = 0; virtual bool removePointFor(CoordType* coor) = 0; virtual bool putPointsTo(CoordType** arr,int num) = 0; virtual int getPointsAsArray(CoordType** coor) = 0; virtual AAtom **getAtomsInArray() = 0; //--- Access information --- virtual int countAtoms() = 0; inline int countPoints() { return countAtoms(); } //--- Access to geometrical parameters --- virtual double getVolume() { return -1; } virtual double getSurface() { return -1; } virtual double getInnerRadius() { return -1; } virtual double getCircumRadius() { return -1; } virtual double getSummOfLength() { return -1; } //--- Temporary selection -- virtual bool isTmpSel() = 0; virtual void setTmpSel() = 0; virtual void setNotTmpSel() = 0; //--- Properties --- virtual int setIntProperty(int prop) = 0; virtual int getIntProperty() = 0; }; #endif