ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ptwX.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ptwX.h
1 /*
2 # <<BEGIN-copyright>>
3 # <<END-copyright>>
4 */
5 
6 #ifndef ptwX_h_included
7 #define ptwX_h_included
8 
9 #include <stdio.h>
10 #include <stdint.h>
11 
12 #include <nf_utilities.h>
13 
14 #if defined __cplusplus
15  extern "C" {
16  namespace GIDI {
17 #endif
18 
19 #define ptwX_minimumSize 10
20 
22 
23 typedef
24  struct ptwXPoints_s {
26  int64_t length;
27  int64_t allocatedSize;
29  double *points;
30  } ptwXPoints;
31 
32 /*
33 * Routines in ptwX_core.c
34 */
35 ptwXPoints *ptwX_new( int64_t size, nfu_status *status );
36 nfu_status ptwX_setup( ptwXPoints *ptwX, int64_t size );
37 ptwXPoints *ptwX_create( int64_t size, int64_t length, double const *xs, nfu_status *status );
38 ptwXPoints *ptwX_createLine( int64_t size, int64_t length, double slope, double offset, nfu_status *status );
40 ptwXPoints *ptwX_clone( ptwXPoints *ptwX, nfu_status *status );
41 ptwXPoints *ptwX_slice( ptwXPoints *ptwX, int64_t index1, int64_t index2, nfu_status *status );
42 nfu_status ptwX_reallocatePoints( ptwXPoints *ptwX, int64_t size, int forceSmallerResize );
46 
47 int64_t ptwX_length( ptwXPoints *ptwX );
48 nfu_status ptwX_setData( ptwXPoints *ptwX, int64_t length, double const *xs );
49 nfu_status ptwX_deletePoints( ptwXPoints *ptwX, int64_t i1, int64_t i2 );
50 double *ptwX_getPointAtIndex( ptwXPoints *ptwX, int64_t index );
51 double ptwX_getPointAtIndex_Unsafely( ptwXPoints *ptwX, int64_t index );
52 nfu_status ptwX_setPointAtIndex( ptwXPoints *ptwX, int64_t index, double x );
53 nfu_status ptwX_insertPointsAtIndex( ptwXPoints *ptwX, int64_t index, int64_t n1, double const *xs );
54 int ptwX_ascendingOrder( ptwXPoints *ptwX );
55 ptwXPoints *ptwX_fromString( char const *str, char **endCharacter, nfu_status *status );
56 nfu_status ptwX_countOccurrences( ptwXPoints *ptwX, double value, int *count );
58 nfu_status ptwX_sort( ptwXPoints *ptwX, enum ptwX_sort_order order );
59 nfu_status ptwX_closesDifference( ptwXPoints *ptwX, double value, int64_t *index, double *difference );
60 nfu_status ptwX_closesDifferenceInRange( ptwXPoints *ptwX, int64_t i1, int64_t i2, double value, int64_t *index, double *difference );
61 ptwXPoints *ptwX_unique( ptwXPoints *ptwX, int order, nfu_status *status );
62 
67 nfu_status ptwX_slopeOffset( ptwXPoints *ptwX, double slope, double offset );
70 
71 nfu_status ptwX_xMinMax( ptwXPoints *ptwX, double *xMin, double *xMax );
72 
73 nfu_status ptwX_compare( ptwXPoints *ptwX1, ptwXPoints *ptwX2, int *comparison );
74 int ptwX_close( ptwXPoints *ptwX1, ptwXPoints *ptwX2, int epsilonFactor, double epsilon, nfu_status *status );
75 
76 /*
77 * Routines in ptwX_misc.c
78 */
79 void ptwX_simpleWrite( ptwXPoints const *ptwX, FILE *f, char const *format );
80 void ptwX_simplePrint( ptwXPoints const *ptwX, char const *format );
81 
82 #if defined __cplusplus
83  }
84  }
85 #endif
86 
87 #endif /* End of ptwX_h_included. */