#ifndef PED_GEOMETRY_H #define PED_GEOMETRY_H #include "device.h" #include "timer.h" namespace Ped { class Geometry { friend class Constraint; friend class Partition; private: Geometry(); Geometry(const Geometry &); //Geometry operator=(const Geometry &); Device &device; Sector start; Sector length; Sector end; PedGeometry *geom_; PedDevice *dev_; public: // ped_geometry_new() // is _init() needed?! explicit Geometry (Device &dev, Sector start, Sector length); // ped_geometry_destroy() ~Geometry ( ); static Geometry& duplicate (Geometry &geom); static Geometry& intersect (const Geometry &a, const Geometry &b); void set (Sector start, Sector length); void set_start (Sector start); void set_end (Sector end); bool test_overlap (Geometry &a, Geometry &b); bool test_inside (Geometry &a, Geometry &b); bool test_equal (Geometry &a, Geometry &b); bool test_sector_inside (Sector sect); int read (void *buffer, Sector offset, Sector count); int write (void *buffer, Sector offset, Sector count); Sector check (void *buffer, Sector buffer_size, Sector offset, Sector granularity, Sector count, Timer &timer); bool sync ( ); Sector map (Geometry &dst, Geometry &src, Sector sector); PedGeometry* get_c_geometry( ); void set_c_geometry(PedGeometry* geom); Device& get_device ( ) const; protected: }; }; #endif /* vim: set tabstop=4 et shiftwidth=4: */