#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
#include "xData.h"
Go to the source code of this file.
Functions | |
int | xData_init_matrix (statusMessageReporting *smr, xData_element *element) |
int | xData_is_matrix (statusMessageReporting *smr, xDataType *xDT, int setMsg) |
int | xData_isElement_matrix (statusMessageReporting *smr, xData_element *element, int setMsg) |
xData_matrix * | xData_matrix_copyData (statusMessageReporting *smr, xData_element *element) |
int | xData_matrix_free_copyData (statusMessageReporting *smr, void *data) |
int | getRowStartEndAtIndex (statusMessageReporting *smr, xDataType *xDT, xData_Int index, xData_Int *row, xData_Int *start, xData_Int *end) |
int getRowStartEndAtIndex | ( | statusMessageReporting * | smr, | |
xDataType * | xDT, | |||
xData_Int | index, | |||
xData_Int * | row, | |||
xData_Int * | start, | |||
xData_Int * | end | |||
) |
Definition at line 231 of file xData_matrix.cc.
References smr_setMessageError(), xData_get_smrUserInterfaceFromElement(), and xData_is_matrix().
00231 { 00232 00233 int status = 0; 00234 xData_matrix *matrix = (xData_matrix *) xDT->data; 00235 00236 if( !xData_is_matrix( smr, xDT, 1 ) ) return( 1 ); 00237 if( ( index < 0 ) || ( index >= xDT->length ) ) { 00238 smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( xDT->element ), __FILE__, __LINE__, 1, 00239 "index = %lld out of range (valid range 0 <= index < %lld)", index, xDT->length ); 00240 status = 1; } 00241 else { 00242 *row = matrix->rowStartEnds[index].row; 00243 *start = matrix->rowStartEnds[index].start; 00244 *end = matrix->rowStartEnds[index].end; 00245 } 00246 return( status ); 00247 }
int xData_init_matrix | ( | statusMessageReporting * | smr, | |
xData_element * | element | |||
) |
Definition at line 55 of file xData_matrix.cc.
References xData_xDataTypeConvertAttributes().
00055 { 00056 00057 xDataType *xDT = &(element->xDataTypeInfo); 00058 00059 xDT->status = xData_xDataType_Ok; 00060 xDT->typeString = xData_matrix_ID; 00061 xDT->element = element; 00062 xDT->toData = toData; 00063 xDT->toString = toString; 00064 xDT->release = release; 00065 xDT->data = NULL; 00066 return( xData_xDataTypeConvertAttributes( smr, element ) ); 00067 }
int xData_is_matrix | ( | statusMessageReporting * | smr, | |
xDataType * | xDT, | |||
int | setMsg | |||
) |
Definition at line 71 of file xData_matrix.cc.
References xData_is_xDataType().
Referenced by getRowStartEndAtIndex(), and xData_isElement_matrix().
00071 { 00072 00073 return( xData_is_xDataType( smr, xDT, xData_matrix_ID, setMsg ) ); 00074 }
int xData_isElement_matrix | ( | statusMessageReporting * | smr, | |
xData_element * | element, | |||
int | setMsg | |||
) |
Definition at line 78 of file xData_matrix.cc.
References xData_is_matrix().
Referenced by xData_matrix_copyData().
00078 { 00079 00080 return( xData_is_matrix( smr, &(element->xDataTypeInfo), setMsg ) ); 00081 }
xData_matrix* xData_matrix_copyData | ( | statusMessageReporting * | smr, | |
xData_element * | element | |||
) |
Definition at line 85 of file xData_matrix.cc.
References CLHEP::detail::n, and xData_isElement_matrix().
00085 { 00086 00087 xData_Int i, n; 00088 xDataType *xDT = &(element->xDataTypeInfo); 00089 xData_matrix *oldMatrix = (xData_matrix *) xDT->data, *newMatrix; 00090 double *oldP, *newP; 00091 00092 if( !xData_isElement_matrix( smr, element, 1 ) ) return( NULL ); 00093 n = oldMatrix->rows * oldMatrix->columns; 00094 if( ( newMatrix = (xData_matrix *) xData_malloc2( smr, sizeof( xData_matrix ) + xDT->length * sizeof( xData_matrix_rowStartEnd ) + 00095 n * sizeof( double ), 0, "data" ) ) == NULL ) return( NULL ); 00096 newMatrix->rows = oldMatrix->rows; 00097 newMatrix->columns = oldMatrix->columns; 00098 newMatrix->rowStartEnds = (xData_matrix_rowStartEnd *) &(newMatrix[1]); 00099 newMatrix->values = (double *) &(newMatrix->rowStartEnds[xDT->length]); 00100 for( i = 0; i < xDT->length; i++ ) newMatrix->rowStartEnds[i] = oldMatrix->rowStartEnds[i]; 00101 for( i = 0, oldP = oldMatrix->values, newP = newMatrix->values; i < n; i++, oldP++, newP++ ) *newP = *oldP; 00102 return( newMatrix ); 00103 }
int xData_matrix_free_copyData | ( | statusMessageReporting * | smr, | |
void * | data | |||
) |
Definition at line 107 of file xData_matrix.cc.
References xData_free().
00107 { 00108 00109 xData_free( smr, data ); 00110 return( 0 ); 00111 }