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