#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include "xData.h"
Go to the source code of this file.
Functions | |
xData_document * | xData_parseReadFile (statusMessageReporting *smr, const char *fileName, xData_xDataTypeOk func, void *userData) |
xData_document * | xData_parseString (statusMessageReporting *smr, const char *str, xData_xDataTypeOk func, void *userData) |
xData_document * | xData_parseMalloc (statusMessageReporting *smr, xData_xDataTypeOk func, void *userData) |
int | xData_parseInitialize (statusMessageReporting *smr, xData_document *doc, xData_xDataTypeOk func, void *userData) |
int | xData_parseEndOfXML (statusMessageReporting *smr, xData_document *doc) |
void * | xData_parseFree (statusMessageReporting *smr, xData_document *doc) |
int | xData_parse (xData_document *doc, const char *s) |
int | xData_parseIsError (xData_document *doc) |
xData_element * | xData_getDocumentsElement (xData_document *doc) |
xData_element * | xData_getFirstElement (xData_element *element) |
xData_element * | xData_getNextElement (xData_element *element) |
enum xData_itemMode | xData_getFirstItem (xData_element *element, xData_item *item) |
enum xData_itemMode | xData_getNextItem (xData_item *item) |
char * | xData_getAttributesValue (xData_attributionList *attributes, const char *name) |
const char * | xData_getAttributesValueInElement (xData_element *element, const char *name) |
int | xData_initializeAttributionList (statusMessageReporting *, xData_attributionList *attributes) |
int | xData_copyAttributionList (statusMessageReporting *smr, xData_attributionList *dest, xData_attributionList *src) |
int | xData_attributeListLength (xData_attributionList *attributes) |
xData_attribute * | xData_attributeByIndex (xData_attributionList *attributes, int index) |
int | xData_releaseAttributionList (statusMessageReporting *smr, xData_attributionList *attributes) |
xData_element * | xData_getElements_xDataElement (statusMessageReporting *smr, xData_element *element) |
int | xData_getCommonData (statusMessageReporting *smr, xData_element *element, xData_Int *index, xData_Int *start, xData_Int *end, xData_Int *length) |
int | xData_xDataTypeConvertAttributes (statusMessageReporting *smr, xData_element *element) |
xData_Int | xData_convertAttributeTo_xData_Int (statusMessageReporting *smr, xData_element *element, const char *name, xData_Int *n) |
int | xData_convertAttributeToDouble (statusMessageReporting *smr, xData_element *element, const char *name, double *d) |
int | xData_numberOfElementsByTagName (statusMessageReporting *, xData_element *element, const char *tagName) |
xData_elementList * | xData_getElementsByTagName (statusMessageReporting *smr, xData_element *element, const char *tagName) |
xData_elementList * | xData_getElementsByTagNameAndSort (statusMessageReporting *smr, xData_element *element, const char *tagName, const char *sortAttributeName, xData_sortElementFunc sortFunction) |
xData_element * | xData_getOneElementByTagName (statusMessageReporting *smr, xData_element *element, char *name, int required) |
void | xData_freeElementList (statusMessageReporting *smr, xData_elementList *list) |
int | xData_is_xDataType (statusMessageReporting *smr, xDataType *xDT, char const *const type, int setMsg) |
char const * | xData_getFileName (xData_document *doc) |
int | xData_setFileName (statusMessageReporting *smr, xData_document *doc, char const *fileName) |
xData_document * | xData_getElementsDocument (xData_element *element) |
void * | xData_get_smrUserInterfaceFromDocument (xData_document *doc) |
void * | xData_get_smrUserInterfaceFromElement (xData_element *element) |
int | xData_stringTo_xData_Int (statusMessageReporting *smr, void *smrUserInterface, char const *c, xData_Int *value, char const *endings, char **e) |
int | xData_stringTo_double (statusMessageReporting *smr, void *smrUserInterface, char const *c, double *value, char const *endings, char **e) |
int | xData_addToAccessed (statusMessageReporting *, xData_element *element, int increment) |
int | xData_getAccessed (statusMessageReporting *, xData_element *element) |
int xData_addToAccessed | ( | statusMessageReporting * | , | |
xData_element * | element, | |||
int | increment | |||
) |
Definition at line 1078 of file xData.cc.
Referenced by tpia_angularEnergy_getFromElement(), tpia_channel_getFromElement(), tpia_Legendre_getFromElement(), tpia_misc_get2d_xShared_yHistogram_data(), tpia_misc_get2dx_y_data(), tpia_misc_get2dxindex_y_data(), tpia_misc_getEqualProbableBin(), tpia_misc_getEqualProbableBins(), tpia_multiplicity_getFromElement(), tpia_product_getFromElement(), and tpia_target_heated_read().
xData_attribute* xData_attributeByIndex | ( | xData_attributionList * | attributes, | |
int | index | |||
) |
int xData_attributeListLength | ( | xData_attributionList * | attributes | ) |
xData_Int xData_convertAttributeTo_xData_Int | ( | statusMessageReporting * | smr, | |
xData_element * | element, | |||
const char * | name, | |||
xData_Int * | n | |||
) |
Definition at line 710 of file xData.cc.
References smr_setMessageError(), xData_get_smrUserInterfaceFromElement(), and xData_getAttributesValueInElement().
Referenced by tpia_angularEnergy_getFromElement(), tpia_channel_getFromElement(), tpia_misc_getEqualProbableBin(), tpia_misc_getEqualProbableBins(), tpia_target_heated_read(), and xData_xDataTypeConvertAttributes().
00710 { 00711 /* 00712 * Returns 1 if no such attribute, -1 if error converting to xData_Int and 0 if successful. 00713 */ 00714 const char *value; 00715 char *e; 00716 00717 if( ( value = xData_getAttributesValueInElement( element, name ) ) == NULL ) return( 1 ); 00718 //*n = strtoll( value, &e, 10 ); 00719 *n = strtol( value, &e, 10 ); 00720 if( *e != 0 ) { 00721 smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( element ), __FILE__, __LINE__, 1, 00722 "could not convert attribute %s's value = %s to an integer", name, value ); 00723 return( -1 ); 00724 } 00725 return( 0 ); 00726 }
int xData_convertAttributeToDouble | ( | statusMessageReporting * | smr, | |
xData_element * | element, | |||
const char * | name, | |||
double * | d | |||
) |
Definition at line 730 of file xData.cc.
References smr_setMessageError(), xData_get_smrUserInterfaceFromElement(), and xData_getAttributesValueInElement().
Referenced by tpia_angularEnergy_getFromElement(), tpia_misc_getEqualProbableBins(), and tpia_target_read().
00730 { 00731 /* 00732 * Returns 1 if no such attribute, -1 if error converting to double and 0 if successful. 00733 */ 00734 const char *value; 00735 char *e; 00736 00737 if( ( value = xData_getAttributesValueInElement( element, name ) ) == NULL ) return( 1 ); 00738 *d = strtod( value, &e ); 00739 if( *e != 0 ) { 00740 smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( element) , __FILE__, __LINE__, 1, 00741 "could not convert attribute %s's values = %s to a double", name, value ); 00742 return( -1 ); 00743 } 00744 return( 0 ); 00745 }
int xData_copyAttributionList | ( | statusMessageReporting * | smr, | |
xData_attributionList * | dest, | |||
xData_attributionList * | src | |||
) |
Definition at line 564 of file xData.cc.
Referenced by tpia_channel_getFromElement(), tpia_product_getFromElement(), tpia_target_heated_read(), and tpia_target_read().
00564 { 00565 /* 00566 * The dest must not be active, else a memory leak will occur, as this routine does no free-ing. 00567 */ 00568 int i; 00569 size_t lens; 00570 xData_attribute *d, *s; 00571 char *p; 00572 00573 //if( ( dest->attributes = xData_malloc2( smr, src->size, 0, "attributes" ) ) == NULL ) return( 1 ); 00574 if( ( dest->attributes = (xData_attribute*) xData_malloc2( smr, src->size, 0, "attributes" ) ) == NULL ) return( 1 ); 00575 dest->number = src->number; 00576 dest->size = src->size; 00577 d = dest->attributes; 00578 s = src->attributes; 00579 p = (char *) &(dest->attributes[src->number]); 00580 for( i = 0; i < src->number; i++, s++, d++ ) { 00581 lens = strlen( s->name ) + 1; 00582 d->name = p; 00583 strcpy( p, s->name ); 00584 p += lens; 00585 lens = strlen( s->value ) + 1; 00586 d->value= p; 00587 strcpy( p, s->value ); 00588 p += lens; 00589 } 00590 00591 return( 0 ); 00592 }
void xData_freeElementList | ( | statusMessageReporting * | smr, | |
xData_elementList * | list | |||
) |
Definition at line 832 of file xData.cc.
References xData_free().
Referenced by tpia_angularEnergy_getFromElement(), tpia_Legendre_getFromElement(), and xData_getOneElementByTagName().
00832 { 00833 00834 xData_free( smr, list ); 00835 }
void* xData_get_smrUserInterfaceFromDocument | ( | xData_document * | doc | ) |
Definition at line 944 of file xData.cc.
Referenced by xData_get_smrUserInterfaceFromElement(), and xData_parseEndOfXML().
00944 { 00945 00946 if( doc == NULL ) return( NULL ); 00947 return( &(doc->smrUserInterface ) ); 00948 }
void* xData_get_smrUserInterfaceFromElement | ( | xData_element * | element | ) |
Definition at line 952 of file xData.cc.
References xData_get_smrUserInterfaceFromDocument(), and xData_getElementsDocument().
Referenced by getRowStartEndAtIndex(), xData_1d_x_copyData(), xData_convertAttributeTo_xData_Int(), xData_convertAttributeToDouble(), xData_getCommonData(), xData_getOneElementByTagName(), xData_is_xDataType(), and xData_xDataTypeConvertAttributes().
00952 { 00953 00954 return( xData_get_smrUserInterfaceFromDocument( xData_getElementsDocument( element ) ) ); 00955 }
int xData_getAccessed | ( | statusMessageReporting * | , | |
xData_element * | element | |||
) |
char* xData_getAttributesValue | ( | xData_attributionList * | attributes, | |
const char * | name | |||
) |
Definition at line 530 of file xData.cc.
Referenced by tpia_misc_pointerToAttributeIfAllOk(), tpia_multiplicity_getTimeScaleFromElement(), tpia_target_getAttributesValue(), tpia_target_heated_read(), and xData_getAttributesValueInElement().
00530 { 00531 00532 int i; 00533 char *value = NULL; 00534 00535 for( i = 0; i < attributes->number; i++ ) { 00536 if( !strcmp( attributes->attributes[i].name, name ) ) { 00537 value = attributes->attributes[i].value; 00538 break; 00539 } 00540 } 00541 return( value ); 00542 }
const char* xData_getAttributesValueInElement | ( | xData_element * | element, | |
const char * | name | |||
) |
Definition at line 546 of file xData.cc.
References xData_getAttributesValue().
Referenced by tpia_frame_setFromElement(), tpia_map_readFile(), tpia_target_read(), xData_convertAttributeTo_xData_Int(), xData_convertAttributeToDouble(), and xData_getElementsByTagNameAndSort().
00546 { 00547 00548 return( (const char *) xData_getAttributesValue( &(element->attributes), name ) ); 00549 }
int xData_getCommonData | ( | statusMessageReporting * | smr, | |
xData_element * | element, | |||
xData_Int * | index, | |||
xData_Int * | start, | |||
xData_Int * | end, | |||
xData_Int * | length | |||
) |
Definition at line 652 of file xData.cc.
References smr_setMessageError(), and xData_get_smrUserInterfaceFromElement().
00653 { 00654 00655 if( element->xDataTypeInfo.typeString == NULL ) { 00656 smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( element ), __FILE__, __LINE__, 1, "element %s is not xData", element->fullName ); 00657 return( 1 ); 00658 } 00659 *index = element->xDataTypeInfo.index; 00660 *start = element->xDataTypeInfo.start; 00661 *end = element->xDataTypeInfo.end; 00662 *length = element->xDataTypeInfo.length; 00663 return( 0 ); 00664 }
xData_element* xData_getDocumentsElement | ( | xData_document * | doc | ) |
Definition at line 476 of file xData.cc.
Referenced by tpia_map_readFile(), tpia_target_heated_read(), and tpia_target_read().
xData_element* xData_getElements_xDataElement | ( | statusMessageReporting * | smr, | |
xData_element * | element | |||
) |
Definition at line 622 of file xData.cc.
References xData_getOneElementByTagName().
Referenced by tpia_misc_getEqualProbableBins().
00622 { 00623 00624 //return( xData_getOneElementByTagName( smr, element, "xData", 1 ) ); 00625 return( xData_getOneElementByTagName( smr, element, (char*) "xData", 1 ) ); 00626 }
xData_elementList* xData_getElementsByTagName | ( | statusMessageReporting * | smr, | |
xData_element * | element, | |||
const char * | tagName | |||
) |
Definition at line 761 of file xData.cc.
References xData_getFirstElement(), xData_getNextElement(), and xData_numberOfElementsByTagName().
Referenced by tpia_product_getDecayChannelFromElement(), xData_getElementsByTagNameAndSort(), and xData_getOneElementByTagName().
00761 { 00762 00763 int n = xData_numberOfElementsByTagName( smr, element, tagName ); 00764 size_t size; 00765 xData_element *child; 00766 xData_elementListItem *p; 00767 xData_elementList *list = NULL; 00768 00769 00770 size = sizeof( xData_elementList ) + n * sizeof( xData_elementListItem ); 00771 //if( ( list = xData_malloc2( smr, size, 0, "list" ) ) != NULL ) { 00772 if( ( list = (xData_elementList*) xData_malloc2( smr, size, 0, "list" ) ) != NULL ) { 00773 list->n = n; 00774 p = list->items = (xData_elementListItem *) &(list[1]); 00775 for( child = xData_getFirstElement( element ); child != NULL; child = xData_getNextElement( child ) ) { 00776 if( !strcmp( child->name, tagName ) ) { 00777 p->element = child; 00778 p->sortString = NULL; 00779 p++; 00780 } 00781 } 00782 } 00783 return( list ); 00784 }
xData_elementList* xData_getElementsByTagNameAndSort | ( | statusMessageReporting * | smr, | |
xData_element * | element, | |||
const char * | tagName, | |||
const char * | sortAttributeName, | |||
xData_sortElementFunc | sortFunction | |||
) |
Definition at line 788 of file xData.cc.
References xData_getAttributesValueInElement(), and xData_getElementsByTagName().
Referenced by tpia_angularEnergy_getFromElement(), tpia_Legendre_getFromElement(), and tpia_misc_getEqualProbableBins().
00789 { 00790 00791 int i; 00792 xData_elementList *list = xData_getElementsByTagName( smr, element, tagName ); 00793 xData_elementListItem *p; 00794 00795 if( list != NULL ) { 00796 if( sortFunction == NULL ) { 00797 sortFunction = (xData_sortElementFunc) xData_elementList_defaultSorter; 00798 if( sortAttributeName == NULL ) sortFunction = (xData_sortElementFunc) xData_elementList_indexSorter; 00799 } 00800 if( sortAttributeName == NULL ) sortAttributeName = "index"; 00801 for( i = 0, p = list->items; i < list->n; i++, p++ ) p->sortString = xData_getAttributesValueInElement( p->element, sortAttributeName ); 00802 qsort( list->items, list->n, sizeof( xData_elementListItem ), sortFunction ); 00803 } 00804 00805 return( list ); 00806 }
xData_document* xData_getElementsDocument | ( | xData_element * | element | ) |
Definition at line 934 of file xData.cc.
Referenced by xData_get_smrUserInterfaceFromElement().
00934 { 00935 00936 xData_rootElement* root = element->parentRoot; 00937 00938 while( root->parentRoot != NULL ) root = root->parentRoot; 00939 return( root->xData_doc ); 00940 }
char const* xData_getFileName | ( | xData_document * | doc | ) |
xData_element* xData_getFirstElement | ( | xData_element * | element | ) |
Definition at line 477 of file xData.cc.
Referenced by tpia_map_readFile(), tpia_multiplicity_getFromElement(), tpia_target_heated_read(), tpia_target_read(), xData_getElementsByTagName(), xData_getFirstItem(), and xData_numberOfElementsByTagName().
enum xData_itemMode xData_getFirstItem | ( | xData_element * | element, | |
xData_item * | item | |||
) |
Definition at line 482 of file xData.cc.
References xData_getFirstElement().
00482 { 00483 00484 item->parentElement = element; 00485 item->element = xData_getFirstElement( element ); 00486 if( item->element == NULL ) { 00487 item->mode = xData_itemModeText; 00488 if( element->text.length == 0 ) item->mode = xData_itemModeEnd; } 00489 else { 00490 item->mode = xData_itemModeElement; 00491 if( 0 < item->element->textOffset ) item->mode = xData_itemModeText; 00492 } 00493 item->textOffset = 0; 00494 item->textLength = element->text.length; 00495 if( item->element != NULL ) item->textLength = item->element->textOffset; 00496 item->text = element->text.text; 00497 return( item->mode ); 00498 }
xData_element* xData_getNextElement | ( | xData_element * | element | ) |
Definition at line 478 of file xData.cc.
Referenced by tpia_map_readFile(), tpia_multiplicity_getFromElement(), tpia_target_heated_read(), tpia_target_read(), xData_getElementsByTagName(), and xData_numberOfElementsByTagName().
enum xData_itemMode xData_getNextItem | ( | xData_item * | item | ) |
Definition at line 502 of file xData.cc.
00502 { 00503 00504 if( item->mode != xData_itemModeEnd ) { 00505 if( item->mode == xData_itemModeText ) { 00506 item->mode = xData_itemModeElement; 00507 if( item->element == NULL ) item->mode = xData_itemModeEnd; 00508 item->textOffset += item->textLength; 00509 item->textLength = 0; 00510 item->text = &(item->parentElement->text.text[item->textOffset]); } 00511 else { 00512 item->element = item->element->next; 00513 item->mode = xData_itemModeText; 00514 if( item->element == NULL ) { 00515 if( item->textOffset < item->parentElement->text.length ) { 00516 item->textLength = item->parentElement->text.length - item->textOffset; } 00517 else { 00518 item->mode = xData_itemModeEnd; 00519 } } 00520 else { 00521 item->textLength = item->element->textOffset - item->textOffset; 00522 } 00523 } 00524 } 00525 return( item->mode ); 00526 }
xData_element* xData_getOneElementByTagName | ( | statusMessageReporting * | smr, | |
xData_element * | element, | |||
char * | name, | |||
int | required | |||
) |
Definition at line 810 of file xData.cc.
References smr_setMessageError(), xData_freeElementList(), xData_get_smrUserInterfaceFromElement(), and xData_getElementsByTagName().
Referenced by tpia_angularEnergy_getFromElement(), tpia_channel_getFromElement(), tpia_misc_get2d_xShared_yHistogram_data(), tpia_misc_get2dx_y_data(), tpia_misc_get2dxindex_y_data(), tpia_misc_getEqualProbableBin(), tpia_target_heated_read(), and xData_getElements_xDataElement().
00810 { 00811 00812 xData_elementList *list; 00813 xData_element *xData = NULL; 00814 00815 if( ( list = xData_getElementsByTagName( smr, element, name ) ) != NULL ) { 00816 if( list->n == 0 ) { 00817 if( required ) smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( element ), __FILE__, __LINE__, 00818 1, "element %s does not have sub-element named %s", element->fullName, name ); } 00819 else if( list->n > 1 ) { 00820 smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( element ), __FILE__, __LINE__, 1, 00821 "element %s contains more than one sub-element named %s", element->fullName, name ); } 00822 else { 00823 xData = list->items[0].element; 00824 } 00825 xData_freeElementList( smr, list ); 00826 } 00827 return( xData ); 00828 }
int xData_initializeAttributionList | ( | statusMessageReporting * | , | |
xData_attributionList * | attributes | |||
) |
int xData_is_xDataType | ( | statusMessageReporting * | smr, | |
xDataType * | xDT, | |||
char const *const | type, | |||
int | setMsg | |||
) |
Definition at line 900 of file xData.cc.
References smr_setMessageError(), and xData_get_smrUserInterfaceFromElement().
Referenced by xData_is_1d_x(), xData_is_2d_xindex_y(), xData_is_2d_xShared_yHistogram(), xData_is_2d_xy(), and xData_is_matrix().
00900 { 00901 00902 if( xDT->typeString == NULL ) { 00903 if( setMsg ) smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( xDT->element ), __FILE__, __LINE__, 1, 00904 "element %s not xData object", xDT->element->fullName ); } 00905 else if( xDT->typeString != type ) { 00906 if( setMsg ) smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( xDT->element ), __FILE__, __LINE__, 1, 00907 "Element %s is not xData object of type %s", type ); 00908 } 00909 return( xDT->typeString == type ); 00910 }
int xData_numberOfElementsByTagName | ( | statusMessageReporting * | , | |
xData_element * | element, | |||
const char * | tagName | |||
) |
Definition at line 750 of file xData.cc.
References xData_getFirstElement(), and xData_getNextElement().
Referenced by tpia_target_heated_read(), and xData_getElementsByTagName().
00750 { 00751 00752 int n = 0; 00753 xData_element *child; 00754 00755 for( child = xData_getFirstElement( element ); child != NULL; child = xData_getNextElement( child ) ) if( !strcmp( child->name, tagName ) ) n++; 00756 return( n ); 00757 }
int xData_parse | ( | xData_document * | doc, | |
const char * | s | |||
) |
Definition at line 251 of file xData.cc.
References XML_Parse().
Referenced by xData_parseReadFile(), and xData_parseString().
00251 { 00252 00253 if( doc->status != xData_statusParsing ) return( doc->status ); 00254 if( XML_Parse( doc->xmlParser, s, strlen( s ), 0 ) == XML_STATUS_ERROR ) return( -1 ); 00255 return( 0 ); 00256 }
int xData_parseEndOfXML | ( | statusMessageReporting * | smr, | |
xData_document * | doc | |||
) |
Definition at line 187 of file xData.cc.
References smr_isOk(), smr_setMessageError(), xData_get_smrUserInterfaceFromDocument(), XML_ErrorString(), XML_GetCurrentColumnNumber(), XML_GetCurrentLineNumber(), XML_GetErrorCode(), XML_Parse(), and XML_ParserFree().
Referenced by xData_parseFree(), xData_parseReadFile(), and xData_parseString().
00187 { 00188 00189 if( doc->xmlParser ) { 00190 doc->err = XML_GetErrorCode( doc->xmlParser ); 00191 doc->err_line = XML_GetCurrentLineNumber( doc->xmlParser ); 00192 doc->err_column = XML_GetCurrentColumnNumber( doc->xmlParser ); 00193 if( smr_isOk( smr ) && ( XML_Parse( doc->xmlParser, NULL, 0, 1 ) == XML_STATUS_ERROR ) ) { 00194 doc->status = xData_statusError; 00195 smr_setMessageError( smr, xData_get_smrUserInterfaceFromDocument( doc ), __FILE__, __LINE__, xData_errXMLParser, 00196 "status = %d\nXML_Error code = %d\nXML_ErrorString = %s\nerror line, column = %d, %d", xData_errXMLParser, 00197 doc->err, XML_ErrorString( doc->err ), doc->err_line, doc->err_column ); 00198 } 00199 XML_ParserFree( doc->xmlParser ); 00200 doc->xmlParser = NULL; 00201 if( doc->status != xData_statusError ) doc->status = xData_statusCompleted; 00202 } 00203 return( 0 ); 00204 }
void* xData_parseFree | ( | statusMessageReporting * | smr, | |
xData_document * | doc | |||
) |
Definition at line 208 of file xData.cc.
References xData_free(), and xData_parseEndOfXML().
Referenced by tpia_map_readFile(), tpia_target_heated_read(), tpia_target_read(), xData_parseMalloc(), xData_parseReadFile(), and xData_parseString().
00208 { 00209 00210 xData_parseEndOfXML( smr, doc ); 00211 //doc->root.children = xData_parseFreeElement( smr, doc->root.children ); 00212 doc->root.children = (xData_element*) xData_parseFreeElement( smr, doc->root.children ); 00213 //doc->fileName = xData_free( smr, doc->fileName ); 00214 doc->fileName = (char*) xData_free( smr, doc->fileName ); 00215 xData_smrUserInterfaceFree( doc ); 00216 xData_free( smr, doc ); 00217 return( NULL ); 00218 }
int xData_parseInitialize | ( | statusMessageReporting * | smr, | |
xData_document * | doc, | |||
xData_xDataTypeOk | func, | |||
void * | userData | |||
) |
Definition at line 157 of file xData.cc.
References smr_isOk(), smr_setMessageError(), XML_ParserCreate(), XML_SetCharacterDataHandler(), XML_SetElementHandler(), and XML_SetUserData().
Referenced by xData_parseMalloc().
00157 { 00158 00159 XML_Parser xmlParser; 00160 00161 doc->status = xData_statusParsing; 00162 doc->error = xData_errNone; 00163 //doc->err = 0; 00164 doc->err = (XML_Error) 0; 00165 doc->err_line = 0; 00166 doc->err_column = 0; 00167 doc->fileName = NULL; 00168 doc->xDataTypeOk_userFunction = func; 00169 doc->xDataTypeOk_userData = userData; 00170 xData_smrUserInterfaceInitialize( doc ); 00171 doc->smr= smr; 00172 doc->xmlParser = xmlParser = XML_ParserCreate( NULL ); 00173 if( xmlParser == NULL ) { 00174 smr_setMessageError( smr, NULL, __FILE__, __LINE__, xData_errXML_ParserCreate, "XML_ParserCreate failed" ); } 00175 else { 00176 XML_SetUserData( doc->xmlParser, doc ); 00177 xData_parseInitializeRootElement( doc, &(doc->root), NULL, 0 ); 00178 doc->currentRoot = &(doc->root); 00179 XML_SetElementHandler( xmlParser, xData_parseStartElement, xData_parseEndElement ); 00180 XML_SetCharacterDataHandler( xmlParser, xData_parseCharacterData ); 00181 } 00182 return( !smr_isOk( smr ) ); 00183 }
int xData_parseIsError | ( | xData_document * | doc | ) |
xData_document* xData_parseMalloc | ( | statusMessageReporting * | smr, | |
xData_xDataTypeOk | func, | |||
void * | userData | |||
) |
Definition at line 141 of file xData.cc.
References xData_parseFree(), and xData_parseInitialize().
Referenced by xData_parseReadFile(), and xData_parseString().
00141 { 00142 /* 00143 * Returns NULL is any error occurred. 00144 */ 00145 xData_document *doc; 00146 00147 //if( ( doc = xData_malloc2( smr, sizeof( xData_document ), 1, "xData_document" ) ) != NULL ) { 00148 if( ( doc = (xData_document*) xData_malloc2( smr, sizeof( xData_document ), 1, "xData_document" ) ) != NULL ) { 00149 //if( xData_parseInitialize( smr, doc, func, userData ) ) doc = xData_parseFree( smr, doc ); 00150 if( xData_parseInitialize( smr, doc, func, userData ) ) doc = (xData_document*) xData_parseFree( smr, doc ); 00151 } 00152 return( doc ); 00153 }
xData_document* xData_parseReadFile | ( | statusMessageReporting * | smr, | |
const char * | fileName, | |||
xData_xDataTypeOk | func, | |||
void * | userData | |||
) |
Definition at line 84 of file xData.cc.
References buffer, CLHEP::detail::n, smr_isOk(), smr_setMessageError(), xData_parse(), xData_parseEndOfXML(), xData_parseFree(), xData_parseMalloc(), and xData_setFileName().
Referenced by tpia_map_readFile(), tpia_target_heated_read(), and tpia_target_read().
00084 { 00085 /* 00086 * Returns NULL is any error occurred. If an error occurs in an expat routine, xData_parseEndOfXML will set smr appropriately. 00087 */ 00088 int f; 00089 char buffer[10 * 1000]; 00090 ssize_t count, n = sizeof( buffer ) - 1; 00091 ssize_t s = 0; 00092 xData_document *doc = NULL; 00093 00094 if( ( doc = xData_parseMalloc( smr, func, userData ) ) != NULL ) { 00095 if( xData_setFileName( smr, doc, fileName ) == 0 ) { 00096 f = open( fileName, O_RDONLY ); 00097 if( f == -1 ) { 00098 xData_parseEndOfXML( smr, doc ); 00099 smr_setMessageError( smr, NULL, __FILE__, __LINE__, xData_errFileError, "could not open file %s", fileName ); } 00100 else { 00101 while( ( count = read( f, buffer, n ) ) > 0 ) { 00102 s += count; 00103 buffer[count] = 0; 00104 if( xData_parse( doc, buffer ) ) break; 00105 if( !smr_isOk( doc->smr ) ) break; 00106 } 00107 close( f ); 00108 xData_parseEndOfXML( smr, doc ); 00109 if( count < 0 ) smr_setMessageError( smr, NULL, __FILE__, __LINE__, xData_errFileError, 00110 "read failed with errno = %d for %s", errno, fileName ); 00111 } 00112 } 00113 if( ( doc != NULL ) && ( !smr_isOk( smr ) ) ) { 00114 xData_parseFree( smr, doc ); 00115 doc = NULL; 00116 } 00117 } 00118 return( doc ); 00119 }
xData_document* xData_parseString | ( | statusMessageReporting * | smr, | |
const char * | str, | |||
xData_xDataTypeOk | func, | |||
void * | userData | |||
) |
Definition at line 123 of file xData.cc.
References smr_isOk(), xData_parse(), xData_parseEndOfXML(), xData_parseFree(), and xData_parseMalloc().
00123 { 00124 /* 00125 * Returns NULL is any error occurred. If an error occurs in an expat routine, xData_parseEndOfXML will set smr appropriately. 00126 */ 00127 xData_document *doc = NULL; 00128 if( ( doc = xData_parseMalloc( smr, func, userData ) ) != NULL ) { 00129 xData_parse( doc, str ); 00130 xData_parseEndOfXML( smr, doc ); 00131 if( !smr_isOk( smr ) ) { 00132 xData_parseFree( smr, doc ); 00133 doc = NULL; 00134 } 00135 } 00136 return( doc ); 00137 }
int xData_releaseAttributionList | ( | statusMessageReporting * | smr, | |
xData_attributionList * | attributes | |||
) |
Definition at line 611 of file xData.cc.
References xData_free().
Referenced by tpia_channel_release(), tpia_product_release(), tpia_target_heated_release(), and tpia_target_release().
00611 { 00612 00613 attributes->number = 0; 00614 attributes->size = 0; 00615 //attributes->attributes = xData_free( smr, attributes->attributes ); 00616 attributes->attributes = (xData_attribute*) xData_free( smr, attributes->attributes ); 00617 return( 0 ); 00618 }
int xData_setFileName | ( | statusMessageReporting * | smr, | |
xData_document * | doc, | |||
char const * | fileName | |||
) |
Definition at line 921 of file xData.cc.
References xData_free().
Referenced by xData_parseReadFile().
00921 { 00922 00923 doc->fileName = (char*) xData_free( smr, doc->fileName ); 00924 if( fileName != NULL ) { 00925 //if( ( doc->fileName = xData_malloc2( smr, strlen( fileName ) + 1, 0, "doc->fileName" ) ) == NULL ) return( 1 ); 00926 if( ( doc->fileName = (char*) xData_malloc2( smr, strlen( fileName ) + 1, 0, "doc->fileName" ) ) == NULL ) return( 1 ); 00927 strcpy( doc->fileName, fileName ); 00928 } 00929 return( 0 ); 00930 }
int xData_stringTo_double | ( | statusMessageReporting * | smr, | |
void * | smrUserInterface, | |||
char const * | c, | |||
double * | value, | |||
char const * | endings, | |||
char ** | e | |||
) |
Definition at line 1044 of file xData.cc.
References smr_setMessageError().
01044 { 01045 01046 char const *s; 01047 char tmp[64]; 01048 int status = 1, n = sizeof( tmp ); 01049 01050 for( s = c; *s != 0; s++ ) if( !isspace( *s ) ) break; 01051 *value = strtod( s, e ); 01052 if( *e == s ) { 01053 smr_setMessageError(smr, smrUserInterface, __FILE__, __LINE__, 1, "could not convert \"%s\" to an double", xData_shortStringForMessage( n, tmp, c ));} 01054 else { 01055 if( *endings == 0 ) while( isspace( **e ) ) (*e)++; 01056 if( **e == 0 ) { 01057 status = 0; } 01058 else { 01059 if( *endings == 0 ) { 01060 smr_setMessageError( smr, smrUserInterface, __FILE__, __LINE__, 1, "double string \"%s\" does not end with a '\\0'", 01061 xData_shortStringForMessage( n, tmp, c ) ); } 01062 else { 01063 if( strchr( endings, **e ) == NULL ) { 01064 smr_setMessageError( smr, smrUserInterface, __FILE__, __LINE__, 1, "double string \"%s\" does not end with a white space or a '\\0\'", 01065 xData_shortStringForMessage( n, tmp, c ) ); } 01066 else { 01067 status = 0; 01068 } 01069 } 01070 } 01071 } 01072 return( status ); 01073 }
int xData_stringTo_xData_Int | ( | statusMessageReporting * | smr, | |
void * | smrUserInterface, | |||
char const * | c, | |||
xData_Int * | value, | |||
char const * | endings, | |||
char ** | e | |||
) |
Definition at line 1010 of file xData.cc.
References smr_setMessageError().
01010 { 01011 01012 char const *s; 01013 char tmp[64]; 01014 int status = 1, n = sizeof( tmp ); 01015 01016 for( s = c; *s != 0; s++ ) if( !isspace( *s ) ) break; 01017 //*value = strtoll( s, e, 10 ); 01018 *value = strtol( s, e, 10 ); 01019 if( *e == s ) { 01020 smr_setMessageError(smr, smrUserInterface, __FILE__, __LINE__, 1, "could not convert \"%s\" to an integer", xData_shortStringForMessage( n, tmp, c ));} 01021 else { 01022 if( *endings == 0 ) while( isspace( **e ) ) (*e)++; 01023 if( **e == 0 ) { 01024 status = 0; } 01025 else { 01026 if( *endings == 0 ) { 01027 smr_setMessageError( smr, smrUserInterface, __FILE__, __LINE__, 1, "integer string \"%s\" does not end with a '\\0'", 01028 xData_shortStringForMessage( n, tmp, c ) ); } 01029 else { 01030 if( strchr( endings, **e ) == NULL ) { 01031 smr_setMessageError( smr, smrUserInterface, __FILE__, __LINE__, 1, "integer string \"%s\" does not end with a white space or a '\\0\'", 01032 xData_shortStringForMessage( n, tmp, c ) ); } 01033 else { 01034 status = 0; 01035 } 01036 } 01037 } 01038 } 01039 return( status ); 01040 }
int xData_xDataTypeConvertAttributes | ( | statusMessageReporting * | smr, | |
xData_element * | element | |||
) |
Definition at line 668 of file xData.cc.
References smr_setMessageError(), xData_convertAttributeTo_xData_Int(), and xData_get_smrUserInterfaceFromElement().
Referenced by xData_init_1d_x(), xData_init_2d_xindex_y(), xData_init_2d_xShared_yHistogram(), xData_init_2d_xy(), and xData_init_matrix().
00668 { 00669 00670 xDataType *xDT = &(element->xDataTypeInfo); 00671 void *smrUser = xData_get_smrUserInterfaceFromElement( element ); 00672 00673 xDT->index = -1; 00674 xDT->start = -1; 00675 xDT->end = -1; 00676 xDT->length = -1; 00677 if( ( xDT->indexPresent = xData_convertAttributeTo_xData_Int( smr, element, "index", &(xDT->index) ) ) < 0 ) return( 1 ); 00678 if( ( xDT->startPresent = xData_convertAttributeTo_xData_Int( smr, element, "start", &(xDT->start) ) ) < 0 ) return( 1 ); 00679 if( ( xDT->endPresent = xData_convertAttributeTo_xData_Int( smr, element, "end", &(xDT->end) ) ) < 0 ) return( 1 ); 00680 if( ( xDT->lengthPresent = xData_convertAttributeTo_xData_Int( smr, element, "length", &(xDT->length) ) ) < 0 ) return( 1 ); 00681 if( ( xDT->endPresent > 0 ) ) { 00682 if( xDT->lengthPresent > 0 ) { 00683 smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "missing length (or end) in xData" ); 00684 return( 1 ); 00685 } 00686 xDT->end = xDT->length; } 00687 else { 00688 if( xDT->lengthPresent > 0 ) xDT->length = xDT->end; 00689 } 00690 00691 if( xDT->startPresent > 0 ) xDT->start = 0; 00692 if( xDT->start < 0 ) { 00693 smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "start = %d < 0", xDT->start ); 00694 return( 1 ); 00695 } 00696 if( xDT->end < xDT->start ) { 00697 smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "start = %d >= end = %d", xDT->start, xDT->end ); 00698 return( 1 ); 00699 } 00700 if( xDT->length < 0 ) { 00701 smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "length = %d < 0", xDT->length ); 00702 return( 1 ); 00703 } 00704 00705 return( 0 ); 00706 }