122 printf(
" MUD_SEC_GEN_RUN_DESC: expt:[%ld], run:[%ld]\n",
125 strncpy( tempStr1, ctime( &bintime ),
sizeof(tempStr1) );
126 tempStr1[strlen(tempStr1)-1] =
'\0';
128 strncpy( tempStr2, ctime( &bintime ),
sizeof(tempStr2) );
129 tempStr2[strlen(tempStr2)-1] =
'\0';
130 printf(
" timeBegin:[%s] [%lu]\n", tempStr1, (
unsigned long)(pMUD->
timeBegin) );
131 printf(
" timeEnd:[%s] [%lu]\n", tempStr2, (
unsigned long)(pMUD->
timeEnd) );
132 printf(
" elapsedSec:[%ld]\n", (
long)(pMUD->
elapsedSec) );
133 if( pMUD->
title ) printf(
" title:\"%s\"\n", pMUD->
title );
134 if( pMUD->
lab ) printf(
" lab:\"%s\"\n", pMUD->
lab );
135 if( pMUD->
area ) printf(
" area:\"%s\"\n", pMUD->
area );
136 if( pMUD->
method ) printf(
" method:\"%s\"\n", pMUD->
method );
138 printf(
" apparatus:\"%s\"\n", pMUD->
apparatus );
139 if( pMUD->
insert ) printf(
" insert:\"%s\"\n", pMUD->
insert );
140 if( pMUD->
sample ) printf(
" sample:\"%s\"\n", pMUD->
sample );
141 if( pMUD->
orient ) printf(
" orient:\"%s\"\n", pMUD->
orient );
142 if( pMUD->
das ) printf(
" das:\"%s\"\n", pMUD->
das );
146 printf(
" temperature:\"%s\"\n", pMUD->
temperature );
148 printf(
" field:\"%s\"\n", pMUD->
field );
151 printf(
"Run number: %ld\n", (
long)(pMUD->
runNumber) );
152 printf(
" exper num: %ld\n", (
long)(pMUD->
exptNumber) );
155 if( pMUD->
method ) printf(
" method: %s\n", pMUD->
method );
157 strncpy( tempStr1, ctime( &bintime ),
sizeof(tempStr1) );
158 tempStr1[strlen(tempStr1)-1] =
'\0';
160 strncpy( tempStr2, ctime( &bintime ),
sizeof(tempStr2) );
161 tempStr2[strlen(tempStr2)-1] =
'\0';
162 printf(
" began: %s\n ended: %s\n",
163 tempStr1, tempStr2 );
164 printf(
" elapsed: %ld:%.2d:%.2d (%lu seconds)\n",
169 if( strlen( pMUD->
title ) > 63 && strlen( pMUD->
title ) < 80 )
171 printf(
" title:\n%s\n", pMUD->
title );
175 printf(
" title: %s\n", pMUD->
title );
178 if( pMUD->
sample ) printf(
" sample: %s\n", pMUD->
sample );
179 if( pMUD->
orient ) printf(
" orient: %s\n", pMUD->
orient );
182 if( pMUD->
field ) printf(
" field: %s\n", pMUD->
field );
183 if( pMUD->
lab ) printf(
" lab: %s\n", pMUD->
lab );
184 if( pMUD->
area ) printf(
" area: %s\n", pMUD->
area );
185 if( pMUD->
das ) printf(
" das: %s\n", pMUD->
das );
187 printf(
" apparatus: %s\n", pMUD->
apparatus );
188 if( pMUD->
insert ) printf(
" insert: %s\n", pMUD->
insert );
553 int bin, inLoc, outLoc;
567 printf(
"MUD_SEC_GEN_HIST_dopack (pack) starting with \n");
570 printf(
"MUD_SEC_GEN_HIST_dopack (unpack) starting with \n");
573 printf(
" num: %d, inBinSize: %d, outBinSize: %d\n",
574 num,inBinSize,outBinSize);
578 if( inBinSize == 1 && outBinSize == 1 )
580 bcopy( inHist, outHist, num );
581 outLen = num*outBinSize;
583 else if( inBinSize == 2 && outBinSize == 2 )
590 for( i = 0; i < num; i++ )
596 for( i = 0; i < num; i++ )
602 outLen = num*outBinSize;
604 else if( inBinSize == 4 && outBinSize == 4 )
611 for( i = 0; i < num; i++ )
617 for( i = 0; i < num; i++ )
623 outLen = num*outBinSize;
625 else if( inBinSize == 1 && outBinSize == 2 )
632 for( i = 0; i < num; i++ )
641 for( i = 0; i < num; i++ )
650 outLen = num*outBinSize;
652 else if( inBinSize == 1 && outBinSize == 4 )
659 for( i = 0; i < num; i++ )
668 for( i = 0; i < num; i++ )
677 outLen = num*outBinSize;
679 else if( inBinSize == 2 && outBinSize == 1 )
682 pc = (
UINT8*)outHist;
686 for( i = 0; i < num; i++ )
695 for( i = 0; i < num; i++ )
704 outLen = num*outBinSize;
706 else if( inBinSize == 2 && outBinSize == 4 )
713 for( i = 0; i < num; i++ )
722 for( i = 0; i < num; i++ )
731 outLen = num*outBinSize;
733 else if( inBinSize == 4 && outBinSize == 1 )
736 pc = (
UINT8*)outHist;
740 for( i = 0; i < num; i++ )
749 for( i = 0; i < num; i++ )
758 outLen = num*outBinSize;
760 else if( inBinSize == 4 && outBinSize == 2 )
767 for( i = 0; i < num; i++ )
776 for( i = 0; i < num; i++ )
785 outLen = num*outBinSize;
787 else if( inBinSize == 0 )
797 bcopy( &((
char*)inHist)[inLoc], &num_temp, 2 );
800 bdecode_2( &((
char*)inHist)[inLoc], &num_temp );
805 bcopy( &((
char*)inHist)[inLoc], &inBinSize_temp, 1 );
809 printf(
"unpacking %d bins of %d bytes\n", num_temp,
813 outLen_temp = num_temp*outBinSize;
815 if( inBinSize_temp == 0 )
817 bzero( &((
char*)outHist)[outLoc], outLen_temp );
825 inBinSize_temp, (
void*)&((
char*)inHist)[inLoc],
826 outBinSize, (
void*)&((
char*)outHist)[outLoc] );
830 inBinSize_temp, (
void*)&((
char*)inHist)[inLoc],
831 outBinSize, (
void*)&((
char*)outHist)[outLoc] );
834 inLoc += num_temp*inBinSize_temp;
837 outLoc += outLen_temp;
840 outLen = num*outBinSize;
842 else if( outBinSize == 0 )
851 next_few_bins( num - bin, inBinSize, &((
char*)inHist)[inLoc],
852 outBinSize_now, &num_temp, &outBinSize_next );
856 printf(
"MUD_SEC_GEN_HIST_DOPACK - packing %d bins of %d bytes\n",
857 num_temp, outBinSize_now );
864 bencode_2( &((
char*)outHist)[outLoc], &num_temp );
867 bcopy( &num_temp, &((
char*)outHist)[outLoc], 2 );
872 bcopy( &outBinSize_now, &((
char*)outHist)[outLoc], 1 );
875 if( outBinSize_now != 0 )
881 inBinSize, (
void*)&((
char*)inHist)[inLoc],
882 outBinSize_now, (
void*)&((
char*)outHist)[outLoc] );
886 inBinSize, (
void*)&((
char*)inHist)[inLoc],
887 outBinSize_now, (
void*)&((
char*)outHist)[outLoc] );
890 outLoc += num_temp*outBinSize_now;
893 outBinSize_now = outBinSize_next;
894 inLoc += num_temp*inBinSize;
927 bcopy( &((
UINT8*)pHistData)[index], &c, 1 );
930 bcopy( &((
UINT16*)pHistData)[index], &s, 2 );
933 bcopy( &((
UINT32*)pHistData)[index], &l, 4 );
957next_few_bins(
int num_tot,
int inBinSize,
void* pHistData,
int outBinSize_now,
967 int bytesNextLowerDoNow;
975 printf(
"Next_few_bins starting with num_tot: %d\n",num_tot);
978 num_next = num_nextLower = 0;
979 outBinSize_nextLowerFirst = outBinSize_nextLower = outBinSize_next =
981 bytesNextLower = bytesNextLowerDoNow = 0;
984 while( num_next < num_tot )
988 temp_next = num_next + 1 ;
989 if (temp_next < num_next ) {
992 printf (
"Next_few_bins: num_next will overflow; num_next: %d\n",
994 printf (
" Breaking out of Next_few_bins ... \n");
1000 val =
varBinArray( pHistData, inBinSize, num_next );
1002 if( outBinSize_next == outBinSize_now )
1005 if( num_nextLower != 0 )
1008 outBinSize_nextLowerFirst = outBinSize_nextLower = outBinSize_now;
1009 bytesNextLower = bytesNextLowerDoNow = 0;
1012 else if( outBinSize_next < outBinSize_now )
1014 if( outBinSize_nextLowerFirst == outBinSize_now )
1015 outBinSize_nextLowerFirst = outBinSize_next;
1017 if( outBinSize_nextLower != outBinSize_next )
1022 outBinSize_nextLower = outBinSize_next;
1026 bytesNextLower += outBinSize_next;
1028 bytesNextLowerDoNow += outBinSize_now;
1030 if( bytesNextLowerDoNow < ( bytesNextLower +
1039 num_next -= num_nextLower;
1040 outBinSize_next = outBinSize_nextLowerFirst;
1047 *pOutBinSize_next = outBinSize_next;
1048 *pNum_next = num_next;
static void next_few_bins(int num_tot, int inBinSize, void *pHistData, int outBinSize_now, MUD_VAR_BIN_LEN_TYPE *pNum_next, MUD_VAR_BIN_SIZ_TYPE *pOutBinSize_next)