xData_matrix.cc File Reference

#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)


Function Documentation

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 }


Generated on Mon May 27 17:51:17 2013 for Geant4 by  doxygen 1.4.7