1 #include "nurbsSub.cpp" 2 3 namespace PLib { 4 5 #ifdef NO_IMPLICIT_TEMPLATES 6 7 template class SurfSample<double> ; 8 template class NurbsSubSurface<double> ; 9 template class NurbSurface<double> ; 10 template class RenderMesh<double>; 11 template class RenderMeshPS<double>; 12 template class RenderMeshVRML<double>; 13 template class RenderMeshVRML97<double>; 14 template class RenderMeshPoints<double> ; 15 16 17 template <> double NurbSurface<double>::epsilon = 1e-6 ; 18 template <> double SurfSample<double>::epsilon = 1e-6 ; 19 20 template void DrawSubdivision( NurbSurface<double> *, double tolerance ); 21 template void DrawEvaluation( NurbSurface<double> * ); 22 23 template int FindBreakPoint( double u, double * kv, int m, int k ); 24 template void AllocNurb( NurbSurface<double> *, double *, double * ); 25 template void CloneNurb( NurbSurface<double> *, NurbSurface<double> * ); 26 template void FreeNurb( NurbSurface<double> * ); 27 template void RefineSurface( NurbSurface<double> *, NurbSurface<double> *, BOOL ); 28 29 template void CalcPoint( double, double, NurbSurface<double> *, Point_nD<double,3> *, Point_nD<double,3> *, Point_nD<double,3> * ); 30 31 32 template void GetNormal( NurbSurface<double> * n, int indV, int indU ); 33 template void DoSubdivision( NurbSurface<double> * n, double tolerance, BOOL dirflag, int level ) ; 34 template void BasisFunctions( double u, int brkPoint, double * kv, int k, double * bvals ); 35 template void BasisDerivatives( double u, int brkPoint, double * kv, int k, double * dvals ); 36 template void CalcAlpha( double * ukv, double * wkv, int m, int n, int k, double *** alpha ); 37 38 template void AdjustNormal( SurfSample<double> * samp ); 39 template BOOL TestFlat( NurbSurface<double> * n, double tolerance ); 40 template void EmitTriangles( NurbSurface<double> * n ); 41 template void SplitSurface( NurbSurface<double> * parent, 42 NurbSurface<double> * kid0, NurbSurface<double> * kid1, 43 BOOL dirflag ); 44 45 46 template BOOL IsCurveStraight( NurbSurface<double> * n,double tolerance,int crvInd,BOOL dirflag ); 47 template void FixNormals( SurfSample<double> * s0, SurfSample<double> * s1, SurfSample<double> * s2 ); 48 template int SplitKV( double * srckv,double ** destkv,int * splitPt,int m, int k ); 49 template void MakeNewCorners( NurbSurface<double> * parent,NurbSurface<double> * kid0,NurbSurface<double> * kid1,BOOL dirflag ); 50 template void ProjectToLine( Point_nD<double,3> * firstPt, Point_nD<double,3> * lastPt, Point_nD<double,3> * midPt ); 51 52 53 //template class deque<Point_nD<double,3> > ; 54 //template class deque<int> ; 55 56 #ifdef USING_LINUX 57 #endif 58 59 #ifdef USING_GNU_SOLARIS 60 template void fill<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, PLib::Point_nD<double, 3> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, PLib::Point_nD<double, 3> const &); 61 template void deque<int, __default_alloc_template<false, 0>, 0>::insert<__deque_iterator<int, int const &, int const &, 0> >(__deque_iterator<int, int &, int *, 0>, __deque_iterator<int, int const &, int const &, 0>, __deque_iterator<int, int const &, int const &, 0>, forward_iterator_tag); 62 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<false, 0>, 0>::insert<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, forward_iterator_tag); 63 template __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> __uninitialized_copy_aux<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __false_type); 64 template void __uninitialized_fill_aux<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, PLib::Point_nD<double, 3> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, PLib::Point_nD<double, 3> const &, __false_type); 65 template void __uninitialized_fill_aux<PLib::Point_nD<double, 3> *, PLib::Point_nD<double, 3> >(PLib::Point_nD<double, 3> *, PLib::Point_nD<double, 3> *, PLib::Point_nD<double, 3> const &, __false_type); 66 template __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> __uninitialized_copy_aux<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __false_type); 67 template void fill<__deque_iterator<int, int &, int *, 0>, int>(__deque_iterator<int, int &, int *, 0>, __deque_iterator<int, int &, int *, 0>, int const &); 68 template void fill<int *, int>(int *, int *, int const &); 69 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<false, 0>, 0>::insert_aux<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, unsigned int); 70 template void deque<int, __default_alloc_template<false, 0>, 0>::insert_aux<__deque_iterator<int, int const &, int const &, 0> >(__deque_iterator<int, int &, int *, 0>, __deque_iterator<int, int const &, int const &, 0>, __deque_iterator<int, int const &, int const &, 0>, unsigned int); 71 #endif 72 73 #ifdef USING_GNU_DECALPHA 74 template void fill<__deque_iterator<Point_nD<double, 3>, Point_nD<double, 3> &, Point_nD<double, 3> *, 0>, Point_nD<double, 3> >(__deque_iterator<Point_nD<double, 3>, Point_nD<double, 3> &, Point_nD<double, 3> *, 0>, __deque_iterator<Point_nD<double, 3>, Point_nD<double, 3> &, Point_nD<double, 3> *, 0>, Point_nD<double, 3> const &); 75 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<0, 0>, 0>::insert<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, forward_iterator_tag); 76 template __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> __uninitialized_copy_aux<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __false_type); 77 template __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> __uninitialized_copy_aux<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __false_type); 78 template void __uninitialized_fill_aux<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, PLib::Point_nD<double, 3> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, PLib::Point_nD<double, 3> const &, __false_type); 79 template void __uninitialized_fill_aux<PLib::Point_nD<double, 3> *, PLib::Point_nD<double, 3> >(PLib::Point_nD<double, 3> *, PLib::Point_nD<double, 3> *, PLib::Point_nD<double, 3> const &, __false_type); 80 template void deque<int, __default_alloc_template<0, 0>, 0>::insert<__deque_iterator<int, int const &, int const &, 0> >(__deque_iterator<int, int &, int *, 0>, __deque_iterator<int, int const &, int const &, 0>, __deque_iterator<int, int const &, int const &, 0>, forward_iterator_tag); 81 template void fill<__deque_iterator<int, int &, int *, 0>, int>(__deque_iterator<int, int &, int *, 0>, __deque_iterator<int, int &, int *, 0>, int const &); 82 template void fill<int *, int>(int *, int *, int const &); 83 template void deque<int, __default_alloc_template<true, 0>, 0>::insert<__deque_iterator<int, int const &, int const &, 0> >(__deque_iterator<int, int &, int *, 0>, __deque_iterator<int, int const &, int const &, 0>, __deque_iterator<int, int const &, int const &, 0>, forward_iterator_tag); 84 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<false, 0>, 0>::destroy_nodes_at_back(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>); 85 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<true, 0>, 0>::destroy_nodes_at_back(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>); 86 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<false, 0>, 0>::destroy_nodes_at_front(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>); 87 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<true, 0>, 0>::destroy_nodes_at_front(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>); 88 template void deque<PLib::Point_nD<double, 3>, __default_alloc_template<true, 0>, 0>::insert<__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0> >(__deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> &, PLib::Point_nD<double, 3> *, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, __deque_iterator<PLib::Point_nD<double, 3>, PLib::Point_nD<double, 3> const &, PLib::Point_nD<double, 3> const &, 0>, forward_iterator_tag); 89 template void* __default_alloc_template<true, 0>::free_list ; 90 template char* __default_alloc_template<true, 0>::end_free; 91 template char* __default_alloc_template<true, 0>::heap_size; 92 template char* __default_alloc_template<true, 0>::start_free; 93 94 #endif 95 96 #endif 97 98 } 99