$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r56352 - in sandbox/gtl/boost/polygon: . detail
From: lucanus.j.simonson_at_[hidden]
Date: 2009-09-21 19:23:32
Author: ljsimons
Date: 2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
New Revision: 56352
URL: http://svn.boost.org/trac/boost/changeset/56352
Log:
fixed all MSVC warnings
Text files modified: 
   sandbox/gtl/boost/polygon/detail/boolean_op.hpp                  |    18 ++                                      
   sandbox/gtl/boost/polygon/detail/boolean_op_45.hpp               |    44 +++++-                                  
   sandbox/gtl/boost/polygon/detail/max_cover.hpp                   |    16 +-                                      
   sandbox/gtl/boost/polygon/detail/polygon_45_formation.hpp        |    28 +++-                                    
   sandbox/gtl/boost/polygon/detail/polygon_45_set_view.hpp         |    20 +++                                     
   sandbox/gtl/boost/polygon/detail/polygon_45_touch.hpp            |     2                                         
   sandbox/gtl/boost/polygon/detail/polygon_90_set_view.hpp         |     3                                         
   sandbox/gtl/boost/polygon/detail/polygon_arbitrary_formation.hpp |    10                                         
   sandbox/gtl/boost/polygon/detail/polygon_formation.hpp           |     2                                         
   sandbox/gtl/boost/polygon/detail/polygon_set_view.hpp            |    46 ++++---                                 
   sandbox/gtl/boost/polygon/detail/rectangle_formation.hpp         |     2                                         
   sandbox/gtl/boost/polygon/detail/scan_arbitrary.hpp              |    35 ++++-                                   
   sandbox/gtl/boost/polygon/detail/transform_detail.hpp            |   108 +++++++++---------                      
   sandbox/gtl/boost/polygon/gtl_boost_unit_test.cpp                |   228 +++++++++++++++++++++------------------ 
   sandbox/gtl/boost/polygon/interval_concept.hpp                   |     7                                         
   sandbox/gtl/boost/polygon/interval_data.hpp                      |    18 ++                                      
   sandbox/gtl/boost/polygon/isotropy.hpp                           |     4                                         
   sandbox/gtl/boost/polygon/point_3d_data.hpp                      |     6                                         
   sandbox/gtl/boost/polygon/point_data.hpp                         |    18 ++                                      
   sandbox/gtl/boost/polygon/polygon_45_set_concept.hpp             |     2                                         
   sandbox/gtl/boost/polygon/polygon_45_set_data.hpp                |    75 ++++++++----                            
   sandbox/gtl/boost/polygon/polygon_45_set_traits.hpp              |     4                                         
   sandbox/gtl/boost/polygon/polygon_90_set_data.hpp                |     4                                         
   sandbox/gtl/boost/polygon/polygon_90_set_traits.hpp              |     8                                         
   sandbox/gtl/boost/polygon/polygon_set_data.hpp                   |    16 +-                                      
   sandbox/gtl/boost/polygon/polygon_set_traits.hpp                 |     4                                         
   sandbox/gtl/boost/polygon/polygon_traits.hpp                     |    38 +++---                                  
   sandbox/gtl/boost/polygon/transform.hpp                          |    36 ++++--                                  
   28 files changed, 489 insertions(+), 313 deletions(-)
Modified: sandbox/gtl/boost/polygon/detail/boolean_op.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/boolean_op.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/boolean_op.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -85,12 +85,24 @@
   template <class T>
   class BinaryCount {
   public:
-    inline BinaryCount() : counts_() { counts_[0] = counts_[1] = 0; }
+    inline BinaryCount() 
+#ifndef BOOST_POLYGON_MSVC  
+      : counts_() 
+#endif
+    { counts_[0] = counts_[1] = 0; }
     // constructs from two integers
-    inline BinaryCount(int countL, int countR) : counts_() { counts_[0] = countL, counts_[1] = countR; }
+    inline BinaryCount(int countL, int countR) 
+#ifndef BOOST_POLYGON_MSVC  
+      : counts_() 
+#endif
+    { counts_[0] = countL, counts_[1] = countR; }
     inline BinaryCount& operator=(int count) { counts_[0] = count, counts_[1] = count; return *this; }
     inline BinaryCount& operator=(const BinaryCount& that); 
-    inline BinaryCount(const BinaryCount& that) : counts_() { *this = that; }
+    inline BinaryCount(const BinaryCount& that)
+#ifndef BOOST_POLYGON_MSVC
+      : counts_() 
+#endif
+    { *this = that; }
     inline bool operator==(const BinaryCount& that) const;
     inline bool operator!=(const BinaryCount& that) const { return !((*this) == that);}
     inline BinaryCount& operator+=(const BinaryCount& that);
Modified: sandbox/gtl/boost/polygon/detail/boolean_op_45.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/boolean_op_45.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/boolean_op_45.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -16,10 +16,22 @@
 
     class Count2 {
     public:
-      inline Count2() : counts() { counts[0] = counts[1] = 0; }
+      inline Count2() 
+#ifndef BOOST_POLYGON_MSVC  
+      : counts() 
+#endif
+      { counts[0] = counts[1] = 0; }
       //inline Count2(int count) { counts[0] = counts[1] = count; }
-      inline Count2(int count1, int count2) : counts() { counts[0] = count1; counts[1] = count2; }
-      inline Count2(const Count2& count) : counts() { counts[0] = count.counts[0]; counts[1] = count.counts[1]; }
+      inline Count2(int count1, int count2) 
+#ifndef BOOST_POLYGON_MSVC  
+      : counts() 
+#endif
+      { counts[0] = count1; counts[1] = count2; }
+      inline Count2(const Count2& count) 
+#ifndef BOOST_POLYGON_MSVC  
+      : counts() 
+#endif
+      { counts[0] = count.counts[0]; counts[1] = count.counts[1]; }
       inline bool operator==(const Count2& count) const { return counts[0] == count.counts[0] && counts[1] == count.counts[1]; }
       inline bool operator!=(const Count2& count) const { return !((*this) == count); }
       inline Count2& operator=(int count) { counts[0] = counts[1] = count; return *this; }
@@ -357,6 +369,9 @@
     }
     template <int op>
     static bool applyLogic(Count2 count) {
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
       if(op == 0) { //apply or
         return count[0] > 0 || count[1] > 0;
       } else if(op == 1) { //apply and
@@ -367,6 +382,9 @@
         return (count[0] > 0) ^ (count[1] > 0);
       } else
         return false;
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
     }
 
     template <int op>
@@ -386,14 +404,20 @@
 
     template <int op>
     static bool applyLogic(Count1 count) {
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
       if(op == 0) { //apply or
         return count.count_ > 0;
       } else if(op == 1) { //apply and
         return count.count_ > 1;
       } else if(op == 3) { //apply xor
-        return count.count_ % 2;
+        return (count.count_ % 2) != 0;
       } else
         return false;
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
     }
 
     template <int op>
@@ -766,9 +790,9 @@
         //std::cout << "0, ";
         Unit y1 = iter1->evalAtX(x_);
         Unit y2 = iter2->evalAtX(x_);
-        LongUnit delta = (LongUnit)abs((LongUnit)y1 - (LongUnit)y2);
-        if(delta + x_ <= (std::numeric_limits<Unit>::max)())
-          crossQueue_.insert(crossQueue_.end(), Point(x_ + delta, y1));
+        LongUnit delta = local_abs(LongUnit(y1) - LongUnit(y2));
+        if(delta + static_cast<LongUnit>(x_) <= (std::numeric_limits<Unit>::max)())
+          crossQueue_.insert(crossQueue_.end(), Point(x_ + static_cast<Unit>(delta), y1));
         //std::cout <<  Point(x_ + delta, y1);
       }
 
@@ -794,14 +818,14 @@
             LongUnit halfDelta2 = (LongUnit)((((LongUnit)y1) - y2)/2); 
             //note that halfDelta2 has been truncated
             if(halfDelta2 + x_ <= UnitMax && halfDelta2 + y2 <= UnitMax) {
-              crossQueue_.insert(crossQueue_.end(), Point(x_+halfDelta2, y2+halfDelta2));
-              crossQueue_.insert(crossQueue_.end(), Point(x_+halfDelta2, y2+halfDelta2+1));
+              crossQueue_.insert(crossQueue_.end(), Point(x_+static_cast<Unit>(halfDelta2), y2+static_cast<Unit>(halfDelta2)));
+              crossQueue_.insert(crossQueue_.end(), Point(x_+static_cast<Unit>(halfDelta2), y2+static_cast<Unit>(halfDelta2)+1));
             }
           }
         } else {
           LongUnit halfDelta = (LongUnit)((((LongUnit)y1) - y2)/2); 
           if(halfDelta + x_ <= UnitMax && halfDelta + y2 <= UnitMax)
-            crossQueue_.insert(crossQueue_.end(), Point(x_+halfDelta, y2+halfDelta));
+            crossQueue_.insert(crossQueue_.end(), Point(x_+static_cast<Unit>(halfDelta), y2+static_cast<Unit>(halfDelta)));
           //std::cout << Point(x_+halfDelta, y2+halfDelta);
         }
       }
Modified: sandbox/gtl/boost/polygon/detail/max_cover.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/max_cover.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/max_cover.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -96,10 +96,10 @@
         bool iresult = intersect(rectIvl, nodeIvl, false);
         bool tresult = !node->tracedPath(rectIvl);
         //std::cout << (itr != node->end()) << " " << iresult << " " << tresult << std::endl;
-        Rectangle nextRect = Rectangle(rectIvl, rectIvl);
+        Rectangle nextRect1 = Rectangle(rectIvl, rectIvl);
         Unit low = rect.get(orient.get_perpendicular()).low();
         Unit high = node->rect.get(orient.get_perpendicular()).high();
-        nextRect.set(orient.get_perpendicular(), Interval(low, high));
+        nextRect1.set(orient.get_perpendicular(), Interval(low, high));
         if(iresult && tresult) {
           node->addPath(rectIvl);
           bool writeOut = true;
@@ -110,13 +110,13 @@
             if(contains(nodeIvl3, rectIvl, true)) writeOut = false;
             //std::cout << "child " << (*itr2)->rect << std::endl;
           }
-          Rectangle nextRect = Rectangle(rectIvl, rectIvl);
-          Unit low = rect.get(orient.get_perpendicular()).low();
-          Unit high = node->rect.get(orient.get_perpendicular()).high();
-          nextRect.set(orient.get_perpendicular(), Interval(low, high));
+          Rectangle nextRect2 = Rectangle(rectIvl, rectIvl);
+          Unit low2 = rect.get(orient.get_perpendicular()).low();
+          Unit high2 = node->rect.get(orient.get_perpendicular()).high();
+          nextRect2.set(orient.get_perpendicular(), Interval(low2, high2));
           if(writeOut) {
             //std::cout << "write out " << nextRect << std::endl;
-            outputContainer.push_back(copy_construct<typename cT::value_type, Rectangle>(nextRect));
+            outputContainer.push_back(copy_construct<typename cT::value_type, Rectangle>(nextRect2));
           } else {
             //std::cout << "supress " << nextRect << std::endl;
           }
