357 lines
15 KiB
C++
357 lines
15 KiB
C++
/*
|
|
# <<BEGIN-copyright>>
|
|
# <<END-copyright>>
|
|
*/
|
|
|
|
#ifndef xDataTOM_h_included
|
|
#define xDataTOM_h_included
|
|
|
|
#include <statusMessageReporting.h>
|
|
|
|
#if defined __cplusplus
|
|
extern "C" {
|
|
namespace GIDI {
|
|
#endif
|
|
|
|
typedef int xDataTOM_Int;
|
|
|
|
/* Note: xDataTOM_interpolationFlag_flat must be last for current logic in xDataTOM_interpolation.c to work. */
|
|
enum xDataTOM_interpolationFlag { xDataTOM_interpolationFlag_invalid, xDataTOM_interpolationFlag_linear, xDataTOM_interpolationFlag_log,
|
|
xDataTOM_interpolationFlag_byRegion, xDataTOM_interpolationFlag_flat };
|
|
enum xDataTOM_interpolationQualifier { xDataTOM_interpolationQualifier_invalid, xDataTOM_interpolationQualifier_dependent,
|
|
xDataTOM_interpolationQualifier_none, xDataTOM_interpolationQualifier_unitBase, xDataTOM_interpolationQualifier_correspondingPoints };
|
|
enum xDataTOM_frame { xDataTOM_frame_invalid, xDataTOM_frame_lab, xDataTOM_frame_centerOfMass };
|
|
enum xDataTOM_subAxesType { xDataTOM_subAxesType_proxy, xDataTOM_subAxesType_intepolationAxes };
|
|
enum xDataTOM_KalbachMannType { xDataTOM_KalbachMannType_fr, xDataTOM_KalbachMannType_fra };
|
|
|
|
typedef struct xDataTOM_interpolation_s xDataTOM_interpolation;
|
|
typedef struct xDataTOM_axis_s xDataTOM_axis;
|
|
typedef struct xDataTOM_axes_s xDataTOM_axes;
|
|
typedef struct xDataTOM_subAxes_s xDataTOM_subAxes;
|
|
|
|
typedef struct xDataTOM_XYs_s xDataTOM_XYs;
|
|
typedef struct xDataTOM_regionsXYs_s xDataTOM_regionsXYs;
|
|
typedef struct xDataTOM_W_XYs_s xDataTOM_W_XYs;
|
|
typedef struct xDataTOM_V_W_XYs_s xDataTOM_V_W_XYs;
|
|
|
|
typedef struct xDataTOM_LegendreSeries_s xDataTOM_LegendreSeries;
|
|
typedef struct xDataTOM_W_XYs_LegendreSeries_s xDataTOM_W_XYs_LegendreSeries;
|
|
typedef struct xDataTOM_regionsW_XYs_LegendreSeries_s xDataTOM_regionsW_XYs_LegendreSeries;
|
|
typedef struct xDataTOM_V_W_XYs_LegendreSeries_s xDataTOM_V_W_XYs_LegendreSeries;
|
|
typedef struct xDataTOM_KalbachMannCoefficients_s xDataTOM_KalbachMannCoefficients;
|
|
typedef struct xDataTOM_KalbachMann_s xDataTOM_KalbachMann;
|
|
typedef struct xDataTOM_polynomial_s xDataTOM_polynomial;
|
|
|
|
typedef struct xDataTOM_xDataInfo_s xDataTOM_xDataInfo;
|
|
|
|
typedef struct xDataTOM_attribute_s xDataTOM_attribute;
|
|
typedef struct xDataTOM_attributionList_s xDataTOM_attributionList;
|
|
typedef struct xDataTOM_elementListItem_s xDataTOM_elementListItem;
|
|
typedef struct xDataTOM_elementList_s xDataTOM_elementList;
|
|
typedef struct xDataTOM_element_s xDataTOM_element;
|
|
typedef struct xDataTOM_TOM_s xDataTOM_TOM;
|
|
|
|
typedef int (*xDataTOM_sortElementFunc)( const void *, const void * );
|
|
|
|
struct xDataTOM_interpolation_s {
|
|
enum xDataTOM_interpolationFlag independent, dependent;
|
|
enum xDataTOM_interpolationQualifier qualifier;
|
|
};
|
|
|
|
struct xDataTOM_axis_s {
|
|
int index;
|
|
char *label;
|
|
char *unit;
|
|
xDataTOM_interpolation interpolation;
|
|
};
|
|
|
|
struct xDataTOM_axes_s {
|
|
int numberOfAxes;
|
|
xDataTOM_axis *axis;
|
|
};
|
|
|
|
struct xDataTOM_subAxes_s {
|
|
enum xDataTOM_subAxesType type;
|
|
int offset;
|
|
xDataTOM_axes *axes;
|
|
xDataTOM_interpolation interpolation;
|
|
};
|
|
|
|
struct xDataTOM_XYs_s {
|
|
int index, length;
|
|
double value, accuracy;
|
|
xDataTOM_subAxes subAxes;
|
|
double *data;
|
|
};
|
|
|
|
struct xDataTOM_regionsXYs_s {
|
|
int length;
|
|
xDataTOM_axes *axes;
|
|
xDataTOM_XYs *XYs;
|
|
};
|
|
|
|
struct xDataTOM_W_XYs_s {
|
|
int index, length;
|
|
double value;
|
|
xDataTOM_subAxes subAxes;
|
|
xDataTOM_XYs *XYs;
|
|
};
|
|
|
|
struct xDataTOM_V_W_XYs_s {
|
|
int length;
|
|
xDataTOM_subAxes subAxes;
|
|
xDataTOM_W_XYs *W_XYs;
|
|
};
|
|
|
|
struct xDataTOM_LegendreSeries_s {
|
|
int index, length;
|
|
double value;
|
|
double *LegendreSeries;
|
|
};
|
|
|
|
struct xDataTOM_W_XYs_LegendreSeries_s {
|
|
int index, length;
|
|
double value;
|
|
xDataTOM_subAxes subAxes;
|
|
xDataTOM_LegendreSeries *LegendreSeries;
|
|
};
|
|
|
|
struct xDataTOM_regionsW_XYs_LegendreSeries_s {
|
|
int length;
|
|
xDataTOM_axes *axes;
|
|
xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries;
|
|
};
|
|
|
|
struct xDataTOM_V_W_XYs_LegendreSeries_s {
|
|
int length;
|
|
xDataTOM_subAxes subAxes;
|
|
xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries;
|
|
};
|
|
|
|
struct xDataTOM_KalbachMannCoefficients_s {
|
|
int index, length;
|
|
double value;
|
|
double *coefficients;
|
|
};
|
|
|
|
struct xDataTOM_KalbachMann_s {
|
|
enum xDataTOM_KalbachMannType type;
|
|
int numberOfEnergies;
|
|
xDataTOM_subAxes subAxes;
|
|
xDataTOM_KalbachMannCoefficients *coefficients;
|
|
};
|
|
|
|
struct xDataTOM_polynomial_s {
|
|
int length;
|
|
xDataTOM_subAxes subAxes;
|
|
double *coefficients;
|
|
};
|
|
|
|
struct xDataTOM_xDataInfo_s {
|
|
const char *ID;
|
|
xDataTOM_element *element;
|
|
xDataTOM_axes axes;
|
|
void *data;
|
|
};
|
|
|
|
struct xDataTOM_attribute_s {
|
|
xDataTOM_attribute *next;
|
|
char *name;
|
|
char *value;
|
|
};
|
|
|
|
struct xDataTOM_attributionList_s {
|
|
int number;
|
|
xDataTOM_attribute *attributes;
|
|
};
|
|
|
|
struct xDataTOM_elementListItem_s {
|
|
xDataTOM_element *element;
|
|
const char *sortString;
|
|
};
|
|
|
|
struct xDataTOM_elementList_s {
|
|
int n;
|
|
xDataTOM_elementListItem *items;
|
|
};
|
|
|
|
struct xDataTOM_element_s {
|
|
int ordinal; /* Counting from 0. */
|
|
int index; /* Value from "index" attribute if present or -1. */
|
|
xDataTOM_element *parent;
|
|
xDataTOM_element *next;
|
|
char *name;
|
|
xDataTOM_attributionList attributes;
|
|
int numberOfChildren;
|
|
xDataTOM_element *children;
|
|
xDataTOM_xDataInfo xDataInfo;
|
|
};
|
|
|
|
struct xDataTOM_TOM_s {
|
|
char *fileName;
|
|
char *realFileName;
|
|
xDataTOM_element root;
|
|
};
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM.c
|
|
*/
|
|
xDataTOM_TOM *xDataTOM_importFile( statusMessageReporting *smr, const char *fileName );
|
|
xDataTOM_TOM *xDataTOM_mallocTOM( statusMessageReporting *smr );
|
|
int xDataTOM_initializeTOM( statusMessageReporting *smr, xDataTOM_TOM *doc );
|
|
void *xDataTOM_freeTOM( statusMessageReporting *smr, xDataTOM_TOM **TOM );
|
|
int xDataTOM_setFileNameTOM( statusMessageReporting *smr, xDataTOM_TOM *doc, const char *fileName );
|
|
void xDataTOM_displayTree( statusMessageReporting *smr, xDataTOM_TOM *TOM, int printAttributes );
|
|
|
|
xDataTOM_element *xDataTOM_mallocElement( statusMessageReporting *smr, xDataTOM_element *parent, int ordinal, int index, char const *name );
|
|
void xDataTOM_freeElement( xDataTOM_element **element );
|
|
void xDataTOM_releaseElement( xDataTOM_element *element );
|
|
xDataTOM_element *xDataTOM_addElementInElement( statusMessageReporting *smr, xDataTOM_element *parent, int index, char const *name );
|
|
xDataTOM_element *xDataTOM_getDocumentsElement( xDataTOM_TOM *TOM );
|
|
xDataTOM_element *xDataTOME_getFirstElement( xDataTOM_element *element );
|
|
xDataTOM_element *xDataTOME_getNextElement( xDataTOM_element *element );
|
|
xDataTOM_element *xDataTOME_getOneElementByName( statusMessageReporting *smr, xDataTOM_element *element, char const *name, int required );
|
|
int xDataTOM_numberOfElementsByName( statusMessageReporting *smr, xDataTOM_element *element, char const *name );
|
|
int xDataTOME_addAttribute( statusMessageReporting *smr, xDataTOM_element *element, char const *name, char const *value );
|
|
char const *xDataTOM_getAttributesValueInElement( xDataTOM_element *element, char const *name );
|
|
int xDataTOME_copyAttributionList( statusMessageReporting *smr, xDataTOM_attributionList *desc, xDataTOM_element *element );
|
|
int xDataTOME_convertAttributeToInteger( statusMessageReporting *smr, xDataTOM_element *element, char const *name, int *n );
|
|
int xDataTOME_convertAttributeToDouble( statusMessageReporting *smr, xDataTOM_element *element, char const *name, double *d );
|
|
int xDataTOME_convertAttributeToDoubleWithUnit( statusMessageReporting *smr, xDataTOM_element *element, char const *name, double *d, char *unit );
|
|
int xDataTOME_getInterpolation( statusMessageReporting *smr, xDataTOM_element *element, int index,
|
|
enum xDataTOM_interpolationFlag *independent, enum xDataTOM_interpolationFlag *dependent, enum xDataTOM_interpolationQualifier *qualifier );
|
|
|
|
void xDataTOMAL_initial( statusMessageReporting *smr, xDataTOM_attributionList *attributes );
|
|
void xDataTOMAL_release( xDataTOM_attributionList *attributes );
|
|
int xDataTOMAL_addAttribute( statusMessageReporting *smr, xDataTOM_attributionList *attributes, char const *name, char const *value );
|
|
char const *xDataTOMAL_getAttributesValue( xDataTOM_attributionList *attributes, char const *name );
|
|
int xDataTOMAL_copyAttributionList( statusMessageReporting *smr, xDataTOM_attributionList *desc, xDataTOM_attributionList *src );
|
|
int xDataTOMAL_convertAttributeToInteger( statusMessageReporting *smr, xDataTOM_attributionList *attributes, char const *name, int *n );
|
|
int xDataTOMAL_convertAttributeToDouble( statusMessageReporting *smr, xDataTOM_attributionList *attributes, char const *name, double *d );
|
|
|
|
void *xData_initializeData( statusMessageReporting *smr, xDataTOM_element *TE, char const *ID, size_t size );
|
|
int xDataTOM_isXDataID( xDataTOM_element *TE, char const *ID );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOMMisc.c
|
|
*/
|
|
char *xDataTOMMisc_getAbsPath( statusMessageReporting *smr, const char *fileName );
|
|
int xDataTOM_setMessageError_ReturnInt( int value, statusMessageReporting *smr, void *userData, const char *file, int line, int code, const char *fmt, ... );
|
|
xDataTOM_element *xDataTOM_getLinksElement( statusMessageReporting *smr, xDataTOM_element *element, char const *link );
|
|
|
|
#define xDataTOMMisc_allocateCopyString2( smr, s, forItem ) xDataTOMMisc_allocateCopyString( smr, s, forItem, __FILE__, __LINE__ )
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_interpolation.c
|
|
*/
|
|
int xDataTOM_interpolation_set( statusMessageReporting *smr, xDataTOM_interpolation *interpolation, enum xDataTOM_interpolationFlag independent,
|
|
enum xDataTOM_interpolationFlag dependent, enum xDataTOM_interpolationQualifier qualifier );
|
|
int xDataTOM_interpolation_setFromString( statusMessageReporting *smr, xDataTOM_interpolation *interpolation, char const *str );
|
|
int xDataTOM_interpolation_copy( statusMessageReporting *smr, xDataTOM_interpolation *desc, xDataTOM_interpolation *src );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_axes.c
|
|
*/
|
|
int xDataTOM_axes_initialize( statusMessageReporting *smr, xDataTOM_axes *axes, int numberOfAxes );
|
|
int xDataTOM_axes_release( xDataTOM_axes *axes );
|
|
char const *xDataTOM_axes_getLabel( statusMessageReporting *smr, xDataTOM_axes *axes, int index );
|
|
char const *xDataTOM_axes_getUnit( statusMessageReporting *smr, xDataTOM_axes *axes, int index );
|
|
int xDataTOM_axes_getInterpolation( statusMessageReporting *smr, xDataTOM_axes *axes, int index, enum xDataTOM_interpolationFlag *independent,
|
|
enum xDataTOM_interpolationFlag *dependent, enum xDataTOM_interpolationQualifier *qualifier );
|
|
|
|
int xDataTOM_subAxes_initialize( statusMessageReporting *smr, xDataTOM_subAxes *subAxes, enum xDataTOM_subAxesType type, int offset,
|
|
xDataTOM_axes *axes, xDataTOM_interpolation *interpolation );
|
|
int xDataTOM_subAxes_release( xDataTOM_subAxes *subAxes );
|
|
char const *xDataTOM_subAxes_getLabel( statusMessageReporting *smr, xDataTOM_subAxes *subAxes, int index );
|
|
char const *xDataTOM_subAxes_getUnit( statusMessageReporting *smr, xDataTOM_subAxes *subAxes, int index );
|
|
|
|
xDataTOM_axis *xDataTOM_axis_new( statusMessageReporting *smr, int index, char const *label, char const *unit, xDataTOM_interpolation *interpolation );
|
|
int xDataTOM_axis_initialize( statusMessageReporting *smr, xDataTOM_axis *axis, int index, char const *label, char const *unit,
|
|
xDataTOM_interpolation *interpolation );
|
|
xDataTOM_axis *xDataTOM_axis_release( statusMessageReporting *smr, xDataTOM_axis *axis );
|
|
enum xDataTOM_frame xDataTOM_axis_stringToFrame( statusMessageReporting *smr, char const *frame );
|
|
char const *xDataTOM_axis_frameToString( statusMessageReporting *smr, enum xDataTOM_frame frame );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_XYs.c
|
|
*/
|
|
int xDataTOM_XYs_free( xDataTOM_xDataInfo *xDI );
|
|
int xDataTOM_XYs_release( xDataTOM_XYs *XYs );
|
|
int xDataTOM_XYs_getData( xDataTOM_XYs *XYs, double **data );
|
|
int xDataTOM_XYs_getDataFromXDataInfo( xDataTOM_xDataInfo *xDI, double **data );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_regionsXYs.c
|
|
*/
|
|
int xDataTOM_regionsXYs_free( xDataTOM_xDataInfo *xDI );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_W_XYs.c
|
|
*/
|
|
xDataTOM_W_XYs *xDataTOM_W_XYs_new( statusMessageReporting *smr, int index, int length, double value, xDataTOM_axes *axes, int axesOffset );
|
|
int xDataTOM_W_XYs_initialize( statusMessageReporting *smr, xDataTOM_W_XYs *W_XYs, int index, int length, double value, xDataTOM_axes *axes,
|
|
int axesOffset );
|
|
xDataTOM_W_XYs *xDataTOM_W_XYs_free( xDataTOM_W_XYs *W_XYs );
|
|
int xDataTOM_W_XYs_freeFrom_xDataInfo( xDataTOM_xDataInfo *xDI );
|
|
int xDataTOM_W_XYs_release( xDataTOM_W_XYs *W_XYs );
|
|
xDataTOM_xDataInfo *xDataTOME_getXData( xDataTOM_element *TE );
|
|
void *xDataTOME_getXDataIfID( statusMessageReporting *smr, xDataTOM_element *TE, char const *ID );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_V_W_XYs.c
|
|
*/
|
|
int xDataTOM_V_W_XYs_initialize( statusMessageReporting *smr, xDataTOM_V_W_XYs *V_W_XYs, int length, xDataTOM_axes *axes );
|
|
int xDataTOM_V_W_XYs_free( xDataTOM_xDataInfo *xDI );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_LegendreSeries.c
|
|
*/
|
|
int xDataTOM_LegendreSeries_initialize( statusMessageReporting *smr, xDataTOM_LegendreSeries *LegendreSeries, int index, int length, double value );
|
|
int xDataTOM_LegendreSeries_release( xDataTOM_LegendreSeries *LegendreSeries );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_W_XYs_LegendreSeries.c
|
|
*/
|
|
int xDataTOM_W_XYs_LegendreSeries_initialize( statusMessageReporting *smr, xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries, int index,
|
|
int length, double value, enum xDataTOM_subAxesType subAxesType, xDataTOM_axes *axes, xDataTOM_interpolation *interpolation );
|
|
int xDataTOM_W_XYs_LegendreSeries_free( xDataTOM_xDataInfo *xDI );
|
|
int xDataTOM_W_XYs_LegendreSeries_release( xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_regionsW_XYs_LegendreSeries.c
|
|
*/
|
|
int xDataTOM_regionsW_XYs_LegendreSeries_initialize( statusMessageReporting *smr, xDataTOM_regionsW_XYs_LegendreSeries *regionsW_XYs_LegendreSeries,
|
|
int length, xDataTOM_axes *axes );
|
|
int xDataTOM_regionsW_XYs_LegendreSeries_free( xDataTOM_xDataInfo *xDI );
|
|
int xDataTOM_regionsW_XYs_LegendreSeries_release( xDataTOM_regionsW_XYs_LegendreSeries *regionsW_XYs_LegendreSeries );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_V_W_XYs_LegendreSeries.c
|
|
*/
|
|
int xDataTOM_V_W_XYs_LegendreSeries_initialize( statusMessageReporting *smr, xDataTOM_V_W_XYs_LegendreSeries *V_W_XYs_LegendreSeries,
|
|
int length, xDataTOM_axes *axes );
|
|
int xDataTOM_V_W_XYs_LegendreSeries_free( xDataTOM_xDataInfo *xDI );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_KalbachMann.c
|
|
*/
|
|
int xDataTOM_KalbachMann_initialize( statusMessageReporting *smr, xDataTOM_KalbachMann *KalbachMann, int length, xDataTOM_axes *axes );
|
|
int xDataTOM_KalbachMann_free( xDataTOM_xDataInfo *xDI );
|
|
int xDataTOM_KalbachMann_release( xDataTOM_KalbachMann *KalbachMann );
|
|
|
|
/*
|
|
* Stuff in common/xDataTOM_polynomial.c
|
|
*/
|
|
int xDataTOM_polynomial_initialize( statusMessageReporting *smr, xDataTOM_polynomial *polynomial, int length, xDataTOM_axes *axes );
|
|
int xDataTOM_polynomial_free( xDataTOM_xDataInfo *xDI );
|
|
int xDataTOM_polynomial_release( xDataTOM_polynomial *polynomial );
|
|
int xDataTOM_polynomial_getData( xDataTOM_polynomial *polynomial, double **data );
|
|
int xDataTOM_polynomial_getDataFromXDataInfo( xDataTOM_xDataInfo *xDI, double **data );
|
|
|
|
#if defined __cplusplus
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#endif /* End of xDataTOM_h_included. */
|