|
|
/*
** 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 <stdlib.h>
#include <setjmp.h>
struct JumpBuffer { jmp_buf buf; };
#define mysetjmp(x) setjmp((x)->buf)
#define mylongjmp(x,y) longjmp((x)->buf, y)
/* <<AT&T USL C++ Language System <3.0.1> 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 */
|