home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / freedraft.tar.gz / freedraft.tar / FREEdraft-050298 / DATAENGINE / handle.h < prev    next >
C/C++ Source or Header  |  1998-04-29  |  3KB  |  75 lines

  1. // handle.h
  2.  
  3. // Copyright (C) 1997  Cliff Johnson                                       //
  4. //                                                                         //
  5. // This program is free software; you can redistribute it and/or           //
  6. // modify it under the terms of the GNU  General Public                    //
  7. // License as published by the Free Software Foundation; either            //
  8. // version 2 of the License, or (at your option) any later version.        //
  9. //                                                                         //
  10. // This software is distributed in the hope that it will be useful,        //
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of          //
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       //
  13. // General Public License for more details.                                //
  14. //                                                                         //
  15. // You should have received a copy of the GNU General Public License       //
  16. // along with this software (see COPYING); if not, write to the        //
  17. // Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. //
  18.  
  19. #ifndef HANDLE_H
  20. #define HANDLE_H
  21.  
  22. #include <iostream.h>    //ITO
  23.  
  24. #include <geom.h>    //HASA
  25.  
  26. #include <locale_enum.h>
  27.  
  28. class Handle
  29. {
  30. public:
  31.     static unsigned  int nextHandle;
  32.  
  33. private:
  34.     unsigned  int handle;
  35.     const Geom* geometry;
  36.     Locale locale;
  37.  
  38. public:
  39.     Handle();
  40.  
  41.     Handle(const Geom* ptr,Locale l = LOCAL);      // all user construction *MUST* be done with this standard 
  42.             // constructor. This constructor assigns the unique
  43.             // handle number - an unsigned  int - from the static
  44.             // int Handle::nextHandle, and then increments the counter.
  45.             //  Only this constructor assigns a number and increments
  46.             // the counter.
  47.             // the copy constructor simply copies. These constuctors
  48.             // are supplied to make the class work with STL. 
  49.  
  50.     Handle(const Handle&);
  51.     Handle& operator=(const Handle& h);
  52.  
  53.     const Geom* PointsAt() const { return geometry;}    // allows access to const
  54.                                 // members of geom types;
  55.     
  56.     bool operator<(const Handle& h) const { return handle < h.handle; }
  57.     bool operator==(unsigned  int h) const { return handle == h; }
  58.     bool operator==(const Geom* ptr) const { return geometry == ptr; }
  59.  
  60.     friend bool operator==(const Handle& h1, const Handle& h2);
  61.     friend bool operator==(unsigned  int i, const Handle& h);
  62.     friend bool operator==(const Geom* ptr, const Handle & h);
  63.  
  64.     friend ostream& operator<<(ostream& os, const Handle& h);
  65.  
  66.     unsigned int Value() const { return handle; }
  67.  
  68.     int Type() const { return geometry->Type(); }
  69.  
  70.     bool CleanUp(); // manage local handles
  71.     bool Destroy(); // manage global handles 
  72. };
  73.  
  74. #endif
  75.