@@ -124,7 +124,7 @@
         if(itr != node->end() && iresult && tresult) {
           //std::cout << "recurse into child\n";
           stack.push_back(stack_element(node, rect, itr));
-          rect = nextRect;
+          rect = nextRect1;
           node = *itr;
           itr = node->begin();
         } else {
Modified: sandbox/gtl/boost/polygon/detail/polygon_45_formation.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/polygon_45_formation.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/polygon_45_formation.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -394,20 +394,36 @@
     class Vertex45CountT {
     public:
       typedef ct count_type;
-      inline Vertex45CountT() : counts() { counts[0] = counts[1] = counts[2] = counts[3] = 0; }
+      inline Vertex45CountT() 
+#ifndef BOOST_POLYGON_MSVC  
+        : counts() 
+#endif
+      { counts[0] = counts[1] = counts[2] = counts[3] = 0; }
       //inline Vertex45CountT(ct count) { counts[0] = counts[1] = counts[2] = counts[3] = count; }
       inline Vertex45CountT(const ct& count1, const ct& count2, const ct& count3, 
-                           const ct& count4) : counts() { 
+                           const ct& count4)
+#ifndef BOOST_POLYGON_MSVC  
+        : counts() 
+#endif                           
+      { 
         counts[0] = count1; 
         counts[1] = count2; 
         counts[2] = count3;
         counts[3] = count4; 
       }
-      inline Vertex45CountT(const Vertex45& vertex) : counts() { 
+      inline Vertex45CountT(const Vertex45& vertex)
+#ifndef BOOST_POLYGON_MSVC  
+        : counts() 
+#endif                           
+      { 
         counts[0] = counts[1] = counts[2] = counts[3] = 0;
         (*this) += vertex;
       }
-      inline Vertex45CountT(const Vertex45CountT& count) : counts() { 
+      inline Vertex45CountT(const Vertex45CountT& count)
+#ifndef BOOST_POLYGON_MSVC  
+        : counts() 
+#endif                           
+      { 
         (*this) = count;
       }
       inline bool operator==(const Vertex45CountT& count) const { 
@@ -612,7 +628,7 @@
                   //std::cout << "case2: " << i << " " << j << std::endl;
                   //std::cout << "creating active tail pair\n";
                   std::pair<ActiveTail45*, ActiveTail45*> tailPair = 
-                    ActiveTail45::createActiveTail45sAsPair(point, true, 0, fractureHoles_);
+                    ActiveTail45::createActiveTail45sAsPair(point, true, 0, fractureHoles_ != 0);
                   //tailPair.first->print();
                   //tailPair.second->print();
                   if(j == 3) {
@@ -730,7 +746,7 @@
                 ActiveTail45* holep = 0;
                 if(counts[3] == 0) holep = tails[3];
                 std::pair<ActiveTail45*, ActiveTail45*> tailPair = 
-                  ActiveTail45::createActiveTail45sAsPair(point, false, holep, fractureHoles_);
+                  ActiveTail45::createActiveTail45sAsPair(point, false, holep, fractureHoles_ != 0);
                 if(j == 3) {
                   returnValue = tailPair.first;
                   returnCount = -1;
Modified: sandbox/gtl/boost/polygon/detail/polygon_45_set_view.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/polygon_45_set_view.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/polygon_45_set_view.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -38,6 +38,9 @@
       value_type rinput_;
       rinput_.set(polygon_45_set_traits<rtype>::begin(rvalue_),
                   polygon_45_set_traits<rtype>::end(rvalue_));
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
       if(op_type == 0)
         output_ |= rinput_;
       else if(op_type == 1)
@@ -46,6 +49,9 @@
         output_ ^= rinput_;
       else
         output_ -= rinput_;
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
     }
   };
 
@@ -55,6 +61,9 @@
     void value(value_type& output_, const ltype& lvalue_, const polygon_45_set_data<rcoord>& rvalue_) {
       output_.set(polygon_45_set_traits<ltype>::begin(lvalue_),
                   polygon_45_set_traits<ltype>::end(lvalue_));
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
       if(op_type == 0)
         output_ |= rvalue_;
       else if(op_type == 1)
@@ -63,6 +72,9 @@
         output_ ^= rvalue_;
       else
         output_ -= rvalue_;
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
     }
   };
 
@@ -78,6 +90,8 @@
     const rtype& rvalue_;
     mutable value_type output_;
     mutable bool evaluated_;
+
+    polygon_45_set_view& operator=(const polygon_45_set_view&);
   public:
     polygon_45_set_view(const ltype& lvalue,
                         const rtype& rvalue ) :
@@ -138,6 +152,9 @@
                 polygon_45_set_traits<ltype>::end(lvalue_));
     rinput_.set(polygon_45_set_traits<rtype>::begin(rvalue_),
                 polygon_45_set_traits<rtype>::end(rvalue_));
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
     if(op_type == 0)
       output_ |= rinput_;
     else if(op_type == 1)
@@ -146,6 +163,9 @@
       output_ ^= rinput_;
     else
       output_ -= rinput_;
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
     polygon_45_set_mutable_traits<geometry_type_1>::set(lvalue_, output_.begin(), output_.end());
     return lvalue_;
   }
Modified: sandbox/gtl/boost/polygon/detail/polygon_45_touch.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/polygon_45_touch.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/polygon_45_touch.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -128,7 +128,7 @@
     struct touch_45_output_functor {
       template <typename cT>
       void operator()(cT& output, const CountTouch& count1, const CountTouch& count2, 
-                      const Point& pt, int rise, direction_1d end) {
+                      const Point& pt, int , direction_1d ) {
         Unit& x = output.first.first;
         std::map<Unit, std::set<int> >& y_prop_map = output.first.second;
         if(pt.x() != x) process_previous_x(output);
Modified: sandbox/gtl/boost/polygon/detail/polygon_90_set_view.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/polygon_90_set_view.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/polygon_90_set_view.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -50,7 +50,7 @@
   struct compute_90_set_value<value_type, polygon_90_set_data<lcoord>, polygon_90_set_data<rcoord>, op_type> {
     static
     void value(value_type& output_, const polygon_90_set_data<lcoord>& lvalue_,
-               const polygon_90_set_data<rcoord>& rvalue_, orientation_2d orient_) {
+               const polygon_90_set_data<rcoord>& rvalue_, orientation_2d) {
       lvalue_.sort();
       rvalue_.sort();
       output_.applyBooleanBinaryOp(lvalue_.begin(), lvalue_.end(),
@@ -98,6 +98,7 @@
     op_type op_;
     mutable value_type output_;
     mutable bool evaluated_;
+    polygon_90_set_view& operator=(const polygon_90_set_view&);
   public:
     polygon_90_set_view(const ltype& lvalue,
                      const rtype& rvalue,
Modified: sandbox/gtl/boost/polygon/detail/polygon_arbitrary_formation.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/polygon_arbitrary_formation.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/polygon_arbitrary_formation.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -220,7 +220,7 @@
                                    elm1.second.get(VERTICAL) - elm1.first.get(VERTICAL),
                                    elm2.second.get(HORIZONTAL) - elm2.first.get(HORIZONTAL),
                                    elm2.second.get(VERTICAL) - elm2.first.get(VERTICAL));
-          return (*justBefore_) ^ result;
+          return ((*justBefore_) != 0) ^ result;
         }
         return false;
       }
@@ -533,7 +533,7 @@
                                    elm1.other_pt.get(VERTICAL) - elm1.pt.get(VERTICAL),
                                    elm2.other_pt.get(HORIZONTAL) - elm2.pt.get(HORIZONTAL),
                                    elm2.other_pt.get(VERTICAL) - elm2.pt.get(VERTICAL));
-          return (*justBefore_) ^ result;
+          return ((*justBefore_) != 0) ^ result;
         }
         return false;
       }
@@ -1150,7 +1150,7 @@
                   //std::cout << "case2: " << i << " " << j << std::endl;
                   //std::cout << "creating active tail pair\n";
                   std::pair<active_tail_arbitrary*, active_tail_arbitrary*> tailPair = 
-                    active_tail_arbitrary::createActiveTailsAsPair(point, true, 0, fractureHoles_);
+                    active_tail_arbitrary::createActiveTailsAsPair(point, true, 0, fractureHoles_ != 0);
                   //tailPair.first->print();
                   //tailPair.second->print();
                   if(j == i_size_less_1 && incoming_count[j].first.get(HORIZONTAL) == point.get(HORIZONTAL)) {
@@ -1296,7 +1296,7 @@
                   have_vertical_tail_from_below = false;
                 }
                 std::pair<active_tail_arbitrary*, active_tail_arbitrary*> tailPair = 
-                  active_tail_arbitrary::createActiveTailsAsPair(point, false, holep, fractureHoles_);
+                  active_tail_arbitrary::createActiveTailsAsPair(point, false, holep, fractureHoles_ != 0);
                 if(j == i_size_less_1 && incoming_count[j].first.get(HORIZONTAL) == point.get(HORIZONTAL)) {
                   //std::cout << "vertical element " << point << std::endl;
                   returnValue = tailPair.first;
@@ -2090,7 +2090,7 @@
                   //std::cout << "case2: " << i << " " << j << std::endl;
                   //std::cout << "creating active tail pair\n";
                   std::pair<active_tail_arbitrary*, active_tail_arbitrary*> tailPair = 
-                    active_tail_arbitrary::createActiveTailsAsPair(point, true, 0, polygon_arbitrary_formation<Unit>::fractureHoles_);
+                    active_tail_arbitrary::createActiveTailsAsPair(point, true, 0, polygon_arbitrary_formation<Unit>::fractureHoles_ != 0);
                   //tailPair.first->print();
                   //tailPair.second->print();
                   if(j == i_size_less_1 && incoming_count[j].first.get(HORIZONTAL) == point.get(HORIZONTAL)) {
Modified: sandbox/gtl/boost/polygon/detail/polygon_formation.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/polygon_formation.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/polygon_formation.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -1719,7 +1719,7 @@
   //public API to access polygon formation algorithm
   template <typename output_container, typename iterator_type, typename concept_type>
   unsigned int get_polygons(output_container& container, iterator_type begin, iterator_type end,
-                    orientation_2d orient, bool fracture_holes, concept_type tag) {
+                    orientation_2d orient, bool fracture_holes, concept_type ) {
     typedef typename output_container::value_type polygon_type;
     typedef typename iterator_type::value_type::first_type coordinate_type;
     polygon_type poly;
Modified: sandbox/gtl/boost/polygon/detail/polygon_set_view.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/polygon_set_view.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/polygon_set_view.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -68,24 +68,23 @@
     static inline bool sort(const polygon_set_view<ltype, rtype, op_type>& polygon_set);
   };
 
-  template <typename value_type, typename geometry_type_1, typename geometry_type_2, int op_type>
-  void execute_boolean_op(value_type& output_, const geometry_type_1& lvalue_, const geometry_type_2& rvalue_,
-                          double coord) {
-    typedef geometry_type_1 ltype;
-    typedef geometry_type_2 rtype;
-    typedef typename polygon_set_traits<ltype>::coordinate_type coordinate_type;
-    value_type linput_;
-    value_type rinput_;
-    insert_into_view_arg(linput_, lvalue_);
-    insert_into_view_arg(rinput_, rvalue_);
-    arbitrary_boolean_op<coordinate_type> abo;
-    abo.execute(output_, linput_.begin(), linput_.end(),
-                rinput_.begin(), rinput_.end(), op_type);
-  }
+  //template <typename value_type, typename geometry_type_1, typename geometry_type_2, int op_type>
+  //void execute_boolean_op(value_type& output_, const geometry_type_1& lvalue_, const geometry_type_2& rvalue_,
+  //                        double coord) {
+  //  typedef geometry_type_1 ltype;
+  //  typedef geometry_type_2 rtype;
+  //  typedef typename polygon_set_traits<ltype>::coordinate_type coordinate_type;
+  //  value_type linput_;
+  //  value_type rinput_;
+  //  insert_into_view_arg(linput_, lvalue_);
+  //  insert_into_view_arg(rinput_, rvalue_);
+  //  arbitrary_boolean_op<coordinate_type> abo;
+  //  abo.execute(output_, linput_.begin(), linput_.end(),
+  //              rinput_.begin(), rinput_.end(), op_type);
+  //}
 
   template <typename value_type, typename geometry_type_1, typename geometry_type_2, int op_type>
-  void execute_boolean_op(value_type& output_, const geometry_type_1& lvalue_, const geometry_type_2& rvalue_,
-                          int coord) {
+  void execute_boolean_op(value_type& output_, const geometry_type_1& lvalue_, const geometry_type_2& rvalue_) {
     typedef geometry_type_1 ltype;
     typedef geometry_type_2 rtype;
     typedef typename polygon_set_traits<ltype>::coordinate_type coordinate_type;
@@ -96,12 +95,18 @@
     polygon_45_set_data<coordinate_type> l45, r45, o45;
     if(linput_.downcast(l45) && rinput_.downcast(r45)) {
       //the op codes are screwed up between 45 and arbitrary
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
       if(op_type < 2)
         l45.template applyAdaptiveBoolean_<op_type>(o45, r45);
       else if(op_type == 2)
         l45.template applyAdaptiveBoolean_<3>(o45, r45);
       else
         l45.template applyAdaptiveBoolean_<2>(o45, r45);
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
       output_.insert(o45);
     } else {
       arbitrary_boolean_op<coordinate_type> abo;
@@ -122,6 +127,7 @@
     const rtype& rvalue_;
     mutable value_type output_;
     mutable bool evaluated_;
+    polygon_set_view& operator=(const polygon_set_view&);
   public:
     polygon_set_view(const ltype& lvalue,
                      const rtype& rvalue ) :
@@ -132,7 +138,7 @@
     const value_type& value() const {
       if(!evaluated_) {
         evaluated_ = true;
-        execute_boolean_op<value_type, ltype, rtype, op_type>(output_, lvalue_, rvalue_, coordinate_type());
+        execute_boolean_op<value_type, ltype, rtype, op_type>(output_, lvalue_, rvalue_);
       }
       return output_;
     }
@@ -160,11 +166,11 @@
   }
   template <typename ltype, typename rtype, int op_type>
   bool polygon_set_traits<polygon_set_view<ltype, rtype, op_type> >::
-  clean(const polygon_set_view<ltype, rtype, op_type>& polygon_set) { 
+  clean(const polygon_set_view<ltype, rtype, op_type>& ) { 
     return true; }
   template <typename ltype, typename rtype, int op_type>
   bool polygon_set_traits<polygon_set_view<ltype, rtype, op_type> >::
-  sort(const polygon_set_view<ltype, rtype, op_type>& polygon_set) { 
+  sort(const polygon_set_view<ltype, rtype, op_type>& ) { 
     return true; }
 
   template <typename value_type, typename arg_type>
@@ -182,7 +188,7 @@
     typedef typename polygon_set_traits<ltype>::coordinate_type coordinate_type;
     typedef polygon_set_data<coordinate_type> value_type;
     value_type output_;
-    execute_boolean_op<value_type, geometry_type_1, geometry_type_2, op_type>(output_, lvalue_, rvalue_, coordinate_type());
+    execute_boolean_op<value_type, geometry_type_1, geometry_type_2, op_type>(output_, lvalue_, rvalue_);
     polygon_set_mutable_traits<geometry_type_1>::set(lvalue_, output_.begin(), output_.end());
     return lvalue_;
   }
Modified: sandbox/gtl/boost/polygon/detail/rectangle_formation.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/rectangle_formation.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/rectangle_formation.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -240,7 +240,7 @@
 
   template <typename output_container, typename iterator_type, typename rectangle_concept>
   void form_rectangles(output_container& output, iterator_type begin, iterator_type end,
-                       orientation_2d orient, rectangle_concept tag) {
+                       orientation_2d orient, rectangle_concept ) {
     typedef typename output_container::value_type rectangle_type;
     typedef typename get_coordinate_type_for_rectangles<rectangle_type, typename geometry_concept<rectangle_type>::type>::type Unit;
     rectangle_data<Unit> model;
Modified: sandbox/gtl/boost/polygon/detail/scan_arbitrary.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/scan_arbitrary.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/scan_arbitrary.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -210,7 +210,7 @@
 
     template <typename iT>
     static inline void segment_edge(std::vector<std::pair<half_edge, int> >& output_segments,
-                                    const half_edge& he, segment_id id, iT begin, iT end) {
+                                    const half_edge& , segment_id id, iT begin, iT end) {
       iT current = begin;
       iT next = begin;
       ++next;
@@ -750,13 +750,14 @@
       return true;
     }
 
-    static void print(const std::pair<half_edge, segment_id>& segment) {
+    //static void print(const std::pair<half_edge, segment_id>& segment) {
       //std::cout << segment.first.first << " " << segment.first.second << ": " << segment.second << "; ";
-    }
+    //}
     static void print(const std::vector<std::pair<half_edge, segment_id> >& vec) {
-      //for(std::size_t i = 0; i < vec.size(); ++ i) {
+      for(std::size_t i = 0; i < vec.size(); ++ i) {
       //  print(vec[i]);
-      //} std::cout << std::endl;
+      } 
+      //std::cout << std::endl;
     }
 
     template <typename stream_type>
@@ -916,6 +917,9 @@
       high_precision y = (high_precision)((std::numeric_limits<Unit>::min)());
       bool first_iteration = true;
       //we want to return from inside the loop when we hit end or new x
+#ifdef BOOST_POLYGON_MSVC      
+#pragma warning( disable: 4127 )
+#endif
       while(true) {
         if(begin == end || (!first_iteration && (high_precision)(((*begin).first.first.get(VERTICAL)) != y || 
                                                                  (*begin).first.first.get(HORIZONTAL) != x_))) {
@@ -1016,6 +1020,10 @@
           ++begin;
         }
       }
+#ifdef BOOST_POLYGON_MSVC      
+#pragma warning( default: 4127 )
+#endif
+
     }
 
     inline void erase_end_events(typename end_point_queue::iterator epqi) {
@@ -1454,7 +1462,7 @@
   protected:
     template <typename polygon_type>
     void insert(const polygon_type& polygon_object, const property_type& property_value, bool is_hole, 
-                polygon_concept tag) {
+                polygon_concept ) {
       bool first_iteration = true;
       bool second_iteration = true;
       Point first_point;
@@ -1477,7 +1485,7 @@
           }
         } else {
           if(previous_point != current_point) {
-            create_vertex(pmd, previous_previous_point, previous_point, current_point, winding_dir,
+            create_vertex(pmd, previous_point, current_point, winding_dir,
                           is_hole, property_value);
             previous_previous_point = previous_point;
             previous_point = current_point;
@@ -1487,13 +1495,13 @@
       current_point = first_point;
       if(!first_iteration && !second_iteration) {
         if(previous_point != current_point) {
-          create_vertex(pmd, previous_previous_point, previous_point, current_point, winding_dir,
+          create_vertex(pmd, previous_point, current_point, winding_dir,
                         is_hole, property_value);
           previous_previous_point = previous_point;
           previous_point = current_point;
         }
         current_point = second_point;
-        create_vertex(pmd, previous_previous_point, previous_point, current_point, winding_dir,
+        create_vertex(pmd, previous_point, current_point, winding_dir,
                       is_hole, property_value);
         previous_previous_point = previous_point;
         previous_point = current_point;
@@ -1513,7 +1521,7 @@
 
     template <typename rectangle_type>
     void insert(const rectangle_type& rectangle_object, const property_type& property_value, bool is_hole, 
-                rectangle_concept tag) {
+                rectangle_concept ) {
       polygon_90_data<Unit> poly;
       assign(poly, rectangle_object);
       insert(poly, property_value, is_hole, polygon_concept());
@@ -1522,7 +1530,6 @@
   public: //change to private when done testing
 
     static inline void create_vertex(property_merge_data& pmd, 
-                                     const Point& previous_point, 
                                      const Point& current_point, 
                                      const Point& next_point, 
                                      direction_1d winding,
@@ -2399,6 +2406,9 @@
         elem.second = 1;
         if(edge.second < edge.first) elem.second *= -1;
         if(is_vertical(edge)) elem.second *= -1;
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
         if(op_type == 0) { //OR
           if(!left.empty() && right.empty()) {
             result.insert_clean(elem);
@@ -2426,6 +2436,9 @@
               result.insert_clean(elem);
             }
           } 
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
           if(right.size() == 1) {
             if((*(right.begin())) == 0) {
               elem.second *= -1;
Modified: sandbox/gtl/boost/polygon/detail/transform_detail.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/detail/transform_detail.hpp	(original)
+++ sandbox/gtl/boost/polygon/detail/transform_detail.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -108,18 +108,18 @@
   }
 
   inline axis_transformation& axis_transformation::operator+=(const axis_transformation& a){
-    bool abit5 = a.atr_ & 32;
-    bool abit4 = a.atr_ & 16;
-    bool abit3 = a.atr_ & 8;
-    bool abit2 = a.atr_ & 4;
-    bool abit1 = a.atr_ & 2;
-    bool abit0 = a.atr_ & 1;      
-    bool bit5 = atr_ & 32;
-    bool bit4 = atr_ & 16;
-    bool bit3 = atr_ & 8;
-    bool bit2 = atr_ & 4;
-    bool bit1 = atr_ & 2;
-    bool bit0 = atr_ & 1;      
+    bool abit5 = (a.atr_ & 32) != 0;
+    bool abit4 = (a.atr_ & 16) != 0;
+    bool abit3 = (a.atr_ & 8) != 0;
+    bool abit2 = (a.atr_ & 4) != 0;
+    bool abit1 = (a.atr_ & 2) != 0;
+    bool abit0 = (a.atr_ & 1) != 0;      
+    bool bit5 = (atr_ & 32) != 0;
+    bool bit4 = (atr_ & 16) != 0;
+    bool bit3 = (atr_ & 8) != 0;
+    bool bit2 = (atr_ & 4) != 0;
+    bool bit1 = (atr_ & 2) != 0;
+    bool bit0 = (atr_ & 1) != 0;      
     int indexes[2][3] = {
       {
         ((int)((bit5 & bit2) | (bit4 & !bit2)) << 1) +
@@ -169,12 +169,12 @@
   // populate_axis_array writes the three INDIVIDUAL_AXIS values that the
   // ATR enum value of 'this' represent into axis_array
   inline void axis_transformation::populate_axis_array(INDIVIDUAL_AXIS axis_array[]) const {
-    bool bit5 = atr_ & 32;
-    bool bit4 = atr_ & 16;
-    bool bit3 = atr_ & 8;
-    bool bit2 = atr_ & 4;
-    bool bit1 = atr_ & 2;
-    bool bit0 = atr_ & 1;      
+    bool bit5 = (atr_ & 32) != 0;
+    bool bit4 = (atr_ & 16) != 0;
+    bool bit3 = (atr_ & 8) != 0;
+    bool bit2 = (atr_ & 4) != 0;
+    bool bit1 = (atr_ & 2) != 0;
+    bool bit0 = (atr_ & 1) != 0;      
     axis_array[2] = 
       (INDIVIDUAL_AXIS)((((int)(!bit4 & !bit5)) << 2) +
                         ((int)(bit5) << 1) + 
@@ -221,11 +221,11 @@
   // write_back_axis_array converts an array of three INDIVIDUAL_AXIS values
   // to the ATR enum value and sets 'this' to that value
   inline void axis_transformation::write_back_axis_array(const INDIVIDUAL_AXIS this_array[]) {
-    int bit5 = (bool)((int)this_array[2] & 2);
-    int bit4 = !((bool)((int)this_array[2] & 4) | (bool)((int)this_array[2] & 2));
-    int bit3 = (bool)((int)this_array[2] & 1);
+    int bit5 = ((int)this_array[2] & 2) != 0;
+    int bit4 = !((((int)this_array[2] & 4) != 0) | (((int)this_array[2] & 2) != 0));
+    int bit3 = ((int)this_array[2] & 1) != 0;
     //bit 2 is the tricky bit
-    int bit2 = (!(bit5 | bit4) & (bool)((int)this_array[0] & 2)) | //swap xy
+    int bit2 = ((!(bit5 | bit4)) & (((int)this_array[0] & 2) != 0)) | //swap xy
       (bit5 & (((int)this_array[0] & 4) >> 2)) | //z->y x->z
       (bit4 & (((int)this_array[1] & 4) >> 2));  //z->x y->z
     int bit1 = ((int)this_array[1] & 1);
@@ -242,7 +242,7 @@
   inline axis_transformation& 
   axis_transformation::set_directions(const direction_2d& horizontalDir,
                                       const direction_2d& verticalDir){
-    int bit2 = bool(static_cast<orientation_2d>(horizontalDir).to_int());
+    int bit2 = (static_cast<orientation_2d>(horizontalDir).to_int()) != 0;
     int bit1 = !(verticalDir.to_int() & 1);
     int bit0 = !(horizontalDir.to_int() & 1);
     atr_ = ATR((bit2 << 2) + (bit1 << 1) + bit0);
@@ -257,11 +257,11 @@
     int this_array[3] = {horizontalDir.to_int(),
                          verticalDir.to_int(),
                          proximalDir.to_int()};
-    int bit5 = (bool)(this_array[2] & 2);
-    int bit4 = !((bool)(this_array[2] & 4) | (bool)(this_array[2] & 2));
-    int bit3 = !(bool)(this_array[2] & 1);
+    int bit5 = (this_array[2] & 2) != 0;
+    int bit4 = !(((this_array[2] & 4) != 0) | ((this_array[2] & 2) != 0));
+    int bit3 = !((this_array[2] & 1) != 0);
     //bit 2 is the tricky bit
-    int bit2 = (!(bit5 | bit4) & (bool)(this_array[0] & 2)) | //swap xy
+    int bit2 = (!(bit5 | bit4) & ((this_array[0] & 2) != 0 )) | //swap xy
       (bit5 & ((this_array[0] & 4) >> 2)) | //z->y x->z
       (bit4 & ((this_array[1] & 4) >> 2));  //z->x y->z
     int bit1 = !(this_array[1] & 1);
@@ -276,36 +276,36 @@
   
   template <typename coordinate_type_2>
   inline void axis_transformation::transform(coordinate_type_2& x, coordinate_type_2& y) const {
-    int bit2 = (bool)(atr_ & 4);
-    int bit1 = (bool)(atr_ & 2);
-    int bit0 = (bool)(atr_ & 1);
+    int bit2 = (atr_ & 4) != 0;
+    int bit1 = (atr_ & 2) != 0;
+    int bit0 = (atr_ & 1) != 0;
     x *= -((bit0 << 1) - 1);
     y *= -((bit1 << 1) - 1);    
-    predicated_swap(bit2,x,y);
+    predicated_swap(bit2 != 0,x,y);
   }
   
   template <typename coordinate_type_2>
   inline void axis_transformation::transform(coordinate_type_2& x, coordinate_type_2& y, coordinate_type_2& z) const {
-    int bit5 = (bool)(atr_ & 32);
-    int bit4 = (bool)(atr_ & 16);
-    int bit3 = (bool)(atr_ & 8);
-    int bit2 = (bool)(atr_ & 4);
-    int bit1 = (bool)(atr_ & 2);
-    int bit0 = (bool)(atr_ & 1);
+    int bit5 = (atr_ & 32) != 0;
+    int bit4 = (atr_ & 16) != 0;
+    int bit3 = (atr_ & 8) != 0;
+    int bit2 = (atr_ & 4) != 0;
+    int bit1 = (atr_ & 2) != 0;
+    int bit0 = (atr_ & 1) != 0;
     x *= -((bit0 << 1) - 1);
     y *= -((bit1 << 1) - 1);    
     z *= -((bit3 << 1) - 1);
-    predicated_swap(bit2, x, y);
-    predicated_swap(bit5, y, z);
-    predicated_swap(bit4, x, z);
+    predicated_swap(bit2 != 0, x, y);
+    predicated_swap(bit5 != 0, y, z);
+    predicated_swap(bit4 != 0, x, z);
   }
   
   inline axis_transformation& axis_transformation::invert_2d() {
-    int bit2 = (bool)(atr_ & 4);
-    int bit1 = (bool)(atr_ & 2);
-    int bit0 = (bool)(atr_ & 1);
+    int bit2 = ((atr_ & 4) != 0);
+    int bit1 = ((atr_ & 2) != 0);
+    int bit0 = ((atr_ & 1) != 0);
     //swap bit 0 and bit 1 if bit2 is 1
-    predicated_swap(bit2, bit0, bit1);
+    predicated_swap(bit2 != 0, bit0, bit1);
     bit1 = bit1 << 1;
     atr_ = (ATR)(atr_ & (32+16+8+4)); //mask away bit0 and bit1
     atr_ = (ATR)(atr_ | bit0 | bit1);
@@ -318,16 +318,16 @@
   }
   
   inline axis_transformation& axis_transformation::invert() {
-    int bit5 = (bool)(atr_ & 32);
-    int bit4 = (bool)(atr_ & 16);    
-    int bit3 = (bool)(atr_ & 8);
-    int bit2 = (bool)(atr_ & 4);
-    int bit1 = (bool)(atr_ & 2);
-    int bit0 = (bool)(atr_ & 1);
-    predicated_swap(bit2, bit4, bit5);
-    predicated_swap(bit4, bit0, bit3);
-    predicated_swap(bit5, bit1, bit3);
-    predicated_swap(bit2, bit0, bit1);
+    int bit5 = ((atr_ & 32) != 0);
+    int bit4 = ((atr_ & 16) != 0);    
+    int bit3 = ((atr_ & 8) != 0);
+    int bit2 = ((atr_ & 4) != 0);
+    int bit1 = ((atr_ & 2) != 0);
+    int bit0 = ((atr_ & 1) != 0);
+    predicated_swap(bit2 != 0, bit4, bit5);
+    predicated_swap(bit4 != 0, bit0, bit3);
+    predicated_swap(bit5 != 0, bit1, bit3);
+    predicated_swap(bit2 != 0, bit0, bit1);
     atr_ = (ATR)((bit5 << 5) + 
                  (bit4 << 4) + 
                  (bit3 << 3) + 
Modified: sandbox/gtl/boost/polygon/gtl_boost_unit_test.cpp
==============================================================================
--- sandbox/gtl/boost/polygon/gtl_boost_unit_test.cpp	(original)
+++ sandbox/gtl/boost/polygon/gtl_boost_unit_test.cpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -7,6 +7,7 @@
 */
 #define BOOST_POLYGON_NO_DEPS
 #include <iostream>
+//#include <boost/polygon/polygon.hpp>
 #include "polygon.hpp"
 namespace gtl = boost::polygon;
 using namespace boost::polygon::operators;
@@ -179,10 +180,10 @@
 
   template <typename T>
   typename enable_if<typename is_polygon_90_set_type<T>::type, void>::type
-  print_is_polygon_90_set_concept(const T& t) { std::cout << "is polygon 90 set concept\n"; }
+  print_is_polygon_90_set_concept(const T& ) { std::cout << "is polygon 90 set concept\n"; }
   template <typename T>
   typename enable_if<typename is_mutable_polygon_90_set_type<T>::type, void>::type
-  print_is_mutable_polygon_90_set_concept(const T& t) { std::cout << "is mutable polygon 90 set concept\n"; }
+  print_is_mutable_polygon_90_set_concept(const T& ) { std::cout << "is mutable polygon 90 set concept\n"; }
 namespace boolean_op {
   //self contained unit test for BooleanOr algorithm
   template <typename Unit>
@@ -769,24 +770,39 @@
 
 bool testRectangle() {
   rectangle_data<int> rect, rect2;
+#ifdef BOOST_POLYGON_MSVC
+  horizontal(rect, interval_data<int>(0, 10));
+  vertical(rect, interval_data<int>(20, 30));
+#else
   horizontal(rect, interval_data<long long>(0, 10));
   vertical(rect, interval_data<long long>(20, 30));
+#endif
   xl(rect2, 0);
   xh(rect2, 10);
   yl(rect2, 20);
   yh(rect2, 30);
   if(euclidean_distance(rect, rect2) != 0) return false;
   if(euclidean_distance(rect2, rect) != 0) return false;
+#ifdef BOOST_POLYGON_MSVC
+  set(rect, HORIZONTAL, interval_data<int>(0, 10));
+  if(!equivalence(horizontal(rect), interval_data<int>(0, 10))) return false;
+  if(!equivalence(vertical(rect2), interval_data<int>(20, 30))) return false;
+#else
   set(rect, HORIZONTAL, interval_data<long long>(0, 10));
   if(!equivalence(horizontal(rect), interval_data<long long>(0, 10))) return false;
   if(!equivalence(vertical(rect2), interval_data<long long>(20, 30))) return false;
+#endif
   if(xl(rect) != 0) return false;
   if(xh(rect) != 10) return false;
   if(yl(rect) != 20) return false;
   if(yh(rect) != 30) return false;
   move(rect, HORIZONTAL, 10);
   if(xl(rect) != 10) return false;
+#ifdef BOOST_POLYGON_MSVC
+  set_points(rect, point_data<int>(0, 20), point_data<int>(10, 30));
+#else
   set_points(rect, point_data<int>(0, 20), point_data<long long>(10, 30));
+#endif
   if(xl(rect) != 0) return false;
   convolve(rect, rect2);
   if(xh(rect) != 20) return false;
@@ -795,7 +811,11 @@
   reflected_convolve(rect, rect2);
   reflected_deconvolve(rect, rect2);
   if(!equivalence(rect, rect2)) return false;
+#ifdef BOOST_POLYGON_MSVC
+  convolve(rect, point_data<int>(100, 200));
+#else
   convolve(rect, point_data<long long>(100, 200));
+#endif
   if(xh(rect) != 110) return false;
   deconvolve(rect, point_data<int>(100, 200));
   if(!equivalence(rect, rect2)) return false;
@@ -975,8 +995,8 @@
 typedef axis_transformation AxisTransform;
 typedef transformation<int> Transform;
 
-int getRandomBool() {
-  return rand()%2;
+bool getRandomBool() {
+  return rand()%2 != 0;
 }
 int getRandomInt() {
   return rand()%6-2;
@@ -1800,105 +1820,105 @@
     std::cout << polys[i] << std::endl;
 }
 
-void testHandFloat() {
-  using namespace gtl;
-  double handcoords[] = {
-12375, 11050, 13175, 10200, 15825, 9275, 18750, 8525, 24150, 8300, 27575, 8400, 31775, 7800,
-35975, 7200, 41375, 4800, 42575, 4200, 43175, 4200, 47375, 2400, 49175, 1800, 51150, 2200,
-52275, 2825, 52625, 4150, 52375, 4975, 51575, 6000, 49275, 6850, 45700, 7950, 43175, 9600,
-39575, 10800, 37775, 12000, 37775, 12600, 37775, 13800, 38975, 14400, 41375, 14400, 45575, 13200,
-48600, 13000, 51575, 13200, 55175, 12600, 58775, 12600, 61175, 13200, 62375, 14400, 62550, 15700,
-61975, 16875, 60775, 17600, 60100, 17675, 58525, 17675, 56150, 17575, 52175, 18000, 47975, 18600,
-45575, 19200, 44375, 19200, 42675, 19325, 41600, 19775, 41600, 20500, 42100, 20825, 44975, 20400,
-48575, 20400, 52775, 21000, 53975, 21000, 57575, 21000, 62375, 21000, 65450, 22000, 66300, 23100,
-66100, 24550, 64750, 25925, 62975, 26400, 61175, 26400, 58775, 26400, 56025, 26050, 53450, 26025,
-50975, 26400, 48575, 26400, 46775, 26400, 43650, 26075, 41375, 26400, 40775, 27000, 40775, 27600,
-42225, 28650, 44375, 29400, 48575, 30000, 50975, 31200, 53975, 31800, 58775, 33000, 61200, 34300,
-62375, 35400, 62375, 37200, 61175, 38400, 60000, 38700, 57575, 38400, 54550, 37575, 50975, 36600,
-49075, 36125, 47750, 36125, 45700, 35425, 42350, 34350, 38900, 33775, 30575, 33000, 26975, 33600,
-25975, 34900, 26375, 36600, 28175, 38400, 30575, 40800, 32375, 43800, 33200, 46200, 33200, 48000,
-32650, 49300, 31425, 50000, 29950, 50125, 28825, 49375, 27575, 48000, 25825, 46000, 23975, 44100,
-22175, 42600, 19775, 39600, 17325, 37300, 14975, 34800, 13175, 31800, 10775, 29400, 9600, 27400,
-10175, 27000, 11375, 27600, 12575, 28800, 14375, 31800, 16175, 34800, 18575, 37200, 21575, 39000,
-22775, 40200, 23975, 41400, 24575, 42600, 26375, 44400, 28325, 46000, 29850, 46775, 31175, 46200,
-31550, 44575, 30575, 43200, 28775, 40800, 25775, 38400, 24575, 34800, 24750, 33175, 26975, 31800,
-29975, 31800, 33575, 31800, 37775, 32400, 39575, 33000, 41975, 33600, 45150, 34175, 46975, 34750,
-48575, 35400, 50975, 35400, 51575, 34800, 51875, 33725, 50775, 32575, 48575, 31800, 45750, 30875,
-43775, 30600, 41375, 29400, 38975, 28800, 35975, 28200, 34775, 27600, 34175, 27000, 34775, 25800,
-37175, 25200, 40175, 25200, 43175, 25200, 46775, 25200, 50975, 25425, 53375, 25200, 55175, 24600,
-55525, 23450, 53975, 22200, 52775, 22200, 49075, 21850, 45950, 21925, 40775, 21600, 37775, 21600,
-35150, 21350, 34325, 20950, 34175, 19800, 35975, 19200, 38375, 19200, 40750, 18900, 42575, 18600,
-44375, 18000, 47975, 17400, 50375, 17125, 52025, 16625, 52775, 15600, 52100, 14625, 49675, 14125,
-48625, 14125, 46775, 14400, 44375, 15000, 41375, 15150, 37700, 15275, 34775, 15600, 32850, 15925,
-31775, 15600, 31425, 14875, 32375, 13800, 36575, 11400, 38975, 10200, 41375, 9000, 43075, 8150,
-43650, 7200, 43325, 6250, 42225, 5825, 40800, 6275, 38900, 6925, 35375, 8400, 32375, 10200,
-27575, 11400, 22775, 12600, 19775, 13225, 16775, 13800, 14975, 14400, 13050, 14000, 11975, 12600,
-    0, 0 };
-  std::vector<point_data<double> > handpoints;
-  for(unsigned int i = 0; i < 100000; i += 2) {
-    point_data<double>  pt(handcoords[i], handcoords[i+1]);
-    if(pt == point_data<double> (0, 0)) break;
-    handpoints.push_back(pt);
-  }
-  polygon_data<double> handpoly;
-  handpoly.set(handpoints.begin(), handpoints.end());
-  double spiralcoords [] = {
-37200, 3600, 42075, 4025, 47475, 5875, 51000, 7800, 55800, 12300, 59000, 17075, 60000, 20400,
-61200, 25800, 61200, 29400, 60600, 33600, 58800, 38400, 55800, 42600, 53200, 45625,
-49200, 48600, 43200, 51000, 35400, 51600, 29400, 50400, 23400, 47400, 19200, 43800,
-16200, 39600, 14400, 35400, 13200, 29400, 13200, 24000, 15000, 18600, 17400, 13800,
-20525, 10300, 24600, 7200, 29400, 4800, 32450, 4000, 34825, 3675, 35625, 3625,
-35825, 7275, 39600, 7200, 43800, 8400, 46800, 9600, 50400, 12000, 53400, 15000,
-55800, 18600, 57000, 23400, 57600, 27000, 57000, 32400, 55200, 37200, 52200, 41400,
-48000, 45000, 42000, 47400, 35400, 48000, 30000, 46800, 24600, 43800, 20325, 39100,
-17850, 34275, 16800, 27600, 17400, 22200, 20400, 16200, 24600, 11400, 28800, 9000,
-32400, 7800, 33200, 7575, 33925, 11050, 35400, 10800, 37200, 10800, 41400, 11400,
-46200, 13200, 49800, 16200, 51600, 19200, 53400, 23400, 54000, 29400, 52800, 33600,
-49800, 39000, 45000, 42600, 39000, 44400, 33600, 43800, 28200, 42000, 24000, 37800,
-21000, 33000, 20400, 26400, 21600, 21000, 24600, 16200, 28200, 13200, 31875, 11625,
-33200, 15625, 36000, 15000, 39000, 15000, 43800, 16800, 46800, 19200, 49200, 23400,
-49800, 27600, 48750, 32700, 46350, 36275, 42600, 39000, 38400, 40200, 31800, 39000,
-28200, 36600, 25200, 31200, 24600, 26400, 26025, 21800, 28200, 18600, 30600, 16800,
-32575, 19875, 34200, 19200, 36000, 18600, 37200, 18600, 40375, 19125, 43200, 21000,
-45600, 24000, 46200, 27600, 45600, 30600, 43800, 33600, 41475, 35625, 37800, 36600,
-33600, 36000, 30000, 33600, 28200, 28800, 28800, 24600, 30000, 22200, 31200, 23400,
-30600, 25200, 30000, 27000, 30600, 30000, 31800, 32400, 34200, 34200, 38400, 34800,
-41400, 33000, 44025, 30225, 44400, 26400, 43200, 23400, 40900, 21200, 37800, 20400,
-34950, 20675, 32400, 22200, 30175, 19475, 28425, 21300, 27000, 24000, 26400, 27600,
-27000, 31800, 31200, 36600, 36600, 38400, 42600, 37200, 46200, 33600, 48000, 30000,
-47650, 24425, 45600, 20400, 42650, 18200, 39000, 16800, 35400, 16800, 33600, 17400,
-32875, 17675, 31100, 13850, 28200, 15600, 25200, 18600, 22800, 22800, 22200, 27000,
-23400, 33600, 26400, 38400, 31675, 41575, 37800, 42600, 40850, 42150, 42800, 41550,
-47050, 39025, 50100, 35375, 52200, 29400, 51675, 23950, 49800, 19200, 46200, 15600,
-41400, 13200, 37800, 12600, 35025, 12750, 33350, 13050, 32400, 9600, 30025, 10325,
-25925, 12725, 22200, 16800, 19800, 21000, 18600, 25800, 18600, 30000, 20400, 35400,
-22575, 39250, 25225, 41825, 28200, 43800, 33600, 46200, 39000, 46200, 44400, 45000,
-48650, 42350, 52800, 37800, 55200, 32400, 55800, 26400, 54600, 21000, 53400, 18000,
-50400, 14400, 47400, 12000, 42600, 9600, 39000, 9000, 36000, 9000, 34775, 9125,
-34300, 5600, 30000, 6600, 25800, 8400, 22025, 11350, 18725, 15125, 16200, 20400,
-15000, 24600, 15000, 30600, 16800, 36600, 20400, 42600, 25800, 46800, 31200, 49200,
-38400, 49800, 45000, 48600, 51000, 45000, 55475, 40225, 58200, 34800, 59400, 30000,
-59400, 25200, 58200, 19800, 55200, 14400, 52225, 11150, 47400, 7800, 44175, 6500,
-40200, 5400, 38400, 5400, 37200, 5400, 0, 0 };
-  std::vector<point_data<double> > spiralpoints;
-  for(unsigned int i = 0; i < 100000; i += 2) {
-    point_data<double>  pt(spiralcoords[i], spiralcoords[i+1]);
-    if(pt == point_data<double> (0, 0)) break;
-    spiralpoints.push_back(pt);
-  }
-  polygon_data<double> spiralpoly;
-  spiralpoly.set(spiralpoints.begin(), spiralpoints.end());
-  polygon_set_data<double> handset;
-  handset += handpoly;
-  polygon_set_data<double> spiralset;
-  spiralset += spiralpoly;
-  polygon_set_data<double> xorset = handset ^ spiralset;
-  std::vector<polygon_data<double> > polys;
-  polys += xorset;
-  std::cout << polys.size() << std::endl;
-  for(unsigned int i = 0; i < polys.size(); ++i)
-    std::cout << polys[i] << std::endl;
-}
+//void testHandFloat() {
+//  using namespace gtl;
+//  double handcoords[] = {
+//12375, 11050, 13175, 10200, 15825, 9275, 18750, 8525, 24150, 8300, 27575, 8400, 31775, 7800,
+//35975, 7200, 41375, 4800, 42575, 4200, 43175, 4200, 47375, 2400, 49175, 1800, 51150, 2200,
+//52275, 2825, 52625, 4150, 52375, 4975, 51575, 6000, 49275, 6850, 45700, 7950, 43175, 9600,
+//39575, 10800, 37775, 12000, 37775, 12600, 37775, 13800, 38975, 14400, 41375, 14400, 45575, 13200,
+//48600, 13000, 51575, 13200, 55175, 12600, 58775, 12600, 61175, 13200, 62375, 14400, 62550, 15700,
+//61975, 16875, 60775, 17600, 60100, 17675, 58525, 17675, 56150, 17575, 52175, 18000, 47975, 18600,
+//45575, 19200, 44375, 19200, 42675, 19325, 41600, 19775, 41600, 20500, 42100, 20825, 44975, 20400,
+//48575, 20400, 52775, 21000, 53975, 21000, 57575, 21000, 62375, 21000, 65450, 22000, 66300, 23100,
+//66100, 24550, 64750, 25925, 62975, 26400, 61175, 26400, 58775, 26400, 56025, 26050, 53450, 26025,
+//50975, 26400, 48575, 26400, 46775, 26400, 43650, 26075, 41375, 26400, 40775, 27000, 40775, 27600,
+//42225, 28650, 44375, 29400, 48575, 30000, 50975, 31200, 53975, 31800, 58775, 33000, 61200, 34300,
+//62375, 35400, 62375, 37200, 61175, 38400, 60000, 38700, 57575, 38400, 54550, 37575, 50975, 36600,
+//49075, 36125, 47750, 36125, 45700, 35425, 42350, 34350, 38900, 33775, 30575, 33000, 26975, 33600,
+//25975, 34900, 26375, 36600, 28175, 38400, 30575, 40800, 32375, 43800, 33200, 46200, 33200, 48000,
+//32650, 49300, 31425, 50000, 29950, 50125, 28825, 49375, 27575, 48000, 25825, 46000, 23975, 44100,
+//22175, 42600, 19775, 39600, 17325, 37300, 14975, 34800, 13175, 31800, 10775, 29400, 9600, 27400,
+//10175, 27000, 11375, 27600, 12575, 28800, 14375, 31800, 16175, 34800, 18575, 37200, 21575, 39000,
+//22775, 40200, 23975, 41400, 24575, 42600, 26375, 44400, 28325, 46000, 29850, 46775, 31175, 46200,
+//31550, 44575, 30575, 43200, 28775, 40800, 25775, 38400, 24575, 34800, 24750, 33175, 26975, 31800,
+//29975, 31800, 33575, 31800, 37775, 32400, 39575, 33000, 41975, 33600, 45150, 34175, 46975, 34750,
+//48575, 35400, 50975, 35400, 51575, 34800, 51875, 33725, 50775, 32575, 48575, 31800, 45750, 30875,
+//43775, 30600, 41375, 29400, 38975, 28800, 35975, 28200, 34775, 27600, 34175, 27000, 34775, 25800,
+//37175, 25200, 40175, 25200, 43175, 25200, 46775, 25200, 50975, 25425, 53375, 25200, 55175, 24600,
+//55525, 23450, 53975, 22200, 52775, 22200, 49075, 21850, 45950, 21925, 40775, 21600, 37775, 21600,
+//35150, 21350, 34325, 20950, 34175, 19800, 35975, 19200, 38375, 19200, 40750, 18900, 42575, 18600,
+//44375, 18000, 47975, 17400, 50375, 17125, 52025, 16625, 52775, 15600, 52100, 14625, 49675, 14125,
+//48625, 14125, 46775, 14400, 44375, 15000, 41375, 15150, 37700, 15275, 34775, 15600, 32850, 15925,
+//31775, 15600, 31425, 14875, 32375, 13800, 36575, 11400, 38975, 10200, 41375, 9000, 43075, 8150,
+//43650, 7200, 43325, 6250, 42225, 5825, 40800, 6275, 38900, 6925, 35375, 8400, 32375, 10200,
+//27575, 11400, 22775, 12600, 19775, 13225, 16775, 13800, 14975, 14400, 13050, 14000, 11975, 12600,
+//    0, 0 };
+//  std::vector<point_data<double> > handpoints;
+//  for(unsigned int i = 0; i < 100000; i += 2) {
+//    point_data<double>  pt(handcoords[i], handcoords[i+1]);
+//    if(pt == point_data<double> (0, 0)) break;
+//    handpoints.push_back(pt);
+//  }
+//  polygon_data<double> handpoly;
+//  handpoly.set(handpoints.begin(), handpoints.end());
+//  double spiralcoords [] = {
+//37200, 3600, 42075, 4025, 47475, 5875, 51000, 7800, 55800, 12300, 59000, 17075, 60000, 20400,
+//61200, 25800, 61200, 29400, 60600, 33600, 58800, 38400, 55800, 42600, 53200, 45625,
+//49200, 48600, 43200, 51000, 35400, 51600, 29400, 50400, 23400, 47400, 19200, 43800,
+//16200, 39600, 14400, 35400, 13200, 29400, 13200, 24000, 15000, 18600, 17400, 13800,
+//20525, 10300, 24600, 7200, 29400, 4800, 32450, 4000, 34825, 3675, 35625, 3625,
+//35825, 7275, 39600, 7200, 43800, 8400, 46800, 9600, 50400, 12000, 53400, 15000,
+//55800, 18600, 57000, 23400, 57600, 27000, 57000, 32400, 55200, 37200, 52200, 41400,
+//48000, 45000, 42000, 47400, 35400, 48000, 30000, 46800, 24600, 43800, 20325, 39100,
+//17850, 34275, 16800, 27600, 17400, 22200, 20400, 16200, 24600, 11400, 28800, 9000,
+//32400, 7800, 33200, 7575, 33925, 11050, 35400, 10800, 37200, 10800, 41400, 11400,
+//46200, 13200, 49800, 16200, 51600, 19200, 53400, 23400, 54000, 29400, 52800, 33600,
+//49800, 39000, 45000, 42600, 39000, 44400, 33600, 43800, 28200, 42000, 24000, 37800,
+//21000, 33000, 20400, 26400, 21600, 21000, 24600, 16200, 28200, 13200, 31875, 11625,
+//33200, 15625, 36000, 15000, 39000, 15000, 43800, 16800, 46800, 19200, 49200, 23400,
+//49800, 27600, 48750, 32700, 46350, 36275, 42600, 39000, 38400, 40200, 31800, 39000,
+//28200, 36600, 25200, 31200, 24600, 26400, 26025, 21800, 28200, 18600, 30600, 16800,
+//32575, 19875, 34200, 19200, 36000, 18600, 37200, 18600, 40375, 19125, 43200, 21000,
+//45600, 24000, 46200, 27600, 45600, 30600, 43800, 33600, 41475, 35625, 37800, 36600,
+//33600, 36000, 30000, 33600, 28200, 28800, 28800, 24600, 30000, 22200, 31200, 23400,
+//30600, 25200, 30000, 27000, 30600, 30000, 31800, 32400, 34200, 34200, 38400, 34800,
+//41400, 33000, 44025, 30225, 44400, 26400, 43200, 23400, 40900, 21200, 37800, 20400,
+//34950, 20675, 32400, 22200, 30175, 19475, 28425, 21300, 27000, 24000, 26400, 27600,
+//27000, 31800, 31200, 36600, 36600, 38400, 42600, 37200, 46200, 33600, 48000, 30000,
+//47650, 24425, 45600, 20400, 42650, 18200, 39000, 16800, 35400, 16800, 33600, 17400,
+//32875, 17675, 31100, 13850, 28200, 15600, 25200, 18600, 22800, 22800, 22200, 27000,
+//23400, 33600, 26400, 38400, 31675, 41575, 37800, 42600, 40850, 42150, 42800, 41550,
+//47050, 39025, 50100, 35375, 52200, 29400, 51675, 23950, 49800, 19200, 46200, 15600,
+//41400, 13200, 37800, 12600, 35025, 12750, 33350, 13050, 32400, 9600, 30025, 10325,
+//25925, 12725, 22200, 16800, 19800, 21000, 18600, 25800, 18600, 30000, 20400, 35400,
+//22575, 39250, 25225, 41825, 28200, 43800, 33600, 46200, 39000, 46200, 44400, 45000,
+//48650, 42350, 52800, 37800, 55200, 32400, 55800, 26400, 54600, 21000, 53400, 18000,
+//50400, 14400, 47400, 12000, 42600, 9600, 39000, 9000, 36000, 9000, 34775, 9125,
+//34300, 5600, 30000, 6600, 25800, 8400, 22025, 11350, 18725, 15125, 16200, 20400,
+//15000, 24600, 15000, 30600, 16800, 36600, 20400, 42600, 25800, 46800, 31200, 49200,
+//38400, 49800, 45000, 48600, 51000, 45000, 55475, 40225, 58200, 34800, 59400, 30000,
+//59400, 25200, 58200, 19800, 55200, 14400, 52225, 11150, 47400, 7800, 44175, 6500,
+//40200, 5400, 38400, 5400, 37200, 5400, 0, 0 };
+//  std::vector<point_data<double> > spiralpoints;
+//  for(unsigned int i = 0; i < 100000; i += 2) {
+//    point_data<double>  pt(spiralcoords[i], spiralcoords[i+1]);
+//    if(pt == point_data<double> (0, 0)) break;
+//    spiralpoints.push_back(pt);
+//  }
+//  polygon_data<double> spiralpoly;
+//  spiralpoly.set(spiralpoints.begin(), spiralpoints.end());
+//  polygon_set_data<double> handset;
+//  handset += handpoly;
+//  polygon_set_data<double> spiralset;
+//  spiralset += spiralpoly;
+//  polygon_set_data<double> xorset = handset ^ spiralset;
+//  std::vector<polygon_data<double> > polys;
+//  polys += xorset;
+//  std::cout << polys.size() << std::endl;
+//  for(unsigned int i = 0; i < polys.size(); ++i)
+//    std::cout << polys[i] << std::endl;
+//}
 
 bool testDirectionalSize() {
   {
@@ -2229,7 +2249,7 @@
   //max_cover_stress_test(); //does not include functional testing
   if(!testDirectionalSize()) return 1;
   testHand();
-  testHandFloat();
+  //testHandFloat();
   if(!testpip()) return 1;
   {
     PolygonSet ps;
Modified: sandbox/gtl/boost/polygon/interval_concept.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/interval_concept.hpp	(original)
+++ sandbox/gtl/boost/polygon/interval_concept.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -242,10 +242,11 @@
        typename interval_difference_type<interval_type>::type displacement,
        typename enable_if<typename is_mutable_interval_concept<typename geometry_concept<interval_type>::type>::type>::type * = 0
        ) {
-    typedef typename coordinate_traits<typename interval_traits<interval_type>::coordinate_type>::coordinate_difference Unit;
+    typedef typename interval_traits<interval_type>::coordinate_type ctype;
+    typedef typename coordinate_traits<ctype>::coordinate_difference Unit;
     Unit len = delta(interval);
-    low(interval, (Unit)low(interval) + displacement);
-    high(interval, (Unit)low(interval) + len);
+    low(interval, static_cast<ctype>(static_cast<Unit>(low(interval)) + displacement));
+    high(interval, static_cast<ctype>(static_cast<Unit>(low(interval)) + len));
     return interval;
   }
   
Modified: sandbox/gtl/boost/polygon/interval_data.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/interval_data.hpp	(original)
+++ sandbox/gtl/boost/polygon/interval_data.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -13,11 +13,23 @@
   class interval_data {
   public:
     typedef T coordinate_type;
-    inline interval_data():coords_(){} 
-    inline interval_data(coordinate_type low, coordinate_type high):coords_() {
+    inline interval_data()
+#ifndef BOOST_POLYGON_MSVC 
+      :coords_() 
+#endif 
+    {} 
+    inline interval_data(coordinate_type low, coordinate_type high)
+#ifndef BOOST_POLYGON_MSVC 
+      :coords_() 
+#endif 
+    {
       coords_[LOW] = low; coords_[HIGH] = high; 
     }
-    inline interval_data(const interval_data& that):coords_() {
+    inline interval_data(const interval_data& that)
+#ifndef BOOST_POLYGON_MSVC 
+      :coords_() 
+#endif 
+    {
       (*this) = that; 
     }
     inline interval_data& operator=(const interval_data& that) {
Modified: sandbox/gtl/boost/polygon/isotropy.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/isotropy.hpp	(original)
+++ sandbox/gtl/boost/polygon/isotropy.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -28,7 +28,7 @@
 
 #include <boost/config.hpp> 
 #ifdef BOOST_MSVC
-#define BOOST_POLYGON_WIN32
+#define BOOST_POLYGON_MSVC
 #endif
 #ifdef BOOST_INTEL
 #define BOOST_POLYGON_ICC
@@ -47,7 +47,7 @@
 #else
 
 #ifdef WIN32
-#define BOOST_POLYGON_WIN32
+#define BOOST_POLYGON_MSVC
 #endif
 #ifdef __ICC
 #define BOOST_POLYGON_ICC
Modified: sandbox/gtl/boost/polygon/point_3d_data.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/point_3d_data.hpp	(original)
+++ sandbox/gtl/boost/polygon/point_3d_data.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -15,7 +15,11 @@
     inline point_3d_data():coords_(){} 
     inline point_3d_data(coordinate_type x, coordinate_type y):coords_() {
       coords_[HORIZONTAL] = x; coords_[VERTICAL] = y; coords_[PROXIMAL] = 0; }
-    inline point_3d_data(coordinate_type x, coordinate_type y, coordinate_type z):coords_() {
+    inline point_3d_data(coordinate_type x, coordinate_type y, coordinate_type z)
+#ifndef BOOST_POLYGON_MSVC
+      :coords_()
+#endif
+    {
       coords_[HORIZONTAL] = x; coords_[VERTICAL] = y; coords_[PROXIMAL] = z; }
     inline point_3d_data(const point_3d_data& that):coords_() { (*this) = that; }
     inline point_3d_data& operator=(const point_3d_data& that) {
Modified: sandbox/gtl/boost/polygon/point_data.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/point_data.hpp	(original)
+++ sandbox/gtl/boost/polygon/point_data.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -16,11 +16,23 @@
   class point_data {
   public:
     typedef T coordinate_type;
-    inline point_data():coords_(){} 
-    inline point_data(coordinate_type x, coordinate_type y):coords_() {
+    inline point_data()
+#ifndef BOOST_POLYGON_MSVC
+      :coords_()  
+#endif
+    {} 
+    inline point_data(coordinate_type x, coordinate_type y)
+#ifndef BOOST_POLYGON_MSVC
+      :coords_()  
+#endif
+    {
       coords_[HORIZONTAL] = x; coords_[VERTICAL] = y; 
     }
-    inline point_data(const point_data& that):coords_() { (*this) = that; }
+    inline point_data(const point_data& that)
+#ifndef BOOST_POLYGON_MSVC
+      :coords_() 
+#endif
+    { (*this) = that; }
     inline point_data& operator=(const point_data& that) {
       coords_[0] = that.coords_[0]; coords_[1] = that.coords_[1]; return *this; 
     }
Modified: sandbox/gtl/boost/polygon/polygon_45_set_concept.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_45_set_concept.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_45_set_concept.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -197,7 +197,7 @@
                        polygon_set_type>::type &
   bloat(polygon_set_type& polygon_set, 
         typename coordinate_traits<typename polygon_45_set_traits<polygon_set_type>::coordinate_type>::unsigned_area_type bloating) {
-    return resize(polygon_set, bloating);
+    return resize(polygon_set, static_cast<typename polygon_45_set_traits<polygon_set_type>::coordinate_type>(bloating));
   }
 
   template <typename polygon_set_type>
Modified: sandbox/gtl/boost/polygon/polygon_45_set_data.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_45_set_data.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_45_set_data.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -18,7 +18,7 @@
   enum CornerOption { INTERSECTION = 0, ORTHOGONAL = 1, UNFILLED = 2 };
 
   template <typename ltype, typename rtype, int op_type>
-  struct polygon_45_set_view;
+  class polygon_45_set_view;
   
   struct polygon_45_set_concept {};
 
@@ -131,16 +131,20 @@
             itr != polygon_set.end(); ++itr) {
           Vertex45Compact vertex_45(point_data<Unit>((*itr).first, (*itr).second.first), 2, (*itr).second.second);
           vertex_45.count[1] = (*itr).second.second;
-          insert_clean(vertex_45);
+          if(is_hole) vertex_45.count[1] *= - 1;
+          insert_clean(vertex_45, is_hole);
         }
       } else {
         for(typename polygon_90_set_data<coordinate_type_2>::iterator_type itr = polygon_set.begin();
             itr != polygon_set.end(); ++itr) {
           Vertex45Compact vertex_45(point_data<Unit>((*itr).second.first, (*itr).first), 2, (*itr).second.second);
           vertex_45.count[1] = (*itr).second.second;
-          insert_clean(vertex_45);
+          if(is_hole) vertex_45.count[1] *= - 1;
+          insert_clean(vertex_45, is_hole);
         }
       }
+      dirty_ = true;
+      unsorted_ = true;
     }
 
     template <typename output_container>
@@ -361,7 +365,7 @@
       get_fracture(output, false, tag);
     }
     template <typename output_container, typename concept_type>
-    void get_fracture(output_container& container, bool fracture_holes, concept_type tag) const {
+    void get_fracture(output_container& container, bool fracture_holes, concept_type ) const {
       clean();
       typename polygon_45_formation<Unit>::Polygon45Formation pf(fracture_holes);
       //std::cout << "FORMING POLYGONS\n";
@@ -369,17 +373,17 @@
     }
 
     template <typename geometry_type>
-    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, undefined_concept tag) {
+    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, undefined_concept) {
       insert(geometry_object.begin(), geometry_object.end(), is_hole);
     }
     template <typename geometry_type>
     void insert_dispatch(const geometry_type& geometry_object, bool is_hole, rectangle_concept tag); 
     template <typename geometry_type>
-    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_90_concept tag) {
+    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_90_concept ) {
       insert_vertex_sequence(begin_points(geometry_object), end_points(geometry_object), winding(geometry_object), is_hole);
     }
     template <typename geometry_type>
-    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_90_with_holes_concept tag) {
+    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_90_with_holes_concept ) {
       insert_vertex_sequence(begin_points(geometry_object), end_points(geometry_object), winding(geometry_object), is_hole);
       for(typename polygon_with_holes_traits<geometry_type>::iterator_holes_type itr =
             begin_holes(geometry_object); itr != end_holes(geometry_object);
@@ -388,11 +392,11 @@
       }
     }
     template <typename geometry_type>
-    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_45_concept tag) {
+    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_45_concept ) {
       insert_vertex_sequence(begin_points(geometry_object), end_points(geometry_object), winding(geometry_object), is_hole);
     }
     template <typename geometry_type>
-    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_45_with_holes_concept tag) {
+    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_45_with_holes_concept ) {
       insert_vertex_sequence(begin_points(geometry_object), end_points(geometry_object), winding(geometry_object), is_hole);
       for(typename polygon_with_holes_traits<geometry_type>::iterator_holes_type itr =
             begin_holes(geometry_object); itr != end_holes(geometry_object);
@@ -401,13 +405,13 @@
       }
     }
     template <typename geometry_type>
-    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_45_set_concept tag) {
+    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_45_set_concept ) {
       polygon_45_set_data ps;
       assign(ps, geometry_object);
       insert(ps, is_hole);
     }
     template <typename geometry_type>
-    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_90_set_concept tag) {
+    void insert_dispatch(const geometry_type& geometry_object, bool is_hole, polygon_90_set_concept ) {
       std::list<polygon_90_data<coordinate_type> > pl;
       assign(pl, geometry_object);
       insert(pl.begin(), pl.end(), is_hole);
@@ -443,14 +447,14 @@
     typedef polygon_45_set_concept type;
   };
  
-  template <typename iT>
-  void scale_up_vertex_45_compact_range(iT beginr, iT endr, unsigned int factor) {
+  template <typename iT, typename T>
+  void scale_up_vertex_45_compact_range(iT beginr, iT endr, T factor) {
     for( ; beginr != endr; ++beginr) {
       scale_up((*beginr).pt, factor);
     }
   }
-  template <typename iT>
-  void scale_down_vertex_45_compact_range_blindly(iT beginr, iT endr, unsigned int factor) {
+  template <typename iT, typename T>
+  void scale_down_vertex_45_compact_range_blindly(iT beginr, iT endr, T factor) {
     for( ; beginr != endr; ++beginr) {
       scale_down((*beginr).pt, factor);
     }
@@ -578,7 +582,8 @@
         itr != polygon_set.end(); ++itr) {
       const typename polygon_45_set_data<coord_type>::Vertex45Compact& v = *itr;
       typename polygon_45_set_data<Unit>::Vertex45Compact v2;
-      assign(v2.pt, v.pt);
+      v2.pt.x(static_cast<Unit>(v.pt.x()));
+      v2.pt.y(static_cast<Unit>(v.pt.y()));
       v2.count = typename polygon_45_formation<Unit>::Vertex45Count(v.count[0], v.count[1], v.count[2], v.count[3]);
       data_.push_back(v2);
     }
@@ -588,7 +593,8 @@
         itr != tmp.end(); ++itr) {
       const typename polygon_45_set_data<coord_type>::Vertex45Compact& v = *itr;
       typename polygon_45_set_data<Unit>::Vertex45Compact v2;
-      assign(v2.pt, v.pt);
+      v2.pt.x(static_cast<Unit>(v.pt.x()));
+      v2.pt.y(static_cast<Unit>(v.pt.y()));
       v2.count = typename polygon_45_formation<Unit>::Vertex45Count(v.count[0], v.count[1], v.count[2], v.count[3]);
       error_data_.push_back(v2);
     }
@@ -618,7 +624,7 @@
   template <typename Unit>
   template <typename geometry_type>
   inline void polygon_45_set_data<Unit>::insert_dispatch(const geometry_type& geometry_object, 
-                                                         bool is_hole, rectangle_concept tag) {
+                                                         bool is_hole, rectangle_concept ) {
     dirty_ = true;
     unsorted_ = true;
     insert_rectangle_into_vector_45(data_, geometry_object, is_hole);
@@ -1084,7 +1090,7 @@
                                                          coordinate_type resizing, 
                                                          RoundingOption rounding,
                                                          CornerOption corner,
-                                                         bool hole, polygon_45_concept tag) {
+                                                         bool hole, polygon_45_concept ) {
     direction_1d wdir = winding(poly);
     int multiplier = wdir == LOW ? -1 : 1;
     if(hole) resizing *= -1; 
@@ -1138,7 +1144,7 @@
                                                          coordinate_type resizing, 
                                                          RoundingOption rounding,
                                                          CornerOption corner, 
-                                                         bool hole, polygon_45_with_holes_concept tag) {
+                                                         bool hole, polygon_45_with_holes_concept ) {
     insert_with_resize_dispatch(poly, resizing, rounding, corner, hole, polygon_45_concept());
     for(typename polygon_with_holes_traits<geometry_type>::iterator_holes_type itr =
           begin_holes(poly); itr != end_holes(poly);
@@ -1488,7 +1494,7 @@
           continue;
         }
       }
-      if(abs(x(pt2)) % 2) { //y % 2 should also be odd
+      if(local_abs(x(pt2)) % 2) { //y % 2 should also be odd
         //is corner concave or convex?
         Point pts[] = {pt1, pt2, pt3};
         double ar = point_sequence_area<Point*, double>(pts, pts+3);
@@ -1538,6 +1544,9 @@
       }
       l90sd.sort();
       r90sd.sort();
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
       if(op == 0) {
         output.applyBooleanBinaryOp(l90sd.begin(), l90sd.end(),
                                     r90sd.begin(), r90sd.end(), boolean_op::BinaryCount<boolean_op::BinaryOr>()); 
@@ -1551,6 +1560,9 @@
         output.applyBooleanBinaryOp(l90sd.begin(), l90sd.end(),
                                     r90sd.begin(), r90sd.end(), boolean_op::BinaryCount<boolean_op::BinaryXor>()); 
       }
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
       result.data_.clear();
       result.insert(output);
       result.is_manhattan_ = true;
@@ -1615,7 +1627,8 @@
             for(std::size_t i = 0 ; i < error_data_out.size(); ++i) {
               const Vertex45Compact2& vi = error_data_out[i];
               Vertex45Compact ci;
-              ci.pt = (point_data<Unit2>(x(vi.pt), y(vi.pt)));
+              ci.pt.x(static_cast<Unit>(x(vi.pt)));
+              ci.pt.y(static_cast<Unit>(y(vi.pt)));
               ci.count = typename polygon_45_formation<Unit>::Vertex45Count
               ( vi.count[0], vi.count[1], vi.count[2], vi.count[3]);
               result.error_data_.push_back(ci);
@@ -1630,7 +1643,8 @@
           for(std::size_t i = 0 ; i < result_data.size(); ++i) {
             const Vertex45Compact2& vi = result_data[i];
             Vertex45Compact ci;
-            ci.pt = (point_data<Unit2>(x(vi.pt), y(vi.pt)));
+            ci.pt.x(static_cast<Unit>(x(vi.pt)));
+            ci.pt.y(static_cast<Unit>(y(vi.pt)));
             ci.count = typename polygon_45_formation<Unit>::Vertex45Count
               ( vi.count[0], vi.count[1], vi.count[2], vi.count[3]);
             result.data_.push_back(ci);
@@ -1657,6 +1671,9 @@
         l90sd.insert(std::make_pair((*itr).pt.x(), std::make_pair((*itr).pt.y(), (*itr).count[3])), false, VERTICAL);
       }
       l90sd.sort();
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (disable: 4127)
+#endif
       if(op == 0) {
         l90sd.clean();
       } else if (op == 1) {
@@ -1664,6 +1681,9 @@
       } else if (op == 3) {
         l90sd.self_xor();
       }
+#ifdef BOOST_POLYGON_MSVC
+#pragma warning (default: 4127)
+#endif
       result.data_.clear();
       result.insert(l90sd);
       result.is_manhattan_ = true;
@@ -1685,7 +1705,8 @@
           for(std::size_t i = 0 ; i < data_.size(); ++i) {
             const Vertex45Compact& vi = data_[i];
             Vertex45Compact2 ci; 
-            ci.pt = point_data<Unit2>(x(vi.pt), y(vi.pt));
+            ci.pt.x(static_cast<Unit>(x(vi.pt)));
+            ci.pt.y(static_cast<Unit>(y(vi.pt)));
             ci.count = typename polygon_45_formation<Unit2>::Vertex45Count
               ( vi.count[0], vi.count[1], vi.count[2], vi.count[3]);
             lvalue_data.push_back(ci);
@@ -1716,7 +1737,8 @@
             for(std::size_t i = 0 ; i < error_data_out.size(); ++i) {
               const Vertex45Compact2& vi = error_data_out[i];
               Vertex45Compact ci;
-              ci.pt = (point_data<Unit2>(x(vi.pt), y(vi.pt)));
+              ci.pt.x(static_cast<Unit>(x(vi.pt)));
+              ci.pt.y(static_cast<Unit>(y(vi.pt)));
               ci.count = typename polygon_45_formation<Unit>::Vertex45Count
               ( vi.count[0], vi.count[1], vi.count[2], vi.count[3]);
               result.error_data_.push_back(ci);
@@ -1731,7 +1753,8 @@
           for(std::size_t i = 0 ; i < result_data.size(); ++i) {
             const Vertex45Compact2& vi = result_data[i];
             Vertex45Compact ci;
-            ci.pt = (point_data<Unit2>(x(vi.pt), y(vi.pt)));
+            ci.pt.x(static_cast<Unit>(x(vi.pt)));
+            ci.pt.y(static_cast<Unit>(y(vi.pt)));
             ci.count = typename polygon_45_formation<Unit>::Vertex45Count
               ( vi.count[0], vi.count[1], vi.count[2], vi.count[3]);
             result.data_.push_back(ci);
Modified: sandbox/gtl/boost/polygon/polygon_45_set_traits.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_45_set_traits.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_45_set_traits.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -24,9 +24,9 @@
       return get_iterator_type<T>::end(polygon_set);
     }
 
-    static inline bool clean(const T& polygon_set) { return false; }
+    static inline bool clean(const T& ) { return false; }
 
-    static inline bool sorted(const T& polygon_set) { return false; }
+    static inline bool sorted(const T& ) { return false; }
   };
 
   template <typename T>
Modified: sandbox/gtl/boost/polygon/polygon_90_set_data.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_90_set_data.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_90_set_data.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -132,7 +132,7 @@
     }
 
     template <typename geometry_type>
-    inline void insert(const geometry_type& geometry_object, bool is_hole = false, orientation_2d orient = HORIZONTAL) {
+    inline void insert(const geometry_type& geometry_object, bool is_hole = false, orientation_2d = HORIZONTAL) {
       iterator_geometry_to_set<typename geometry_concept<geometry_type>::type, geometry_type>
         begin_input(geometry_object, LOW, orient_, is_hole), end_input(geometry_object, HIGH, orient_, is_hole);
       insert(begin_input, end_input, orient_);
@@ -506,7 +506,7 @@
   private:
     //functions
     template <typename output_container>
-    void get_dispatch(output_container& output, rectangle_concept tag) const {
+    void get_dispatch(output_container& output, rectangle_concept ) const {
       clean();
       form_rectangles(output, data_.begin(), data_.end(), orient_, rectangle_concept());
     }
Modified: sandbox/gtl/boost/polygon/polygon_90_set_traits.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_90_set_traits.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_90_set_traits.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -147,11 +147,11 @@
       return indirection_type::end(polygon_set);
     }
 
-    static inline orientation_2d orient(const T& polygon_set) { return HORIZONTAL; }
+    static inline orientation_2d orient(const T&) { return HORIZONTAL; }
 
-    static inline bool clean(const T& polygon_set) { return false; }
+    static inline bool clean(const T&) { return false; }
 
-    static inline bool sorted(const T& polygon_set) { return false; }
+    static inline bool sorted(const T&) { return false; }
   };
 
   template <typename T>
@@ -251,7 +251,7 @@
   //get dispatch functions
   template <typename output_container_type, typename pst>
   void get_90_dispatch(output_container_type& output, const pst& ps,
-                       orientation_2d orient, rectangle_concept tag) {
+                       orientation_2d orient, rectangle_concept ) {
     form_rectangles(output, ps.begin(), ps.end(), orient, rectangle_concept());
   }
 
Modified: sandbox/gtl/boost/polygon/polygon_set_data.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_set_data.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_set_data.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -98,7 +98,7 @@
     }
 
     template <typename polygon_type>
-    inline void insert(const polygon_type& polygon_object, bool is_hole, polygon_concept tag) {
+    inline void insert(const polygon_type& polygon_object, bool is_hole, polygon_concept ) {
       bool first_iteration = true;
       point_type first_point;
       point_type previous_point;
@@ -148,16 +148,16 @@
     }
 
     template <typename polygon_type>
-    inline void insert(const polygon_type& polygon_object, bool is_hole, polygon_45_concept tag) {
+    inline void insert(const polygon_type& polygon_object, bool is_hole, polygon_45_concept ) {
       insert(polygon_object, is_hole, polygon_concept()); }
 
     template <typename polygon_type>
-    inline void insert(const polygon_type& polygon_object, bool is_hole, polygon_90_concept tag) {
+    inline void insert(const polygon_type& polygon_object, bool is_hole, polygon_90_concept ) {
       insert(polygon_object, is_hole, polygon_concept()); }
 
     template <typename polygon_with_holes_type>
     inline void insert(const polygon_with_holes_type& polygon_with_holes_object, bool is_hole, 
-                       polygon_with_holes_concept tag) {
+                       polygon_with_holes_concept ) {
       insert(polygon_with_holes_object, is_hole, polygon_concept());
       for(typename polygon_with_holes_traits<polygon_with_holes_type>::iterator_holes_type itr = 
             begin_holes(polygon_with_holes_object);
@@ -168,16 +168,16 @@
 
     template <typename polygon_with_holes_type>
     inline void insert(const polygon_with_holes_type& polygon_with_holes_object, bool is_hole, 
-                       polygon_45_with_holes_concept tag) {
+                       polygon_45_with_holes_concept ) {
       insert(polygon_with_holes_object, is_hole, polygon_with_holes_concept()); }
 
     template <typename polygon_with_holes_type>
     inline void insert(const polygon_with_holes_type& polygon_with_holes_object, bool is_hole, 
-                       polygon_90_with_holes_concept tag) {
+                       polygon_90_with_holes_concept ) {
       insert(polygon_with_holes_object, is_hole, polygon_with_holes_concept()); }
 
     template <typename rectangle_type>
-    inline void insert(const rectangle_type& rectangle_object, bool is_hole, rectangle_concept tag) {
+    inline void insert(const rectangle_type& rectangle_object, bool is_hole, rectangle_concept ) {
       polygon_90_data<coordinate_type> poly;
       assign(poly, rectangle_object);
       insert(poly, is_hole, polygon_concept());
@@ -441,7 +441,7 @@
       get_fracture(output, false, tag);
     }
     template <typename output_container, typename concept_type>
-    void get_fracture(output_container& container, bool fracture_holes, concept_type tag) const {
+    void get_fracture(output_container& container, bool fracture_holes, concept_type ) const {
       clean();
       polygon_arbitrary_formation<coordinate_type> pf(fracture_holes);
       typedef typename polygon_arbitrary_formation<coordinate_type>::vertex_half_edge vertex_half_edge;
Modified: sandbox/gtl/boost/polygon/polygon_set_traits.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_set_traits.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_set_traits.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -26,9 +26,9 @@
       return get_iterator_type<T>::end(polygon_set);
     }
 
-    static inline bool clean(const T& polygon_set) { return false; }
+    static inline bool clean(const T& ) { return false; }
 
-    static inline bool sorted(const T& polygon_set) { return false; }
+    static inline bool sorted(const T& ) { return false; }
   };
 
   template <typename T>
Modified: sandbox/gtl/boost/polygon/polygon_traits.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/polygon_traits.hpp	(original)
+++ sandbox/gtl/boost/polygon/polygon_traits.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -30,7 +30,7 @@
     }
   
     // Get the winding direction of the polygon
-    static inline winding_direction winding(const T& t) {
+    static inline winding_direction winding(const T&) {
       return unknown_winding;
     }
   };
@@ -66,7 +66,7 @@
     }
   
     // Get the winding direction of the polygon
-    static inline winding_direction winding(const T& t) {
+    static inline winding_direction winding(const T&) {
       return unknown_winding;
     }
   };
@@ -698,7 +698,7 @@
   }
 
   template <typename Unit>
-  Unit abs(Unit value) { return value < 0 ? -value : value; }
+  Unit local_abs(Unit value) { return value < 0 ? -value : value; }
 
   template <typename Unit>
   void snap_point_vector_to_45(std::vector<point_data<Unit> >& pts) {
@@ -719,22 +719,22 @@
       Unit deltax = x(pt2) - x(pt1);
       Unit deltay = y(pt2) - y(pt1);
       if(deltax && deltay &&
-         abs(deltax) != abs(deltay)) {
+         local_abs(deltax) != local_abs(deltay)) {
         //adjust the middle point
         Unit ndx = x(pt3) - x(pt2);
         Unit ndy = y(pt3) - y(pt2);
         if(ndx && ndy) {
-          Unit diff = abs(abs(deltax) - abs(deltay));
+          Unit diff = local_abs(local_abs(deltax) - local_abs(deltay));
           Unit halfdiff = diff/2;
           if((deltax > 0 && deltay > 0) ||
              (deltax < 0 && deltay < 0)) {
             //previous edge is rising slope
-            if(abs(deltax + halfdiff + (diff % 2)) ==
-               abs(deltay - halfdiff)) {
+            if(local_abs(deltax + halfdiff + (diff % 2)) ==
+               local_abs(deltay - halfdiff)) {
               x(pt2, x(pt2) + halfdiff + (diff % 2));
               y(pt2, y(pt2) - halfdiff);
-            } else if(abs(deltax - halfdiff - (diff % 2)) ==
-                      abs(deltay + halfdiff)) {
+            } else if(local_abs(deltax - halfdiff - (diff % 2)) ==
+                      local_abs(deltay + halfdiff)) {
               x(pt2, x(pt2) - halfdiff - (diff % 2));
               y(pt2, y(pt2) + halfdiff);
             } else{
@@ -742,12 +742,12 @@
             }
           } else {
             //previous edge is falling slope
-            if(abs(deltax + halfdiff + (diff % 2)) ==
-               abs(deltay + halfdiff)) {
+            if(local_abs(deltax + halfdiff + (diff % 2)) ==
+               local_abs(deltay + halfdiff)) {
               x(pt2, x(pt2) + halfdiff + (diff % 2));
               y(pt2, y(pt2) + halfdiff);
-            } else if(abs(deltax - halfdiff - (diff % 2)) ==
-                      abs(deltay - halfdiff)) {
+            } else if(local_abs(deltax - halfdiff - (diff % 2)) ==
+                      local_abs(deltay - halfdiff)) {
               x(pt2, x(pt2) - halfdiff - (diff % 2));
               y(pt2, y(pt2) - halfdiff);
             } else {
@@ -764,13 +764,13 @@
         } else if(ndx) {
           //next edge is horizontal
           //find the x value for pt1 that would make the abs(deltax) == abs(deltay)
-          Unit newDeltaX = abs(deltay);
+          Unit newDeltaX = local_abs(deltay);
           if(deltax < 0) newDeltaX *= -1;
           x(pt2, x(pt1) + newDeltaX);
         } else { //ndy
           //next edge is vertical
           //find the y value for pt1 that would make the abs(deltax) == abs(deltay)
-          Unit newDeltaY = abs(deltax);
+          Unit newDeltaY = local_abs(deltax);
           if(deltay < 0) newDeltaY *= -1;
           y(pt2, y(pt1) + newDeltaY);
         }
@@ -992,7 +992,7 @@
       Unit deltax = x(pt) - x(prevPt);
       Unit deltay = y(pt) - y(prevPt);
       if(deltax && deltay &&
-         abs(deltax) != abs(deltay))
+         local_abs(deltax) != local_abs(deltay))
         return false;
       prevPt = pt;
       ++itr;
@@ -1000,7 +1000,7 @@
     Unit deltax = x(firstPt) - x(prevPt);
     Unit deltay = y(firstPt) - y(prevPt);
     if(deltax && deltay &&
-       abs(deltax) != abs(deltay))
+       local_abs(deltax) != local_abs(deltay))
       return false;
     return true;
   }
@@ -1119,7 +1119,7 @@
     //odd count implies boundary condition
     if(counts[0] % 2 || counts[1] % 2) return consider_touch;
     //an odd number of edges to the left implies interior pt
-    return counts[0] % 4; 
+    return counts[0] % 4 != 0; 
   }
 
   //TODO: refactor to expose as user APIs
@@ -1279,7 +1279,7 @@
       }
       he.first = he.second;
     } 
-    return above % 2; //if the point is above an odd number of edges is must be inside polygon
+    return above % 2 != 0; //if the point is above an odd number of edges is must be inside polygon
   }
 
   template <typename T1, typename T2>
Modified: sandbox/gtl/boost/polygon/transform.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/transform.hpp	(original)
+++ sandbox/gtl/boost/polygon/transform.hpp	2009-09-21 19:23:29 EDT (Mon, 21 Sep 2009)
@@ -253,9 +253,9 @@
   // in the caller code for easier isotropic access by orientation value
   inline void get_directions(direction_2d& horizontal_dir,
                              direction_2d& vertical_dir) const {
-    bool bit2 = atr_ & 4;
-    bool bit1 = atr_ & 2;
-    bool bit0 = atr_ & 1;      
+    bool bit2 = (atr_ & 4) != 0;
+    bool bit1 = (atr_ & 2) != 0;
+    bool bit0 = (atr_ & 1) != 0;      
     vertical_dir = direction_2d((direction_2d_enum)(((int)(!bit2) << 1) + !bit1));
     horizontal_dir = direction_2d((direction_2d_enum)(((int)(bit2) << 1) + !bit0));
   }
@@ -265,12 +265,12 @@
   inline void get_directions(direction_3d& horizontal_dir,
                              direction_3d& vertical_dir,
                              direction_3d& proximal_dir) const {
-    bool bit5 = atr_ & 32;
-    bool bit4 = atr_ & 16;
-    bool bit3 = atr_ & 8;
-    bool bit2 = atr_ & 4;
-    bool bit1 = atr_ & 2;
-    bool bit0 = atr_ & 1;      
+    bool bit5 = (atr_ & 32) != 0;
+    bool bit4 = (atr_ & 16) != 0;
+    bool bit3 = (atr_ & 8) != 0;
+    bool bit2 = (atr_ & 4) != 0;
+    bool bit1 = (atr_ & 2) != 0;
+    bool bit0 = (atr_ & 1) != 0;   
     proximal_dir = direction_3d((direction_2d_enum)((((int)(!bit4 & !bit5)) << 2) +
                                                     ((int)(bit5) << 1) + 
                                                     !bit3));
@@ -339,17 +339,29 @@
 template <typename scale_factor_type>
 class anisotropic_scale_factor {
 public:
-  inline anisotropic_scale_factor() : scale_() {
+  inline anisotropic_scale_factor()
+#ifndef BOOST_POLYGON_MSVC
+    : scale_() 
+#endif
+  {
     scale_[0] = 1;
     scale_[1] = 1;
     scale_[2] = 1;
   } 
-  inline anisotropic_scale_factor(scale_factor_type xscale, scale_factor_type yscale) : scale_() {
+  inline anisotropic_scale_factor(scale_factor_type xscale, scale_factor_type yscale)
+#ifndef BOOST_POLYGON_MSVC
+    : scale_() 
+#endif 
+  {
     scale_[0] = xscale;
     scale_[1] = yscale;
     scale_[2] = 1;
   } 
-  inline anisotropic_scale_factor(scale_factor_type xscale, scale_factor_type yscale, scale_factor_type zscale) : scale_() {
+  inline anisotropic_scale_factor(scale_factor_type xscale, scale_factor_type yscale, scale_factor_type zscale) 
+#ifndef BOOST_POLYGON_MSVC
+    : scale_() 
+#endif   
+  {
     scale_[0] = xscale;
     scale_[1] = yscale;
     scale_[2] = zscale;