Index: lemon/dim2.h
===================================================================
--- lemon/dim2.h	(revision 2553)
+++ lemon/dim2.h	(revision 2562)
@@ -53,7 +53,5 @@
 
   /// A simple two dimensional vector (plainvector) implementation
-  ///with the usual vector
-  /// operators.
-  ///
+  /// with the usual vector operations.
   template<typename T>
     class Point {
@@ -63,7 +61,7 @@
       typedef T Value;
 
-      ///First co-ordinate
+      ///First coordinate
       T x;
-      ///Second co-ordinate
+      ///Second coordinate
       T y;     
       
@@ -76,5 +74,5 @@
       ///The dimension of the vector.
 
-      ///This class give back always 2.
+      ///This function always returns 2.
       ///
       int size() const { return 2; }
@@ -100,5 +98,5 @@
       }
   
-      ///Increment the left hand side by u
+      ///Increment the left hand side by \c u
       Point<T>& operator +=(const Point<T>& u) {
         x += u.x;
@@ -107,5 +105,5 @@
       }
   
-      ///Decrement the left hand side by u
+      ///Decrement the left hand side by \c u
       Point<T>& operator -=(const Point<T>& u) {
         x -= u.x;
@@ -139,5 +137,5 @@
       }
 
-      ///Return the neg of the vectors
+      ///Return the negative of the vector
       Point<T> operator-() const {
         Point<T> b=*this;
@@ -176,7 +174,7 @@
     };
 
-  ///Return an Point 
-
-  ///Return an Point
+  ///Return a Point 
+
+  ///Return a Point.
   ///\relates Point
   template <typename T>
@@ -287,7 +285,9 @@
       ///Construct an instance from two points
       
