value.c

Go to the documentation of this file.
00001 #include <stdlib.h>
00002 #include <grass/dbmi.h>
00003 
00010 int
00011 db_test_value_isnull (dbValue *value)
00012 
00013 {
00014     return (value->isNull != 0);
00015 }
00016 
00023 int
00024 db_get_value_int (dbValue *value)
00025 
00026 {
00027     return (value->i);
00028 }
00029 
00036 double
00037 db_get_value_double (dbValue *value)
00038 
00039 {
00040     return (value->d);
00041 }
00042 
00049 /* for given value and C type of value returns double representation */
00050 double
00051 db_get_value_as_double (dbValue *value, int ctype)
00052 
00053 {
00054     double val;
00055     
00056     switch ( ctype )
00057       {
00058         case ( DB_C_TYPE_INT ):
00059             val = (double) db_get_value_int(value);
00060             break;
00061         case ( DB_C_TYPE_STRING ):
00062             val = atof ( db_get_value_string(value) );
00063             break;
00064         case ( DB_C_TYPE_DOUBLE ):
00065             val = db_get_value_double(value);
00066             break;
00067         default:
00068             val = 0;
00069       }
00070     return val;
00071 }
00072 
00079 char *
00080 db_get_value_string (dbValue *value)
00081 
00082 {
00083     return (db_get_string(&value->s));
00084 }
00085 
00092 int
00093 db_get_value_year (dbValue *value)
00094 
00095 {
00096     return (value->t.year);
00097 }
00098 
00105 int
00106 db_get_value_month (dbValue *value)
00107 
00108 {
00109     return (value->t.month);
00110 }
00111 
00118 int
00119 db_get_value_day (dbValue *value)
00120 
00121 {
00122     return (value->t.day);
00123 }
00124 
00131 int
00132 db_get_value_hour (dbValue *value)
00133 
00134 {
00135     return (value->t.hour);
00136 }
00137 
00144 int
00145 db_get_value_minute (dbValue *value)
00146 
00147 {
00148     return (value->t.minute);
00149 }
00150 
00157 double
00158 db_get_value_seconds (dbValue *value)
00159 
00160 {
00161     return (value->t.seconds);
00162 }
00163 
00170 void
00171 db_set_value_null (dbValue *value)
00172 
00173 {
00174     value->isNull = 1;
00175 }
00176 
00183 void
00184 db_set_value_not_null (dbValue *value)
00185 
00186 {
00187     value->isNull = 0;
00188 }
00189 
00196 void
00197 db_set_value_int (dbValue *value, int i)
00198 
00199 {
00200     value->i = i;
00201     db_set_value_not_null(value);
00202 }
00203 
00210 void
00211 db_set_value_double (dbValue *value, double d)
00212 
00213 {
00214     value->d = d;
00215     db_set_value_not_null(value);
00216 }
00217 
00224 int
00225 db_set_value_string (dbValue *value, char *s)
00226 
00227 {
00228     db_set_value_not_null(value);
00229     return db_set_string(&value->s, s);
00230 }
00231 
00238 void
00239 db_set_value_year (dbValue *value, int year)
00240 
00241 {
00242     value->t.year = year;
00243     db_set_value_datetime_not_current(value);
00244 }
00245 
00252 void
00253 db_set_value_month (dbValue *value, int month)
00254 
00255 {
00256     value->t.month = month;
00257     db_set_value_datetime_not_current(value);
00258 }
00259 
00266 void
00267 db_set_value_day (dbValue *value, int day)
00268 
00269 {
00270     value->t.day = day;
00271     db_set_value_datetime_not_current(value);
00272 }
00273 
00280 void
00281 db_set_value_hour (dbValue *value, int hour)
00282 
00283 {
00284     value->t.hour = hour;
00285     db_set_value_datetime_not_current(value);
00286 }
00287 
00294 void
00295 db_set_value_minute (dbValue *value, int minute)
00296 
00297 {
00298     value->t.minute = minute;
00299     db_set_value_datetime_not_current(value);
00300 }
00301 
00308 void
00309 db_set_value_seconds (dbValue *value, double seconds)
00310 
00311 {
00312     value->t.seconds = seconds;
00313     db_set_value_datetime_not_current (value);
00314 }
00315 
00322 int
00323 db_test_value_datetime_current  (dbValue *value)
00324 
00325 {
00326     return (value->t.current != 0);
00327 }
00328 
00335 void
00336 db_set_value_datetime_current  (dbValue *value)
00337 
00338 {
00339     value->t.current = 1;
00340     db_set_value_not_null(value);
00341 }
00342 
00349 void
00350 db_set_value_datetime_not_current  (dbValue *value)
00351 
00352 {
00353     value->t.current = 0;
00354     db_set_value_not_null(value);
00355 }
00356 
00363 /* copy value from src to destination */
00364 void
00365 db_copy_value  (dbValue *dst, dbValue *src)
00366 
00367 {
00368     dst->isNull = src->isNull;
00369     dst->i = src->i;
00370     dst->d = src->d;
00371     if ( src->s.nalloc > 0 )
00372         db_copy_string ( &(dst->s), &(src->s) );
00373     dst->t.current = src->t.current;
00374     dst->t.year = src->t.year;
00375     dst->t.month = src->t.month;
00376     dst->t.day = src->t.day;
00377     dst->t.hour = src->t.hour;
00378     dst->t.minute = src->t.minute;
00379     dst->t.seconds = src->t.seconds;
00380 }
00381 
00388 void
00389 db_CatValArray_init( dbCatValArray *arr )
00390 {
00391     arr->n_values = 0;
00392     arr->alloc = 0;
00393     arr->value = NULL;
00394 }
00395 
00402 void
00403 db_CatValArray_free( dbCatValArray *arr )
00404 {
00405     if ( arr->ctype == DB_C_TYPE_STRING || arr->ctype == DB_C_TYPE_DATETIME )
00406     {
00407         int i;
00408         for ( i = 0; i < arr->n_values; i++ ) {
00409             if ( arr->ctype == DB_C_TYPE_STRING && arr->value[i].val.s ) {
00410                 db_free_string ( arr->value[i].val.s );
00411                 free ( arr->value[i].val.s );
00412             }
00413             if ( arr->ctype == DB_C_TYPE_DATETIME && arr->value[i].val.t ) {
00414                 free ( arr->value[i].val.t );
00415             }
00416         }
00417     }
00418 
00419     free ( arr->value );
00420 }
00421 
00428 int
00429 db_CatValArray_alloc( dbCatValArray *arr, int n )
00430 {
00431     arr->value = (dbCatVal *) G_calloc ( n, sizeof(dbCatVal) );
00432 
00433     arr->alloc = n;
00434 
00435     return DB_OK;
00436 }
00437 
00444 int
00445 db_CatValArray_realloc( dbCatValArray *arr, int n )
00446 {
00447     arr->value = (dbCatVal *) G_realloc ( arr->value,  n * sizeof(dbCatVal) );
00448 
00449     arr->alloc = n;
00450 
00451     return DB_OK;
00452 }
00453 

Generated on Sun Apr 6 17:31:38 2008 for GRASS by  doxygen 1.5.5