? libs/wfmath/Debug_int
? libs/wfmath/Release
? libs/wfmath/debug
? libs/wfmath/wfmath.sln
? libs/wfmath/wfmath.vcproj
Index: libs/wfmath/wfmath/atlasconv.h
===================================================================
RCS file: /home/cvspsrv/worldforge/forge/libs/wfmath/wfmath/atlasconv.h,v
retrieving revision 1.23
diff -u -r1.23 atlasconv.h
--- libs/wfmath/wfmath/atlasconv.h	22 Sep 2005 17:19:05 -0000	1.23
+++ libs/wfmath/wfmath/atlasconv.h	5 Oct 2005 23:10:32 -0000
@@ -69,7 +69,13 @@
 #error "You must include Atlas/Message/Element.h or Atlas/Message/Object.h before wfmath/atlasconv.h"
 #endif
 
-class AtlasInType
+#ifdef _WIN32
+#define ATLASEXPORT __declspec(dllexport)
+#else
+#define ATLASEXPORT 
+#endif
+
+class ATLASEXPORT AtlasInType
 {
  public:
   AtlasInType(const _AtlasMessageType& val) : m_val(val) {}
Index: libs/wfmath/wfmath/int_to_string.cpp
===================================================================
RCS file: /home/cvspsrv/worldforge/forge/libs/wfmath/wfmath/int_to_string.cpp,v
retrieving revision 1.2
diff -u -r1.2 int_to_string.cpp
--- libs/wfmath/wfmath/int_to_string.cpp	21 Sep 2003 17:39:37 -0000	1.2
+++ libs/wfmath/wfmath/int_to_string.cpp	5 Oct 2005 23:11:43 -0000
@@ -34,9 +34,12 @@
 std::string WFMath::IntToString(unsigned long val)
 {
   const unsigned bufsize = ul_max_digits + 1; // add one for \0
-  char buffer[bufsize];
+  //msvc can't handle dynamic arrays, we'll have to use a pointer
+  char *buffer = new char[bufsize];
 
-  return DoIntToString(val, buffer + bufsize);
+  char* temp = DoIntToString(val, buffer + bufsize);
+  delete[] buffer;
+  return temp;
 }
 
 // Deals with the fact that while, e.g. 0x80000000 (in 32 bit),
@@ -60,12 +63,15 @@
 std::string WFMath::IntToString(long val)
 {
   const unsigned bufsize = ul_max_digits + 2; // one for \0, one for minus sign
-  char buffer[bufsize];
+  //msvc can't handle dynamic arrays, we'll have to use a pointer
+  char *buffer = new char[bufsize];
 
   char* bufhead = DoIntToString(SafeAbs(val), buffer + bufsize);
 
   if(val < 0)
     *(--bufhead) = '-';
+  
+  delete[] buffer;
 
   return bufhead;
 }
Index: libs/wfmath/wfmath/polygon.h
===================================================================
RCS file: /home/cvspsrv/worldforge/forge/libs/wfmath/wfmath/polygon.h,v
retrieving revision 1.25
diff -u -r1.25 polygon.h
--- libs/wfmath/wfmath/polygon.h	30 Jun 2004 14:17:32 -0000	1.25
+++ libs/wfmath/wfmath/polygon.h	2 Oct 2005 18:14:12 -0000
@@ -69,6 +69,9 @@
 
   bool isValid() const;
 
+#ifdef WFMATH_NO_TEMPLATES_AS_TEMPLATE_PARAMETERS
+  const std::vector<Point<2> >& Points() const { return m_points;}
+#endif
   // Descriptive characteristics
 
   int numCorners() const {return m_points.size();}
Index: libs/wfmath/wfmath/rotmatrix.cpp
===================================================================
RCS file: /home/cvspsrv/worldforge/forge/libs/wfmath/wfmath/rotmatrix.cpp,v
retrieving revision 1.17
diff -u -r1.17 rotmatrix.cpp
--- libs/wfmath/wfmath/rotmatrix.cpp	18 Jan 2004 16:39:50 -0000	1.17
+++ libs/wfmath/wfmath/rotmatrix.cpp	2 Oct 2005 17:54:17 -0000
@@ -38,7 +38,7 @@
 #else
 void WFMath::_NCFS_RotMatrix3_fromQuaternion(RotMatrix<3>& m, const Quaternion& q,
 					     const bool not_flip,
-					     CoordType m_elem[3][3], bool& m_flip)
+					     CoordType m_elem[3][3], bool& m_flip, unsigned& m_age)
 #endif
 {
   CoordType xx, yy, zz, xy, xz, yz;
Index: libs/wfmath/wfmath/rotmatrix_funcs.h
===================================================================
RCS file: /home/cvspsrv/worldforge/forge/libs/wfmath/wfmath/rotmatrix_funcs.h,v
retrieving revision 1.22
diff -u -r1.22 rotmatrix_funcs.h
--- libs/wfmath/wfmath/rotmatrix_funcs.h	10 Oct 2004 17:56:46 -0000	1.22
+++ libs/wfmath/wfmath/rotmatrix_funcs.h	2 Oct 2005 17:55:38 -0000
@@ -502,7 +502,7 @@
 void _NCFS_RotMatrix3_rotation (RotMatrix<3>& m, const Vector<3>& axis);
 void _NCFS_RotMatrix3_fromQuaternion(RotMatrix<3>& m, const Quaternion& q,
 				     const bool not_flip, CoordType m_elem[3][3],
-				     bool& m_flip);
+				     bool& m_flip, unsigned& m_age);
 
 template<>
 inline RotMatrix<3>& RotMatrix<3>::rotation (const Vector<3>& axis, CoordType theta)
