Doxygen Source Code Documentation
niml_element.c File Reference
#include "niml_private.h"
Go to the source code of this file.
Functions | |
NI_element * | make_empty_data_element (header_stuff *hs) |
NI_group * | make_empty_group_element (header_stuff *hs) |
int | NI_type_size (int tval) |
int | NI_element_type (void *nini) |
char * | NI_element_name (void *nini) |
void | NI_free_element (void *nini) |
NI_element * | NI_new_data_element (char *name, int veclen) |
void | NI_add_column (NI_element *nel, int typ, void *arr) |
void | NI_alter_veclen (NI_element *nel, int newlen) |
void | NI_add_column_stride (NI_element *nel, int typ, void *arr, int stride) |
void | NI_fill_column_stride (NI_element *nel, int typ, void *arr, int nn, int stride) |
void | NI_insert_value (NI_element *nel, int row, int col, void *dat) |
void | NI_insert_string (NI_element *nel, int row, int col, char *str) |
void | NI_set_attribute (void *nini, char *attname, char *attvalue) |
char * | NI_get_attribute (void *nini, char *attname) |
void | NI_set_dimen (NI_element *nel, int rank, int *nd) |
void | NI_set_delta (NI_element *nel, float *del) |
void | NI_set_origin (NI_element *nel, float *org) |
void | NI_set_units (NI_element *nel, char **units) |
void | NI_set_axes (NI_element *nel, char **ax) |
NI_procins * | NI_new_processing_instruction (char *name) |
NI_group * | NI_new_group_element (void) |
void | NI_add_to_group (NI_group *ngr, void *nini) |
void | NI_remove_from_group (NI_group *ngr, void *nini) |
void | NI_rename_group (NI_group *ngr, char *nam) |
int | NI_search_group_shallow (NI_group *ngr, char *enam, void ***nipt) |
int | NI_search_group_deep (NI_group *ngr, char *enam, void ***nipt) |
Function Documentation
|
Construct an empty data element from a header.
Definition at line 15 of file niml_element.c. References int_array::ar, NI_element::attr_lhs, NI_element::attr_num, NI_element::attr_rhs, decode_dimen_string(), decode_type_string(), header_stuff::empty, header_stuff::lhs, header_stuff::name, NI_element::name, header_stuff::nattr, NI_BYTE, NI_decode_string_list(), NI_delete_str_array, NI_dpr(), NI_ELEMENT_TYPE, NI_free, NI_malloc, NI_strdup(), NI_type_size(), int_array::num, NI_str_array::num, NI_element::outmode, header_stuff::rhs, NI_str_array::str, string_index(), NI_element::type, NI_element::vec, 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, NI_element::vec_rank, and NI_element::vec_typ. Referenced by NI_read_element().
00016 { 00017 NI_element *nel ; 00018 int ii , qq ; 00019 00020 if( hs == NULL || hs->name == NULL ) return NULL ; 00021 00022 #ifdef NIML_DEBUG 00023 NI_dpr("ENTER make_empty_data_element\n") ; 00024 #endif 00025 00026 nel = NI_malloc(NI_element, sizeof(NI_element) ) ; 00027 00028 nel->type = NI_ELEMENT_TYPE ; 00029 00030 nel->outmode = -1 ; /* 29 Mar 2005 */ 00031 00032 /* move name and attributes from hs to new element */ 00033 00034 nel->name = hs->name ; hs->name = NULL ; 00035 00036 nel->attr_num = hs->nattr ; 00037 00038 if( nel->attr_num > 0 ){ 00039 nel->attr_lhs = hs->lhs ; hs->lhs = NULL ; 00040 nel->attr_rhs = hs->rhs ; hs->rhs = NULL ; 00041 } else { 00042 nel->attr_lhs = nel->attr_rhs = NULL ; 00043 } 00044 00045 /* set default vector parameters [indicating no data] */ 00046 00047 nel->vec_num = 0 ; 00048 nel->vec_len = 0 ; 00049 nel->vec_typ = NULL ; 00050 nel->vec = NULL ; 00051 00052 nel->vec_filled = 0 ; /* no data has been filled into vectors */ 00053 00054 nel->vec_rank = 0 ; 00055 nel->vec_axis_len = NULL ; 00056 nel->vec_axis_delta = NULL ; 00057 nel->vec_axis_origin = NULL ; 00058 nel->vec_axis_unit = NULL ; 00059 nel->vec_axis_label = NULL ; 00060 00061 if( !hs->empty ){ /* find and process ni_* attributes about vectors */ 00062 00063 /* ni_type attribute: set types of vectors */ 00064 00065 ii = string_index( "ni_type" , nel->attr_num , nel->attr_lhs ) ; 00066 00067 if( ii >= 0 && nel->attr_rhs[ii] != NULL ){ 00068 int_array *iar = decode_type_string( nel->attr_rhs[ii] ) ; 00069 if( iar != NULL ){ 00070 nel->vec_num = iar->num ; /* number of vectors */ 00071 nel->vec_typ = iar->ar ; /* vector types */ 00072 NI_free(iar) ; /* just the shell of the struct */ 00073 } 00074 } 00075 00076 /* ni_dimen attribute: set vector length and rank */ 00077 00078 ii = string_index( "ni_dimen" , nel->attr_num , nel->attr_lhs ) ; 00079 00080 if( ii >= 0 && nel->attr_rhs[ii] != NULL ){ 00081 int_array *dar = decode_dimen_string( nel->attr_rhs[ii] ) ; 00082 if( dar != NULL && dar->num > 0 ){ 00083 int nd=dar->num , qq,pp ; 00084 /* compute product of all dimensions */ 00085 for( qq=1,pp=0 ; pp < nd ; pp++ ) qq *= dar->ar[pp] ; 00086 nel->vec_len = qq ; /* length of vectors */ 00087 nel->vec_rank = nd ; /* number of dimensions */ 00088 nel->vec_axis_len = dar->ar ; /* array of dimension lengths */ 00089 NI_free(dar) ; /* just the struct shell */ 00090 if( nel->vec_len == 0 ) /* 27 Mar 2003 */ 00091 nel->vec_rank = 1 ; 00092 } 00093 } 00094 00095 /* if we had ni_dimen, also try ni_delta */ 00096 00097 ii = string_index( "ni_delta" , nel->attr_num , nel->attr_lhs ) ; 00098 if( ii >= 0 && nel->vec_rank > 0 ){ 00099 NI_str_array *sar = NI_decode_string_list( nel->attr_rhs[ii] , NULL ) ; 00100 if( sar != NULL && sar->num > 0 ){ 00101 int ns=sar->num , nd=nel->vec_rank , pp ; 00102 nel->vec_axis_delta = NI_malloc(float,sizeof(float)*nd) ; 00103 if( nd > ns ) nd = ns ; 00104 for( pp=0 ; pp < nd ; pp++ ) 00105 sscanf( sar->str[pp] , "%f" , nel->vec_axis_delta+pp ) ; 00106 NI_delete_str_array(sar) ; 00107 } 00108 } 00109 00110 /* if we had ni_dimen, also try ni_origin */ 00111 00112 ii = string_index( "ni_origin" , nel->attr_num , nel->attr_lhs ) ; 00113 if( ii >= 0 && nel->vec_rank > 0 ){ 00114 NI_str_array *sar = NI_decode_string_list( nel->attr_rhs[ii] , NULL ) ; 00115 if( sar != NULL && sar->num > 0 ){ 00116 int ns=sar->num , nd=nel->vec_rank , pp ; 00117 nel->vec_axis_origin = NI_malloc(float,sizeof(float)*nd) ; 00118 if( nd > ns ) nd = ns ; 00119 for( pp=0 ; pp < nd ; pp++ ) 00120 sscanf( sar->str[pp] , "%f" , nel->vec_axis_origin+pp ) ; 00121 NI_delete_str_array(sar) ; 00122 } 00123 } 00124 00125 /* if we had ni_dimen, also try ni_units */ 00126 00127 ii = string_index( "ni_units" , nel->attr_num , nel->attr_lhs ) ; 00128 if( ii >= 0 && nel->vec_rank > 0 ){ 00129 NI_str_array *sar = NI_decode_string_list( nel->attr_rhs[ii] , NULL ) ; 00130 if( sar != NULL && sar->num > 0 ){ 00131 int ns=sar->num , nd=nel->vec_rank , pp ; 00132 nel->vec_axis_unit = NI_malloc(char*,sizeof(char *)*nd) ; 00133 if( nd > ns ) nd = ns ; 00134 for( pp=0 ; pp < nd ; pp++ ) 00135 nel->vec_axis_unit[pp] = NI_strdup(sar->str[pp]) ; 00136 NI_delete_str_array(sar) ; 00137 } 00138 } 00139 00140 /* if we had ni_dimen, also try ni_axes */ 00141 00142 ii = string_index( "ni_axes" , nel->attr_num , nel->attr_lhs ) ; 00143 if( ii >= 0 && nel->vec_rank > 0 ){ 00144 NI_str_array *sar = NI_decode_string_list( nel->attr_rhs[ii] , NULL ) ; 00145 if( sar != NULL && sar->num > 0 ){ 00146 int ns=sar->num , nd=nel->vec_rank , pp ; 00147 nel->vec_axis_label = NI_malloc(char*,sizeof(char *)*nd) ; 00148 if( nd > ns ) nd = ns ; 00149 for( pp=0 ; pp < nd ; pp++ ) 00150 nel->vec_axis_label[pp] = NI_strdup(sar->str[pp]) ; 00151 NI_delete_str_array(sar) ; 00152 } 00153 } 00154 00155 /* supply vector parameters if none was given */ 00156 /* (remember, we DON'T have an empty element) */ 00157 00158 if( nel->vec_num == 0 ){ /* default type */ 00159 nel->vec_num = 1 ; 00160 nel->vec_typ = NI_malloc(int,sizeof(int)) ; 00161 nel->vec_typ[0] = NI_BYTE ; 00162 } 00163 00164 if( nel->vec_rank == 0 ){ /* default dimensions */ 00165 nel->vec_len = 0 ; 00166 nel->vec_rank = 1 ; 00167 nel->vec_axis_len = NI_malloc(int, sizeof(int)) ; 00168 nel->vec_axis_len[0] = 1 ; 00169 } 00170 00171 /* now allocate space for vectors defined above */ 00172 00173 nel->vec = NI_malloc(void*, sizeof(void *)*nel->vec_num ) ; 00174 00175 /* 27 Mar 2003: only allocate space if we know how long they are */ 00176 00177 if( nel->vec_len > 0 ){ 00178 for( ii=0 ; ii < nel->vec_num ; ii++ ) 00179 nel->vec[ii] = NI_malloc(void, 00180 NI_type_size(nel->vec_typ[ii])*nel->vec_len) ; 00181 } else { 00182 for( ii=0 ; ii < nel->vec_num ; ii++ ) 00183 nel->vec[ii] = NULL ; 00184 } 00185 00186 } /* end of processing non-empty header stuff */ 00187 00188 return nel ; 00189 } |
|
Make an empty group element from parsed header info. The attributes in the header are assigned to the group, and the group parts are initialized to nothing. --------------------------------------------------------------------------- Definition at line 197 of file niml_element.c. References NI_group::attr_lhs, NI_group::attr_num, NI_group::attr_rhs, header_stuff::lhs, header_stuff::name, NI_group::name, header_stuff::nattr, NI_GROUP_TYPE, NI_malloc, NI_group::outmode, NI_group::part, NI_group::part_num, NI_group::part_typ, header_stuff::rhs, and NI_group::type. Referenced by NI_read_element().
00198 { 00199 NI_group *ngr ; 00200 int ii , qq ; 00201 00202 if( hs == NULL || hs->name == NULL ) return NULL ; 00203 00204 ngr = NI_malloc(NI_group, sizeof(NI_group) ) ; 00205 00206 ngr->type = NI_GROUP_TYPE ; 00207 00208 ngr->name = hs->name ; hs->name = NULL ; /* 24 Feb 2005 */ 00209 00210 ngr->outmode = -1 ; /* 29 Mar 2005 */ 00211 00212 /* move attributes from hs to new element */ 00213 00214 ngr->attr_num = hs->nattr ; 00215 00216 if( ngr->attr_num > 0 ){ 00217 ngr->attr_lhs = hs->lhs ; hs->lhs = NULL ; 00218 ngr->attr_rhs = hs->rhs ; hs->rhs = NULL ; 00219 } else { 00220 ngr->attr_lhs = ngr->attr_rhs = NULL ; 00221 } 00222 00223 /* have no pieces-parts yet */ 00224 00225 ngr->part_num = 0 ; 00226 ngr->part_typ = NULL ; 00227 ngr->part = NULL ; 00228 00229 return ngr ; 00230 } |
|
Add a vector (column) of data to a data element.
Definition at line 442 of file niml_element.c. References NI_copy_column(), NI_ELEMENT_TYPE, NI_malloc, NI_realloc, NI_rowtype_find_code(), NI_rowtype::size, typ, NI_element::type, NI_element::vec, NI_element::vec_len, NI_element::vec_num, and NI_element::vec_typ. Referenced by AFNI_niml_redisplay_CB(), AFNI_niml_viewpoint_CB(), AGNI_nod_to_NIML_col(), Dtable_to_nimlstring(), intvec_to_niml(), main(), matrix_to_niml(), mri_to_niml(), NI_add_column_stride(), stringvec_to_niml(), SUMA_FakeIt(), SUMA_ixyz_to_NIML(), SUMA_makeNI_CrossHair(), SUMA_makeNI_SurfIJK(), SUMA_makeNI_SurfINORM(), SUMA_makeNI_SurfIXYZ(), SUMA_Write_DrawnROI_NIML(), symvec_to_niml(), THD_nimlize_dsetatr(), THD_subbrick_to_niml(), and v2s_write_outfile_niml().
00443 { 00444 int nn ; 00445 NI_rowtype *rt ; 00446 00447 /* check for reasonable inputs */ 00448 00449 if( nel == NULL || nel->vec_len <= 0 ) return ; 00450 if( nel->type != NI_ELEMENT_TYPE ) return ; 00451 rt = NI_rowtype_find_code(typ) ; if( rt == NULL ) return ; 00452 00453 /* get number of vectors currently in element */ 00454 00455 nn = nel->vec_num ; 00456 00457 /* add 1 to the vec_typ array */ 00458 00459 nel->vec_typ = NI_realloc( nel->vec_typ, int, sizeof(int)*(nn+1) ) ; 00460 nel->vec_typ[nn] = typ ; 00461 00462 /* add 1 element to the vec array, and copy data into it */ 00463 00464 nel->vec = NI_realloc( nel->vec , void*, sizeof(void *)*(nn+1) ) ; 00465 if( arr != NULL ) 00466 nel->vec[nn] = NI_copy_column( rt , nel->vec_len , arr ) ; 00467 else 00468 nel->vec[nn] = NI_malloc(void, rt->size * nel->vec_len ) ; 00469 00470 /* add 1 to the count of vectors */ 00471 00472 nel->vec_num = nn+1 ; 00473 return ; 00474 } |
|
As in NI_add_column(), but adding every stride-th element from arr. Thus, arr should be at least nel->vec_len * stride elements long. -------------------------------------------------------------------------- Definition at line 517 of file niml_element.c. References NI_add_column(), NI_ELEMENT_TYPE, NI_insert_value(), NI_rowtype_find_code(), NI_rowtype::size, stride, typ, NI_element::type, NI_element::vec_len, and NI_element::vec_num. Referenced by SUMA_AddDsetColAttr(), SUMA_AddDsetNelCol(), SUMA_AddGenDsetColAttr(), SUMA_AddNelCol(), SUMA_AddNgrHist(), SUMA_Mesh_IJK2Mesh_IJK_nel(), SUMA_NodeXYZ2NodeXYZ_nel(), and SUMA_oDsetNel2nDsetNgr().
00518 { 00519 int nn , ii ; 00520 NI_rowtype *rt ; 00521 char *idat ; 00522 00523 /* check for reasonable inputs */ 00524 00525 if( nel == NULL || nel->vec_len <= 0 ) return ; 00526 if( nel->type != NI_ELEMENT_TYPE ) return ; 00527 rt = NI_rowtype_find_code(typ) ; if( rt == NULL ) return ; 00528 00529 /* add an empty column */ 00530 00531 NI_add_column( nel , typ , NULL ) ; 00532 if( arr == NULL ) return ; /* no input data ==> we're done */ 00533 00534 /* loop over inputs and put them in one at a time */ 00535 00536 nn = nel->vec_num-1 ; 00537 idat = (char *) arr ; 00538 00539 for( ii=0 ; ii < nel->vec_len ; ii++ ) 00540 NI_insert_value( nel , ii , nn , idat + (ii*stride*rt->size) ) ; 00541 00542 return ; 00543 } |
|
Add an element to a group element. ------------------------------------------------------------------------- Definition at line 955 of file niml_element.c. References NI_element_type(), NI_GROUP_TYPE, NI_realloc, NI_group::part, NI_group::part_num, NI_group::part_typ, tt, and NI_group::type. Referenced by main(), NI_read_element(), SUMA_AddDsetColAttr(), SUMA_AddGenDsetColAttr(), SUMA_AddNgrHist(), SUMA_NewDsetGrp(), SUMA_oDsetNel2nDsetNgr(), SUMA_SO2nimlSO(), THD_dataset_to_niml(), and THD_nimlize_dsetatr().
00956 { 00957 int nn , tt=NI_element_type(nini) ; 00958 00959 if( ngr == NULL || ngr->type != NI_GROUP_TYPE || tt < 0 ) return ; 00960 00961 nn = ngr->part_num ; 00962 00963 ngr->part_typ = NI_realloc( ngr->part_typ , int, sizeof(int)*(nn+1) ) ; 00964 ngr->part_typ[nn] = tt ; 00965 ngr->part = NI_realloc( ngr->part , void*, sizeof(void *)*(nn+1) ); 00966 ngr->part[nn] = nini ; 00967 ngr->part_num = nn+1 ; 00968 return ; 00969 } |
|
Change the length of all the columns in a data element.
Definition at line 485 of file niml_element.c. References NI_ELEMENT_TYPE, NI_realloc, NI_rowtype_find_code(), NI_rowtype::size, NI_element::type, NI_element::vec, NI_element::vec_filled, NI_element::vec_len, NI_element::vec_num, and NI_element::vec_typ.
00486 { 00487 int oldlen , ii ; 00488 NI_rowtype *rt ; 00489 char *pt ; 00490 00491 if( nel == NULL || nel->type != NI_ELEMENT_TYPE ) return ; 00492 if( nel->vec_len <= 0 || newlen <= 0 ) return ; 00493 00494 if( nel->vec_num == 0 ){ /* if have no data yet */ 00495 nel->vec_len = nel->vec_filled = newlen; return; 00496 } 00497 00498 oldlen = nel->vec_len ; if( oldlen == newlen ) return ; 00499 00500 for( ii=0 ; ii < nel->vec_num ; ii++ ){ 00501 rt = NI_rowtype_find_code( nel->vec_typ[ii] ) ; 00502 nel->vec[ii] = NI_realloc( nel->vec[ii] , void , rt->size * newlen ) ; 00503 if( oldlen < newlen ){ 00504 pt = ((char *)nel->vec[ii]) + (rt->size * oldlen) ; /* zero fill */ 00505 memset( pt , 0 , (newlen-oldlen)*rt->size ) ; /* new data! */ 00506 } 00507 } 00508 00509 nel->vec_len = nel->vec_filled = newlen ; return ; 00510 } |
|
Return the name of a NI element. If the input is bad, returns a NULL pointer. Do not free this pointer! It points to the name string inside the element struct. ------------------------------------------------------------------------- Definition at line 275 of file niml_element.c. References NI_procins::name, NI_group::name, NI_element::name, NI_ELEMENT_TYPE, NI_GROUP_TYPE, NI_PROCINS_TYPE, NI_procins::type, NI_group::type, and NI_element::type. Referenced by NI_search_group_deep(), and NI_search_group_shallow().
00276 { 00277 NI_element *nel = (NI_element *) nini ; 00278 NI_group *ngr = (NI_group *) nini ; 00279 NI_procins *npi = (NI_procins *) nini ; 00280 00281 if( nini == NULL ) return NULL ; 00282 00283 if( nel->type == NI_ELEMENT_TYPE ) return nel->name ; 00284 if( ngr->type == NI_GROUP_TYPE ) return ngr->name ; 00285 if( npi->type == NI_PROCINS_TYPE ) return npi->name ; 00286 00287 return NULL ; 00288 } |
|
Return the type of something that points to a NI element.
Definition at line 254 of file niml_element.c. References NI_ELEMENT_TYPE, NI_GROUP_TYPE, NI_PROCINS_TYPE, NI_procins::type, NI_group::type, and NI_element::type. Referenced by AFNI_niml_workproc(), AFNI_process_NIML_data(), AIVVV_workproc(), Dtable_from_nimlstring(), main(), NI_add_to_group(), NI_free_element(), NI_get_attribute(), NI_search_group_deep(), NI_set_attribute(), NI_suck_stream(), NI_write_element(), niml_to_mri(), NIML_to_stderr(), SUMA_LoadNimlDset(), SUMA_process_NIML_data(), THD_add_bricks(), THD_dblkatr_from_niml(), THD_niml_to_dataset(), THD_open_3D(), THD_open_nifti(), and THD_read_niml_atr().
00255 { 00256 NI_element *nel = (NI_element *) nini ; 00257 NI_group *ngr = (NI_group *) nini ; 00258 NI_procins *npi = (NI_procins *) nini ; /* 16 Mar 2005 */ 00259 00260 if( nini == NULL ) return -1 ; 00261 00262 if( nel->type == NI_ELEMENT_TYPE ) return NI_ELEMENT_TYPE ; 00263 if( ngr->type == NI_GROUP_TYPE ) return NI_GROUP_TYPE ; 00264 if( npi->type == NI_PROCINS_TYPE ) return NI_PROCINS_TYPE ; 00265 00266 return -1 ; 00267 } |
|
ZSS; Fills an already created column with values up to vec_filled the values in arr are inserted into nel->vec[nn] -------------------------------------------------------------------------- Definition at line 550 of file niml_element.c. References NI_ELEMENT_TYPE, NI_insert_value(), NI_rowtype_find_code(), NI_rowtype::size, stride, typ, NI_element::type, NI_element::vec, NI_element::vec_filled, NI_element::vec_len, NI_element::vec_num, and NI_element::vec_typ. Referenced by SUMA_FillDsetNelCol(), and SUMA_FillNelCol().
00552 { 00553 int ii , nf; 00554 NI_rowtype *rt ; 00555 char *idat ; 00556 00557 /* check for reasonable inputs */ 00558 00559 if( nel == NULL || nel->vec_len <= 0 ) return ; 00560 if( nel->type != NI_ELEMENT_TYPE ) return ; 00561 rt = NI_rowtype_find_code(typ) ; if( rt == NULL ) return ; 00562 00563 /* check for NULL column or other similar errors*/ 00564 00565 if( arr == NULL ) return ; 00566 if( nel->vec[nn] == NULL ) return ; 00567 if( nn < 0 || nn >= nel->vec_num ) return ; 00568 if( typ != nel->vec_typ[nn] ) return ; 00569 00570 /* loop over inputs and put them in */ 00571 00572 if( nel->vec_filled > 0 && nel->vec_filled <= nel->vec_len ) 00573 nf = nel->vec_filled ; 00574 else 00575 nf = nel->vec_len ; 00576 00577 idat = (char *) arr ; 00578 00579 for( ii=0 ; ii < nf ; ii++ ) 00580 NI_insert_value( nel , ii , nn , idat + (ii*stride*rt->size) ) ; 00581 00582 return ; 00583 } |
|
|
Get an attribute with the given LHS name. Returns a pointer to the RHS field in the element if the attribute name is found; otherwise returns NULL. If the LHS is found, but the RHS is NULL, returns a pointer to an empty C string ("\0"). Do not free() the result from this function, since it points to the internal field of the element! ------------------------------------------------------------------------- Definition at line 755 of file niml_element.c. References 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, NI_ELEMENT_TYPE, NI_element_type(), NI_GROUP_TYPE, NI_PROCINS_TYPE, and tt. Referenced by AFNI_niml_workproc(), AFNI_start_version_check(), NI_do(), NI_self_idcode(), nifti_set_afni_extension(), niml_to_mri(), process_NIML_AFNI_volumedata(), process_NIML_Node_ROI(), process_NIML_SUMA_ijk(), process_NIML_SUMA_ixyz(), process_NIML_SUMA_node_normals(), SUMA_AddNelHist(), SUMA_ColLabelCopy(), SUMA_DsetColLabelCopy(), SUMA_FakeIt(), SUMA_FindDset(), SUMA_GetColRange(), SUMA_MaskedCopyofDset(), SUMA_Mesh_IJK_nel2Mesh_IJK(), SUMA_niml_workproc(), SUMA_nimlSO2SO(), SUMA_NodeXYZ_nel2NodeXYZ(), SUMA_oDsetNel2nDsetNgr(), SUMA_OpenDrawnROI_NIML(), SUMA_process_NIML_data(), SUMA_sdset_id(), SUMA_sdset_idmdom(), SUMA_TypeOfColNumb(), SUMA_TypeOfDsetColNumb(), SUMA_VolPar_nel2SOVolPar(), THD_add_bricks(), THD_dblkatr_from_niml(), THD_niml_to_dataset(), THD_open_3D(), THD_open_nifti(), and XSAVE_input().
00756 { 00757 int nn , tt=NI_element_type(nini) ; 00758 static char *zorkon = "\0" ; 00759 00760 if( tt < 0 || attname == NULL || attname[0] == '\0' ) return NULL ; 00761 00762 /* input is a data element */ 00763 00764 if( tt == NI_ELEMENT_TYPE ){ 00765 NI_element *nel = (NI_element *) nini ; 00766 00767 for( nn=0 ; nn < nel->attr_num ; nn++ ) 00768 if( strcmp(nel->attr_lhs[nn],attname) == 0 ) break ; 00769 00770 if( nn == nel->attr_num ) return NULL ; 00771 00772 if( nel->attr_rhs[nn] == NULL ) return zorkon ; 00773 00774 return nel->attr_rhs[nn] ; 00775 00776 /* input is a group element */ 00777 00778 } else if( tt == NI_GROUP_TYPE ){ 00779 NI_group *ngr = (NI_group *) nini ; 00780 00781 for( nn=0 ; nn < ngr->attr_num ; nn++ ) 00782 if( strcmp(ngr->attr_lhs[nn],attname) == 0 ) break ; 00783 00784 if( nn == ngr->attr_num ) return NULL ; 00785 00786 if( ngr->attr_rhs[nn] == NULL ) return zorkon ; 00787 00788 return ngr->attr_rhs[nn] ; 00789 00790 /* input is a processing instruction */ 00791 00792 } else if( tt == NI_PROCINS_TYPE ){ 00793 NI_procins *npi = (NI_procins *) nini ; 00794 00795 for( nn=0 ; nn < npi->attr_num ; nn++ ) 00796 if( strcmp(npi->attr_lhs[nn],attname) == 0 ) break ; 00797 00798 if( nn == npi->attr_num ) return NULL ; 00799 00800 if( npi->attr_rhs[nn] == NULL ) return zorkon ; 00801 00802 return npi->attr_rhs[nn] ; 00803 } 00804 00805 return NULL ; /* should never be reached */ 00806 } |
|
Definition at line 655 of file niml_element.c. References NI_ELEMENT_TYPE, NI_insert_value(), NI_STRING, NI_element::type, NI_element::vec_len, NI_element::vec_num, and NI_element::vec_typ.
00656 { 00657 if( nel == NULL || str == NULL ) return ; 00658 if( nel->type != NI_ELEMENT_TYPE ) return ; 00659 if( row < 0 || row >= nel->vec_len ) return ; 00660 if( col < 0 || col >= nel->vec_num ) return ; 00661 if( nel->vec_typ[col] != NI_STRING ) return ; 00662 00663 NI_insert_value( nel , row,col , &str ); return ; 00664 } |
|
Replace the row-th value in the col-th column of the data element.
Definition at line 607 of file niml_element.c. References NI_ELEMENT_TYPE, NI_malloc, NI_rowtype_find_code(), NI_strdup(), NI_STRING, NI_rowtype::part_dim, NI_rowtype::part_num, NI_rowtype::part_off, NI_rowtype::part_rtp, NI_rowtype::part_typ, ROWTYPE_is_varsize, ROWTYPE_part_dimen, NI_rowtype::size, NI_element::type, NI_element::vec, NI_element::vec_len, NI_element::vec_num, and NI_element::vec_typ. Referenced by NI_add_column_stride(), NI_fill_column_stride(), and NI_insert_string().
00608 { 00609 NI_rowtype *rt ; 00610 char *cdat , *idat=(char *)dat , *qpt ; 00611 int jj , kk ; 00612 00613 /* check for reasonable inputs */ 00614 00615 if( nel == NULL || idat == NULL ) return ; 00616 if( nel->type != NI_ELEMENT_TYPE ) return ; 00617 if( nel->vec_len <= 0 ) return ; 00618 if( row < 0 || row >= nel->vec_len ) return ; 00619 if( col < 0 || col >= nel->vec_num ) return ; 00620 00621 rt = NI_rowtype_find_code( nel->vec_typ[col] ) ; 00622 if( rt == NULL ) return ; 00623 00624 cdat = (char *) nel->vec[col] ; /* points to column data */ 00625 cdat = cdat + rt->size * row ; /* points to data to alter */ 00626 00627 /* shallow copy of input data over data now present */ 00628 00629 memcpy( cdat , idat , rt->size ) ; 00630 00631 /* copy any var dim arrays inside */ 00632 00633 if( ROWTYPE_is_varsize(rt) ){ 00634 for( jj=0 ; jj < rt->part_num ; jj++ ){ /* loop over parts */ 00635 00636 if( rt->part_typ[jj] == NI_STRING ){ /* a string part */ 00637 char **apt = (char **)(cdat+rt->part_off[jj]) ; /* *apt => data */ 00638 qpt = NI_strdup(*apt) ; *apt = qpt ; 00639 00640 } else if( rt->part_dim[jj] >= 0 ){ /* var dim array */ 00641 char **apt = (char **)(cdat+rt->part_off[jj]) ; /* *apt => data */ 00642 if( *apt != NULL ){ 00643 kk = ROWTYPE_part_dimen(rt,cdat,jj) * rt->part_rtp[jj]->size ; 00644 qpt = NI_malloc(char, kk) ; memcpy(qpt,*apt,kk) ; *apt = qpt ; 00645 } 00646 } 00647 } 00648 } 00649 00650 return ; 00651 } |
|
Create a new data element.
Definition at line 384 of file niml_element.c. References NI_element::attr_lhs, NI_element::attr_num, NI_element::attr_rhs, NI_element::name, name, NI_ELEMENT_TYPE, NI_malloc, NI_strdup(), NI_element::outmode, NI_element::type, NI_element::vec, 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, NI_element::vec_rank, and NI_element::vec_typ. Referenced by AFNI_niml_redisplay_CB(), AFNI_niml_viewpoint_CB(), AFNI_version_check(), AGNI_nod_to_NIML_col(), AGNI_nod_to_NIML_row(), AGNI_nod_to_NIML_rows(), Dtable_to_nimlstring(), DWI_NIML_create_graph(), intvec_to_niml(), main(), matrix_to_niml(), mri_to_niml(), stringvec_to_niml(), SUMA_AddDsetColAttr(), SUMA_AddGenDsetColAttr(), SUMA_AddNgrHist(), SUMA_Engine(), SUMA_FakeIt(), SUMA_ixyz_to_NIML(), SUMA_makeNI_CrossHair(), SUMA_makeNI_SurfIJK(), SUMA_makeNI_SurfINORM(), SUMA_makeNI_SurfIXYZ(), SUMA_NewDsetGrp(), SUMA_NewNel(), SUMA_oDsetNel2nDsetNgr(), SUMA_SendToSuma(), SUMA_Write_DrawnROI_NIML(), symvec_to_niml(), THD_nimlize_dsetatr(), THD_subbrick_to_niml(), v2s_write_outfile_niml(), and XSAVE_output().
00385 { 00386 NI_element *nel ; 00387 00388 if( name == NULL || name[0] == '\0' || veclen < 0 ) return NULL ; 00389 00390 nel = NI_malloc(NI_element, sizeof(NI_element) ) ; 00391 00392 nel->type = NI_ELEMENT_TYPE ; /* mark as being a data element */ 00393 00394 nel->outmode = -1 ; /* 29 Mar 2005 */ 00395 00396 nel->name = NI_strdup(name) ; 00397 nel->attr_num = 0 ; 00398 nel->attr_lhs = nel->attr_rhs = NULL ; /* no attributes yes */ 00399 00400 nel->vec_num = 0 ; /* no vectors yet */ 00401 nel->vec_typ = NULL ; 00402 nel->vec = NULL ; 00403 00404 if( veclen == 0 ){ /* empty element */ 00405 nel->vec_len = 0 ; 00406 nel->vec_filled = 0 ; 00407 nel->vec_rank = 0 ; 00408 nel->vec_axis_len = NULL ; 00409 } else { /* element with data to */ 00410 nel->vec_len = veclen ; /* come via NI_add_column */ 00411 nel->vec_filled = veclen ; 00412 nel->vec_rank = 1 ; 00413 nel->vec_axis_len = NI_malloc(int, sizeof(int)) ; 00414 nel->vec_axis_len[0] = veclen ; 00415 } 00416 00417 nel->vec_axis_delta = NULL ; 00418 nel->vec_axis_origin = NULL ; 00419 nel->vec_axis_unit = NULL ; 00420 nel->vec_axis_label = NULL ; 00421 00422 return nel ; 00423 } |
|
Create a new group element. ------------------------------------------------------------------------- Definition at line 930 of file niml_element.c. References NI_group::attr_lhs, NI_group::attr_num, NI_group::attr_rhs, NI_group::name, NI_GROUP_TYPE, NI_malloc, NI_group::outmode, NI_group::part, NI_group::part_num, NI_group::part_typ, and NI_group::type. Referenced by main(), SUMA_NewDsetGrp(), SUMA_oDsetNel2nDsetNgr(), SUMA_SO2nimlSO(), and THD_nimlize_dsetatr().
00931 { 00932 NI_group *ngr ; 00933 00934 ngr = NI_malloc(NI_group, sizeof(NI_group) ) ; 00935 00936 ngr->type = NI_GROUP_TYPE ; 00937 00938 ngr->outmode = -1 ; /* 29 Mar 2005 */ 00939 00940 ngr->attr_num = 0 ; 00941 ngr->attr_lhs = ngr->attr_rhs = NULL ; 00942 00943 ngr->part_num = 0 ; 00944 ngr->part_typ = NULL ; 00945 ngr->part = NULL ; 00946 ngr->name = NULL ; /* 03 Jun 2002 */ 00947 00948 return ngr ; 00949 } |
|
Create a new processing instruction with a given 'target' name. ------------------------------------------------------------------------- Definition at line 909 of file niml_element.c. References NI_procins::attr_lhs, NI_procins::attr_num, NI_procins::attr_rhs, NI_procins::name, name, NI_malloc, NI_PROCINS_TYPE, NI_strdup(), and NI_procins::type. Referenced by NI_rowtype_procins().
00910 { 00911 NI_procins *npi ; 00912 00913 if( name == NULL || name[0] == '\0' ) return NULL ; 00914 00915 npi = NI_malloc(NI_procins,sizeof(NI_procins)) ; 00916 00917 npi->type = NI_PROCINS_TYPE ; 00918 npi->name = NI_strdup(name) ; 00919 00920 npi->attr_num = 0 ; 00921 npi->attr_lhs = npi->attr_rhs = NULL ; 00922 00923 return npi ; 00924 } |
|
Remove an element from a group. Does NOT delete the element; that is the caller's responsibility, if desired. ------------------------------------------------------------------------- Definition at line 976 of file niml_element.c. References NI_GROUP_TYPE, NI_group::part, NI_group::part_num, NI_group::part_typ, and NI_group::type. Referenced by nifti_set_afni_extension().
00977 { 00978 int ii , nn , jj ; 00979 00980 if( ngr == NULL || ngr->type != NI_GROUP_TYPE || nini == NULL ) return ; 00981 00982 nn = ngr->part_num ; 00983 for( ii=0 ; ii < nn ; ii++ ) /* search for part */ 00984 if( nini == ngr->part[ii] ) break ; 00985 if( ii == nn ) return ; /* not found */ 00986 00987 for( jj=ii+1 ; jj < nn ; jj++ ){ /* move parts above down */ 00988 ngr->part_typ[jj-1] = ngr->part_typ[jj] ; 00989 ngr->part [jj-1] = ngr->part [jj] ; 00990 } 00991 ngr->part[nn-1] = NULL ; /* NULL-ify last part to be safe */ 00992 ngr->part_num -- ; /* reduce part count */ 00993 return ; 00994 } |
|
Rename a group element from the default - 03 Jun 2002. ------------------------------------------------------------------------- Definition at line 1000 of file niml_element.c. References NI_group::name, NI_free, NI_GROUP_TYPE, NI_strdup(), and NI_group::type. Referenced by main(), nifti_set_afni_extension(), SUMA_NewDsetGrp(), SUMA_oDsetNel2nDsetNgr(), SUMA_SO2nimlSO(), THD_dataset_to_niml(), and THD_nimlize_dsetatr().
|
|
Return a list of all elements in a group that have a given name.
Definition at line 1064 of file niml_element.c. References NI_element_name(), NI_element_type(), NI_free, NI_GROUP_TYPE, NI_realloc, NI_group::part, NI_group::part_num, and NI_group::type. Referenced by THD_open_nifti().
01065 { 01066 void **nelar=NULL , *nini ; 01067 int ii , nn=0 ; 01068 char *nm ; 01069 01070 if( ngr == NULL || ngr->type != NI_GROUP_TYPE ) return 0 ; 01071 if( enam == NULL || *enam == '\0' || nipt == NULL ) return 0 ; 01072 if( ngr->part_num == 0 ) return 0 ; 01073 01074 for( ii=0 ; ii < ngr->part_num ; ii++ ){ 01075 nini = ngr->part[ii] ; 01076 nm = NI_element_name( nini ) ; 01077 if( nm != NULL && strcmp(nm,enam) == 0 ){ 01078 nelar = (void **) NI_realloc(nelar,void*,nn+1) ; 01079 nelar[nn++] = nini ; 01080 } 01081 if( NI_element_type(nini) == NI_GROUP_TYPE ){ /* recursion */ 01082 int nsub , jj ; void **esub ; 01083 nsub = NI_search_group_deep( nini , enam , &esub ) ; 01084 if( nsub > 0 ){ 01085 nelar = (void **) NI_realloc(nelar,void*,nn+nsub) ; 01086 for( jj=0 ; jj < nsub ; jj++ ) nelar[nn++] = esub[jj] ; 01087 NI_free(esub) ; 01088 } 01089 } 01090 } 01091 01092 if( nn > 0 ) *nipt = nelar ; 01093 return nn ; 01094 } |
|
Return a list of all elements in a group that have a given name.
Definition at line 1023 of file niml_element.c. References NI_element_name(), NI_GROUP_TYPE, NI_realloc, NI_group::part, NI_group::part_num, and NI_group::type.
01024 { 01025 void **nelar=NULL , *nini ; 01026 int ii , nn=0 ; 01027 char *nm ; 01028 01029 if( ngr == NULL || ngr->type != NI_GROUP_TYPE ) return 0 ; 01030 if( enam == NULL || *enam == '\0' || nipt == NULL ) return 0 ; 01031 if( ngr->part_num == 0 ) return 0 ; 01032 01033 for( ii=0 ; ii < ngr->part_num ; ii++ ){ 01034 nini = ngr->part[ii] ; 01035 nm = NI_element_name( nini ) ; 01036 if( nm != NULL && strcmp(nm,enam) == 0 ){ 01037 nelar = (void **) NI_realloc(nelar,void*,nn+1) ; 01038 nelar[nn++] = nini ; 01039 } 01040 } 01041 01042 if( nn > 0 ) *nipt = nelar ; 01043 return nn ; 01044 } |
|
Add an attribute to a data or group element. If an attribute with the same attname already exists, then it will be replaced with this one. -------------------------------------------------------------------------- Definition at line 672 of file niml_element.c. References 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, NI_ELEMENT_TYPE, NI_element_type(), NI_free, NI_GROUP_TYPE, NI_PROCINS_TYPE, NI_realloc, NI_strdup(), and tt. Referenced by AFNI_niml_redisplay_CB(), AFNI_niml_viewpoint_CB(), AFNI_version_check(), DWI_NIML_create_graph(), main(), mri_to_niml(), NI_rowtype_procins(), NI_write_element(), nifti_set_afni_extension(), SUMA_AddColAttr(), SUMA_AddGenColAttr(), SUMA_AddNelHist(), SUMA_CreateDsetPointer(), SUMA_Engine(), SUMA_FakeIt(), SUMA_LoadDsetFile(), SUMA_makeNI_SurfIJK(), SUMA_makeNI_SurfINORM(), SUMA_makeNI_SurfIXYZ(), SUMA_Mesh_IJK2Mesh_IJK_nel(), SUMA_NewDsetGrp(), SUMA_NewDsetID(), SUMA_NewNel(), SUMA_nimlSO2SO(), SUMA_NodeVal2irgba_nel(), SUMA_NodeXYZ2NodeXYZ_nel(), SUMA_oDsetNel2nDsetNgr(), SUMA_Paint_SO_ROIplanes(), SUMA_SaveVisualState(), SUMA_SendDset_Afni(), SUMA_SendToSuma(), SUMA_SO2nimlSO(), SUMA_SOVolPar2VolPar_nel(), SUMA_Write_DrawnROI_NIML(), SUMA_WriteDset(), THD_nimlize_dsetatr(), THD_subbrick_to_niml(), THD_write_nimlatr(), and XSAVE_output().
00673 { 00674 int nn , tt=NI_element_type(nini) ; 00675 00676 if( tt < 0 || attname == NULL || attname[0] == '\0' ) return ; 00677 00678 /* input is a data element */ 00679 00680 if( tt == NI_ELEMENT_TYPE ){ 00681 NI_element *nel = (NI_element *) nini ; 00682 00683 /* see if name is already in element header */ 00684 00685 for( nn=0 ; nn < nel->attr_num ; nn++ ) 00686 if( strcmp(nel->attr_lhs[nn],attname) == 0 ) break ; 00687 00688 /* if not, then add a header attribute */ 00689 00690 if( nn == nel->attr_num ){ 00691 nel->attr_lhs = NI_realloc( nel->attr_lhs, char*, sizeof(char *)*(nn+1) ); 00692 nel->attr_rhs = NI_realloc( nel->attr_rhs, char*, sizeof(char *)*(nn+1) ); 00693 nel->attr_num = nn+1 ; 00694 } else { 00695 NI_free(nel->attr_lhs[nn]) ; /* free old attribute */ 00696 NI_free(nel->attr_rhs[nn]) ; 00697 } 00698 00699 nel->attr_lhs[nn] = NI_strdup(attname) ; 00700 nel->attr_rhs[nn] = NI_strdup(attvalue); 00701 00702 /* input is a group element */ 00703 00704 } else if( tt == NI_GROUP_TYPE ){ 00705 NI_group *ngr = (NI_group *) nini ; 00706 00707 for( nn=0 ; nn < ngr->attr_num ; nn++ ) 00708 if( strcmp(ngr->attr_lhs[nn],attname) == 0 ) break ; 00709 00710 if( nn == ngr->attr_num ){ 00711 ngr->attr_lhs = NI_realloc( ngr->attr_lhs, char*, sizeof(char *)*(nn+1) ); 00712 ngr->attr_rhs = NI_realloc( ngr->attr_rhs, char*, sizeof(char *)*(nn+1) ); 00713 ngr->attr_num = nn+1 ; 00714 } else { 00715 NI_free(ngr->attr_lhs[nn]) ; 00716 NI_free(ngr->attr_rhs[nn]) ; 00717 } 00718 00719 ngr->attr_lhs[nn] = NI_strdup(attname) ; 00720 ngr->attr_rhs[nn] = NI_strdup(attvalue); 00721 00722 /* input is a processing instruction */ 00723 00724 } else if( tt == NI_PROCINS_TYPE ){ 00725 NI_procins *npi = (NI_procins *) nini ; 00726 00727 for( nn=0 ; nn < npi->attr_num ; nn++ ) 00728 if( strcmp(npi->attr_lhs[nn],attname) == 0 ) break ; 00729 00730 if( nn == npi->attr_num ){ 00731 npi->attr_lhs = NI_realloc( npi->attr_lhs, char*, sizeof(char *)*(nn+1) ); 00732 npi->attr_rhs = NI_realloc( npi->attr_rhs, char*, sizeof(char *)*(nn+1) ); 00733 npi->attr_num = nn+1 ; 00734 } else { 00735 NI_free(npi->attr_lhs[nn]) ; 00736 NI_free(npi->attr_rhs[nn]) ; 00737 } 00738 00739 npi->attr_lhs[nn] = NI_strdup(attname) ; 00740 npi->attr_rhs[nn] = NI_strdup(attvalue); 00741 } 00742 00743 return ; 00744 } |
|
Set the axes attribute for a data element. Do not call this function until NI_set_dimen() has been called, unless there is only 1 dimension (which is the default). ------------------------------------------------------------------------- Definition at line 891 of file niml_element.c. References NI_ELEMENT_TYPE, NI_realloc, NI_strdup(), NI_element::type, NI_element::vec_axis_label, and NI_element::vec_rank.
00892 { 00893 int ii ; 00894 00895 if( nel == NULL || nel->type != NI_ELEMENT_TYPE || 00896 nel->vec_rank < 1 || ax == NULL ) return ; 00897 00898 nel->vec_axis_label = NI_realloc( nel->vec_axis_label , char*, 00899 nel->vec_rank * sizeof(char *) ) ; 00900 for( ii=0 ; ii < nel->vec_rank ; ii++ ) 00901 nel->vec_axis_label[ii] = NI_strdup( ax[ii] ) ; 00902 return ; 00903 } |
|
Set the delta attribute for a data element. Do not call this function until NI_set_dimen() has been called, unless there is only 1 dimension (which is the default). ------------------------------------------------------------------------- Definition at line 837 of file niml_element.c. References NI_ELEMENT_TYPE, NI_realloc, NI_element::type, NI_element::vec_axis_delta, and NI_element::vec_rank.
00838 { 00839 if( nel == NULL || nel->type != NI_ELEMENT_TYPE || 00840 nel->vec_rank < 1 || del == NULL ) return ; 00841 00842 nel->vec_axis_delta = NI_realloc( nel->vec_axis_delta , float, 00843 nel->vec_rank * sizeof(float) ) ; 00844 memcpy( nel->vec_axis_delta , del , nel->vec_rank * sizeof(float) ) ; 00845 return ; 00846 } |
|
Set the dimen attribute for a data element. ------------------------------------------------------------------------- Definition at line 812 of file niml_element.c. References NI_ELEMENT_TYPE, NI_realloc, NI_element::type, NI_element::vec_axis_len, NI_element::vec_len, and NI_element::vec_rank.
00813 { 00814 int ii , ntot ; 00815 00816 if( nel == NULL || nel->type != NI_ELEMENT_TYPE || 00817 rank < 1 || nd == NULL ) return ; /* bad */ 00818 00819 for( ntot=1,ii=0 ; ii < rank ; ii++ ){ 00820 if( nd[ii] <= 0 ) return ; /* bad */ 00821 ntot *= nd[ii] ; 00822 } 00823 if( ntot != nel->vec_len ) return ; /* bad */ 00824 00825 nel->vec_rank = rank ; 00826 nel->vec_axis_len = NI_realloc( nel->vec_axis_len, int, sizeof(int)*rank ) ; 00827 memcpy( nel->vec_axis_len , nd , sizeof(int)*rank ) ; 00828 return ; 00829 } |
|
Set the origin attribute for a data element. Do not call this function until NI_set_dimen() has been called, unless there is only 1 dimension (which is the default). ------------------------------------------------------------------------- Definition at line 854 of file niml_element.c. References NI_ELEMENT_TYPE, NI_realloc, NI_element::type, NI_element::vec_axis_origin, and NI_element::vec_rank.
00855 { 00856 if( nel == NULL || nel->type != NI_ELEMENT_TYPE || 00857 nel->vec_rank < 1 || org == NULL ) return ; 00858 00859 nel->vec_axis_origin = NI_realloc( nel->vec_axis_origin , float, 00860 nel->vec_rank * sizeof(float) ) ; 00861 memcpy( nel->vec_axis_origin , org , nel->vec_rank * sizeof(float) ) ; 00862 return ; 00863 } |
|
Set the units attribute for a data element. Do not call this function until NI_set_dimen() has been called, unless there is only 1 dimension (which is the default). ------------------------------------------------------------------------- Definition at line 871 of file niml_element.c. References NI_ELEMENT_TYPE, NI_realloc, NI_strdup(), NI_element::type, NI_element::vec_axis_unit, and NI_element::vec_rank.
00872 { 00873 int ii ; 00874 00875 if( nel == NULL || nel->type != NI_ELEMENT_TYPE || 00876 nel->vec_rank < 1 || units == NULL ) return ; 00877 00878 nel->vec_axis_unit = NI_realloc( nel->vec_axis_unit , char*, 00879 nel->vec_rank * sizeof(char *) ) ; 00880 for( ii=0 ; ii < nel->vec_rank ; ii++ ) 00881 nel->vec_axis_unit[ii] = NI_strdup( units[ii] ) ; 00882 return ; 00883 } |
|
Byte size of a given integer type code. Modified 13 Feb 2003 to use the new rowtype stuff. --------------------------------------------------------------------------- Definition at line 237 of file niml_element.c. References NI_rowtype_code_to_size(). Referenced by make_empty_data_element().
00238 { 00239 int ii = NI_rowtype_code_to_size( tval ) ; 00240 return (ii > 0) ? ii : 0 ; 00241 } |