-      ///Construct an instance from two points
-      ///\warning The coordinates of the bottom-left corner must be no more
-      ///than those of the top-right one
+      ///Construct an instance from two points.
+      ///\param a The bottom left corner.
+      ///\param b The top right corner.
+      ///\warning The coordinates of the bottom left corner must be no more
+      ///than those of the top right one.
       BoundingBox(Point<T> a,Point<T> b)
       {
@@ -299,7 +299,11 @@
       ///Construct an instance from four numbers
 
-      ///Construct an instance from four numbers
-      ///\warning The coordinates of the bottom-left corner must be no more
-      ///than those of the top-right one
+      ///Construct an instance from four numbers.
+      ///\param l The left side of the box.
+      ///\param b The bottom of the box.
+      ///\param r The right side of the box.
+      ///\param t The top of the box.
+      ///\warning The left side must be no more than the right side and
+      ///bottom must be no more than the top. 
       BoundingBox(T l,T b,T r,T t)
       {
@@ -309,5 +313,11 @@
       }
       
-      ///Were any points added?
+      ///Return \c true if the bounding box is empty.
+      
+      ///Return \c true if the bounding box is empty (i.e. return \c false
+      ///if at least one point was added to the box or the coordinates of
+      ///the box were set).
+      ///
+      ///The coordinates of an empty bounding box are not defined. 
       bool empty() const {
         return _empty;
@@ -319,7 +329,7 @@
       }
 
-      ///Give back the bottom left corner
-
-      ///Give back the bottom left corner.
+      ///Give back the bottom left corner of the box
+
+      ///Give back the bottom left corner of the box.
       ///If the bounding box is empty, then the return value is not defined.
       Point<T> bottomLeft() const {
@@ -327,15 +337,15 @@
       }
 
-      ///Set the bottom left corner
-
-      ///Set the bottom left corner.
-      ///It should only bee used for non-empty box.
+      ///Set the bottom left corner of the box
+
+      ///Set the bottom left corner of the box.
+      ///It should only be used for non-empty box.
       void bottomLeft(Point<T> p) {
 	bottom_left = p;
       }
 
-      ///Give back the top right corner
-
-      ///Give back the top right corner.
+      ///Give back the top right corner of the box
+
+      ///Give back the top right corner of the box.
       ///If the bounding box is empty, then the return value is not defined.
       Point<T> topRight() const {
@@ -343,15 +353,15 @@
       }
 
-      ///Set the top right corner
-
-      ///Set the top right corner.
-      ///It should only bee used for non-empty box.
+      ///Set the top right corner of the box
+
+      ///Set the top right corner of the box.
+      ///It should only be used for non-empty box.
       void topRight(Point<T> p) {
 	top_right = p;
       }
 
-      ///Give back the bottom right corner
-
-      ///Give back the bottom right corner.
+      ///Give back the bottom right corner of the box
+
+      ///Give back the bottom right corner of the box.
       ///If the bounding box is empty, then the return value is not defined.
       Point<T> bottomRight() const {
@@ -359,8 +369,8 @@
       }
 
-      ///Set the bottom right corner
-
-      ///Set the bottom right corner.
-      ///It should only bee used for non-empty box.
+      ///Set the bottom right corner of the box
+
+      ///Set the bottom right corner of the box.
+      ///It should only be used for non-empty box.
       void bottomRight(Point<T> p) {
 	top_right.x = p.x;
@@ -368,7 +378,7 @@
       }
  
-      ///Give back the top left corner
-
-      ///Give back the top left corner.
+      ///Give back the top left corner of the box
+
+      ///Give back the top left corner of the box.
       ///If the bounding box is empty, then the return value is not defined.
       Point<T> topLeft() const {
@@ -376,8 +386,8 @@
       }
 
-      ///Set the top left corner
-
-      ///Set the top left corner.
-      ///It should only bee used for non-empty box.
+      ///Set the top left corner of the box
+
+      ///Set the top left corner of the box.
+      ///It should only be used for non-empty box.
       void topLeft(Point<T> p) {
 	top_right.y = p.y;
@@ -396,5 +406,5 @@
 
       ///Set the bottom of the box.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void bottom(T t) {
 	bottom_left.y = t;
@@ -412,5 +422,5 @@
 
       ///Set the top of the box.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void top(T t) {
 	top_right.y = t;
@@ -428,5 +438,5 @@
 
       ///Set the left side of the box.
-      ///It should only bee used for non-empty box
+      ///It should only be used for non-empty box.
       void left(T t) {
 	bottom_left.x = t;
@@ -444,5 +454,5 @@
 
       ///Set the right side of the box.
-      ///It should only bee used for non-empty box
+      ///It should only be used for non-empty box.
       void right(T t) {
 	top_right.x = t;
@@ -466,5 +476,5 @@
 
       ///Checks whether a point is inside a bounding box
-      bool inside(const Point<T>& u){
+      bool inside(const Point<T>& u) const {
         if (_empty)
           return false;
@@ -476,4 +486,7 @@
   
       ///Increments a bounding box with a point
+
+      ///Increments a bounding box with a point.
+      ///
       BoundingBox& add(const Point<T>& u){
         if (_empty){
@@ -490,5 +503,8 @@
       }
     
-      ///Increments a bounding to contain another bounding box
+      ///Increments a bounding box to contain another bounding box
+      
+      ///Increments a bounding box to contain another bounding box.
+      ///
       BoundingBox& add(const BoundingBox &u){
         if ( !u.empty() ){
@@ -500,12 +516,19 @@
   
       ///Intersection of two bounding boxes
-      BoundingBox operator &(const BoundingBox& u){
+
+      ///Intersection of two bounding boxes.
+      ///
+      BoundingBox operator&(const BoundingBox& u) const {
         BoundingBox b;
-	b.bottom_left.x=std::max(this->bottom_left.x,u.bottom_left.x);
-	b.bottom_left.y=std::max(this->bottom_left.y,u.bottom_left.y);
-	b.top_right.x=std::min(this->top_right.x,u.top_right.x);
-	b.top_right.y=std::min(this->top_right.y,u.top_right.y);
-	b._empty = this->_empty || u._empty ||
-	  b.bottom_left.x>top_right.x && b.bottom_left.y>top_right.y;
+        if (this->_empty || u._empty) {
+	  b._empty = true;
+	} else {
+	  b.bottom_left.x=std::max(this->bottom_left.x,u.bottom_left.x);
+	  b.bottom_left.y=std::max(this->bottom_left.y,u.bottom_left.y);
+	  b.top_right.x=std::min(this->top_right.x,u.top_right.x);
+	  b.top_right.y=std::min(this->top_right.y,u.top_right.y);
+	  b._empty = b.bottom_left.x > b.top_right.x ||
+	             b.bottom_left.y > b.top_right.y;
+	} 
         return b;
       }
@@ -514,8 +537,8 @@
 
 
-  ///Map of x-coordinates of a dim2::Point<>-map
-
-  ///\ingroup maps
-  ///Map of x-coordinates of a dim2::Point<>-map
+  ///Map of x-coordinates of a \ref Point "Point"-map
+
+  ///\ingroup maps
+  ///Map of x-coordinates of a \ref Point "Point"-map.
   ///
   template<class M>
@@ -571,5 +594,5 @@
   ///Returns a \ref ConstXMap class
 
-  ///This function just returns an \ref ConstXMap class.
+  ///This function just returns a \ref ConstXMap class.
   ///
   ///\ingroup maps
@@ -581,8 +604,8 @@
   }
 
-  ///Map of y-coordinates of a dim2::Point<>-map
+  ///Map of y-coordinates of a \ref Point "Point"-map
     
   ///\ingroup maps
-  ///Map of y-coordinates of a dim2::Point<>-map
+  ///Map of y-coordinates of a \ref Point "Point"-map.
   ///
   template<class M>
@@ -600,7 +623,7 @@
   };
 
-  ///Returns an \ref YMap class
-
-  ///This function just returns an \ref YMap class.
+  ///Returns a \ref YMap class
+
+  ///This function just returns a \ref YMap class.
   ///
   ///\ingroup maps
@@ -638,5 +661,5 @@
   ///Returns a \ref ConstYMap class
 
-  ///This function just returns an \ref ConstYMap class.
+  ///This function just returns a \ref ConstYMap class.
   ///
   ///\ingroup maps
@@ -649,10 +672,10 @@
 
 
-    ///\brief Map of the \ref Point::normSquare() "normSquare()"
-    ///of an \ref Point "Point"-map
-    ///
-    ///Map of the \ref Point::normSquare() "normSquare()"
-    ///of an \ref Point "Point"-map
-    ///\ingroup maps
+  ///\brief Map of the \ref Point::normSquare() "normSquare()"
+  ///of a \ref Point "Point"-map
+  ///
+  ///Map of the \ref Point::normSquare() "normSquare()"
+  ///of a \ref Point "Point"-map.
+  ///\ingroup maps
     ///
   template<class M>
@@ -671,5 +694,5 @@
   ///Returns a \ref NormSquareMap class
 
-  ///This function just returns an \ref NormSquareMap class.
+  ///This function just returns a \ref NormSquareMap class.
   ///
   ///\ingroup maps
