Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

nimltest.c File Reference

#include "niml.h"

Go to the source code of this file.


Functions

int main (int argc, char *argv[])

Function Documentation

int main int    argc,
char *    argv[]
 

\** File : SUMA.c

Author:
: Ziad Saad Date : Thu Dec 27 16:21:01 EST 2001
Purpose :

Input paramters :

Parameters:
param  Usage : SUMA ( )
Returns :
Returns:
Support :
See also:
OpenGL prog. Guide 3rd edition , varray.c from book's sample code
Side effects :

Definition at line 8 of file nimltest.c.

References argc, NI_procins::attr_lhs, NI_group::attr_lhs, NI_element::attr_lhs, NI_procins::attr_num, NI_group::attr_num, NI_element::attr_num, NI_procins::attr_rhs, NI_group::attr_rhs, NI_element::attr_rhs, free, NI_procins::name, NI_element::name, NI_add_trusted_host(), NI_BASE64_MODE, NI_BINARY_MODE, NI_ELEMENT_TYPE, NI_element_type(), NI_GROUP_TYPE, NI_HEADERSHARP_FLAG, NI_PROCINS_TYPE, NI_read_element(), NI_sleep(), NI_stream_close(), NI_stream_getbuf(), NI_stream_goodcheck(), NI_stream_open(), NI_stream_write(), NI_stream_writecheck(), NI_TEXT_MODE, NI_write_element(), NI_group::part_num, tt, UNIQ_hashcode(), UNIQ_idcode(), NI_element::vec_axis_delta, NI_element::vec_axis_label, NI_element::vec_axis_len, NI_element::vec_axis_origin, NI_element::vec_axis_unit, NI_element::vec_filled, NI_element::vec_len, NI_element::vec_num, and NI_element::vec_rank.

