Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
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_matrixxData_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 xDataType_s::data, xDataType_s::element, xData_matrix_rowStartEnd_s::end, xDataType_s::length, xData_matrix_rowStartEnd_s::row, xData_matrix_s::rowStartEnds, smr_setMessageError(), xData_matrix_rowStartEnd_s::start, xData_get_smrUserInterfaceFromElement(), and xData_is_matrix().

231  {
232 
233  int status = 0;
234  xData_matrix *matrix = (xData_matrix *) xDT->data;
235 
236  if( !xData_is_matrix( smr, xDT, 1 ) ) return( 1 );
237  if( ( index < 0 ) || ( index >= xDT->length ) ) {
238  smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( xDT->element ), __FILE__, __LINE__, 1,
239  "index = %lld out of range (valid range 0 <= index < %lld)", index, xDT->length );
240  status = 1; }
241  else {
242  *row = matrix->rowStartEnds[index].row;
243  *start = matrix->rowStartEnds[index].start;
244  *end = matrix->rowStartEnds[index].end;
245  }
246  return( status );
247 }
xData_Int length
Definition: xData.h:162
void * xData_get_smrUserInterfaceFromElement(xData_element *element)
Definition: xData.cc:952
int smr_setMessageError(statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt,...)
xData_matrix_rowStartEnd * rowStartEnds
Definition: xData.h:112
int status
Definition: tracer.cxx:24
xData_element * element
Definition: xData.h:157
int xData_is_matrix(statusMessageReporting *smr, xDataType *xDT, int setMsg)
Definition: xData_matrix.cc:71
void * data
Definition: xData.h:163
int xData_init_matrix ( statusMessageReporting smr,
xData_element element 
)

Definition at line 55 of file xData_matrix.cc.

References xDataType_s::data, xDataType_s::element, xDataType_s::release, xDataType_s::status, xDataType_s::toData, xDataType_s::toString, xDataType_s::typeString, xData_matrix_ID, xData_xDataType_Ok, xData_xDataTypeConvertAttributes(), and xData_element_s::xDataTypeInfo.

55  {
56 
57  xDataType *xDT = &(element->xDataTypeInfo);
58 
61  xDT->element = element;
62  xDT->toData = toData;
63  xDT->toString = toString;
64  xDT->release = release;
65  xDT->data = NULL;
66  return( xData_xDataTypeConvertAttributes( smr, element ) );
67 }
int xData_xDataTypeConvertAttributes(statusMessageReporting *smr, xData_element *element)
Definition: xData.cc:668
xDT_toStringFunction toString
Definition: xData.h:159
enum xData_xDataType status
Definition: xData.h:155
const char *const xData_matrix_ID
Definition: xData.h:75
xDataType xDataTypeInfo
Definition: xData.h:187
xDT_releaseFunction release
Definition: xData.h:160
xData_element * element
Definition: xData.h:157
const char * typeString
Definition: xData.h:156
xDT_toDataFunction toData
Definition: xData.h:158
void * data
Definition: xData.h:163
int xData_is_matrix ( statusMessageReporting smr,
xDataType xDT,
int  setMsg 
)

Definition at line 71 of file xData_matrix.cc.

References xData_is_xDataType(), and xData_matrix_ID.

Referenced by getRowStartEndAtIndex(), and xData_isElement_matrix().

71  {
72 
73  return( xData_is_xDataType( smr, xDT, xData_matrix_ID, setMsg ) );
74 }
int xData_is_xDataType(statusMessageReporting *smr, xDataType *xDT, char const *const type, int setMsg)
Definition: xData.cc:900
const char *const xData_matrix_ID
Definition: xData.h:75
int xData_isElement_matrix ( statusMessageReporting smr,
xData_element element,
int  setMsg 
)

Definition at line 78 of file xData_matrix.cc.

References xData_is_matrix(), and xData_element_s::xDataTypeInfo.

Referenced by xData_matrix_copyData().

78  {
79 
80  return( xData_is_matrix( smr, &(element->xDataTypeInfo), setMsg ) );
81 }
xDataType xDataTypeInfo
Definition: xData.h:187
int xData_is_matrix(statusMessageReporting *smr, xDataType *xDT, int setMsg)
Definition: xData_matrix.cc:71
xData_matrix* xData_matrix_copyData ( statusMessageReporting smr,
xData_element element 
)

Definition at line 85 of file xData_matrix.cc.

References xData_matrix_s::columns, xDataType_s::data, xDataType_s::length, n, xData_matrix_s::rows, xData_matrix_s::rowStartEnds, xData_matrix_s::values, xData_isElement_matrix(), xData_malloc2, and xData_element_s::xDataTypeInfo.

85  {
86 
87  xData_Int i, n;
88  xDataType *xDT = &(element->xDataTypeInfo);
89  xData_matrix *oldMatrix = (xData_matrix *) xDT->data, *newMatrix;
90  double *oldP, *newP;
91 
92  if( !xData_isElement_matrix( smr, element, 1 ) ) return( NULL );
93  n = oldMatrix->rows * oldMatrix->columns;
94  if( ( newMatrix = (xData_matrix *) xData_malloc2( smr, sizeof( xData_matrix ) + xDT->length * sizeof( xData_matrix_rowStartEnd ) +
95  n * sizeof( double ), 0, "data" ) ) == NULL ) return( NULL );
96  newMatrix->rows = oldMatrix->rows;
97  newMatrix->columns = oldMatrix->columns;
98  newMatrix->rowStartEnds = (xData_matrix_rowStartEnd *) &(newMatrix[1]);
99  newMatrix->values = (double *) &(newMatrix->rowStartEnds[xDT->length]);
100  for( i = 0; i < xDT->length; i++ ) newMatrix->rowStartEnds[i] = oldMatrix->rowStartEnds[i];
101  for( i = 0, oldP = oldMatrix->values, newP = newMatrix->values; i < n; i++, oldP++, newP++ ) *newP = *oldP;
102  return( newMatrix );
103 }
xData_Int length
Definition: xData.h:162
double * values
Definition: xData.h:113
xData_matrix_rowStartEnd * rowStartEnds
Definition: xData.h:112
#define xData_malloc2(smr, size, zero, forItem)
Definition: xData.h:313
xData_Int columns
Definition: xData.h:111
xData_Int rows
Definition: xData.h:111
xDataType xDataTypeInfo
Definition: xData.h:187
const G4int n
int xData_isElement_matrix(statusMessageReporting *smr, xData_element *element, int setMsg)
Definition: xData_matrix.cc:78
int xData_Int
Definition: xData.h:50
void * data
Definition: xData.h:163
int xData_matrix_free_copyData ( statusMessageReporting smr,
void data 
)

Definition at line 107 of file xData_matrix.cc.

References xData_free().

107  {
108 
109  xData_free( smr, data );
110  return( 0 );
111 }
void * xData_free(statusMessageReporting *smr, void *p)
Definition: xDataMisc.cc:89
const XML_Char const XML_Char * data