226#define MUD_MAX_FILES 16
227#define MUD_FILE_READ 1
228#define MUD_FILE_WRITE 2
233#define _strncpy( To, From, Len) strncpy( To, From, Len )[Len-1]='\0'
425#define _check_fd( fd ) if( ( fd < 0 ) || \
426 ( fd >= MUD_MAX_FILES ) || \
427 ( mud_f[fd] == NULL ) ) return( 0 )
432#define _sea_desc( fd ) \
433 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
435 case MUD_FMT_TRI_TI_ID: \
436 pMUD_idesc = (MUD_SEC_TRI_TI_RUN_DESC*)MUD_search( pMUD_fileGrp[fd]->pMem, \
437 MUD_SEC_TRI_TI_RUN_DESC_ID, (UINT32)1, \
439 if( pMUD_idesc == NULL ) return( 0 ); \
441 case MUD_FMT_TRI_TD_ID: \
443 pMUD_desc = (MUD_SEC_GEN_RUN_DESC*)MUD_search( pMUD_fileGrp[fd]->pMem, \
444 MUD_SEC_GEN_RUN_DESC_ID, (UINT32)1, \
446 if( pMUD_desc == NULL ) return( 0 ); \
451#define _sea_gdesc( fd ) \
452 pMUD_desc = (MUD_SEC_GEN_RUN_DESC*)MUD_search( pMUD_fileGrp[fd]->pMem, \
453 MUD_SEC_GEN_RUN_DESC_ID, (UINT32)1, \
455 if( pMUD_desc == NULL ) return( 0 )
458#define _sea_idesc( fd ) \
459 pMUD_idesc = (MUD_SEC_TRI_TI_RUN_DESC*)MUD_search( pMUD_fileGrp[fd]->pMem, \
460 MUD_SEC_TRI_TI_RUN_DESC_ID, (UINT32)1, \
462 if( pMUD_idesc == NULL ) return( 0 )
465#define _desc_uint_getproc( name, var ) \
466 int name( int fd, UINT32* var) \
468 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
469 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
472 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
474 case MUD_FMT_TRI_TI_ID: *var = pMUD_idesc->var; break; \
475 case MUD_FMT_TRI_TD_ID: default: *var = pMUD_desc->var; break; \
481#define _desc_uint_setproc( name, var ) \
482int name( int fd, UINT32 var) \
484 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
485 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
488 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
490 case MUD_FMT_TRI_TI_ID: pMUD_idesc->var = var; break; \
491 case MUD_FMT_TRI_TD_ID: default: pMUD_desc->var = var; break; \
497#define _desc_char_getproc( name, var ) \
498int name( int fd, char* var, int strdim ) \
500 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
501 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
504 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
506 case MUD_FMT_TRI_TI_ID: _strncpy( var, pMUD_idesc->var, strdim ); break; \
507 case MUD_FMT_TRI_TD_ID: default: _strncpy( var, pMUD_desc->var, strdim ); break; \
513#define _desc_char_setproc( name, var ) \
514int name( int fd, char* var ) \
516 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
517 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
520 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
522 case MUD_FMT_TRI_TI_ID: \
523 _free( pMUD_idesc->var ); pMUD_idesc->var = strdup( var ); break; \
524 case MUD_FMT_TRI_TD_ID: default: \
525 _free( pMUD_desc->var ); pMUD_desc->var = strdup( var ); break; \
531#define _gdesc_char_getproc( name, var ) \
532int name( int fd, char* var, int strdim ) \
534 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
537 _strncpy( var, pMUD_desc->var, strdim ); \
542#define _gdesc_char_setproc( name, var ) \
543int name( int fd, char* var ) \
545 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
548 _free( pMUD_desc->var ); \
549 pMUD_desc->var = strdup( var ); \
554#define _idesc_char_getproc( name, var ) \
555int name( int fd, char* var, int strdim ) \
557 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
560 _strncpy( var, pMUD_idesc->var, strdim ); \
565#define _idesc_char_setproc( name, var ) \
566int name( int fd, char* var ) \
568 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
571 _free( pMUD_idesc->var ); \
572 pMUD_idesc->var = strdup( var ); \
591 if( pMUD_idesc ==
NULL )
return( 0 );
599 if( pMUD_desc ==
NULL )
return( 0 );
619 if( pMUD_idesc ==
NULL )
return( 0 );
625 if( pMUD_desc ==
NULL )
return( 0 );
685#define _sea_cmtgrp( fd ) \
686 pMUD_cmtGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
687 MUD_SEC_GRP_ID, MUD_GRP_CMT_ID, \
689 if( pMUD_cmtGrp == NULL ) return( 0 )
692#define _sea_cmt( fd, n ) \
693 pMUD_cmt = (MUD_SEC_CMT*)MUD_search( pMUD_cmtGrp->pMem, \
694 MUD_SEC_CMT_ID, (UINT32)n, \
696 if( pMUD_cmt == NULL ) return( 0 )
699#define _cmt_uint_getproc( name, var ) \
701name( int fd, int num, UINT32* var ) \
703 MUD_SEC_GRP* pMUD_cmtGrp=0; \
704 MUD_SEC_CMT* pMUD_cmt=0; \
707 _sea_cmt( fd, num ); \
708 *var = pMUD_cmt->var; \
713#define _cmt_uint_setproc( name, var ) \
715name( int fd, int num, UINT32 var ) \
717 MUD_SEC_GRP* pMUD_cmtGrp=0; \
718 MUD_SEC_CMT* pMUD_cmt=0; \
721 _sea_cmt( fd, num ); \
722 pMUD_cmt->var = var; \
727#define _cmt_char_getproc( name, var ) \
729name( int fd, int num, char* var, int strdim ) \
731 MUD_SEC_GRP* pMUD_cmtGrp=0; \
732 MUD_SEC_CMT* pMUD_cmt=0; \
735 _sea_cmt( fd, num ); \
736 _strncpy( var, pMUD_cmt->var, strdim ); \
740#define _cmt_char_setproc( name, var ) \
742name( int fd, int num, char* var ) \
744 MUD_SEC_GRP* pMUD_cmtGrp=0; \
745 MUD_SEC_CMT* pMUD_cmt=0; \
748 _sea_cmt( fd, num ); \
749 _free( pMUD_cmt->var ); \
750 pMUD_cmt->var = strdup( var ); \
762 *pNum = pMUD_cmtGrp->
num;
777 if( pMUD_cmtGrp ==
NULL )
return( 0 );
779 for( i = 0; i < num; i++ )
782 if( pMUD_cmt ==
NULL )
813#define _sea_histgrp( fd ) \
814 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
816 case MUD_FMT_TRI_TI_ID: \
817 pMUD_histGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
818 MUD_SEC_GRP_ID, MUD_GRP_TRI_TI_HIST_ID, \
821 case MUD_FMT_TRI_TD_ID: \
823 pMUD_histGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
824 MUD_SEC_GRP_ID, MUD_GRP_TRI_TD_HIST_ID, \
828 if( pMUD_histGrp == NULL ) return( 0 )
831#define _sea_histhdr( fd, n ) \
832 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
834 case MUD_FMT_TRI_TI_ID: \
835 case MUD_FMT_TRI_TD_ID: \
837 pMUD_histHdr = (MUD_SEC_GEN_HIST_HDR*)MUD_search( pMUD_histGrp->pMem, \
838 MUD_SEC_GEN_HIST_HDR_ID, (UINT32)n, \
842 if( pMUD_histHdr == NULL ) return( 0 )
845#define _hist_uint_getproc( name, var ) \
847name( int fd, int num, UINT32* var ) \
849 MUD_SEC_GRP* pMUD_histGrp=0; \
850 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0; \
852 _sea_histgrp( fd ); \
853 _sea_histhdr( fd, num ); \
854 *var = pMUD_histHdr->var; \
858#define _hist_uint_setproc( name, var ) \
860name( int fd, int num, UINT32 var ) \
862 MUD_SEC_GRP* pMUD_histGrp=0; \
863 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0; \
865 _sea_histgrp( fd ); \
866 _sea_histhdr( fd, num ); \
867 pMUD_histHdr->var = var; \
871#define _hist_char_getproc( name, var ) \
873name( int fd, int num, char* var, int strdim ) \
875 MUD_SEC_GRP* pMUD_histGrp; \
876 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr; \
878 _sea_histgrp( fd ); \
879 _sea_histhdr( fd, num ); \
880 _strncpy( var, pMUD_histHdr->var, strdim ); \
884#define _hist_char_setproc( name, var ) \
886name( int fd, int num, char* var ) \
888 MUD_SEC_GRP* pMUD_histGrp=0; \
889 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0; \
891 _sea_histgrp( fd ); \
892 _sea_histhdr( fd, num ); \
893 _free( pMUD_histHdr->var ); \
894 pMUD_histHdr->var = strdup( var ); \
913 *pNum = pMUD_histGrp->
num/2;
930 if( pMUD_grp ==
NULL )
return( 0 );
932 for( i = 0; i < num; i++ )
935 if( pMUD_histHdr ==
NULL )
942 if( pMUD_histDat ==
NULL )
984MUD_getHistpData(
int fd,
int num,
void** ppData )
994 if( pMUD_histDat ==
NULL )
return( 0 );
996 *ppData = pMUD_histDat->
pData;
1011 if( pMUD_histDat ==
NULL )
return( 0 );
1013 pMUD_histDat->
pData = (caddr_t)pData;
1029 if( pMUD_histHdr ==
NULL )
return( 0 );
1034 if( pMUD_histDat ==
NULL )
return( 0 );
1058 if( pMUD_histHdr ==
NULL )
return( 0 );
1063 if( pMUD_histDat ==
NULL )
return( 0 );
1126MUD_pack(
int num,
int inBinSize,
void*inArray,
int outBinSize,
void* outArray )
1129 outBinSize, outArray ) );
1134MUD_unpack(
int num,
int inBinSize,
void* inArray,
int outBinSize,
void* outArray )
1137 outBinSize, outArray ) );
1144#define _sea_scalgrp( fd ) \
1145 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1147 case MUD_FMT_TRI_TD_ID: \
1149 pMUD_scalGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
1150 MUD_SEC_GRP_ID, MUD_GRP_TRI_TD_SCALER_ID, \
1154 if( pMUD_scalGrp == NULL ) return( 0 )
1157#define _sea_scal( fd, n ) \
1158 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1160 case MUD_FMT_TRI_TD_ID: \
1162 pMUD_scal = (MUD_SEC_GEN_SCALER*)MUD_search( pMUD_scalGrp->pMem, \
1163 MUD_SEC_GEN_SCALER_ID, (UINT32)n, \
1167 if( pMUD_scal == NULL ) return( 0 )
1178 *pNum = pMUD_scalGrp->
num;
1193 if( pMUD_grp ==
NULL )
return( 0 );
1195 for( i = 0; i < num; i++ )
1198 if( pMUD_scal ==
NULL )
1235 pMUD_scal->
label = strdup( label );
1250 pCounts[0] = pMUD_scal->
counts[0];
1251 pCounts[1] = pMUD_scal->
counts[1];
1266 pMUD_scal->
counts[0] = pCounts[0];
1267 pMUD_scal->
counts[1] = pCounts[1];
1276#define _sea_indvargrp( fd ) \
1277 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1279 case MUD_FMT_TRI_TI_ID: \
1280 pMUD_indVarGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
1281 MUD_SEC_GRP_ID, MUD_GRP_GEN_IND_VAR_ARR_ID, \
1284 case MUD_FMT_TRI_TD_ID: \
1286 pMUD_indVarGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
1287 MUD_SEC_GRP_ID, MUD_GRP_GEN_IND_VAR_ID, \
1291 if( pMUD_indVarGrp == NULL ) return( 0 )
1294#define _sea_indvar( fd, n ) \
1295 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1297 case MUD_FMT_TRI_TD_ID: \
1298 case MUD_FMT_TRI_TI_ID: \
1300 pMUD_indVar = (MUD_SEC_GEN_IND_VAR*)MUD_search( pMUD_indVarGrp->pMem, \
1301 MUD_SEC_GEN_IND_VAR_ID, (UINT32)n, \
1305 if( pMUD_indVar == NULL ) return( 0 )
1308#define _sea_indvardat( fd, n ) \
1309 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1311 case MUD_FMT_TRI_TI_ID: \
1313 pMUD_array = (MUD_SEC_GEN_ARRAY*)MUD_search( pMUD_indVarGrp->pMem, \
1314 MUD_SEC_GEN_ARRAY_ID, (UINT32)n, \
1318 if( pMUD_array == NULL ) return( 0 )
1321#define _indvar_doub_getproc( name, var ) \
1323name( int fd, int num, double* var ) \
1325 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1326 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1328 _sea_indvargrp( fd ); \
1329 _sea_indvar( fd, num ); \
1330 *var = pMUD_indVar->var; \
1334#define _indvar_doub_setproc( name, var ) \
1336name( int fd, int num, double var ) \
1338 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1339 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1341 _sea_indvargrp( fd ); \
1342 _sea_indvar( fd, num ); \
1343 pMUD_indVar->var = var; \
1348#define _indvar_char_getproc( name, var ) \
1350name( int fd, int num, char* var, int strdim ) \
1352 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1353 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1355 _sea_indvargrp( fd ); \
1356 _sea_indvar( fd, num ); \
1357 _strncpy( var, pMUD_indVar->var, strdim ); \
1361#define _indvar_char_setproc( name, var ) \
1363name( int fd, int num, char* var ) \
1365 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1366 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1368 _sea_indvargrp( fd ); \
1369 _sea_indvar( fd, num ); \
1370 _free( pMUD_indVar->var ); \
1371 pMUD_indVar->var = strdup( var ); \
1376#define _indvardat_uint_getproc( name, var ) \
1378name( int fd, int n, UINT32* var ) \
1380 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1381 MUD_SEC_GEN_ARRAY* pMUD_array=0; \
1383 _sea_indvargrp( fd ); \
1384 _sea_indvardat( fd, n ); \
1385 *var = pMUD_array->var; \
1389#define _indvardat_uint_setproc( name, var ) \
1391name( int fd, int n, UINT32 var ) \
1393 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1394 MUD_SEC_GEN_ARRAY* pMUD_array=0; \
1396 _sea_indvargrp( fd ); \
1397 _sea_indvardat( fd, n ); \
1398 pMUD_array->var = var; \
1418 *pNum = pMUD_indVarGrp->
num/2;
1422 *pNum = pMUD_indVarGrp->
num;
1439 if( pMUD_grp ==
NULL )
return( 0 );
1441 for( i = 0; i < num; i++ )
1444 if( pMUD_indVar ==
NULL )
1454 if( pMUD_array ==
NULL )
1496MUD_getIndVarpData(
int fd,
int num,
void** ppData )
1503 *ppData = (
void*)pMUD_array->
pData;
1515 pMUD_array->
pData = (caddr_t)pData;
1528 switch( pMUD_array->
type )
1565 switch( pMUD_array->
type )
1619 bcopy( pMUD_array->
pTime, pData, 4*pMUD_array->
num );
1639 bcopy( pData, pMUD_array->
pTime, 4*pMUD_array->
num );
1651 if( (i = MUD_getHistFsPerBin( fd, num, &fsPerBin )) )
1655 *pSecondsPerBin = (
REAL64)(0.078125e-9 * pow( (
double)2.0, (
double)(fsPerBin) ));
1657 else if( fsPerBin < 29 )
1659 *pSecondsPerBin = (
REAL64)(0.048828125e-9 * pow( (
double)2.0, (
double)(fsPerBin - 16) ));
1663 *pSecondsPerBin = (
REAL64)((
double)fsPerBin * 1.0e-15);
1672 if( secondsPerBin < 0.0 || secondsPerBin > 4294967295.0e-15 )
1674 return( MUD_setHistFsPerBin( fd, num, (
UINT32)(1.0e15 * secondsPerBin ) ) );
void * MUD_readFile(FILE *fin)
FILE * MUD_openInput(char *inFile)
FILE * MUD_openOutput(char *outFile)
void MUD_addToGroup(MUD_SEC_GRP *pMUD_grp, void *pMUD)
FILE * MUD_openInOut(char *inFile)
UINT32 MUD_setSizes(void *pMUD)
void MUD_free(void *pMUD)
void * MUD_search(va_alist)
BOOL MUD_writeFile(FILE *fout, void *pMUD_head)
#define MUD_FMT_TRI_TI_ID
#define MUD_GRP_GEN_IND_VAR_ID
#define MUD_SEC_GEN_HIST_HDR_ID
struct _MUD_SEC_GRP MUD_SEC_GRP
#define MUD_SEC_GEN_ARRAY_ID
#define MUD_SEC_GEN_RUN_DESC_ID
#define MUD_GRP_TRI_TD_HIST_ID
#define MUD_GRP_GEN_IND_VAR_ARR_ID
#define MUD_GRP_TRI_TI_HIST_ID
#define MUD_FMT_TRI_TD_ID
#define MUD_SEC_GEN_HIST_DAT_ID
#define MUD_SEC_GEN_SCALER_ID
#define MUD_SEC_TRI_TI_RUN_DESC_ID
#define MUD_instanceID(pM)
#define MUD_SEC_GEN_IND_VAR_ID
#define _idesc_char_getproc(name, var)
int MUD_getScalerCounts(int fd, int num, UINT32 *pCounts)
int MUD_getHistSecondsPerBin(int fd, int num, REAL64 *pSecondsPerBin)
int MUD_getScalers(int fd, UINT32 *pType, UINT32 *pNum)
#define _desc_uint_getproc(name, var)
#define _hist_uint_getproc(name, var)
int MUD_setComments(int fd, UINT32 type, UINT32 num)
int MUD_getIndVarTimeData(int fd, int num, UINT32 *pData)
int MUD_getIndVarData(int fd, int num, void *pData)
int MUD_setHistTimeData(int fd, int num, UINT32 *pTimeData)
int MUD_setHistData(int fd, int num, void *pData)
int MUD_openWrite(char *filename, UINT32 type)
int MUD_getHistpTimeData(int fd, int num, UINT32 **ppTimeData)
#define _desc_char_getproc(name, var)
static FILE * mud_f[MUD_MAX_FILES]
int MUD_getRunDesc(int fd, UINT32 *pType)
#define _desc_char_setproc(name, var)
int MUD_setHistSecondsPerBin(int fd, int num, REAL64 secondsPerBin)
int MUD_pack(int num, int inBinSize, void *inArray, int outBinSize, void *outArray)
int MUD_closeWriteFile(int fd, char *outname)
int MUD_getIndVars(int fd, UINT32 *pType, UINT32 *pNum)
#define _cmt_uint_setproc(name, var)
int MUD_setHists(int fd, UINT32 type, UINT32 num)
static MUD_SEC_GRP * pMUD_fileGrp[MUD_MAX_FILES]
int MUD_setHistpData(int fd, int num, void *pData)
#define _indvar_doub_getproc(name, var)
#define _strncpy(To, From, Len)
int MUD_setHistpTimeData(int fd, int num, UINT32 *pTimeData)
#define _indvardat_uint_getproc(name, var)
int MUD_closeWrite(int fd)
int MUD_setIndVars(int fd, UINT32 type, UINT32 num)
int MUD_setIndVarTimeData(int fd, int num, UINT32 *pData)
#define _indvar_doub_setproc(name, var)
#define _indvar_char_setproc(name, var)
int MUD_setIndVarData(int fd, int num, void *pData)
int MUD_getScalerLabel(int fd, int num, char *label, int strdim)
#define _cmt_char_getproc(name, var)
int MUD_getHistTimeData(int fd, int num, UINT32 *pTimeData)
int MUD_setScalerLabel(int fd, int num, char *label)
int MUD_setRunDesc(int fd, UINT32 type)
#define _indvar_char_getproc(name, var)
#define _cmt_char_setproc(name, var)
int MUD_openRead(char *filename, UINT32 *pType)
int MUD_setScalerCounts(int fd, int num, UINT32 *pCounts)
#define _hist_char_getproc(name, var)
int MUD_setIndVarpTimeData(int fd, int num, UINT32 *pData)
int MUD_getIndVarpTimeData(int fd, int num, UINT32 **ppData)
#define _desc_uint_setproc(name, var)
#define _indvardat_uint_setproc(name, var)
#define _gdesc_char_setproc(name, var)
#define _sea_indvargrp(fd)
#define _hist_uint_setproc(name, var)
#define _cmt_uint_getproc(name, var)
int MUD_unpack(int num, int inBinSize, void *inArray, int outBinSize, void *outArray)
int MUD_openReadWrite(char *filename, UINT32 *pType)
int MUD_setIndVarpData(int fd, int num, void *pData)
int MUD_setScalers(int fd, UINT32 type, UINT32 num)
#define _sea_indvardat(fd, n)
int MUD_getHistData(int fd, int num, void *pData)
#define _gdesc_char_getproc(name, var)
#define _idesc_char_setproc(name, var)
int MUD_closeRead(int fd)
#define _hist_char_setproc(name, var)
int MUD_SEC_GEN_HIST_pack(int num, int inBinSize, void *inHist, int outBinSize, void *outHist)
int MUD_SEC_GEN_HIST_unpack(int num, int inBinSize, void *inHist, int outBinSize, void *outHist)
MUD_SEC * MUD_new(UINT32 secID, UINT32 instanceID)