@@ -522,7 +522,7 @@
 inline RotMatrix<3>& RotMatrix<3>::fromQuaternion(const Quaternion& q,
 						  const bool not_flip)
 {
-  _NCFS_RotMatrix3_fromQuaternion(*this, q, not_flip, m_elem, m_flip);
+  _NCFS_RotMatrix3_fromQuaternion(*this, q, not_flip, m_elem, m_flip, m_age);
   m_valid = true;
   return *this;
 }
Index: libs/wfmath/wfmath/stream.cpp
===================================================================
RCS file: /home/cvspsrv/worldforge/forge/libs/wfmath/wfmath/stream.cpp,v
retrieving revision 1.18
diff -u -r1.18 stream.cpp
--- libs/wfmath/wfmath/stream.cpp	8 Aug 2003 21:25:30 -0000	1.18
+++ libs/wfmath/wfmath/stream.cpp	5 Oct 2005 23:20:00 -0000
@@ -77,39 +77,6 @@
  b.read(ist);
 }
 
-// force a bunch of instantiations
-
-template std::ostream& operator<< <3>(std::ostream& os, const Vector<3>& r);
-template std::istream& operator>> <3>(std::istream& is, Vector<3>& r);
-template std::ostream& operator<< <2>(std::ostream& os, const Vector<2>& r);
-template std::istream& operator>> <2>(std::istream& is, Vector<2>& r);
-template std::ostream& operator<< <3>(std::ostream& os, const Point<3>& r);
-template std::istream& operator>> <3>(std::istream& is, Point<3>& r);
-template std::ostream& operator<< <2>(std::ostream& os, const Point<2>& r);
-template std::istream& operator>> <2>(std::istream& is, Point<2>& r);
-template std::ostream& operator<< <3>(std::ostream& os, const RotMatrix<3>& r);
-template std::istream& operator>> <3>(std::istream& is, RotMatrix<3>& r);
-template std::ostream& operator<< <2>(std::ostream& os, const RotMatrix<2>& r);
-template std::istream& operator>> <2>(std::istream& is, RotMatrix<2>& r);
-template std::ostream& operator<< <3>(std::ostream& os, const AxisBox<3>& r);
-template std::istream& operator>> <3>(std::istream& is, AxisBox<3>& r);
-template std::ostream& operator<< <2>(std::ostream& os, const AxisBox<2>& r);
-template std::istream& operator>> <2>(std::istream& is, AxisBox<2>& r);
-template std::ostream& operator<< <3>(std::ostream& os, const Ball<3>& r);
-template std::istream& operator>> <3>(std::istream& is, Ball<3>& r);
-template std::ostream& operator<< <2>(std::ostream& os, const Ball<2>& r);
-template std::istream& operator>> <2>(std::istream& is, Ball<2>& r);
-template std::ostream& operator<< <3>(std::ostream& os, const Segment<3>& r);
-template std::istream& operator>> <3>(std::istream& is, Segment<3>& r);
-template std::ostream& operator<< <2>(std::ostream& os, const Segment<2>& r);
-template std::istream& operator>> <2>(std::istream& is, Segment<2>& r);
-template std::ostream& operator<< <3>(std::ostream& os, const RotBox<3>& r);
-template std::istream& operator>> <3>(std::istream& is, RotBox<3>& r);
-template std::ostream& operator<< <2>(std::ostream& os, const RotBox<2>& r);
-template std::istream& operator>> <2>(std::istream& is, RotBox<2>& r);
-// don't need 2d for Polygon, since it's a specialization
-template std::ostream& operator<< <3>(std::ostream& os, const Polygon<3>& r);
-template std::istream& operator>> <3>(std::istream& is, Polygon<3>& r);
 
 void WFMath::_WriteCoordList(std::ostream& os, const CoordType* d, const int num)
 {
@@ -252,5 +219,39 @@
 	mtrand.pNext = &mtrand.state[mtrand.N-mtrand.left];
 	return is;
 }
