[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45163] trunk/blender/extern/eltopo: Update El Topo lib to 0.4 beta (disabled in scons/cmake at the moment).

Daniel Genrich daniel.genrich at gmx.net
Mon Mar 26 11:07:02 CEST 2012


Revision: 45163
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45163
Author:   genscher
Date:     2012-03-26 09:06:59 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
Update El Topo lib to 0.4 beta (disabled in scons/cmake at the moment).
Source code: http://www.cs.ubc.ca/labs/imager/tr/2009/eltopo/eltopo.html

Modified Paths:
--------------
    trunk/blender/extern/eltopo/common/array1.h
    trunk/blender/extern/eltopo/common/array2.h
    trunk/blender/extern/eltopo/common/array3.h
    trunk/blender/extern/eltopo/common/array3_utils.h
    trunk/blender/extern/eltopo/common/bfstream.cpp
    trunk/blender/extern/eltopo/common/bfstream.h
    trunk/blender/extern/eltopo/common/blas_wrapper.h
    trunk/blender/extern/eltopo/common/ccd_wrapper.cpp
    trunk/blender/extern/eltopo/common/ccd_wrapper.h
    trunk/blender/extern/eltopo/common/collisionqueries.cpp
    trunk/blender/extern/eltopo/common/collisionqueries.h
    trunk/blender/extern/eltopo/common/cubic_ccd_wrapper.cpp
    trunk/blender/extern/eltopo/common/fileio.cpp
    trunk/blender/extern/eltopo/common/fileio.h
    trunk/blender/extern/eltopo/common/gluvi.cpp
    trunk/blender/extern/eltopo/common/gluvi.h
    trunk/blender/extern/eltopo/common/grid3.h
    trunk/blender/extern/eltopo/common/hashtable.h
    trunk/blender/extern/eltopo/common/lapack_wrapper.h
    trunk/blender/extern/eltopo/common/makelevelset3.cpp
    trunk/blender/extern/eltopo/common/makelevelset3.h
    trunk/blender/extern/eltopo/common/mat.h
    trunk/blender/extern/eltopo/common/matlapack.h
    trunk/blender/extern/eltopo/common/newsparse/dense_matrix.cpp
    trunk/blender/extern/eltopo/common/newsparse/dense_matrix.h
    trunk/blender/extern/eltopo/common/newsparse/krylov_solvers.cpp
    trunk/blender/extern/eltopo/common/newsparse/krylov_solvers.h
    trunk/blender/extern/eltopo/common/newsparse/linear_operator.h
    trunk/blender/extern/eltopo/common/newsparse/sparse_matrix.cpp
    trunk/blender/extern/eltopo/common/newsparse/sparse_matrix.h
    trunk/blender/extern/eltopo/common/predicates.cpp
    trunk/blender/extern/eltopo/common/predicates.h
    trunk/blender/extern/eltopo/common/tunicate/expansion.cpp
    trunk/blender/extern/eltopo/common/tunicate/expansion.h
    trunk/blender/extern/eltopo/common/tunicate/intersection.cpp
    trunk/blender/extern/eltopo/common/tunicate/neg.cpp
    trunk/blender/extern/eltopo/common/tunicate/neg.h
    trunk/blender/extern/eltopo/common/tunicate/orientation.cpp
    trunk/blender/extern/eltopo/common/tunicate/sos_intersection.cpp
    trunk/blender/extern/eltopo/common/tunicate/sos_orientation.cpp
    trunk/blender/extern/eltopo/common/tunicate/tunicate.h
    trunk/blender/extern/eltopo/common/util.h
    trunk/blender/extern/eltopo/common/vec.h
    trunk/blender/extern/eltopo/common/vector_math.h
    trunk/blender/extern/eltopo/common/wallclocktime.cpp
    trunk/blender/extern/eltopo/eltopo-capi.cpp
    trunk/blender/extern/eltopo/eltopo-capi.h
    trunk/blender/extern/eltopo/eltopo3d/Makefile
    trunk/blender/extern/eltopo/eltopo3d/Makefile.example_defs
    trunk/blender/extern/eltopo/eltopo3d/Makefile.inc
    trunk/blender/extern/eltopo/eltopo3d/accelerationgrid.cpp
    trunk/blender/extern/eltopo/eltopo3d/accelerationgrid.h
    trunk/blender/extern/eltopo/eltopo3d/broadphase.h
    trunk/blender/extern/eltopo/eltopo3d/broadphasegrid.cpp
    trunk/blender/extern/eltopo/eltopo3d/broadphasegrid.h
    trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.cpp
    trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.h
    trunk/blender/extern/eltopo/eltopo3d/eltopo.cpp
    trunk/blender/extern/eltopo/eltopo3d/eltopo.h
    trunk/blender/extern/eltopo/eltopo3d/nondestructivetrimesh.cpp
    trunk/blender/extern/eltopo/eltopo3d/nondestructivetrimesh.h
    trunk/blender/extern/eltopo/eltopo3d/options.h
    trunk/blender/extern/eltopo/eltopo3d/subdivisionscheme.cpp
    trunk/blender/extern/eltopo/eltopo3d/subdivisionscheme.h
    trunk/blender/extern/eltopo/eltopo3d/surftrack.cpp
    trunk/blender/extern/eltopo/eltopo3d/surftrack.h

Modified: trunk/blender/extern/eltopo/common/array1.h
===================================================================
--- trunk/blender/extern/eltopo/common/array1.h	2012-03-26 08:58:17 UTC (rev 45162)
+++ trunk/blender/extern/eltopo/common/array1.h	2012-03-26 09:06:59 UTC (rev 45163)
@@ -5,11 +5,16 @@
 #include <cassert>
 #include <climits>
 #include <cstdlib>
+#include <cstring>
 #include <iostream>
 #include <stdexcept>
-#include <cstring>
 #include <vector>
 
+#if defined(_WIN32) && !defined(FREE_WINDOWS)
+#include "BaseTsd.h"
+typedef SSIZE_T ssize_t;
+#endif
+
 // In this file:
 //   Array1<T>: a dynamic 1D array for plain-old-data (not objects)
 //   WrapArray1<T>: a 1D array wrapper around an existing array (perhaps objects, perhaps data)
@@ -40,417 +45,417 @@
 template<typename T>
 struct Array1
 {
-   // STL-friendly typedefs
-
-   typedef T* iterator;
-   typedef const T* const_iterator;
-   typedef unsigned long size_type;
-   typedef long difference_type;
-   typedef T& reference;
-   typedef const T& const_reference;
-   typedef T value_type;
-   typedef T* pointer;
-   typedef const T* const_pointer;
-   typedef std::reverse_iterator<iterator> reverse_iterator;
-   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
-   // the actual representation
-
-   unsigned long n;
-   unsigned long max_n;
-   T* data;
-
-   // STL vector's interface, with additions, but only valid when used with plain-old-data
-
-   Array1(void)
-      : n(0), max_n(0), data(0)
-   {}
-
-   // note: default initial values are zero
-   Array1(unsigned long n_)
-      : n(0), max_n(0), data(0)
-   {
-      if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
-      data=(T*)std::calloc(n_, sizeof(T));
-      if(!data) throw std::bad_alloc();
-      n=n_;
-      max_n=n_;
-   }
-
-   Array1(unsigned long n_, const T& value)
-      : n(0), max_n(0), data(0)
-   {
-      if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
-      data=(T*)std::calloc(n_, sizeof(T));
-      if(!data) throw std::bad_alloc();
-      n=n_;
-      max_n=n_;
-      for(unsigned long i=0; i<n; ++i) data[i]=value;
-   }
-
-   Array1(unsigned long n_, const T& value, unsigned long max_n_)
-      : n(0), max_n(0), data(0)
-   {
-      assert(n_<=max_n_);
-      if(max_n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
-      data=(T*)std::calloc(max_n_, sizeof(T));
-      if(!data) throw std::bad_alloc();
-      n=n_;
-      max_n=max_n_;
-      for(unsigned long i=0; i<n; ++i) data[i]=value;
-   }
-
-   Array1(unsigned long n_, const T* data_)
-      : n(0), max_n(0), data(0)
-   {
-      if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
-      data=(T*)std::calloc(n_, sizeof(T));
-      if(!data) throw std::bad_alloc();
-      n=n_;
-      max_n=n_;
-      assert(data_);
-      std::memcpy(data, data_, n*sizeof(T));
-   }
-
-   Array1(unsigned long n_, const T* data_, unsigned long max_n_)
-      : n(0), max_n(0), data(0)
-   {
-      assert(n_<=max_n_);
-      if(max_n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
-      data=(T*)std::calloc(max_n_, sizeof(T));
-      if(!data) throw std::bad_alloc();
-      max_n=max_n_;
-      n=n_;
-      assert(data_);
-      std::memcpy(data, data_, n*sizeof(T));
-   }
-
-   Array1(const Array1<T> &x)
-      : n(0), max_n(0), data(0)
-   {
-      data=(T*)std::malloc(x.n*sizeof(T));
-      if(!data) throw std::bad_alloc();
-      n=x.n;
-      max_n=x.n;
-      std::memcpy(data, x.data, n*sizeof(T));
-   }
-
-   ~Array1(void)
-   {
-      std::free(data);
+    // STL-friendly typedefs
+    
+    typedef T* iterator;
+    typedef const T* const_iterator;
+    typedef unsigned long size_type;
+    typedef long difference_type;
+    typedef T& reference;
+    typedef const T& const_reference;
+    typedef T value_type;
+    typedef T* pointer;
+    typedef const T* const_pointer;
+    typedef std::reverse_iterator<iterator> reverse_iterator;
+    typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+    
+    // the actual representation
+    
+    unsigned long n;
+    unsigned long max_n;
+    T* data;
+    
+    // STL vector's interface, with additions, but only valid when used with plain-old-data
+    
+    Array1(void)
+    : n(0), max_n(0), data(0)
+    {}
+    
+    // note: default initial values are zero
+    Array1(unsigned long n_)
+    : n(0), max_n(0), data(0)
+    {
+        if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+        data=(T*)std::calloc(n_, sizeof(T));
+        if(!data) throw std::bad_alloc();
+        n=n_;
+        max_n=n_;
+    }
+    
+    Array1(unsigned long n_, const T& value)
+    : n(0), max_n(0), data(0)
+    {
+        if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+        data=(T*)std::calloc(n_, sizeof(T));
+        if(!data) throw std::bad_alloc();
+        n=n_;
+        max_n=n_;
+        for(unsigned long i=0; i<n; ++i) data[i]=value;
+    }
+    
+    Array1(unsigned long n_, const T& value, unsigned long max_n_)
+    : n(0), max_n(0), data(0)
+    {
+        assert(n_<=max_n_);
+        if(max_n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+        data=(T*)std::calloc(max_n_, sizeof(T));
+        if(!data) throw std::bad_alloc();
+        n=n_;
+        max_n=max_n_;
+        for(unsigned long i=0; i<n; ++i) data[i]=value;
+    }
+    
+    Array1(unsigned long n_, const T* data_)
+    : n(0), max_n(0), data(0)
+    {
+        if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+        data=(T*)std::calloc(n_, sizeof(T));
+        if(!data) throw std::bad_alloc();
+        n=n_;
+        max_n=n_;
+        assert(data_);
+        std::memcpy(data, data_, n*sizeof(T));
+    }
+    
+    Array1(unsigned long n_, const T* data_, unsigned long max_n_)
+    : n(0), max_n(0), data(0)
+    {
+        assert(n_<=max_n_);
+        if(max_n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+        data=(T*)std::calloc(max_n_, sizeof(T));
+        if(!data) throw std::bad_alloc();
+        max_n=max_n_;
+        n=n_;
+        assert(data_);
+        std::memcpy(data, data_, n*sizeof(T));
+    }
+    
+    Array1(const Array1<T> &x)
+    : n(0), max_n(0), data(0)
+    {
+        data=(T*)std::malloc(x.n*sizeof(T));
+        if(!data) throw std::bad_alloc();
+        n=x.n;
+        max_n=x.n;
+        std::memcpy(data, x.data, n*sizeof(T));
+    }
+    
+    ~Array1(void)
+    {
+        std::free(data);
 #ifndef NDEBUG
-      data=0;
-      n=max_n=0;
+        data=0;
+        n=max_n=0;
 #endif
-   }
-
-   const T& operator[](unsigned long i) const
-   { return data[i]; }
-
-   T& operator[](unsigned long i)
-   { return data[i]; }
-
-   // these are range-checked (in debug mode) versions of operator[], like at()
-   const T& operator()(unsigned long i) const
-   {
-      assert(i<n);
-      return data[i];
-   }
-
-   T& operator()(unsigned long i)
-   {
-      assert(i<n);
-      return data[i];
-   }
-
-   Array1<T>& operator=(const Array1<T>& x)
-   {
-      if(max_n<x.n){
-         T* new_data=(T*)std::malloc(x.n*sizeof(T));
-         if(!new_data) throw std::bad_alloc();
-         std::free(data);
-         data=new_data;
-         max_n=x.n;
-      }
-      n=x.n;
-      std::memcpy(data, x.data, n*sizeof(T));
-      return *this;
-   }
-
-   bool operator==(const Array1<T>& x) const
-   {
-      if(n!=x.n) return false;
-      for(unsigned long i=0; i<n; ++i) if(!(data[i]==x.data[i])) return false;
-      return true;
-   }
- 
-   bool operator!=(const Array1<T>& x) const
-   {
-      if(n!=x.n) return true;
-      for(unsigned long i=0; i<n; ++i) if(data[i]!=x.data[i]) return true;
-      return false;
-   }
-
-   bool operator<(const Array1<T>& x) const
-   {
-      for(unsigned long i=0; i<n && i<x.n; ++i){
-         if(data[i]<x[i]) return true;
-         else if(x[i]<data[i]) return false;
-      }
-      return n<x.n;
-   }
-
-   bool operator>(const Array1<T>& x) const
-   {
-      for(unsigned long i=0; i<n && i<x.n; ++i){
-         if(data[i]>x[i]) return true;
-         else if(x[i]>data[i]) return false;
-      }
-      return n>x.n;
-   }
-
-   bool operator<=(const Array1<T>& x) const
-   {
-      for(unsigned long i=0; i<n && i<x.n; ++i){
-         if(data[i]<x[i]) return true;
-         else if(x[i]<data[i]) return false;
-      }
-      return n<=x.n;
-   }
-
-   bool operator>=(const Array1<T>& x) const
-   {
-      for(unsigned long i=0; i<n && i<x.n; ++i){
-         if(data[i]>x[i]) return true;
-         else if(x[i]>data[i]) return false;
-      }
-      return n>=x.n;
-   }
-
-   void add_unique(const T& value)
-   {
-      for(unsigned long i=0; i<n; ++i) if(data[i]==value) return;
-      if(n==max_n) grow();
-      data[n++]=value;
-   }
-
-   void assign(const T& value)
-   { for(unsigned long i=0; i<n; ++i) data[i]=value; }
-
-   void assign(unsigned long num, const T& value)
-   { fill(num, value); } 
-
-   // note: copydata may not alias this array's data, and this should not be
-   // used when T is a full object (which defines its own copying operation)
-   void assign(unsigned long num, const T* copydata)
-   {
-      assert(num==0 || copydata);
-      if(num>max_n){
-         if(num>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
-         std::free(data);
-         data=(T*)std::malloc(num*sizeof(T));
-         if(!data) throw std::bad_alloc();
-         max_n=num;
-      }
-      n=num;
-      std::memcpy(data, copydata, n*sizeof(T));
-   }
-
-   template<typename InputIterator>
-   void assign(InputIterator first, InputIterator last)
-   { assign_(first, last, typename Array1IsIntegral<InputIterator>::type()); }
-
-   template<typename InputIterator>
-   void assign_(InputIterator first, InputIterator last, Array1True check)
-   { fill(first, last); }
-
-   template<typename InputIterator>
-   void assign_(InputIterator first, InputIterator last, Array1False check)
-   {
-      unsigned long i=0;
-      InputIterator p=first;
-      for(; p!=last; ++p, ++i){
-         if(i==max_n) grow();
-         data[i]=*p;
-      }
-      n=i;
-   }
-
-   const T& at(unsigned long i) const
-   {
-      assert(i<n);
-      return data[i];
-   }
-
-   T& at(unsigned long i)
-   {
-      assert(i<n);
-      return data[i];
-   }
-
-   const T& back(void) const
-   { 
-      assert(data && n>0);
-      return data[n-1];
-   }
-
-   T& back(void)
-   {
-      assert(data && n>0);
-      return data[n-1];
-   }
-
-   const T* begin(void) const
-   { return data; }
-
-   T* begin(void)
-   { return data; }
-
-   unsigned long capacity(void) const
-   { return max_n; }
-
-   void clear(void)
-   {
-      std::free(data);
-      data=0;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list