00009 {
00010    NI_stream ns , nsout , nsf=NULL ;
00011    int nn , tt , nopt=1 , bmode , tflag=0 ;
00012    void *nini ;
00013    char *ccc ;
00014 
00015    if( argc < 2 ){
00016       printf("Usage: nimltest [-bB fname] [-w[r]] [-#] streamspec\n");exit(0);
00017    }
00018 
00019 #if 0
00020    for( nn=0 ; nn < 5 ; nn++ ){
00021      ccc = UNIQ_idcode() ;
00022      fprintf(stderr,"%d: %s\n",nn,ccc) ; free(ccc) ;
00023    }
00024    ccc = UNIQ_hashcode("Elvis") ;
00025    fprintf(stderr,"   %s\n",ccc) ; free(ccc) ;
00026 #endif
00027 
00028    /* writing to a stream? */
00029 
00030    if( strncmp(argv[1],"-w",2) == 0 ){
00031       char lbuf[1024] , *bbb ;
00032       int raw=(argv[1][2]=='r') ;
00033       if( argc < 3 ) exit(1) ;
00034       nopt = 2 ;
00035       ns = NI_stream_open( argv[nopt] , "w" ) ;
00036       if( ns == NULL ){
00037          fprintf(stderr,"NI_stream_open fails\n") ; exit(1) ;
00038       }
00039       while(1){
00040         nn = NI_stream_writecheck( ns , 400 ) ;
00041         if( nn == 1 ){ fprintf(stderr,"\n") ; break ; }
00042         if( nn <  0 ){ fprintf(stderr,"BAD writecheck\n"); exit(1) ; }
00043         fprintf(stderr,".") ;
00044       }
00045       if( !raw ){
00046         while(1){
00047           fprintf(stderr,"READY> ") ;
00048           bbb = fgets( lbuf , 1024 , stdin ) ; if( bbb == NULL ) exit(0) ;
00049           nn = NI_stream_write( ns , lbuf , strlen(lbuf) ) ;
00050           if( nn < 0 ){
00051              fprintf(stderr,"NI_stream_write fails\n"); exit(1);
00052           }
00053         }
00054       } else {
00055         int nbyt ;
00056         while(1){
00057           nbyt = fread( lbuf , 1,1024 , stdin ) ;
00058           if( nbyt <= 0 ){ NI_sleep(10) ; NI_stream_close(ns) ; exit(0) ; }
00059           nn = NI_stream_write( ns , lbuf , nbyt ) ;
00060           if( nn < 0 ){
00061              fprintf(stderr,"NI_stream_write fails\n"); exit(1);
00062           }
00063         }
00064       }
00065    }
00066 
00067    if( strcmp(argv[1],"-b") == 0 || strcmp(argv[1],"-B") == 0 ){
00068       char fname[256] ;
00069       nopt = 3 ;
00070       if( argc < 4 ){ fprintf(stderr,"Too few args\n"); exit(1); }
00071 
00072       sprintf(fname,"file:%s",argv[2]) ;
00073       nsf = NI_stream_open( fname, "w" ) ;
00074       if( nsf == NULL ) fprintf(stderr,"Can't open %s\n",fname) ;
00075 
00076       bmode = (strcmp(argv[1],"-b") == 0) ? NI_BINARY_MODE
00077                                           : NI_BASE64_MODE ;
00078    }
00079 
00080    if( strcmp(argv[nopt],"-#") == 0 ){
00081      tflag = NI_HEADERSHARP_FLAG ; nopt++ ;
00082    }
00083 
00084    /* reading! */
00085 
00086    NI_add_trusted_host(NULL) ;
00087 
00088    ns = NI_stream_open( argv[nopt] , "r" ) ;
00089    if( ns == NULL ){
00090       fprintf(stderr,"NI_stream_open fails\n") ; exit(1) ;
00091    }
00092    while(1){
00093       nn = NI_stream_goodcheck( ns , 400 ) ;
00094       if( nn == 1 ){ fprintf(stderr,"\n") ; break ; }
00095       if( nn <  0 ){ fprintf(stderr,"BAD goodcheck\n"); exit(1) ; }
00096       fprintf(stderr,".") ;
00097    }
00098 
00099 GetElement:
00100    nini = NI_read_element( ns , -1 ) ;  /* wait forever */
00101    if( nini == NULL ){
00102       if( NI_stream_goodcheck(ns,0) < 0 ){
00103          fprintf(stderr,"NI_read_element fails\n") ; exit(1) ;
00104       }
00105       NI_sleep(999) ; goto GetElement ;
00106    }
00107 
00108    tt = NI_element_type( nini ) ;
00109 
00110    if( tt == NI_ELEMENT_TYPE ){
00111       NI_element *nel = (NI_element *) nini ;
00112       fprintf(stderr,"Data element:\n"
00113                      "  name       = %s\n"
00114                      "  vec_num    = %d\n"
00115                      "  vec_len    = %d\n"
00116                      "  vec_filled = %d\n"
00117                      "  vec_rank   = %d\n"
00118                      "  attr_num   = %d\n" ,
00119           nel->name,nel->vec_num,nel->vec_len,nel->vec_filled,
00120           nel->vec_rank,nel->attr_num );
00121        for( nn=0 ; nn < nel->attr_num ; nn++ )
00122           fprintf(stderr,"  %2d: lhs=%s  rhs=%s\n",
00123                   nn , nel->attr_lhs[nn] , nel->attr_rhs[nn] ) ;
00124 
00125 #if 0
00126        for( nn=0 ; nn < nel->vec_rank ; nn++ ){
00127           fprintf(stderr,"  axis[%d]: len=%d delta=%f origin=%f unit=%s label=%s\n",
00128                   nn , nel->vec_axis_len[nn] ,
00129                   (nel->vec_axis_delta)  ? nel->vec_axis_delta[nn]  : -666.0 ,
00130                   (nel->vec_axis_origin) ? nel->vec_axis_origin[nn] : -666.0 ,
00131                   (nel->vec_axis_unit)   ? nel->vec_axis_unit[nn]   : "NULL" ,
00132                   (nel->vec_axis_label)  ? nel->vec_axis_label[nn]  : "NULL"  ) ;
00133        }
00134 #endif
00135    } else if( tt == NI_GROUP_TYPE ){
00136       NI_group *ngr = (NI_group *) nini ;
00137       fprintf(stderr,"Group element:\n"
00138                      "  part_num = %d\n"
00139                      "  attr_num = %d\n" ,
00140               ngr->part_num , ngr->attr_num ) ;
00141        for( nn=0 ; nn < ngr->attr_num ; nn++ )
00142           fprintf(stderr,"  %2d: lhs=%s  rhs=%s\n",
00143                   nn , ngr->attr_lhs[nn] , ngr->attr_rhs[nn] ) ;
00144 
00145    } else if( tt == NI_PROCINS_TYPE ){
00146       NI_procins *npi = (NI_procins *)nini ;
00147       fprintf(stderr,"Processing instruction:\n"
00148                      "  target = %s\n" , npi->name ) ;
00149       for( nn=0 ; nn < npi->attr_num ; nn++ )
00150          fprintf(stderr,"  %2d: lhs=%s  rhs=%s\n",
00151                  nn , npi->attr_lhs[nn] , npi->attr_rhs[nn] ) ;
00152    }
00153 
00154 #if 1
00155    nsout = NI_stream_open( "str:" , "w" ) ;
00156    if( nsout == NULL ){
00157       fprintf(stderr,"NI_stream_open fails for output\n"); exit(1);
00158    }
00159 
00160    nn = NI_write_element( nsout , nini , NI_TEXT_MODE | tflag ) ;
00161 
00162    fprintf(stderr,"\n------ NI_write_element = %d ------\n%s\n==========================\n" ,
00163            nn, NI_stream_getbuf(nsout) ) ;
00164    NI_stream_close(nsout) ;
00165 #endif
00166 
00167    if( nsf != NULL ){
00168       nn = NI_write_element( nsf , nini , bmode ) ;
00169       fprintf(stderr,"NI_write_element to file = %d\n",nn) ;
00170    }
00171 
00172    goto GetElement ;
00173 }
 

Powered by Plone

This site conforms to the following standards: