musrfit 1.10.0
mud_friendly.c
Go to the documentation of this file.
1/*
2 * mud_friendly.c --
3 *
4 * A friendly programming interface to the MUD library
5 *
6 * Copyright (c) 1996-2020 TRIUMF Cyclotron Facility
7 *
8 * Author:
9 * Ted Whidden, TRIUMF Data Acquisition Group
10 * Donald Arseneau, TRIUMF CMMS
11 * 4004 Wesbrook Mall, Vancouver, BC, Canada, V6T 2A3
12 *
13 *
14 * Released under the GNU LGPL - see http://www.gnu.org/licenses
15 *
16 * This program is free software; you can distribute it and/or modify it under
17 * the terms of the Lesser GNU General Public License as published by the Free
18 * Software Foundation; either version 2 of the License, or any later version.
19 * Accordingly, this program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
21 * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License
22 * for more details.
23 *
24 * Modification history:
25 * 26-Feb-1996 v1.0 TW Created
26 * 08-Oct-2000 v1.2 DJA Use MUD_setSizes()
27 * 19-Sep-2001 v1.3 DJA add HistSecondsPerBin
28 * 25-Sep-2001 v1.4 DJA fixed HistSecondsPerBin (sigh)
29 * 23-Oct-2001 v1.5 DJA Major change: Add string length parameter to all
30 * string "get" functions, and use strncpy, but
31 * always terminate.
32 * 22-Apr-2003 v1.6 DJA Add mud_openReadWrite
33 * 25-May-2011 v1.7 DJA Fix cast in MUD_setHistSecondsPerBin
34 * 15-Oct-2020 v1.8 DF Fix group/instance numbers in _sea_cmtgrp
35 *
36 * Description:
37 *
38 * This module provides a "friendly" programming interface (in C
39 * or FORTRAN) to the MUD (MuSR Data) data format.
40 *
41 * int fd : mud-friendly file handle
42 * ing strdim : maximum length for returned strings
43 *
44 * User-callable Routines (C language):
45 *
46 * Open/close files:
47 *
48 * int MUD_openRead( char* filename, UINT32* pType )
49 * int MUD_openWrite( char* filename, UINT32 type )
50 * int MUD_openReadWrite( char* filename, UINT32* pType )
51 * int MUD_closeRead( int fd )
52 * int MUD_closeWrite( int fd )
53 * int MUD_closeWriteFile( int fd, char* filename )
54 *
55 * Run description:
56 *
57 * int MUD_getRunDesc( int fd, UINT32* pType )
58 * int MUD_getExptNumber( int fd, UINT32* pExptNumber )
59 * int MUD_getRunNumber( int fd, UINT32* pRunNumber )
60 * int MUD_getElapsedSec( int fd, UINT32* pElapsedSec )
61 * int MUD_getTimeBegin( int fd, UINT32* TimeBegin )
62 * int MUD_getTimeEnd( int fd, UINT32* TimeEnd )
63 * int MUD_getTitle( int fd, char* title, int strdim )
64 * int MUD_getLab( int fd, char* lab, int strdim )
65 * int MUD_getArea( int fd, char* area, int strdim )
66 * int MUD_getMethod( int fd, char* method, int strdim )
67 * int MUD_getApparatus( int fd, char* apparatus, int strdim )
68 * int MUD_getInsert( int fd, char* insert, int strdim )
69 * int MUD_getSample( int fd, char* sample, int strdim )
70 * int MUD_getOrient( int fd, char* orient, int strdim )
71 * int MUD_getDas( int fd, char* das, int strdim )
72 * int MUD_getExperimenter( int fd, char* experimenter, int strdim )
73 * Not in TRI_TI:
74 * int MUD_getTemperature( int fd, char* temperature, int strdim )
75 * int MUD_getField( int fd, char* field, int strdim )
76 * TRI_TI only:
77 * int MUD_getSubtitle( int fd, char* subtitle, int strdim )
78 * int MUD_getComment1( int fd, char* comment1, int strdim )
79 * int MUD_getComment2( int fd, char* comment2, int strdim )
80 * int MUD_getComment3( int fd, char* comment3, int strdim )
81 *
82 * int MUD_setRunDesc( int fd, UINT32 type )
83 * int MUD_setExptNumber( int fd, UINT32 exptNumber )
84 * int MUD_setRunNumber( int fd, UINT32 runNumber )
85 * int MUD_setElapsedSec( int fd, UINT32 elapsedSec )
86 * int MUD_setTimeBegin( int fd, UINT32 timeBegin )
87 * int MUD_setTimeEnd( int fd, UINT32 timeEnd )
88 * int MUD_setTitle( int fd, char* title )
89 * int MUD_setLab( int fd, char* lab )
90 * int MUD_setArea( int fd, char* area )
91 * int MUD_setMethod( int fd, char* method )
92 * int MUD_setApparatus( int fd, char* apparatus )
93 * int MUD_setInsert( int fd, char* insert )
94 * int MUD_setSample( int fd, char* sample )
95 * int MUD_setOrient( int fd, char* orient )
96 * int MUD_setDas( int fd, char* das )
97 * int MUD_setExperimenter( int fd, char* experimenter )
98 * Not in TRI_TI:
99 * int MUD_setTemperature( int fd, char* temperature )
100 * int MUD_setField( int fd, char* field )
101 * TRI_TI only:
102 * int MUD_setSubtitle( int fd, char* subtitle )
103 * int MUD_setComment1( int fd, char* comment1 )
104 * int MUD_setComment2( int fd, char* comment2 )
105 * int MUD_setComment3( int fd, char* comment3 )
106 *
107 * Comments:
108 *
109 * int MUD_getComments( int fd, UINT32* pType, UINT32* pNum )
110 * int MUD_getCommentPrev( int fd, int num, UINT32* pPrev )
111 * int MUD_getCommentNext( int fd, int num, UINT32* pNext )
112 * int MUD_getCommentTime( int fd, int num, UINT32* pTime )
113 * int MUD_getCommentAuthor( int fd, int num, char* author, int strdim )
114 * int MUD_getCommentTitle( int fd, int num, char* title, int strdim )
115 * int MUD_getCommentBody( int fd, int num, char* body, int strdim )
116 *
117 * int MUD_setComments( int fd, UINT32 type, UINT32 num )
118 * int MUD_setCommentPrev( int fd, int num, UINT32 prev )
119 * int MUD_setCommentNext( int fd, int num, UINT32 next )
120 * int MUD_setCommentTime( int fd, int num, UINT32 time )
121 * int MUD_setCommentAuthor( int fd, int num, char* author )
122 * int MUD_setCommentTitle( int fd, int num, char* title )
123 * int MUD_setCommentBody( int fd, int num, char* body )
124 *
125 * Histograms:
126 *
127 * int MUD_getHists( int fd, UINT32* pType, UINT32* pNum )
128 * int MUD_getHistType( int fd, int num, UINT32* pType )
129 * int MUD_getHistNumBytes( int fd, int num, UINT32* pNumBytes )
130 * int MUD_getHistNumBins( int fd, int num, UINT32* pNumBins )
131 * int MUD_getHistBytesPerBin( int fd, int num, UINT32* pBytesPerBin )
132 * int MUD_getHistFsPerBin( int fd, int num, UINT32* pFsPerBin )
133 * int MUD_getHistSecondsPerBin( int fd, int num, REAL64* pSecondsPerBin )
134 * int MUD_getHistT0_Ps( int fd, int num, UINT32* pT0_ps )
135 * int MUD_getHistT0_Bin( int fd, int num, UINT32* pT0_bin )
136 * int MUD_getHistGoodBin1( int fd, int num, UINT32* pGoodBin1 )
137 * int MUD_getHistGoodBin2( int fd, int num, UINT32* pGoodBin2 )
138 * int MUD_getHistBkgd1( int fd, int num, UINT32* pBkgd1 )
139 * int MUD_getHistBkgd2( int fd, int num, UINT32* pBkgd2 )
140 * int MUD_getHistNumEvents( int fd, int num, UINT32* pNumEvents )
141 * int MUD_getHistTitle( int fd, int num, char* title, int strdim )
142 * int MUD_getHistData( int fd, int num, void* pData )
143 * int MUD_getHistpData( int fd, int num, void** ppData )
144 * int MUD_getHistTimeData( int fd, int num, UINT32* pTimeData )
145 * int MUD_getHistpTimeData( int fd, int num, UINT32** ppTimeData )
146 *
147 * int MUD_setHists( int fd, UINT32 type, UINT32 num )
148 * int MUD_setHistType( int fd, int num, UINT32 type )
149 * int MUD_setHistNumBytes( int fd, int num, UINT32 numBytes )
150 * int MUD_setHistNumBins( int fd, int num, UINT32 numBins )
151 * int MUD_setHistBytesPerBin( int fd, int num, UINT32 bytesPerBin )
152 * int MUD_setHistFsPerBin( int fd, int num, UINT32 fsPerBin )
153 * int MUD_setHistSecondsPerBin( int fd, int num, REAL64 secondsPerBin )
154 * int MUD_setHistT0_Ps( int fd, int num, UINT32 t0_ps )
155 * int MUD_setHistT0_Bin( int fd, int num, UINT32 t0_bin )
156 * int MUD_setHistGoodBin1( int fd, int num, UINT32 goodBin1 )
157 * int MUD_setHistGoodBin2( int fd, int num, UINT32 goodBin2 )
158 * int MUD_setHistBkgd1( int fd, int num, UINT32 bkgd1 )
159 * int MUD_setHistBkgd2( int fd, int num, UINT32 bkgd2 )
160 * int MUD_setHistNumEvents( int fd, int num, UINT32 numEvents )
161 * int MUD_setHistTitle( int fd, int num, char* title )
162 * int MUD_setHistData( int fd, int num, void* pData )
163 * int MUD_setHistpData( int fd, int num, void* pData )
164 * int MUD_setHistTimeData( int fd, int num, UINT32* pTimeData )
165 * int MUD_setHistpTimeData( int fd, int num, UINT32* pTimeData )
166 *
167 * int MUD_pack( int num, int inBinSize, void* inArray, int outBinSize, void* outArray )
168 * int MUD_unpack( int num, int inBinSize, void* inArray, int outBinSize, void* outArray )
169 *
170 * Scalers:
171 *
172 * int MUD_getScalers( int fd, UINT32* pType, UINT32* pNum )
173 * int MUD_getScalerLabel( int fd, int num, char* label, int strdim )
174 * int MUD_getScalerCounts( int fd, int num, UINT32* pCounts )
175 *
176 * int MUD_setScalers( int fd, UINT32 type, UINT32 num )
177 * int MUD_setScalerLabel( int fd, int num, char* label )
178 * int MUD_setScalerCounts( int fd, int num, UINT32* pCounts )
179 *
180 * Independent variables (CAMP):
181 *
182 * int MUD_getIndVars( int fd, UINT32* pType, UINT32* pNum )
183 * int MUD_getIndVarLow( int fd, int num, double* pLow )
184 * int MUD_getIndVarHigh( int fd, int num, double* pHigh )
185 * int MUD_getIndVarMean( int fd, int num, double* pMean )
186 * int MUD_getIndVarStddev( int fd, int num, double* pStddev )
187 * int MUD_getIndVarSkewness( int fd, int num, double* pSkewness )
188 * int MUD_getIndVarName( int fd, int num, char* name, int strdim )
189 * int MUD_getIndVarDescription( int fd, int num, char* description, int strdim )
190 * int MUD_getIndVarUnits( int fd, int num, char* units, int strdim )
191 * For history data:
192 * int MUD_getIndVarNumData( int fd, int num, UINT32* pNumData )
193 * int MUD_getIndVarElemSize( int fd, int num, UINT32* pElemSize )
194 * int MUD_getIndVarDataType( int fd, int num, UINT32* pDataType )
195 * int MUD_getIndVarHasTime( int fd, int num, UINT32* pHasTime )
196 * int MUD_getIndVarData( int fd, int num, void* pData )
197 * int MUD_getIndVarTimeData( int fd, int num, UINT32* pTimeData )
198 * int MUD_getIndVarpData( int fd, int num, void** ppData )
199 * int MUD_getIndVarpTimeData( int fd, int num, UINT32** ppTimeData )
200 *
201 * int MUD_setIndVars( int fd, UINT32 type, UINT32 num )
202 * int MUD_setIndVarLow( int fd, int num, double low )
203 * int MUD_setIndVarHigh( int fd, int num, double high )
204 * int MUD_setIndVarMean( int fd, int num, double mean )
205 * int MUD_setIndVarStddev( int fd, int num, double stddev )
206 * int MUD_setIndVarSkewness( int fd, int num, double skewness )
207 * int MUD_setIndVarName( int fd, int num, char* name )
208 * int MUD_setIndVarDescription( int fd, int num, char* description )
209 * int MUD_setIndVarUnits( int fd, int num, char* units )
210 * For history data:
211 * int MUD_setIndVarNumData( int fd, int num, UINT32 numData )
212 * int MUD_setIndVarElemSize( int fd, int num, UINT32 elemSize )
213 * int MUD_setIndVarDataType( int fd, int num, UINT32 dataType )
214 * int MUD_setIndVarData( int fd, int num, void* pData )
215 * int MUD_setIndVarTimeData( int fd, int num, UINT32* pTimeData )
216 * int MUD_setIndVarpData( int fd, int num, void* pData )
217 * int MUD_setIndVarpTimeData( int fd, int num, UINT32* pTimeData )
218 */
219
220#include <stdlib.h>
221#include <string.h>
222#include <math.h>
223
224#include "mud.h"
225
226#define MUD_MAX_FILES 16
227#define MUD_FILE_READ 1
228#define MUD_FILE_WRITE 2
229
230static FILE* mud_f[MUD_MAX_FILES] = { 0 };
232
233#define _strncpy( To, From, Len) strncpy( To, From, Len )[Len-1]='\0'
234
235int
236MUD_openRead( char* filename, UINT32* pType )
237{
238 int fd;
239
240 for( fd = 0; fd < MUD_MAX_FILES; fd++ )
241 {
242 if( mud_f[fd] == NULL ) break;
243 }
244 if( fd == MUD_MAX_FILES ) return( -1 );
245
246 mud_f[fd] = MUD_openInput( filename );
247 if( mud_f[fd] == NULL ) return( -1 );
248
249 /*
250 * Just read the whole file
251 * Might want to make this more complicated,
252 * i.e., only read when needed, keep track of
253 * what's already read.
254 */
256 if( pMUD_fileGrp[fd] == NULL )
257 {
258 fclose( mud_f[fd] );
259 mud_f[fd] = NULL;
260 return( -1 );
261 }
262
263 *pType = MUD_instanceID( pMUD_fileGrp[fd] );
264
265 return( fd );
266}
267
268int
269MUD_openReadWrite( char* filename, UINT32* pType )
270{
271 int fd;
272
273 for( fd = 0; fd < MUD_MAX_FILES; fd++ )
274 {
275 if( mud_f[fd] == NULL ) break;
276 }
277 if( fd == MUD_MAX_FILES ) return( -1 );
278
279 mud_f[fd] = MUD_openInOut( filename );
280 if( mud_f[fd] == NULL ) return( -1 );
281
282 /*
283 * Just read the whole file. Must do so in ReadWrite version.
284 */
286 if( pMUD_fileGrp[fd] == NULL )
287 {
288 fclose( mud_f[fd] );
289 mud_f[fd] = NULL;
290 return( -1 );
291 }
292
293 *pType = MUD_instanceID( pMUD_fileGrp[fd] );
294
295 return( fd );
296}
297
298
299int
300MUD_openWrite( char* filename, UINT32 type )
301{
302 int fd;
303
304 for( fd = 0; fd < MUD_MAX_FILES; fd++ )
305 {
306 if( mud_f[fd] == NULL ) break;
307 }
308 if( fd == MUD_MAX_FILES ) return( -1 );
309
310 mud_f[fd] = MUD_openOutput( filename );
311 if( mud_f[fd] == NULL ) return( -1 );
312
314 if( pMUD_fileGrp[fd] == NULL )
315 {
316 fclose( mud_f[fd] );
317 mud_f[fd] = NULL;
318 return( -1 );
319 }
320
321 return( fd );
322}
323
324
325int
327{
328 if( ( fd < 0 ) || ( fd >= MUD_MAX_FILES ) || ( mud_f[fd] == NULL ) )
329 {
330 return( 0 );
331 }
332
333 /*
334 * Free the list
335 */
336 if( pMUD_fileGrp[fd] != NULL )
337 {
338 MUD_free( pMUD_fileGrp[fd] );
339 pMUD_fileGrp[fd] = NULL;
340 }
341
342 fclose( mud_f[fd] );
343 mud_f[fd] = NULL;
344
345 return( 1 );
346}
347
348
349int
351{
352 if( ( fd < 0 ) || ( fd >= MUD_MAX_FILES ) || ( mud_f[fd] == NULL ) )
353 {
354 return( 0 );
355 }
356
357 /*
358 * Re-index mud groups (memSize and index.offset)
359 */
361 /*
362 * Write the file out if it's an output file
363 */
364 MUD_writeFile( mud_f[fd], pMUD_fileGrp[fd] );
365
366 /*
367 * Free the list
368 */
369 if( pMUD_fileGrp[fd] != NULL )
370 {
371 MUD_free( pMUD_fileGrp[fd] );
372 pMUD_fileGrp[fd] = NULL;
373 }
374
375 fclose( mud_f[fd] );
376 mud_f[fd] = NULL;
377
378 return( 1 );
379}
380
381int
382MUD_closeWriteFile( int fd, char* outname )
383{
384 if( ( fd < 0 ) || ( fd >= MUD_MAX_FILES ) || ( mud_f[fd] == NULL ) )
385 {
386 return( 0 );
387 }
388
389 /*
390 * Close the input file
391 */
392 fclose( mud_f[fd] );
393
394 /*
395 * Open output file on same fd index
396 */
397 mud_f[fd] = MUD_openOutput( outname );
398 if( mud_f[fd] == NULL ) return( 0 );
399
400 /*
401 * Re-index mud groups (memSize and index.offset)
402 */
404 /*
405 * Write the file out.
406 */
407 MUD_writeFile( mud_f[fd], pMUD_fileGrp[fd] );
408
409 /*
410 * Free the list
411 */
412 if( pMUD_fileGrp[fd] != NULL )
413 {
414 MUD_free( pMUD_fileGrp[fd] );
415 pMUD_fileGrp[fd] = NULL;
416 }
417
418 fclose( mud_f[fd] );
419 mud_f[fd] = NULL;
420
421 return( 1 );
422}
423
424
425#define _check_fd( fd ) if( ( fd < 0 ) || \
426 ( fd >= MUD_MAX_FILES ) || \
427 ( mud_f[fd] == NULL ) ) return( 0 )
428
429/*
430 * Run Description
431 */
432#define _sea_desc( fd ) \
433 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
434 { \
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, \
438 (UINT32)0 ); \
439 if( pMUD_idesc == NULL ) return( 0 ); \
440 break; \
441 case MUD_FMT_TRI_TD_ID: \
442 default: \
443 pMUD_desc = (MUD_SEC_GEN_RUN_DESC*)MUD_search( pMUD_fileGrp[fd]->pMem, \
444 MUD_SEC_GEN_RUN_DESC_ID, (UINT32)1, \
445 (UINT32)0 ); \
446 if( pMUD_desc == NULL ) return( 0 ); \
447 break; \
448 }
449
450
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, \
454 (UINT32)0 ); \
455 if( pMUD_desc == NULL ) return( 0 )
456
457
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, \
461 (UINT32)0 ); \
462 if( pMUD_idesc == NULL ) return( 0 )
463
464
465#define _desc_uint_getproc( name, var ) \
466 int name( int fd, UINT32* var) \
467{ \
468 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
469 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
470 _check_fd( fd ); \
471 _sea_desc( fd ); \
472 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
473 { \
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; \
476 } \
477 return( 1 ); \
478}
479
480
481#define _desc_uint_setproc( name, var ) \
482int name( int fd, UINT32 var) \
483{ \
484 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
485 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
486 _check_fd( fd ); \
487 _sea_desc( fd ); \
488 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
489 { \
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; \
492 } \
493 return( 1 ); \
494}
495
496
497#define _desc_char_getproc( name, var ) \
498int name( int fd, char* var, int strdim ) \
499{ \
500 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
501 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
502 _check_fd( fd ); \
503 _sea_desc( fd ); \
504 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
505 { \
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; \
508 } \
509 return( 1 ); \
510}
511
512
513#define _desc_char_setproc( name, var ) \
514int name( int fd, char* var ) \
515{ \
516 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
517 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
518 _check_fd( fd ); \
519 _sea_desc( fd ); \
520 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
521 { \
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; \
526 } \
527 return( 1 ); \
528}
529
530
531#define _gdesc_char_getproc( name, var ) \
532int name( int fd, char* var, int strdim ) \
533{ \
534 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
535 _check_fd( fd ); \
536 _sea_gdesc( fd ); \
537 _strncpy( var, pMUD_desc->var, strdim ); \
538 return( 1 ); \
539}
540
541
542#define _gdesc_char_setproc( name, var ) \
543int name( int fd, char* var ) \
544{ \
545 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0; \
546 _check_fd( fd ); \
547 _sea_gdesc( fd ); \
548 _free( pMUD_desc->var ); \
549 pMUD_desc->var = strdup( var ); \
550 return( 1 ); \
551}
552
553
554#define _idesc_char_getproc( name, var ) \
555int name( int fd, char* var, int strdim ) \
556{ \
557 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
558 _check_fd( fd ); \
559 _sea_idesc( fd ); \
560 _strncpy( var, pMUD_idesc->var, strdim ); \
561 return( 1 ); \
562}
563
564
565#define _idesc_char_setproc( name, var ) \
566int name( int fd, char* var ) \
567{ \
568 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0; \
569 _check_fd( fd ); \
570 _sea_idesc( fd ); \
571 _free( pMUD_idesc->var ); \
572 pMUD_idesc->var = strdup( var ); \
573 return( 1 ); \
574}
575
576
577int
578MUD_getRunDesc( int fd, UINT32* pType )
579{
580 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0;
581 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0;
582
583 _check_fd( fd );
584
585 switch( MUD_instanceID( pMUD_fileGrp[fd] ) )
586 {
588 pMUD_idesc = (MUD_SEC_TRI_TI_RUN_DESC*)MUD_search( pMUD_fileGrp[fd]->pMem,
590 (UINT32)0 );
591 if( pMUD_idesc == NULL ) return( 0 );
593 break;
595 default:
596 pMUD_desc = (MUD_SEC_GEN_RUN_DESC*)MUD_search( pMUD_fileGrp[fd]->pMem,
598 (UINT32)0 );
599 if( pMUD_desc == NULL ) return( 0 );
601 break;
602 }
603
604 return( 1 );
605}
606
607int
608MUD_setRunDesc( int fd, UINT32 type )
609{
610 MUD_SEC_GEN_RUN_DESC* pMUD_desc=0;
611 MUD_SEC_TRI_TI_RUN_DESC* pMUD_idesc=0;
612
613 _check_fd( fd );
614
615 switch( MUD_instanceID( pMUD_fileGrp[fd] ) )
616 {
619 if( pMUD_idesc == NULL ) return( 0 );
620 MUD_addToGroup( pMUD_fileGrp[fd], pMUD_idesc );
621 break;
623 default:
625 if( pMUD_desc == NULL ) return( 0 );
626 MUD_addToGroup( pMUD_fileGrp[fd], pMUD_desc );
627 break;
628 }
629
630 return( 1 );
631}
632
633_desc_uint_getproc( MUD_getExptNumber, exptNumber )
634_desc_uint_getproc( MUD_getRunNumber, runNumber )
635_desc_uint_getproc( MUD_getElapsedSec, elapsedSec )
636_desc_uint_getproc( MUD_getTimeBegin, timeBegin )
637_desc_uint_getproc( MUD_getTimeEnd, timeEnd )
638_desc_char_getproc( MUD_getTitle, title )
639_desc_char_getproc( MUD_getLab, lab )
640_desc_char_getproc( MUD_getArea, area )
641_desc_char_getproc( MUD_getMethod, method )
642_desc_char_getproc( MUD_getApparatus, apparatus )
643_desc_char_getproc( MUD_getInsert, insert )
644_desc_char_getproc( MUD_getSample, sample )
645_desc_char_getproc( MUD_getOrient, orient )
646_desc_char_getproc( MUD_getDas, das )
647_desc_char_getproc( MUD_getExperimenter, experimenter )
648/* not in TRI_TI */
649_gdesc_char_getproc( MUD_getTemperature, temperature )
650_gdesc_char_getproc( MUD_getField, field )
651/* TRI_TI only */
652_idesc_char_getproc( MUD_getSubtitle, subtitle )
653_idesc_char_getproc( MUD_getComment1, comment1 )
654_idesc_char_getproc( MUD_getComment2, comment2 )
655_idesc_char_getproc( MUD_getComment3, comment3 )
656
657_desc_uint_setproc( MUD_setExptNumber, exptNumber )
658_desc_uint_setproc( MUD_setRunNumber, runNumber )
659_desc_uint_setproc( MUD_setElapsedSec, elapsedSec )
660_desc_uint_setproc( MUD_setTimeBegin, timeBegin )
661_desc_uint_setproc( MUD_setTimeEnd, timeEnd )
662_desc_char_setproc( MUD_setTitle, title )
663_desc_char_setproc( MUD_setLab, lab )
664_desc_char_setproc( MUD_setArea, area )
665_desc_char_setproc( MUD_setMethod, method )
666_desc_char_setproc( MUD_setApparatus, apparatus )
667_desc_char_setproc( MUD_setInsert, insert )
668_desc_char_setproc( MUD_setSample, sample )
669_desc_char_setproc( MUD_setOrient, orient )
670_desc_char_setproc( MUD_setDas, das )
671_desc_char_setproc( MUD_setExperimenter, experimenter )
672/* not in TRI_TI */
673_gdesc_char_setproc( MUD_setTemperature, temperature )
674_gdesc_char_setproc( MUD_setField, field )
675/* TRI_TI only */
676_idesc_char_setproc( MUD_setSubtitle, subtitle )
677_idesc_char_setproc( MUD_setComment1, comment1 )
678_idesc_char_setproc( MUD_setComment2, comment2 )
679_idesc_char_setproc( MUD_setComment3, comment3 )
680
681
682/*
683 * Comments
684 */
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, \
688 (UINT32)0 ); \
689 if( pMUD_cmtGrp == NULL ) return( 0 )
690
691
692#define _sea_cmt( fd, n ) \
693 pMUD_cmt = (MUD_SEC_CMT*)MUD_search( pMUD_cmtGrp->pMem, \
694 MUD_SEC_CMT_ID, (UINT32)n, \
695 (UINT32)0 ); \
696 if( pMUD_cmt == NULL ) return( 0 )
697
698
699#define _cmt_uint_getproc( name, var ) \
700int \
701name( int fd, int num, UINT32* var ) \
702{ \
703 MUD_SEC_GRP* pMUD_cmtGrp=0; \
704 MUD_SEC_CMT* pMUD_cmt=0; \
705 _check_fd( fd ); \
706 _sea_cmtgrp( fd ); \
707 _sea_cmt( fd, num ); \
708 *var = pMUD_cmt->var; \
709 return( 1 ); \
710}
711
712
713#define _cmt_uint_setproc( name, var ) \
714int \
715name( int fd, int num, UINT32 var ) \
716{ \
717 MUD_SEC_GRP* pMUD_cmtGrp=0; \
718 MUD_SEC_CMT* pMUD_cmt=0; \
719 _check_fd( fd ); \
720 _sea_cmtgrp( fd ); \
721 _sea_cmt( fd, num ); \
722 pMUD_cmt->var = var; \
723 return( 1 ); \
724}
725
726
727#define _cmt_char_getproc( name, var ) \
728int \
729name( int fd, int num, char* var, int strdim ) \
730{ \
731 MUD_SEC_GRP* pMUD_cmtGrp=0; \
732 MUD_SEC_CMT* pMUD_cmt=0; \
733 _check_fd( fd ); \
734 _sea_cmtgrp( fd ); \
735 _sea_cmt( fd, num ); \
736 _strncpy( var, pMUD_cmt->var, strdim ); \
737 return( 1 ); \
738}
739
740#define _cmt_char_setproc( name, var ) \
741int \
742name( int fd, int num, char* var ) \
743{ \
744 MUD_SEC_GRP* pMUD_cmtGrp=0; \
745 MUD_SEC_CMT* pMUD_cmt=0; \
746 _check_fd( fd ); \
747 _sea_cmtgrp( fd ); \
748 _sea_cmt( fd, num ); \
749 _free( pMUD_cmt->var ); \
750 pMUD_cmt->var = strdup( var ); \
751 return( 1 ); \
752}
753
754int
755MUD_getComments( int fd, UINT32* pType, UINT32* pNum )
756{
757 MUD_SEC_GRP* pMUD_cmtGrp=0;
758
759 _check_fd( fd );
760 _sea_cmtgrp( fd );
761 *pType = MUD_instanceID( pMUD_cmtGrp );
762 *pNum = pMUD_cmtGrp->num;
763
764 return( 1 );
765}
766
767int
768MUD_setComments( int fd, UINT32 type, UINT32 num )
769{
770 MUD_SEC_GRP* pMUD_cmtGrp=0;
771 MUD_SEC_CMT* pMUD_cmt=0;
772 int i;
773
774 _check_fd( fd );
775
776 pMUD_cmtGrp = (MUD_SEC_GRP*)MUD_new( MUD_SEC_GRP_ID, type );
777 if( pMUD_cmtGrp == NULL ) return( 0 );
778
779 for( i = 0; i < num; i++ )
780 {
781 pMUD_cmt = (MUD_SEC_CMT*)MUD_new( MUD_SEC_CMT_ID, i+1 );
782 if( pMUD_cmt == NULL )
783 {
784 MUD_free( pMUD_cmtGrp );
785 return( 0 );
786 }
787 MUD_addToGroup( pMUD_cmtGrp, pMUD_cmt );
788 }
789
790 MUD_addToGroup( pMUD_fileGrp[fd], pMUD_cmtGrp );
791
792 return( 1 );
793}
794
795_cmt_uint_getproc( MUD_getCommentPrev, prevReplyID )
796_cmt_uint_getproc( MUD_getCommentNext, nextReplyID )
797_cmt_uint_getproc( MUD_getCommentTime, time )
798_cmt_char_getproc( MUD_getCommentAuthor, author )
799_cmt_char_getproc( MUD_getCommentTitle, title )
800_cmt_char_getproc( MUD_getCommentBody, comment )
801
802_cmt_uint_setproc( MUD_setCommentPrev, prevReplyID )
803_cmt_uint_setproc( MUD_setCommentNext, nextReplyID )
804_cmt_uint_setproc( MUD_setCommentTime, time )
805_cmt_char_setproc( MUD_setCommentAuthor, author )
806_cmt_char_setproc( MUD_setCommentTitle, title )
807_cmt_char_setproc( MUD_setCommentBody, comment )
808
809
810/*
811 * Histograms
812 */
813#define _sea_histgrp( fd ) \
814 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
815 { \
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, \
819 (UINT32)0 ); \
820 break; \
821 case MUD_FMT_TRI_TD_ID: \
822 default: \
823 pMUD_histGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
824 MUD_SEC_GRP_ID, MUD_GRP_TRI_TD_HIST_ID, \
825 (UINT32)0 ); \
826 break; \
827 } \
828 if( pMUD_histGrp == NULL ) return( 0 )
829
830
831#define _sea_histhdr( fd, n ) \
832 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
833 { \
834 case MUD_FMT_TRI_TI_ID: \
835 case MUD_FMT_TRI_TD_ID: \
836 default: \
837 pMUD_histHdr = (MUD_SEC_GEN_HIST_HDR*)MUD_search( pMUD_histGrp->pMem, \
838 MUD_SEC_GEN_HIST_HDR_ID, (UINT32)n, \
839 (UINT32)0 ); \
840 break; \
841 } \
842 if( pMUD_histHdr == NULL ) return( 0 )
843
844
845#define _hist_uint_getproc( name, var ) \
846int \
847name( int fd, int num, UINT32* var ) \
848{ \
849 MUD_SEC_GRP* pMUD_histGrp=0; \
850 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0; \
851 _check_fd( fd ); \
852 _sea_histgrp( fd ); \
853 _sea_histhdr( fd, num ); \
854 *var = pMUD_histHdr->var; \
855 return( 1 ); \
856}
857
858#define _hist_uint_setproc( name, var ) \
859int \
860name( int fd, int num, UINT32 var ) \
861{ \
862 MUD_SEC_GRP* pMUD_histGrp=0; \
863 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0; \
864 _check_fd( fd ); \
865 _sea_histgrp( fd ); \
866 _sea_histhdr( fd, num ); \
867 pMUD_histHdr->var = var; \
868 return( 1 ); \
869}
870
871#define _hist_char_getproc( name, var ) \
872int \
873name( int fd, int num, char* var, int strdim ) \
874{ \
875 MUD_SEC_GRP* pMUD_histGrp; \
876 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr; \
877 _check_fd( fd ); \
878 _sea_histgrp( fd ); \
879 _sea_histhdr( fd, num ); \
880 _strncpy( var, pMUD_histHdr->var, strdim ); \
881 return( 1 ); \
882}
883
884#define _hist_char_setproc( name, var ) \
885int \
886name( int fd, int num, char* var ) \
887{ \
888 MUD_SEC_GRP* pMUD_histGrp=0; \
889 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0; \
890 _check_fd( fd ); \
891 _sea_histgrp( fd ); \
892 _sea_histhdr( fd, num ); \
893 _free( pMUD_histHdr->var ); \
894 pMUD_histHdr->var = strdup( var ); \
895 return( 1 ); \
896}
897
898int
899MUD_getHists( int fd, UINT32* pType, UINT32* pNum )
900{
901 MUD_SEC_GRP* pMUD_histGrp=0;
902 _check_fd( fd );
903 _sea_histgrp( fd );
904 *pType = MUD_instanceID( pMUD_histGrp );
905 switch( *pType )
906 {
909 default:
910 /*
911 * NOTE: two sections per histogram (header, data)
912 */
913 *pNum = pMUD_histGrp->num/2;
914 break;
915 }
916 return( 1 );
917}
918
919int
920MUD_setHists( int fd, UINT32 type, UINT32 num )
921{
922 MUD_SEC_GRP* pMUD_grp;
923 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0;
924 MUD_SEC_GEN_HIST_DAT* pMUD_histDat=0;
925 int i;
926
927 _check_fd( fd );
928
929 pMUD_grp = (MUD_SEC_GRP*)MUD_new( MUD_SEC_GRP_ID, type );
930 if( pMUD_grp == NULL ) return( 0 );
931
932 for( i = 0; i < num; i++ )
933 {
935 if( pMUD_histHdr == NULL )
936 {
937 MUD_free( pMUD_grp );
938 return( 0 );
939 }
940 MUD_addToGroup( pMUD_grp, pMUD_histHdr );
942 if( pMUD_histDat == NULL )
943 {
944 MUD_free( pMUD_grp );
945 return( 0 );
946 }
947 MUD_addToGroup( pMUD_grp, pMUD_histDat );
948 }
949
950 MUD_addToGroup( pMUD_fileGrp[fd], pMUD_grp );
951
952 return( 1 );
953}
954
955_hist_uint_getproc( MUD_getHistType, histType )
956_hist_uint_getproc( MUD_getHistNumBytes, nBytes )
957_hist_uint_getproc( MUD_getHistNumBins, nBins )
958_hist_uint_getproc( MUD_getHistBytesPerBin, bytesPerBin )
959_hist_uint_getproc( MUD_getHistFsPerBin, fsPerBin )
960_hist_uint_getproc( MUD_getHistT0_Ps, t0_ps )
961_hist_uint_getproc( MUD_getHistT0_Bin, t0_bin )
962_hist_uint_getproc( MUD_getHistGoodBin1, goodBin1 )
963_hist_uint_getproc( MUD_getHistGoodBin2, goodBin2 )
964_hist_uint_getproc( MUD_getHistBkgd1, bkgd1 )
965_hist_uint_getproc( MUD_getHistBkgd2, bkgd2 )
966_hist_uint_getproc( MUD_getHistNumEvents, nEvents )
967_hist_char_getproc( MUD_getHistTitle, title )
968
969_hist_uint_setproc( MUD_setHistType, histType )
970_hist_uint_setproc( MUD_setHistNumBytes, nBytes )
971_hist_uint_setproc( MUD_setHistNumBins, nBins )
972_hist_uint_setproc( MUD_setHistBytesPerBin, bytesPerBin )
973_hist_uint_setproc( MUD_setHistFsPerBin, fsPerBin )
974_hist_uint_setproc( MUD_setHistT0_Ps, t0_ps )
975_hist_uint_setproc( MUD_setHistT0_Bin, t0_bin )
976_hist_uint_setproc( MUD_setHistGoodBin1, goodBin1 )
977_hist_uint_setproc( MUD_setHistGoodBin2, goodBin2 )
978_hist_uint_setproc( MUD_setHistBkgd1, bkgd1 )
979_hist_uint_setproc( MUD_setHistBkgd2, bkgd2 )
980_hist_uint_setproc( MUD_setHistNumEvents, nEvents )
981_hist_char_setproc( MUD_setHistTitle, title )
982
983int
984MUD_getHistpData( int fd, int num, void** ppData )
985{
986 MUD_SEC_GRP* pMUD_histGrp=0;
987 MUD_SEC_GEN_HIST_DAT* pMUD_histDat=0;
988 _check_fd( fd );
989 _sea_histgrp( fd );
990
991 pMUD_histDat = (MUD_SEC_GEN_HIST_DAT*)MUD_search( pMUD_histGrp->pMem,
993 (UINT32)0 );
994 if( pMUD_histDat == NULL ) return( 0 );
995
996 *ppData = pMUD_histDat->pData;
997 return( 1 );
998}
999
1000int
1001MUD_setHistpData( int fd, int num, void* pData )
1002{
1003 MUD_SEC_GRP* pMUD_histGrp=0;
1004 MUD_SEC_GEN_HIST_DAT* pMUD_histDat=0;
1005 _check_fd( fd );
1006 _sea_histgrp( fd );
1007
1008 pMUD_histDat = (MUD_SEC_GEN_HIST_DAT*)MUD_search( pMUD_histGrp->pMem,
1010 (UINT32)0 );
1011 if( pMUD_histDat == NULL ) return( 0 );
1012
1013 pMUD_histDat->pData = (caddr_t)pData;
1014 return( 1 );
1015}
1016
1017int
1018MUD_getHistData( int fd, int num, void* pData )
1019{
1020 MUD_SEC_GRP* pMUD_histGrp=0;
1021 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0;
1022 MUD_SEC_GEN_HIST_DAT* pMUD_histDat=0;
1023 _check_fd( fd );
1024 _sea_histgrp( fd );
1025
1026 pMUD_histHdr = (MUD_SEC_GEN_HIST_HDR*)MUD_search( pMUD_histGrp->pMem,
1028 (UINT32)0 );
1029 if( pMUD_histHdr == NULL ) return( 0 );
1030
1031 pMUD_histDat = (MUD_SEC_GEN_HIST_DAT*)MUD_search( pMUD_histGrp->pMem,
1033 (UINT32)0 );
1034 if( pMUD_histDat == NULL ) return( 0 );
1035
1036 /*
1037 * Do unpacking/byte swapping
1038 */
1039 MUD_unpack( pMUD_histHdr->nBins,
1040 pMUD_histHdr->bytesPerBin, pMUD_histDat->pData,
1041 ( pMUD_histHdr->bytesPerBin == 0 ) ? 4 : pMUD_histHdr->bytesPerBin, pData );
1042
1043 return( 1 );
1044}
1045
1046int
1047MUD_setHistData( int fd, int num, void* pData )
1048{
1049 MUD_SEC_GRP* pMUD_histGrp=0;
1050 MUD_SEC_GEN_HIST_HDR* pMUD_histHdr=0;
1051 MUD_SEC_GEN_HIST_DAT* pMUD_histDat=0;
1052 _check_fd( fd );
1053 _sea_histgrp( fd );
1054
1055 pMUD_histHdr = (MUD_SEC_GEN_HIST_HDR*)MUD_search( pMUD_histGrp->pMem,
1057 (UINT32)0 );
1058 if( pMUD_histHdr == NULL ) return( 0 );
1059
1060 pMUD_histDat = (MUD_SEC_GEN_HIST_DAT*)MUD_search( pMUD_histGrp->pMem,
1062 (UINT32)0 );
1063 if( pMUD_histDat == NULL ) return( 0 );
1064
1065 _free( pMUD_histDat->pData );
1066
1067 switch( pMUD_histHdr->bytesPerBin )
1068 {
1069 case 0:
1070 pMUD_histDat->pData = (caddr_t)zalloc( 4*pMUD_histHdr->nBins + 32 );
1071 break;
1072 default:
1073 pMUD_histDat->pData = (caddr_t)zalloc(
1074 pMUD_histHdr->nBins*pMUD_histHdr->bytesPerBin );
1075 break;
1076 }
1077
1078 /*
1079 * Do packing/byte swapping
1080 */
1081 pMUD_histDat->nBytes = pMUD_histHdr->nBytes =
1082 MUD_pack( pMUD_histHdr->nBins,
1083 ( pMUD_histHdr->bytesPerBin == 0 ) ? 4 : pMUD_histHdr->bytesPerBin, pData,
1084 pMUD_histHdr->bytesPerBin, pMUD_histDat->pData );
1085
1086 return( 1 );
1087}
1088
1089int
1090MUD_getHistpTimeData( int fd, int num, UINT32** ppTimeData )
1091{
1092 /* return pointer to time history data for a histogram */
1093 /* not implemented */
1094 return( 1 );
1095}
1096
1097int
1098MUD_getHistTimeData( int fd, int num, UINT32* pTimeData )
1099{
1100 /* return pointer to time history data for a histogram */
1101 /* not implemented */
1102 return( 1 );
1103}
1104
1105int
1106MUD_setHistpTimeData( int fd, int num, UINT32* pTimeData )
1107{
1108 /* return pointer to time history data for a histogram */
1109 /* not implemented */
1110 return( 1 );
1111}
1112
1113int
1114MUD_setHistTimeData( int fd, int num, UINT32* pTimeData )
1115{
1116 /* return pointer to time history data for a histogram */
1117 /* not implemented */
1118 return( 1 );
1119}
1120
1121/*
1122 * Returns number of bytes in outArray
1123 * (not success/failure)
1124 */
1125int
1126MUD_pack( int num, int inBinSize, void*inArray, int outBinSize, void* outArray )
1127{
1128 return( MUD_SEC_GEN_HIST_pack( num, inBinSize, inArray,
1129 outBinSize, outArray ) );
1130}
1131
1132
1133int
1134MUD_unpack( int num, int inBinSize, void* inArray, int outBinSize, void* outArray )
1135{
1136 return( MUD_SEC_GEN_HIST_unpack( num, inBinSize, inArray,
1137 outBinSize, outArray ) );
1138}
1139
1140
1141/*
1142 * Scalers
1143 */
1144#define _sea_scalgrp( fd ) \
1145 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1146 { \
1147 case MUD_FMT_TRI_TD_ID: \
1148 default: \
1149 pMUD_scalGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
1150 MUD_SEC_GRP_ID, MUD_GRP_TRI_TD_SCALER_ID, \
1151 (UINT32)0 ); \
1152 break; \
1153 } \
1154 if( pMUD_scalGrp == NULL ) return( 0 )
1155
1156
1157#define _sea_scal( fd, n ) \
1158 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1159 { \
1160 case MUD_FMT_TRI_TD_ID: \
1161 default: \
1162 pMUD_scal = (MUD_SEC_GEN_SCALER*)MUD_search( pMUD_scalGrp->pMem, \
1163 MUD_SEC_GEN_SCALER_ID, (UINT32)n, \
1164 (UINT32)0 ); \
1165 break; \
1166 } \
1167 if( pMUD_scal == NULL ) return( 0 )
1168
1169
1170int
1171MUD_getScalers( int fd, UINT32* pType, UINT32* pNum )
1172{
1173 MUD_SEC_GRP* pMUD_scalGrp=0;
1174
1175 _check_fd( fd );
1176 _sea_scalgrp( fd );
1177 *pType = MUD_instanceID( pMUD_scalGrp );
1178 *pNum = pMUD_scalGrp->num;
1179
1180 return( 1 );
1181}
1182
1183int
1184MUD_setScalers( int fd, UINT32 type, UINT32 num )
1185{
1186 MUD_SEC_GRP* pMUD_grp=0;
1187 MUD_SEC_GEN_SCALER* pMUD_scal=0;
1188 int i;
1189
1190 _check_fd( fd );
1191
1192 pMUD_grp = (MUD_SEC_GRP*)MUD_new( MUD_SEC_GRP_ID, type );
1193 if( pMUD_grp == NULL ) return( 0 );
1194
1195 for( i = 0; i < num; i++ )
1196 {
1197 pMUD_scal = (MUD_SEC_GEN_SCALER*)MUD_new( MUD_SEC_GEN_SCALER_ID, i+1 );
1198 if( pMUD_scal == NULL )
1199 {
1200 MUD_free( pMUD_grp );
1201 return( 0 );
1202 }
1203 MUD_addToGroup( pMUD_grp, pMUD_scal );
1204 }
1205
1206 MUD_addToGroup( pMUD_fileGrp[fd], pMUD_grp );
1207
1208 return( 1 );
1209}
1210
1211int
1212MUD_getScalerLabel( int fd, int num, char* label, int strdim )
1213{
1214 MUD_SEC_GRP* pMUD_scalGrp=0;
1215 MUD_SEC_GEN_SCALER* pMUD_scal=0;
1216
1217 _check_fd( fd );
1218 _sea_scalgrp( fd );
1219 _sea_scal( fd, num );
1220 _strncpy( label, pMUD_scal->label, strdim );
1221
1222 return( 1 );
1223}
1224
1225int
1226MUD_setScalerLabel( int fd, int num, char* label )
1227{
1228 MUD_SEC_GRP* pMUD_scalGrp=0;
1229 MUD_SEC_GEN_SCALER* pMUD_scal=0;
1230
1231 _check_fd( fd );
1232 _sea_scalgrp( fd );
1233 _sea_scal( fd, num );
1234 _free( pMUD_scal->label );
1235 pMUD_scal->label = strdup( label );
1236
1237 return( 1 );
1238}
1239
1240int
1241MUD_getScalerCounts( int fd, int num, UINT32* pCounts )
1242{
1243 MUD_SEC_GRP* pMUD_scalGrp=0;
1244 MUD_SEC_GEN_SCALER* pMUD_scal=0;
1245
1246 _check_fd( fd );
1247 _sea_scalgrp( fd );
1248 _sea_scal( fd, num );
1249
1250 pCounts[0] = pMUD_scal->counts[0];
1251 pCounts[1] = pMUD_scal->counts[1];
1252
1253 return( 1 );
1254}
1255
1256int
1257MUD_setScalerCounts( int fd, int num, UINT32* pCounts )
1258{
1259 MUD_SEC_GRP* pMUD_scalGrp=0;
1260 MUD_SEC_GEN_SCALER* pMUD_scal=0;
1261
1262 _check_fd( fd );
1263 _sea_scalgrp( fd );
1264 _sea_scal( fd, num );
1265
1266 pMUD_scal->counts[0] = pCounts[0];
1267 pMUD_scal->counts[1] = pCounts[1];
1268
1269 return( 1 );
1270}
1271
1272
1273/*
1274 * Independent variables
1275 */
1276#define _sea_indvargrp( fd ) \
1277 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1278 { \
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, \
1282 (UINT32)0 ); \
1283 break; \
1284 case MUD_FMT_TRI_TD_ID: \
1285 default: \
1286 pMUD_indVarGrp = (MUD_SEC_GRP*)MUD_search( pMUD_fileGrp[fd]->pMem, \
1287 MUD_SEC_GRP_ID, MUD_GRP_GEN_IND_VAR_ID, \
1288 (UINT32)0 ); \
1289 break; \
1290 } \
1291 if( pMUD_indVarGrp == NULL ) return( 0 )
1292
1293
1294#define _sea_indvar( fd, n ) \
1295 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1296 { \
1297 case MUD_FMT_TRI_TD_ID: \
1298 case MUD_FMT_TRI_TI_ID: \
1299 default: \
1300 pMUD_indVar = (MUD_SEC_GEN_IND_VAR*)MUD_search( pMUD_indVarGrp->pMem, \
1301 MUD_SEC_GEN_IND_VAR_ID, (UINT32)n, \
1302 (UINT32)0 ); \
1303 break; \
1304 } \
1305 if( pMUD_indVar == NULL ) return( 0 )
1306
1307
1308#define _sea_indvardat( fd, n ) \
1309 switch( MUD_instanceID( pMUD_fileGrp[fd] ) ) \
1310 { \
1311 case MUD_FMT_TRI_TI_ID: \
1312 default: \
1313 pMUD_array = (MUD_SEC_GEN_ARRAY*)MUD_search( pMUD_indVarGrp->pMem, \
1314 MUD_SEC_GEN_ARRAY_ID, (UINT32)n, \
1315 (UINT32)0 ); \
1316 break; \
1317 } \
1318 if( pMUD_array == NULL ) return( 0 )
1319
1320
1321#define _indvar_doub_getproc( name, var ) \
1322int \
1323name( int fd, int num, double* var ) \
1324{ \
1325 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1326 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1327 _check_fd( fd ); \
1328 _sea_indvargrp( fd ); \
1329 _sea_indvar( fd, num ); \
1330 *var = pMUD_indVar->var; \
1331 return( 1 ); \
1332}
1333
1334#define _indvar_doub_setproc( name, var ) \
1335int \
1336name( int fd, int num, double var ) \
1337{ \
1338 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1339 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1340 _check_fd( fd ); \
1341 _sea_indvargrp( fd ); \
1342 _sea_indvar( fd, num ); \
1343 pMUD_indVar->var = var; \
1344 return( 1 ); \
1345}
1346
1347
1348#define _indvar_char_getproc( name, var ) \
1349int \
1350name( int fd, int num, char* var, int strdim ) \
1351{ \
1352 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1353 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1354 _check_fd( fd ); \
1355 _sea_indvargrp( fd ); \
1356 _sea_indvar( fd, num ); \
1357 _strncpy( var, pMUD_indVar->var, strdim ); \
1358 return( 1 ); \
1359}
1360
1361#define _indvar_char_setproc( name, var ) \
1362int \
1363name( int fd, int num, char* var ) \
1364{ \
1365 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1366 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0; \
1367 _check_fd( fd ); \
1368 _sea_indvargrp( fd ); \
1369 _sea_indvar( fd, num ); \
1370 _free( pMUD_indVar->var ); \
1371 pMUD_indVar->var = strdup( var ); \
1372 return( 1 ); \
1373}
1374
1375
1376#define _indvardat_uint_getproc( name, var ) \
1377int \
1378name( int fd, int n, UINT32* var ) \
1379{ \
1380 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1381 MUD_SEC_GEN_ARRAY* pMUD_array=0; \
1382 _check_fd( fd ); \
1383 _sea_indvargrp( fd ); \
1384 _sea_indvardat( fd, n ); \
1385 *var = pMUD_array->var; \
1386 return( 1 ); \
1387}
1388
1389#define _indvardat_uint_setproc( name, var ) \
1390int \
1391name( int fd, int n, UINT32 var ) \
1392{ \
1393 MUD_SEC_GRP* pMUD_indVarGrp=0; \
1394 MUD_SEC_GEN_ARRAY* pMUD_array=0; \
1395 _check_fd( fd ); \
1396 _sea_indvargrp( fd ); \
1397 _sea_indvardat( fd, n ); \
1398 pMUD_array->var = var; \
1399 return( 1 ); \
1400}
1401
1402
1403int
1404MUD_getIndVars( int fd, UINT32* pType, UINT32* pNum )
1405{
1406 MUD_SEC_GRP* pMUD_indVarGrp=0;
1407
1408 _check_fd( fd );
1409 _sea_indvargrp( fd );
1410
1411 *pType = MUD_instanceID( pMUD_indVarGrp );
1412 switch( *pType )
1413 {
1415 /*
1416 * NOTE: two sections per independent variable (header,array)
1417 */
1418 *pNum = pMUD_indVarGrp->num/2;
1419 break;
1421 default:
1422 *pNum = pMUD_indVarGrp->num;
1423 break;
1424 }
1425 return( 1 );
1426}
1427
1428int
1429MUD_setIndVars( int fd, UINT32 type, UINT32 num )
1430{
1431 MUD_SEC_GRP* pMUD_grp=0;
1432 MUD_SEC_GEN_IND_VAR* pMUD_indVar=0;
1433 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1434 int i;
1435
1436 _check_fd( fd );
1437
1438 pMUD_grp = (MUD_SEC_GRP*)MUD_new( MUD_SEC_GRP_ID, type );
1439 if( pMUD_grp == NULL ) return( 0 );
1440
1441 for( i = 0; i < num; i++ )
1442 {
1443 pMUD_indVar = (MUD_SEC_GEN_IND_VAR*)MUD_new( MUD_SEC_GEN_IND_VAR_ID, i+1 );
1444 if( pMUD_indVar == NULL )
1445 {
1446 MUD_free( pMUD_grp );
1447 return( 0 );
1448 }
1449 MUD_addToGroup( pMUD_grp, pMUD_indVar );
1450
1451 if( type == MUD_GRP_GEN_IND_VAR_ARR_ID )
1452 {
1453 pMUD_array = (MUD_SEC_GEN_ARRAY*)MUD_new( MUD_SEC_GEN_ARRAY_ID, i+1 );
1454 if( pMUD_array == NULL )
1455 {
1456 MUD_free( pMUD_grp );
1457 return( 0 );
1458 }
1459 MUD_addToGroup( pMUD_grp, pMUD_array );
1460 }
1461 }
1462
1463 MUD_addToGroup( pMUD_fileGrp[fd], pMUD_grp );
1464
1465 return( 1 );
1466}
1467
1468_indvar_doub_getproc( MUD_getIndVarLow, low )
1469_indvar_doub_getproc( MUD_getIndVarHigh, high )
1470_indvar_doub_getproc( MUD_getIndVarMean, mean )
1471_indvar_doub_getproc( MUD_getIndVarStddev, stddev )
1472_indvar_doub_getproc( MUD_getIndVarSkewness, skewness )
1473_indvar_char_getproc( MUD_getIndVarName, name )
1474_indvar_char_getproc( MUD_getIndVarDescription, description )
1475_indvar_char_getproc( MUD_getIndVarUnits, units )
1476
1477_indvardat_uint_getproc( MUD_getIndVarNumData, num )
1478_indvardat_uint_getproc( MUD_getIndVarElemSize, elemSize )
1479_indvardat_uint_getproc( MUD_getIndVarDataType, type )
1480_indvardat_uint_getproc( MUD_getIndVarHasTime, hasTime )
1481
1482_indvar_doub_setproc( MUD_setIndVarLow, low )
1483_indvar_doub_setproc( MUD_setIndVarHigh, high )
1484_indvar_doub_setproc( MUD_setIndVarMean, mean )
1485_indvar_doub_setproc( MUD_setIndVarStddev, stddev )
1486_indvar_doub_setproc( MUD_setIndVarSkewness, skewness )
1487_indvar_char_setproc( MUD_setIndVarName, name )
1488_indvar_char_setproc( MUD_setIndVarDescription, description )
1489_indvar_char_setproc( MUD_setIndVarUnits, units )
1490
1491_indvardat_uint_setproc( MUD_setIndVarNumData, num )
1492_indvardat_uint_setproc( MUD_setIndVarElemSize, elemSize )
1493_indvardat_uint_setproc( MUD_setIndVarDataType, type )
1494
1495int
1496MUD_getIndVarpData( int fd, int num, void** ppData )
1497{
1498 MUD_SEC_GRP* pMUD_indVarGrp=0;
1499 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1500 _check_fd( fd );
1501 _sea_indvargrp( fd );
1502 _sea_indvardat( fd, num );
1503 *ppData = (void*)pMUD_array->pData;
1504 return( 1 );
1505}
1506
1507int
1508MUD_setIndVarpData( int fd, int num, void* pData )
1509{
1510 MUD_SEC_GRP* pMUD_indVarGrp=0;
1511 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1512 _check_fd( fd );
1513 _sea_indvargrp( fd );
1514 _sea_indvardat( fd, num );
1515 pMUD_array->pData = (caddr_t)pData;
1516 return( 1 );
1517}
1518
1519int
1520MUD_getIndVarData( int fd, int num, void* pData )
1521{
1522 MUD_SEC_GRP* pMUD_indVarGrp=0;
1523 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1524 _check_fd( fd );
1525 _sea_indvargrp( fd );
1526 _sea_indvardat( fd, num );
1527
1528 switch( pMUD_array->type )
1529 {
1530 case 1:
1531 /*
1532 * Do unpacking/byte swapping
1533 */
1534 MUD_unpack( pMUD_array->num,
1535 pMUD_array->elemSize, pMUD_array->pData,
1536 ( pMUD_array->elemSize == 0 ) ? 4 : pMUD_array->elemSize, pData );
1537 break;
1538 default:
1539 bcopy( pMUD_array->pData, pData, pMUD_array->num*pMUD_array->elemSize );
1540 break;
1541 }
1542
1543 return( 1 );
1544}
1545
1546int
1547MUD_setIndVarData( int fd, int num, void* pData )
1548{
1549 MUD_SEC_GRP* pMUD_indVarGrp=0;
1550 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1551 _check_fd( fd );
1552 _sea_indvargrp( fd );
1553 _sea_indvardat( fd, num );
1554 _free( pMUD_array->pData );
1555 switch( pMUD_array->elemSize )
1556 {
1557 case 0:
1558 pMUD_array->pData = (caddr_t)zalloc( 4*pMUD_array->num + 32 );
1559 break;
1560 default:
1561 pMUD_array->pData = (caddr_t)zalloc( pMUD_array->num*pMUD_array->elemSize );
1562 break;
1563 }
1564
1565 switch( pMUD_array->type )
1566 {
1567 case 1:
1568 /*
1569 * Do packing/byte swapping
1570 */
1571 MUD_pack( pMUD_array->num,
1572 ( pMUD_array->elemSize == 0 ) ? 4 : pMUD_array->elemSize, pData,
1573 pMUD_array->elemSize, pMUD_array->pData );
1574 break;
1575 default:
1576 bcopy( pData, pMUD_array->pData, pMUD_array->num*pMUD_array->elemSize );
1577 break;
1578 }
1579
1580 return( 1 );
1581}
1582
1583int
1584MUD_getIndVarpTimeData( int fd, int num, UINT32** ppData )
1585{
1586 MUD_SEC_GRP* pMUD_indVarGrp=0;
1587 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1588 _check_fd( fd );
1589 _sea_indvargrp( fd );
1590 _sea_indvardat( fd, num );
1591 *ppData = (UINT32*)pMUD_array->pTime;
1592 return( 1 );
1593}
1594
1595int
1596MUD_setIndVarpTimeData( int fd, int num, UINT32* pData )
1597{
1598 MUD_SEC_GRP* pMUD_indVarGrp=0;
1599 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1600 _check_fd( fd );
1601 _sea_indvargrp( fd );
1602 _sea_indvardat( fd, num );
1603 pMUD_array->pTime = (TIME*)pData;
1604 return( 1 );
1605}
1606
1607int
1608MUD_getIndVarTimeData( int fd, int num, UINT32* pData )
1609{
1610 MUD_SEC_GRP* pMUD_indVarGrp=0;
1611 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1612 _check_fd( fd );
1613 _sea_indvargrp( fd );
1614 _sea_indvardat( fd, num );
1615
1616 /*
1617 * Already byte swapped
1618 */
1619 bcopy( pMUD_array->pTime, pData, 4*pMUD_array->num );
1620
1621 return( 1 );
1622}
1623
1624int
1625MUD_setIndVarTimeData( int fd, int num, UINT32* pData )
1626{
1627 MUD_SEC_GRP* pMUD_indVarGrp=0;
1628 MUD_SEC_GEN_ARRAY* pMUD_array=0;
1629
1630 _check_fd( fd );
1631 _sea_indvargrp( fd );
1632 _sea_indvardat( fd, num );
1633 _free( pMUD_array->pTime );
1634
1635 pMUD_array->pTime = (TIME*)zalloc( 4*pMUD_array->num );
1636 /*
1637 * Don't byte swap here
1638 */
1639 bcopy( pData, pMUD_array->pTime, 4*pMUD_array->num );
1640 pMUD_array->hasTime = 1;
1641
1642 return( 1 );
1643}
1644
1645int
1646MUD_getHistSecondsPerBin( int fd, int num, REAL64* pSecondsPerBin )
1647{
1648 int i;
1649 UINT32 fsPerBin;
1650
1651 if( (i = MUD_getHistFsPerBin( fd, num, &fsPerBin )) )
1652 {
1653 if( fsPerBin < 16 )
1654 {
1655 *pSecondsPerBin = (REAL64)(0.078125e-9 * pow( (double)2.0, (double)(fsPerBin) ));
1656 }
1657 else if( fsPerBin < 29 )
1658 {
1659 *pSecondsPerBin = (REAL64)(0.048828125e-9 * pow( (double)2.0, (double)(fsPerBin - 16) ));
1660 }
1661 else
1662 {
1663 *pSecondsPerBin = (REAL64)((double)fsPerBin * 1.0e-15);
1664 }
1665 }
1666 return( i );
1667}
1668
1669int
1670MUD_setHistSecondsPerBin( int fd, int num, REAL64 secondsPerBin )
1671{
1672 if( secondsPerBin < 0.0 || secondsPerBin > 4294967295.0e-15 )
1673 return( 0 );
1674 return( MUD_setHistFsPerBin( fd, num, (UINT32)(1.0e15 * secondsPerBin ) ) );
1675}
void * MUD_readFile(FILE *fin)
Definition mud.c:398
FILE * MUD_openInput(char *inFile)
Definition mud.c:41
FILE * MUD_openOutput(char *outFile)
Definition mud.c:69
void MUD_addToGroup(MUD_SEC_GRP *pMUD_grp, void *pMUD)
Definition mud.c:922
FILE * MUD_openInOut(char *inFile)
Definition mud.c:55
UINT32 MUD_setSizes(void *pMUD)
Definition mud.c:542
void MUD_free(void *pMUD)
Definition mud.c:83
void * MUD_search(va_alist)
Definition mud.c:628
BOOL MUD_writeFile(FILE *fout, void *pMUD_head)
Definition mud.c:271
#define MUD_FMT_TRI_TI_ID
Definition mud.h:58
#define NULL
Definition mud.h:167
unsigned long UINT32
Definition mud.h:146
#define MUD_GRP_GEN_IND_VAR_ID
Definition mud.h:82
#define MUD_SEC_CMT_ID
Definition mud.h:67
#define zalloc(n)
Definition mud.h:201
#define MUD_SEC_GEN_HIST_HDR_ID
Definition mud.h:74
struct _MUD_SEC_GRP MUD_SEC_GRP
#define MUD_SEC_GEN_ARRAY_ID
Definition mud.h:78
#define MUD_SEC_GEN_RUN_DESC_ID
Definition mud.h:73
#define MUD_SEC_GRP_ID
Definition mud.h:65
#define _free(objp)
Definition mud.h:198
#define MUD_GRP_TRI_TD_HIST_ID
Definition mud.h:90
#define MUD_GRP_GEN_IND_VAR_ARR_ID
Definition mud.h:83
#define MUD_GRP_TRI_TI_HIST_ID
Definition mud.h:98
#define MUD_FMT_TRI_TD_ID
Definition mud.h:57
double REAL64
Definition mud.h:149
#define MUD_SEC_GEN_HIST_DAT_ID
Definition mud.h:75
#define MUD_SEC_GEN_SCALER_ID
Definition mud.h:76
#define MUD_SEC_TRI_TI_RUN_DESC_ID
Definition mud.h:95
#define MUD_instanceID(pM)
Definition mud.h:427
UINT32 TIME
Definition mud.h:154
#define MUD_SEC_GEN_IND_VAR_ID
Definition mud.h:77
#define _check_fd(fd)
#define _idesc_char_getproc(name, var)
#define _sea_cmtgrp(fd)
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)
#define _sea_scalgrp(fd)
int MUD_setHistSecondsPerBin(int fd, int num, REAL64 secondsPerBin)
#define _sea_histgrp(fd)
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)
#define MUD_MAX_FILES
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)
#define _sea_scal(fd, n)
int MUD_SEC_GEN_HIST_pack(int num, int inBinSize, void *inHist, int outBinSize, void *outHist)
Definition mud_gen.c:534
int MUD_SEC_GEN_HIST_unpack(int num, int inBinSize, void *inHist, int outBinSize, void *outHist)
Definition mud_gen.c:541
MUD_SEC * MUD_new(UINT32 secID, UINT32 instanceID)
Definition mud_new.c:34
caddr_t pData
Definition mud.h:371
UINT32 num
Definition mud.h:366
TIME * pTime
Definition mud.h:372
UINT32 type
Definition mud.h:368
UINT32 elemSize
Definition mud.h:367
caddr_t pData
Definition mud.h:358
UINT32 bytesPerBin
Definition mud.h:340
UINT32 counts[2]
Definition mud.h:379
char * label
Definition mud.h:380
MUD_SEC * pMem
Definition mud.h:286
UINT32 num
Definition mud.h:283