+// force a bunch of instantiations
+// msvc needs to have them here
+
+template std::ostream& operator<< <3>(std::ostream& os, const Vector<3>& r);
+template std::istream& operator>> <3>(std::istream& is, Vector<3>& r);
+template std::ostream& operator<< <2>(std::ostream& os, const Vector<2>& r);
+template std::istream& operator>> <2>(std::istream& is, Vector<2>& r);
+template std::ostream& operator<< <3>(std::ostream& os, const Point<3>& r);
+template std::istream& operator>> <3>(std::istream& is, Point<3>& r);
+template std::ostream& operator<< <2>(std::ostream& os, const Point<2>& r);
+template std::istream& operator>> <2>(std::istream& is, Point<2>& r);
+template std::ostream& operator<< <3>(std::ostream& os, const RotMatrix<3>& r);
+template std::istream& operator>> <3>(std::istream& is, RotMatrix<3>& r);
+template std::ostream& operator<< <2>(std::ostream& os, const RotMatrix<2>& r);
+template std::istream& operator>> <2>(std::istream& is, RotMatrix<2>& r);
+template std::ostream& operator<< <3>(std::ostream& os, const AxisBox<3>& r);
+template std::istream& operator>> <3>(std::istream& is, AxisBox<3>& r);
+template std::ostream& operator<< <2>(std::ostream& os, const AxisBox<2>& r);
+template std::istream& operator>> <2>(std::istream& is, AxisBox<2>& r);
+template std::ostream& operator<< <3>(std::ostream& os, const Ball<3>& r);
+template std::istream& operator>> <3>(std::istream& is, Ball<3>& r);
+template std::ostream& operator<< <2>(std::ostream& os, const Ball<2>& r);
+template std::istream& operator>> <2>(std::istream& is, Ball<2>& r);
+template std::ostream& operator<< <3>(std::ostream& os, const Segment<3>& r);
+template std::istream& operator>> <3>(std::istream& is, Segment<3>& r);
+template std::ostream& operator<< <2>(std::ostream& os, const Segment<2>& r);
+template std::istream& operator>> <2>(std::istream& is, Segment<2>& r);
+template std::ostream& operator<< <3>(std::ostream& os, const RotBox<3>& r);
+template std::istream& operator>> <3>(std::istream& is, RotBox<3>& r);
+template std::ostream& operator<< <2>(std::ostream& os, const RotBox<2>& r);
+template std::istream& operator>> <2>(std::istream& is, RotBox<2>& r);
+// don't need 2d for Polygon, since it's a specialization
+template std::ostream& operator<< <3>(std::ostream& os, const Polygon<3>& r);
+template std::istream& operator>> <3>(std::istream& is, Polygon<3>& r);
 
 } // namespace WFMath

