GEOS: util.h Source File

- Main Page
- Namespaces
- Classes
- Files
- Related Pages

# util.h

    00001 /**********************************************************************
    00002  * $Id: util.h,v 1.8 2004/11/01 16:43:04 strk Exp $
    00003  *
    00004  * GEOS - Geometry Engine Open Source
    00005  * http://geos.refractions.net
    00006  *
    00007  * Copyright (C) 2001-2002 Vivid Solutions Inc.
    00008  *
    00009  * This is free software; you can redistribute and/or modify it under
    00010  * the terms of the GNU Lesser General Public Licence as published
    00011  * by the Free Software Foundation.
    00012  * See the COPYING file for more information.
    00013  *
    00014  **********************************************************************/
    00015
    00016 #ifndef GEOS_UTIL_H
    00017 #define GEOS_UTIL_H
    00018
    00019 #include <memory>
    00020 #include <string>
    00021 #include <geos/platform.h>
    00022 #include <geos/geom.h>
    00023
    00024 using namespace std;
    00025
    00026 namespace geos {
    00027
    00036 class GEOSException {
    00037 public:
    00038         GEOSException();
    00039
    00040         GEOSException(string msg);
    00041
    00043         GEOSException(string nname,string msg);
    00044
    00045         virtual ~GEOSException();
    00046
    00048         virtual string toString();
    00049
    00050         virtual void setName(string nname);
    00051         virtual void setMessage(string msg);
    00052 protected:
    00053         string txt;
    00054         string name;
    00055 };
    00056
    00060 class AssertionFailedException: public GEOSException {
    00061 public:
    00062         AssertionFailedException();
    00063         AssertionFailedException(string msg);
    00064         ~AssertionFailedException();
    00065 };
    00066
    00074 class IllegalArgumentException: public GEOSException {
    00075 public:
    00076         IllegalArgumentException();
    00077         IllegalArgumentException(string msg);
    00078         ~IllegalArgumentException();
    00079 };
    00080
    00088 class TopologyException: public GEOSException {
    00089 public:
    00090         TopologyException(string msg);
    00091         TopologyException(string msg,const Coordinate *newPt);
    00092         ~TopologyException();
    00093         Coordinate* getCoordinate();
    00094 private:
    00095         Coordinate *pt;
    00096 };
    00097
    00106 class UnsupportedOperationException: public GEOSException {
    00107 public:
    00108         UnsupportedOperationException();
    00109         UnsupportedOperationException(string msg);
    00110         ~UnsupportedOperationException();
    00111 };
    00112
    00113 class Coordinate;
    00114 class Assert {
    00115 public:
    00116         static void isTrue(bool assertion);
    00117         static void isTrue(bool assertion, string message);
    00118
    00119         static void equals(const Coordinate& expectedValue, const Coordinate& actualValue);
    00120         static void equals(const Coordinate& expectedValue, const Coordinate& actualValue, string message);
    00121
    00122         static void shouldNeverReachHere();
    00123         static void shouldNeverReachHere(string message);
    00124 };
    00125
    00126 class CoordinateArrayFilter:public CoordinateFilter {
    00127 public:
    00128         CoordinateSequence* pts;
    00129         int n;
    00130         CoordinateArrayFilter(int size);
    00131         virtual ~CoordinateArrayFilter();
    00132         virtual const CoordinateSequence* getCoordinates() const;
    00133         virtual void filter_ro(const Coordinate &coord);
    00134         virtual void filter_rw(Coordinate &coord); // Unsopported
    00135 };
    00136
    00137 class UniqueCoordinateArrayFilter:public CoordinateFilter {
    00138 public:
    00139         CoordinateSequence *list;
    00140         UniqueCoordinateArrayFilter();
    00141         virtual ~UniqueCoordinateArrayFilter();
    00142         virtual const CoordinateSequence* getCoordinates() const;
    00143         virtual void filter_ro(const Coordinate *coord);
    00144         virtual void filter_rw(Coordinate *coord); // Unsupported
    00145 };
    00146
    00147
    00157 class GeometricShapeFactory {
    00158 private:
    00159         class Dimensions {
    00160         public:
    00161                 Dimensions();
    00162                 Coordinate base;
    00163                 Coordinate centre;
    00164                 double width;
    00165                 double height;
    00166                 void setBase(const Coordinate& newBase);
    00167                 void setCentre(const Coordinate& newCentre);
    00168                 void setSize(double size);
    00169                 void setWidth(double nWidth);
    00170                 void setHeight(double nHeight);
    00171                 Envelope* getEnvelope();
    00172         };
    00173         const GeometryFactory* geomFact;
    00174         Dimensions dim;
    00175         int nPts;
    00176 public:
    00187         GeometricShapeFactory(const GeometryFactory *factory);
    00188
    00189         ~GeometricShapeFactory();
    00190
    00196         LineString* createArc(double startAng,double endAng);
    00197
    00203         Polygon* createCircle();
    00204
    00210         Polygon* createRectangle();
    00211
    00220         void setBase(const Coordinate& base);
    00221
    00229         void setCentre(const Coordinate& centre);
    00230
    00236         void setHeight(double height);
    00237
    00241         void setNumPoints(int nNPts);
    00242
    00249         void setSize(double size);
    00250
    00256         void setWidth(double width);
    00257
    00258 };
    00259
    00260 }
    00261 #endif
    00262
    00263 /**********************************************************************
    00264  * $Log: util.h,v $
    00265  * Revision 1.8  2004/11/01 16:43:04  strk
    00266  * Added Profiler code.
    00267  * Temporarly patched a bug in DoubleBits (must check drawbacks).
    00268  * Various cleanups and speedups.
    00269  *
    00270  * Revision 1.7  2004/07/16 10:28:41  strk
    00271  * Dimesions object allocated on the heap
    00272  *
    00273  * Revision 1.6  2004/07/14 21:19:35  strk
    00274  * GeometricShapeFactory first pass of bug fixes
    00275  *
    00276  * Revision 1.5  2004/07/08 19:34:49  strk
    00277  * Mirrored JTS interface of CoordinateSequence, factory and
    00278  * default implementations.
    00279  * Added DefaultCoordinateSequenceFactory::instance() function.
    00280  *
    00281  * Revision 1.4  2004/07/07 10:29:54  strk
    00282  * Adjusted exceptions documentation.
    00283  *
    00284  * Revision 1.3  2004/07/05 14:23:03  strk
    00285  * More documentation cleanups.
    00286  *
    00287  * Revision 1.2  2004/07/05 10:50:21  strk
    00288  * deep-dopy construction taken out of Geometry and implemented only
    00289  * in GeometryFactory.
    00290  * Deep-copy geometry construction takes care of cleaning up copies
    00291  * on exception.
    00292  * Implemented clone() method for CoordinateSequence
    00293  * Changed createMultiPoint(CoordinateSequence) signature to reflect
    00294  * copy semantic (by-ref instead of by-pointer).
    00295  * Cleaned up documentation.
    00296  *
    00297  * Revision 1.1  2004/07/02 13:20:42  strk
    00298  * Header files moved under geos/ dir.
    00299  *
    00300  * Revision 1.14  2004/04/10 22:41:25  ybychkov
    00301  * "precision" upgraded to JTS 1.4
    00302  *
    00303  * Revision 1.13  2004/03/18 10:42:44  ybychkov
    00304  * "IO" and "Util" upgraded to JTS 1.4
    00305  * "Geometry" partially upgraded.
    00306  *
    00307  * Revision 1.12  2003/11/07 01:23:42  pramsey
    00308  * Add standard CVS headers licence notices and copyrights to all cpp and h
    00309  * files.
    00310  *
    00311  *
    00312  **********************************************************************/
    00313