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  

string.c File Reference

#include "nc.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include "ncx.h"
#include "rnd.h"

Go to the source code of this file.


Functions

void free_NC_string (NC_string *ncstrp)
int NC_check_name (const char *name)
NC_stringnew_NC_string (size_t slen, const char *str)
int set_NC_string (NC_string *ncstrp, const char *str)

Function Documentation

void free_NC_string NC_string   ncstrp
 

Definition at line 21 of file string.c.

References free.

Referenced by free_NC_attr(), free_NC_dim(), free_NC_var(), nc_rename_att(), nc_rename_dim(), nc_rename_var(), new_NC_attr(), new_NC_dim(), new_NC_var(), v1h_get_NC_attr(), v1h_get_NC_dim(), v1h_get_NC_string(), and v1h_get_NC_var().

00022 {
00023         if(ncstrp==NULL)
00024                 return;
00025         free(ncstrp);
00026 }

int NC_check_name const char *    name
 

Definition at line 35 of file string.c.

References name.

Referenced by nc_def_dim(), nc_def_var(), nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), nc_put_att_uchar(), nc_rename_att(), nc_rename_dim(), and nc_rename_var().

00036 {
00037         const char *cp = name;
00038         assert(name != NULL);
00039 
00040         if(*name == 0)
00041                 return NC_EBADNAME; /* empty names disallowed */
00042 
00043         for(; *cp != 0; cp++)
00044         {
00045                 int ch = *cp;
00046                 if(!isalnum(ch))
00047                 {
00048                         if(ch != '_' && ch != '-' && ch != '.')
00049                                 return NC_EBADNAME;
00050                 }
00051         }
00052         if(cp - name > NC_MAX_NAME)
00053                 return NC_EMAXNAME;
00054 
00055         return NC_NOERR;
00056 }

NC_string* new_NC_string size_t    slen,
const char *    str
 

Definition at line 66 of file string.c.

References _RNDUP, NC_string::cp, M_RNDUP, malloc, NC_string::nchars, and X_ALIGN.

Referenced by nc_rename_att(), nc_rename_dim(), nc_rename_var(), new_NC_attr(), new_NC_dim(), new_NC_var(), and v1h_get_NC_string().

00067 {
00068         NC_string *ncstrp;
00069         size_t sz = M_RNDUP(sizeof(NC_string)) + slen + 1;
00070 
00071 #if 0
00072         sz = _RNDUP(sz, X_ALIGN);
00073 #endif
00074                 
00075         ncstrp = (NC_string *)malloc(sz);
00076         if( ncstrp == NULL )
00077                 return NULL;
00078         (void) memset(ncstrp, 0, sz);
00079 
00080         ncstrp->nchars = sz - M_RNDUP(sizeof(NC_string)) - 1;
00081         assert(ncstrp->nchars + 1 > slen);
00082         ncstrp->cp = (char *)ncstrp + M_RNDUP(sizeof(NC_string));
00083 
00084         if(str != NULL && *str != 0)
00085         {
00086                 (void) strncpy(ncstrp->cp, str, ncstrp->nchars +1);
00087                 ncstrp->cp[ncstrp->nchars] = 0;
00088         }
00089         
00090         return(ncstrp);
00091 }

int set_NC_string NC_string   ncstrp,
const char *    str
 

Definition at line 101 of file string.c.

References NC_string::cp, and NC_string::nchars.

Referenced by nc_rename_att(), nc_rename_dim(), and nc_rename_var().

00102 {
00103         size_t slen;
00104         size_t diff;
00105 
00106         assert(str != NULL && *str != 0);
00107 
00108         slen = strlen(str);
00109 
00110         if(ncstrp->nchars < slen)
00111                 return NC_ENOTINDEFINE;
00112 
00113         (void) memcpy(ncstrp->cp, str, slen);
00114         diff = ncstrp->nchars - slen;
00115         if(diff != 0)
00116                 (void) memset(ncstrp->cp + slen, 0, diff);
00117 
00118         return NC_NOERR;
00119 }
 

Powered by Plone

This site conforms to the following standards: