[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