/* ** Copyright 1992, Silicon Graphics, Inc. ** All Rights Reserved. ** ** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.; ** the contents of this file may not be disclosed to third parties, copied or ** duplicated in any form, in whole or in part, without the prior written ** permission of Silicon Graphics, Inc. ** ** RESTRICTED RIGHTS LEGEND: ** Use, duplication or disclosure by the Government is subject to restrictions ** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** rights reserved under the Copyright Laws of the United States. ** */ #include #include struct JumpBuffer { jmp_buf buf; }; #define mysetjmp(x) setjmp((x)->buf) #define mylongjmp(x,y) longjmp((x)->buf, y) /* < 02/03/92>> */ /* < ../core/tobezier.c++ > */ void *__vec_new (void *, int , int , void *); void __vec_ct (void *, int , int , void *); void __vec_dt (void *, int , int , void *); void __vec_delete (void *, int , int , void *, int , int ); typedef int (*__vptp)(void); struct __mptr {short d; short i; __vptp f; }; typedef unsigned int size_t ; // extern void *malloc (size_t ); // extern void free (void *); struct Buffer; struct Buffer { struct Buffer *next__6Buffer ; }; struct Pool; enum __Q2_4Pool5Magic { is_allocated__Q2_4Pool5Magic = 62369, is_free__Q2_4Pool5Magic = 61858} ; struct Pool { struct Buffer *freelist__4Pool ; char *blocklist__4Pool [32]; int nextblock__4Pool ; char *curblock__4Pool ; int buffersize__4Pool ; int nextsize__4Pool ; int nextfree__4Pool ; int initsize__4Pool ; char *name__4Pool ; int magic__4Pool ; }; void __glgrow__4PoolFv (struct Pool *); struct PooledObj; struct PooledObj { char __W3__9PooledObj ; }; typedef float REAL ; typedef void (*Pfvv )(void ); typedef void (*Pfvf )(float *); typedef int (*cmpfunc )(void *, void *); typedef REAL Knot ; typedef REAL *Knot_ptr ; struct Backend; struct Mapdesc; struct Flist; struct Knotvector; struct Quiltspec; struct Quiltspec { int stride__9Quiltspec ; int width__9Quiltspec ; int offset__9Quiltspec ; int order__9Quiltspec ; int index__9Quiltspec ; int bdry__9Quiltspec [2]; REAL step_size__9Quiltspec ; Knot *breakpoints__9Quiltspec ; }; typedef struct Quiltspec *Quiltspec_ptr ; struct Quilt; struct Quilt { char __W3__9PooledObj ; struct Mapdesc *mapdesc__5Quilt ; REAL *cpts__5Quilt ; struct Quiltspec qspec__5Quilt [2]; Quiltspec_ptr eqspec__5Quilt ; struct Quilt *next__5Quilt ; }; typedef struct Quilt *Quilt_ptr ; struct Knotvector; struct Knotvector { long order__10Knotvector ; long knotcount__10Knotvector ; long stride__10Knotvector ; Knot *knotlist__10Knotvector ; }; struct Breakpt; struct Breakpt { Knot value__7Breakpt ; int multi__7Breakpt ; int def__7Breakpt ; }; struct Knotspec; struct Knotspec { long order__8Knotspec ; Knot_ptr inkbegin__8Knotspec ; Knot_ptr inkend__8Knotspec ; Knot_ptr outkbegin__8Knotspec ; Knot_ptr outkend__8Knotspec ; Knot_ptr kleft__8Knotspec ; Knot_ptr kright__8Knotspec ; Knot_ptr kfirst__8Knotspec ; Knot_ptr klast__8Knotspec ; Knot_ptr sbegin__8Knotspec ; struct Breakpt *bbegin__8Knotspec ; struct Breakpt *bend__8Knotspec ; int ncoords__8Knotspec ; int prestride__8Knotspec ; int poststride__8Knotspec ; int preoffset__8Knotspec ; int postoffset__8Knotspec ; int prewidth__8Knotspec ; int postwidth__8Knotspec ; int istransformed__8Knotspec ; struct Knotspec *next__8Knotspec ; struct Knotspec *kspectotrans__8Knotspec ; }; struct Splinespec; struct Splinespec { struct Knotspec *kspec__10Splinespec ; int dim__10Splinespec ; REAL *outcpts__10Splinespec ; }; struct Splinespec *__gl__ct__10SplinespecFi (struct Splinespec *, int ); void __glkspecinit__10SplinespecFR10 (struct Splinespec *, struct Knotvector *); void __glselect__10SplinespecFv (struct Splinespec *); void __gllayout__10SplinespecFl (struct Splinespec *, long ); void __glsetupquilt__10SplinespecFP0 (struct Splinespec *, Quilt_ptr ); void __glcopy__10SplinespecFPf (struct Splinespec *, float *); void __gltransform__10SplinespecFv (struct Splinespec *); extern struct __mptr* __ptbl_vec_____core_tobezier_c___toBezier_[]; void __gltoBezier__5QuiltFR10Knotve0 (struct Quilt *__0this , struct Knotvector *__1knotvector , float *__1ctlpts , long __1ncoords ) { struct Splinespec __1spline ; __gl__ct__10SplinespecFi ( (struct Splinespec *)(& __1spline ), 1 ) ; __glkspecinit__10SplinespecFR10 ( (struct Splinespec *)(& __1spline ), __1knotvector ) ; __glselect__10SplinespecFv ( (struct Splinespec *)(& __1spline )) ; __gllayout__10SplinespecFl ( (struct Splinespec *)(& __1spline ), __1ncoords ) ; __glsetupquilt__10SplinespecFP0 ( (struct Splinespec *)(& __1spline ), (struct Quilt *)__0this ) ; __glcopy__10SplinespecFPf ( (struct Splinespec *)(& __1spline ), __1ctlpts ) ; __gltransform__10SplinespecFv ( (struct Splinespec *)(& __1spline )) ; } void __glkspecinit__10SplinespecFR11 (struct Splinespec *, struct Knotvector *, struct Knotvector *); void __gltoBezier__5QuiltFR10Knotve1 (struct Quilt *__0this , struct Knotvector *__1sknotvector , struct Knotvector *__1tknotvector , float *__1ctlpts , long __1ncoords ) { struct Splinespec __1spline ; __gl__ct__10SplinespecFi ( (struct Splinespec *)(& __1spline ), 2 ) ; __glkspecinit__10SplinespecFR11 ( (struct Splinespec *)(& __1spline ), __1sknotvector , __1tknotvector ) ; __glselect__10SplinespecFv ( (struct Splinespec *)(& __1spline )) ; __gllayout__10SplinespecFl ( (struct Splinespec *)(& __1spline ), __1ncoords ) ; __glsetupquilt__10SplinespecFP0 ( (struct Splinespec *)(& __1spline ), (struct Quilt *)__0this ) ; __glcopy__10SplinespecFPf ( (struct Splinespec *)(& __1spline ), __1ctlpts ) ; __gltransform__10SplinespecFv ( (struct Splinespec *)(& __1spline )) ; } struct Splinespec *__gl__ct__10SplinespecFi (struct Splinespec *__0this , int __1dimen ) { void *__1__Xp00uzigaiaa ; if (__0this || (__0this = (struct Splinespec *)( (__1__Xp00uzigaiaa = malloc ( (sizeof (struct Splinespec))) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) )) __0this -> dim__10Splinespec = __1dimen ; return __0this ; } struct Knotspec *__gl__ct__8KnotspecFv (struct Knotspec *); void __glkspecinit__10SplinespecFR10 (struct Splinespec *__0this , struct Knotvector *__1knotvector ) { struct Knotspec *__0__X5 ; __0this -> kspec__10Splinespec = __gl__ct__8KnotspecFv ( (struct Knotspec *)0 ) ; __0this -> kspec__10Splinespec -> inkbegin__8Knotspec = ((*__1knotvector )). knotlist__10Knotvector ; __0this -> kspec__10Splinespec -> inkend__8Knotspec = (((*__1knotvector )). knotlist__10Knotvector + ((*__1knotvector )). knotcount__10Knotvector ); __0this -> kspec__10Splinespec -> prestride__8Knotspec = (((int )((*__1knotvector )). stride__10Knotvector )); __0this -> kspec__10Splinespec -> order__8Knotspec = ((*__1knotvector )). order__10Knotvector ; __0this -> kspec__10Splinespec -> next__8Knotspec = 0 ; } void __glkspecinit__10SplinespecFR11 (struct Splinespec *__0this , struct Knotvector *__1sknotvector , struct Knotvector *__1tknotvector ) { struct Knotspec *__0__X6 ; __0this -> kspec__10Splinespec = __gl__ct__8KnotspecFv ( (struct Knotspec *)0 ) ; { struct Knotspec *__1tkspec ; struct Knotspec *__0__X7 ; __1tkspec = __gl__ct__8KnotspecFv ( (struct Knotspec *)0 ) ; __0this -> kspec__10Splinespec -> inkbegin__8Knotspec = ((*__1sknotvector )). knotlist__10Knotvector ; __0this -> kspec__10Splinespec -> inkend__8Knotspec = (((*__1sknotvector )). knotlist__10Knotvector + ((*__1sknotvector )). knotcount__10Knotvector ); __0this -> kspec__10Splinespec -> prestride__8Knotspec = (((int )((*__1sknotvector )). stride__10Knotvector )); __0this -> kspec__10Splinespec -> order__8Knotspec = ((*__1sknotvector )). order__10Knotvector ; __0this -> kspec__10Splinespec -> next__8Knotspec = __1tkspec ; __1tkspec -> inkbegin__8Knotspec = ((*__1tknotvector )). knotlist__10Knotvector ; __1tkspec -> inkend__8Knotspec = (((*__1tknotvector )). knotlist__10Knotvector + ((*__1tknotvector )). knotcount__10Knotvector ); __1tkspec -> prestride__8Knotspec = (((int )((*__1tknotvector )). stride__10Knotvector )); __1tkspec -> order__8Knotspec = ((*__1tknotvector )). order__10Knotvector ; __1tkspec -> next__8Knotspec = 0 ; } } void __glpreselect__8KnotspecFv (struct Knotspec *); void __glselect__8KnotspecFv (struct Knotspec *); void __glselect__10SplinespecFv (struct Splinespec *__0this ) { { { struct Knotspec *__1knotspec ; __1knotspec = __0this -> kspec__10Splinespec ; for(;__1knotspec ;__1knotspec = __1knotspec -> next__8Knotspec ) { __glpreselect__8KnotspecFv ( (struct Knotspec *)__1knotspec ) ; __glselect__8KnotspecFv ( (struct Knotspec *)__1knotspec ) ; } } } } void __gllayout__10SplinespecFl (struct Splinespec *__0this , long __1ncoords ) { long __1stride ; __1stride = __1ncoords ; { { struct Knotspec *__1knotspec ; void *__1__Xp00uzigaiaa ; __1knotspec = __0this -> kspec__10Splinespec ; for(;__1knotspec ;__1knotspec = __1knotspec -> next__8Knotspec ) { __1knotspec -> poststride__8Knotspec = (((int )__1stride )); __1stride *= (((__1knotspec -> bend__8Knotspec - __1knotspec -> bbegin__8Knotspec )* __1knotspec -> order__8Knotspec )+ __1knotspec -> postoffset__8Knotspec ); __1knotspec -> preoffset__8Knotspec *= __1knotspec -> prestride__8Knotspec ; __1knotspec -> prewidth__8Knotspec *= __1knotspec -> poststride__8Knotspec ; __1knotspec -> postwidth__8Knotspec *= __1knotspec -> poststride__8Knotspec ; __1knotspec -> postoffset__8Knotspec *= __1knotspec -> poststride__8Knotspec ; __1knotspec -> ncoords__8Knotspec = (((int )__1ncoords )); } __0this -> outcpts__10Splinespec = (((float *)( (__1__Xp00uzigaiaa = malloc ( ((sizeof (float ))* __1stride )) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) )); ((void )0 ); } } } void __glcopy__8KnotspecFPfT1 (struct Knotspec *, float *, REAL *); void __glcopy__10SplinespecFPf (struct Splinespec *__0this , float *__1incpts ) { __glcopy__8KnotspecFPfT1 ( (struct Knotspec *)__0this -> kspec__10Splinespec , __1incpts , __0this -> outcpts__10Splinespec ) ; } void __glsetupquilt__10SplinespecFP0 (struct Splinespec *__0this , Quilt_ptr __1quilt ) { Quiltspec_ptr __1qspec ; __1qspec = __1quilt -> qspec__5Quilt ; __1quilt -> eqspec__5Quilt = (__1qspec + __0this -> dim__10Splinespec ); { { struct Knotspec *__1knotspec ; __1knotspec = __0this -> kspec__10Splinespec ; for(;__1knotspec ;( (__1knotspec = __1knotspec -> next__8Knotspec ), (__1qspec ++ )) ) { void *__1__Xp00uzigaiaa ; __1qspec -> stride__9Quiltspec = __1knotspec -> poststride__8Knotspec ; __1qspec -> width__9Quiltspec = (__1knotspec -> bend__8Knotspec - __1knotspec -> bbegin__8Knotspec ); __1qspec -> order__9Quiltspec = (((int )__1knotspec -> order__8Knotspec )); __1qspec -> offset__9Quiltspec = __1knotspec -> postoffset__8Knotspec ; __1qspec -> index__9Quiltspec = 0 ; (__1qspec -> bdry__9Quiltspec [0 ])= ((__1knotspec -> kleft__8Knotspec == __1knotspec -> kfirst__8Knotspec )?1 :0 ); (__1qspec -> bdry__9Quiltspec [1 ])= ((__1knotspec -> kright__8Knotspec == __1knotspec -> klast__8Knotspec )?1 :0 ); __1qspec -> breakpoints__9Quiltspec = (((float *)( (__1__Xp00uzigaiaa = malloc ( ((sizeof (float ))* (__1qspec -> width__9Quiltspec + 1 ))) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) )); { Knot_ptr __2k ; __2k = __1qspec -> breakpoints__9Quiltspec ; { { struct Breakpt *__2bk ; __2bk = __1knotspec -> bbegin__8Knotspec ; for(;__2bk <= __1knotspec -> bend__8Knotspec ;__2bk ++ ) ((*(__2k ++ )))= __2bk -> value__7Breakpt ; } } } } __1quilt -> cpts__5Quilt = __0this -> outcpts__10Splinespec ; __1quilt -> next__5Quilt = 0 ; } } } void __gltransform__8KnotspecFPf (struct Knotspec *, REAL *); void __gltransform__10SplinespecFv (struct Splinespec *__0this ) { { { struct Knotspec *__1knotspec ; __1knotspec = __0this -> kspec__10Splinespec ; for(;__1knotspec ;__1knotspec = __1knotspec -> next__8Knotspec ) __1knotspec -> istransformed__8Knotspec = 0 ; for(__1knotspec = __0this -> kspec__10Splinespec ;__1knotspec ;__1knotspec = __1knotspec -> next__8Knotspec ) { { { struct Knotspec *__2kspec2 ; __2kspec2 = __0this -> kspec__10Splinespec ; for(;__2kspec2 ;__2kspec2 = __2kspec2 -> next__8Knotspec ) __2kspec2 -> kspectotrans__8Knotspec = __1knotspec ; __gltransform__8KnotspecFPf ( (struct Knotspec *)__0this -> kspec__10Splinespec , __0this -> outcpts__10Splinespec ) ; __1knotspec -> istransformed__8Knotspec = 1 ; } } } } } } struct Knotspec *__gl__ct__8KnotspecFv (struct Knotspec *__0this ) { void *__1__Xp00uzigaiaa ; if (__0this || (__0this = (struct Knotspec *)( (__1__Xp00uzigaiaa = malloc ( (sizeof (struct Knotspec))) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) )){ __0this -> bbegin__8Knotspec = 0 ; __0this -> sbegin__8Knotspec = 0 ; __0this -> outkbegin__8Knotspec = 0 ; } return __0this ; } void __glpt_io_copy__8KnotspecFPfT1 (struct Knotspec *, REAL *, float *); void __glcopy__8KnotspecFPfT1 (struct Knotspec *__0this , float *__1inpt , REAL *__1outpt ) { __1inpt = (((float *)((((long )__1inpt ))+ __0this -> preoffset__8Knotspec ))); if (__0this -> next__8Knotspec ){ { { REAL *__2lpt ; __2lpt = (__1outpt + __0this -> prewidth__8Knotspec ); for(;__1outpt != __2lpt ;__1outpt += __0this -> poststride__8Knotspec ) { __glcopy__8KnotspecFPfT1 ( (struct Knotspec *)__0this -> next__8Knotspec , __1inpt , __1outpt ) ; __1inpt = (((float *)((((long )__1inpt ))+ __0this -> prestride__8Knotspec ))); } } } } else { { { REAL *__2lpt ; __2lpt = (__1outpt + __0this -> prewidth__8Knotspec ); for(;__1outpt != __2lpt ;__1outpt += __0this -> poststride__8Knotspec ) { __glpt_io_copy__8KnotspecFPfT1 ( __0this , __1outpt , __1inpt ) ; __1inpt = (((float *)((((long )__1inpt ))+ __0this -> prestride__8Knotspec ))); } } } } } void __glshowpts__8KnotspecFPf (struct Knotspec *, REAL *); void __glshowpts__8KnotspecFPf (struct Knotspec *__0this , REAL *__1outpt ) { if (__0this -> next__8Knotspec ){ { { REAL *__2lpt ; __2lpt = (__1outpt + __0this -> prewidth__8Knotspec ); for(;__1outpt != __2lpt ;__1outpt += __0this -> poststride__8Knotspec ) __glshowpts__8KnotspecFPf ( (struct Knotspec *)__0this -> next__8Knotspec , __1outpt ) ; } } } else { { { REAL *__2lpt ; __2lpt = (__1outpt + __0this -> prewidth__8Knotspec ); for(;__1outpt != __2lpt ;__1outpt += __0this -> poststride__8Knotspec ) ( 0 ) ; } } } } void __glfactors__8KnotspecFv (struct Knotspec *__0this ) { Knot *__1mid ; Knot_ptr __1fptr ; __1mid = (((__0this -> outkend__8Knotspec - 1 )- __0this -> order__8Knotspec )+ __0this -> bend__8Knotspec -> multi__7Breakpt ); __1fptr = __0this -> sbegin__8Knotspec ; { { struct Breakpt *__1bpt ; __1bpt = __0this -> bend__8Knotspec ; for(;__1bpt >= __0this -> bbegin__8Knotspec ;__1bpt -- ) { __1mid -= __1bpt -> multi__7Breakpt ; { int __2def ; __2def = (__1bpt -> def__7Breakpt - 1 ); if (__2def <= 0 )continue ; { Knot __2kv ; Knot *__2kf ; __2kv = __1bpt -> value__7Breakpt ; __2kf = ((__1mid - __2def )+ (__0this -> order__8Knotspec - 1 )); { { Knot *__2kl ; __2kl = (__2kf + __2def ); for(;__2kl != __2kf ;__2kl -- ) { Knot *__3kh ; Knot *__3kt ; for(( (__3kt = __2kl ), (__3kh = __1mid )) ;__3kt != __2kf ;( (__3kh -- ), (__3kt -- )) ) ((*(__1fptr ++ )))= ((__2kv - ((*__3kh )))/ (((*__3kt ))- ((*__3kh )))); ((*__2kl ))= __2kv ; } } } } } } } } } void __glpt_oo_sum__8KnotspecFPfN210 (struct Knotspec *, REAL *, REAL *, REAL *, Knot , Knot ); void __glpt_oo_copy__8KnotspecFPfT1 (struct Knotspec *, REAL *, REAL *); void __glinsert__8KnotspecFPf (struct Knotspec *__0this , REAL *__1p ) { Knot_ptr __1fptr ; REAL *__1srcpt ; REAL *__1dstpt ; struct Breakpt *__1bpt ; __1fptr = __0this -> sbegin__8Knotspec ; __1srcpt = ((__1p + __0this -> prewidth__8Knotspec )- __0this -> poststride__8Knotspec ); __1dstpt = (((__1p + __0this -> postwidth__8Knotspec )+ __0this -> postoffset__8Knotspec )- __0this -> poststride__8Knotspec ); __1bpt = __0this -> bend__8Knotspec ; { { REAL *__1pend ; __1pend = (__1srcpt - (__0this -> poststride__8Knotspec * __1bpt -> def__7Breakpt )); for(;__1srcpt != __1pend ;__1pend += __0this -> poststride__8Knotspec ) { REAL *__2p1 ; __2p1 = __1srcpt ; { { REAL *__2p2 ; __2p2 = (__1srcpt - __0this -> poststride__8Knotspec ); for(;__2p2 != __1pend ;( (__2p1 = __2p2 ), (__2p2 -= __0this -> poststride__8Knotspec )) ) { __glpt_oo_sum__8KnotspecFPfN210 ( __0this , __2p1 , __2p1 , __2p2 , (*__1fptr ), (float )(1.0 - ((*__1fptr )))) ; __1fptr ++ ; } } } } for(-- __1bpt ;__1bpt >= __0this -> bbegin__8Knotspec ;__1bpt -- ) { { { int __2multi ; __2multi = __1bpt -> multi__7Breakpt ; for(;__2multi > 0 ;__2multi -- ) { __glpt_oo_copy__8KnotspecFPfT1 ( __0this , __1dstpt , __1srcpt ) ; __1dstpt -= __0this -> poststride__8Knotspec ; __1srcpt -= __0this -> poststride__8Knotspec ; } { { REAL *__2pend ; __2pend = (__1srcpt - (__0this -> poststride__8Knotspec * __1bpt -> def__7Breakpt )); for(;__1srcpt != __2pend ;( (__2pend += __0this -> poststride__8Knotspec ), (__1dstpt -= __0this -> poststride__8Knotspec )) ) { __glpt_oo_copy__8KnotspecFPfT1 ( __0this , __1dstpt , __1srcpt ) ; { REAL *__3p1 ; __3p1 = __1srcpt ; { { REAL *__3p2 ; __3p2 = (__1srcpt - __0this -> poststride__8Knotspec ); for(;__3p2 != __2pend ;( (__3p1 = __3p2 ), (__3p2 -= __0this -> poststride__8Knotspec )) ) { __glpt_oo_sum__8KnotspecFPfN210 ( __0this , __3p1 , __3p1 , __3p2 , (*__1fptr ), (float )(1.0 - ((*__1fptr )))) ; __1fptr ++ ; } } } } } } } } } } } } } void __glpreselect__8KnotspecFv (struct Knotspec *__0this ) { Knot __1kval ; for(( (__0this -> klast__8Knotspec = (__0this -> inkend__8Knotspec - __0this -> order__8Knotspec )), (__1kval = ((*__0this -> klast__8Knotspec )))) ;__0this -> klast__8Knotspec != __0this -> inkend__8Knotspec ;__0this -> klast__8Knotspec ++ ) if (! ( (((((*__0this -> klast__8Knotspec ))- __1kval )< 10.0e-5 )?1 :0 )) )break ; for(( (__0this -> kfirst__8Knotspec = ((__0this -> inkbegin__8Knotspec + __0this -> order__8Knotspec )- 1 )), (__1kval = ((*__0this -> kfirst__8Knotspec )))) ;__0this -> kfirst__8Knotspec != __0this -> inkend__8Knotspec ;__0this -> kfirst__8Knotspec ++ ) if (! ( (((((*__0this -> kfirst__8Knotspec ))- __1kval )< 10.0e-5 )?1 :0 )) )break ; { { Knot_ptr __1k ; unsigned int __0__X8 ; struct Breakpt *__0__X9 ; unsigned int __1__X10 ; void *__1__Xp00uzigaiaa ; __1k = (__0this -> kfirst__8Knotspec - 1 ); for(;__1k >= __0this -> inkbegin__8Knotspec ;__1k -- ) if (! ( (((__1kval - ((*__1k )))< 10.0e-5 )?1 :0 )) )break ; __1k ++ ; __0this -> bbegin__8Knotspec = ( (__0__X9 = (struct Breakpt *)( (__1__X10 = ((sizeof (struct Breakpt ))* (__0__X8 = ((__0this -> klast__8Knotspec - __0this -> kfirst__8Knotspec )+ 1 )))), ( (__1__Xp00uzigaiaa = malloc ( __1__X10 ) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) ) ), __0__X9 ) ; __0this -> bbegin__8Knotspec -> multi__7Breakpt = (__0this -> kfirst__8Knotspec - __1k ); __0this -> bbegin__8Knotspec -> value__7Breakpt = __1kval ; __0this -> bend__8Knotspec = __0this -> bbegin__8Knotspec ; __0this -> kleft__8Knotspec = (__0this -> kright__8Knotspec = __0this -> kfirst__8Knotspec ); } } } void __glbreakpoints__8KnotspecFv (struct Knotspec *); void __glknots__8KnotspecFv (struct Knotspec *); void __glselect__8KnotspecFv (struct Knotspec *__0this ) { __glbreakpoints__8KnotspecFv ( __0this ) ; __glknots__8KnotspecFv ( __0this ) ; __glfactors__8KnotspecFv ( __0this ) ; __0this -> preoffset__8Knotspec = (__0this -> kleft__8Knotspec - (__0this -> inkbegin__8Knotspec + __0this -> order__8Knotspec )); __0this -> postwidth__8Knotspec = (((int )((__0this -> bend__8Knotspec - __0this -> bbegin__8Knotspec )* __0this -> order__8Knotspec ))); __0this -> prewidth__8Knotspec = (((int )((__0this -> outkend__8Knotspec - __0this -> outkbegin__8Knotspec )- __0this -> order__8Knotspec ))); __0this -> postoffset__8Knotspec = ((__0this -> bbegin__8Knotspec -> def__7Breakpt > 1 )?(__0this -> bbegin__8Knotspec -> def__7Breakpt - 1 ):0 ); } void __glbreakpoints__8KnotspecFv (struct Knotspec *__0this ) { struct Breakpt *__1ubpt ; struct Breakpt *__1ubend ; long __1nfactors ; __1ubpt = __0this -> bbegin__8Knotspec ; __1ubend = __0this -> bend__8Knotspec ; __1nfactors = 0 ; __1ubpt -> value__7Breakpt = __1ubend -> value__7Breakpt ; __1ubpt -> multi__7Breakpt = __1ubend -> multi__7Breakpt ; __0this -> kleft__8Knotspec = __0this -> kright__8Knotspec ; for(;__0this -> kright__8Knotspec != __0this -> klast__8Knotspec ;__0this -> kright__8Knotspec ++ ) { if (( (((((*__0this -> kright__8Knotspec ))- __1ubpt -> value__7Breakpt )< 10.0e-5 )?1 :0 )) ){ __1ubpt -> multi__7Breakpt ++ ; } else { __1ubpt -> def__7Breakpt = (((int )(__0this -> order__8Knotspec - __1ubpt -> multi__7Breakpt ))); __1nfactors += ((__1ubpt -> def__7Breakpt * (__1ubpt -> def__7Breakpt - 1 ))/ 2 ); (++ __1ubpt )-> value__7Breakpt = ((*__0this -> kright__8Knotspec )); __1ubpt -> multi__7Breakpt = 1 ; } } __1ubpt -> def__7Breakpt = (((int )(__0this -> order__8Knotspec - __1ubpt -> multi__7Breakpt ))); __1nfactors += ((__1ubpt -> def__7Breakpt * (__1ubpt -> def__7Breakpt - 1 ))/ 2 ); __0this -> bend__8Knotspec = __1ubpt ; if (__1nfactors ){ void *__1__Xp00uzigaiaa ; __0this -> sbegin__8Knotspec = (float *)(((float *)( (__1__Xp00uzigaiaa = malloc ( ((sizeof (float ))* __1nfactors )) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) )); } else { __0this -> sbegin__8Knotspec = 0 ; } } void __glknots__8KnotspecFv (struct Knotspec *__0this ) { Knot_ptr __1inkpt ; Knot_ptr __1inkend ; void *__1__Xp00uzigaiaa ; __1inkpt = (__0this -> kleft__8Knotspec - __0this -> order__8Knotspec ); __1inkend = (__0this -> kright__8Knotspec + __0this -> bend__8Knotspec -> def__7Breakpt ); __0this -> outkbegin__8Knotspec = (float *)(((float *)( (__1__Xp00uzigaiaa = malloc ( ((sizeof (float ))* (__1inkend - __1inkpt ))) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) )); { { Knot_ptr __1outkpt ; __1outkpt = __0this -> outkbegin__8Knotspec ; for(;__1inkpt != __1inkend ;( (__1inkpt ++ ), (__1outkpt ++ )) ) ((*__1outkpt ))= ((*__1inkpt )); __0this -> outkend__8Knotspec = __1outkpt ; } } } void __gltransform__8KnotspecFPf (struct Knotspec *__0this , REAL *__1p ) { if (__0this -> next__8Knotspec ){ if (__0this == (struct Knotspec *)__0this -> kspectotrans__8Knotspec ){ __gltransform__8KnotspecFPf ( (struct Knotspec *)__0this -> next__8Knotspec , __1p ) ; } else { if (__0this -> istransformed__8Knotspec ){ __1p += __0this -> postoffset__8Knotspec ; { { REAL *__4pend ; __4pend = (__1p + __0this -> postwidth__8Knotspec ); for(;__1p != __4pend ;__1p += __0this -> poststride__8Knotspec ) __gltransform__8KnotspecFPf ( (struct Knotspec *)__0this -> next__8Knotspec , __1p ) ; } } } else { REAL *__4pend ; __4pend = (__1p + __0this -> prewidth__8Knotspec ); for(;__1p != __4pend ;__1p += __0this -> poststride__8Knotspec ) __gltransform__8KnotspecFPf ( (struct Knotspec *)__0this -> next__8Knotspec , __1p ) ; } } } else { if (__0this == (struct Knotspec *)__0this -> kspectotrans__8Knotspec ){ __glinsert__8KnotspecFPf ( __0this , __1p ) ; } else { if (__0this -> istransformed__8Knotspec ){ __1p += __0this -> postoffset__8Knotspec ; { { REAL *__4pend ; __4pend = (__1p + __0this -> postwidth__8Knotspec ); for(;__1p != __4pend ;__1p += __0this -> poststride__8Knotspec ) __glinsert__8KnotspecFPf ( (struct Knotspec *)__0this -> kspectotrans__8Knotspec , __1p ) ; } } } else { REAL *__4pend ; __4pend = (__1p + __0this -> prewidth__8Knotspec ); for(;__1p != __4pend ;__1p += __0this -> poststride__8Knotspec ) __glinsert__8KnotspecFPf ( (struct Knotspec *)__0this -> kspectotrans__8Knotspec , __1p ) ; } } } } void __gl__dt__8KnotspecFv (struct Knotspec *__0this , int __0__free ) { void *__1__X11 ; void *__1__X12 ; void *__1__X13 ; if (__0this ){ if (__0this -> bbegin__8Knotspec )( (__1__X11 = (void *)__0this -> bbegin__8Knotspec ), ( (__1__X11 ?( free ( __1__X11 ) , 0 ) :( 0 ) )) ) ; if (__0this -> sbegin__8Knotspec )( (__1__X12 = (void *)__0this -> sbegin__8Knotspec ), ( (__1__X12 ?( free ( __1__X12 ) , 0 ) :( 0 ) )) ) ; if (__0this -> outkbegin__8Knotspec )( (__1__X13 = (void *)__0this -> outkbegin__8Knotspec ), ( (__1__X13 ?( free ( __1__X13 ) , 0 ) :( 0 ) )) ) ; if (__0this )if (__0__free & 1)( (((void *)__0this )?( free ( ((void *)__0this )) , 0 ) :( 0 ) )) ; } } void __glpt_io_copy__8KnotspecFPfT1 (struct Knotspec *__0this , REAL *__1topt , float *__1frompt ) { switch (__0this -> ncoords__8Knotspec ){ case 4 : (__1topt [3 ])= (((float )(__1frompt [3 ]))); case 3 : (__1topt [2 ])= (((float )(__1frompt [2 ]))); case 2 : (__1topt [1 ])= (((float )(__1frompt [1 ]))); case 1 : (__1topt [0 ])= (((float )(__1frompt [0 ]))); break ; default :{ { { int __3i ; __3i = 0 ; for(;__3i < __0this -> ncoords__8Knotspec ;__3i ++ ) ((*(__1topt ++ )))= (((float )((*(__1frompt ++ ))))); } } } } } // extern void *memcpy (void *, void *, size_t ); void __glpt_oo_copy__8KnotspecFPfT1 (struct Knotspec *__0this , REAL *__1topt , REAL *__1frompt ) { switch (__0this -> ncoords__8Knotspec ){ case 4 : (__1topt [3 ])= (__1frompt [3 ]); case 3 : (__1topt [2 ])= (__1frompt [2 ]); case 2 : (__1topt [1 ])= (__1frompt [1 ]); case 1 : (__1topt [0 ])= (__1frompt [0 ]); break ; default : memcpy ( (void *)__1topt , (void *)__1frompt , __0this -> ncoords__8Knotspec * (sizeof (REAL ))) ; } } void __glpt_oo_sum__8KnotspecFPfN210 (struct Knotspec *__0this , REAL *__1x , REAL *__1y , REAL *__1z , Knot __1a , Knot __1b ) { switch (__0this -> ncoords__8Knotspec ){ case 4 : (__1x [3 ])= ((__1a * (__1y [3 ]))+ (__1b * (__1z [3 ]))); case 3 : (__1x [2 ])= ((__1a * (__1y [2 ]))+ (__1b * (__1z [2 ]))); case 2 : (__1x [1 ])= ((__1a * (__1y [1 ]))+ (__1b * (__1z [1 ]))); case 1 : (__1x [0 ])= ((__1a * (__1y [0 ]))+ (__1b * (__1z [0 ]))); break ; default :{ { { int __3i ; __3i = 0 ; for(;__3i < __0this -> ncoords__8Knotspec ;__3i ++ ) ((*(__1x ++ )))= ((__1a * ((*(__1y ++ ))))+ (__1b * ((*(__1z ++ ))))); } } } } } /* the end */