index.c

Go to the documentation of this file.
00001 #include <string.h>
00002 #include <stdlib.h>
00003 #include "dbmi.h"
00004 
00011 void
00012 db_init_index (index)
00013     dbIndex *index;
00014 {
00015     db_init_string (&index->indexName);
00016     db_init_string (&index->tableName);
00017     index->numColumns = 0;
00018     index->columnNames = NULL;
00019     index->unique = 0;
00020 }
00021 
00028 void
00029 db_free_index (index)
00030     dbIndex *index;
00031 {
00032     db_free_string (&index->indexName);
00033     db_free_string (&index->tableName);
00034     if (index->numColumns > 0)
00035         db_free_string_array (index->columnNames, index->numColumns);
00036     db_init_index(index);
00037 }
00038 
00045 int
00046 db_alloc_index_columns (index, ncols)
00047     dbIndex *index;
00048     int ncols;
00049 {
00050     index->columnNames = db_alloc_string_array (ncols);
00051     if (index->columnNames == NULL)
00052         return db_get_error_code();
00053     index->numColumns = ncols;
00054 
00055     return DB_OK;
00056 }
00057 
00064 dbIndex *
00065 db_alloc_index_array (count)
00066     int count;
00067 {
00068     dbIndex *list;
00069     int i;
00070 
00071     list = (dbIndex *) db_calloc (count, sizeof(dbIndex));
00072     if (list)
00073     {
00074         for (i = 0; i < count; i++)
00075             db_init_index (&list[i]);
00076     }
00077     return list;
00078 }
00079 
00086 void
00087 db_free_index_array (list, count)
00088     dbIndex *list;
00089     int count;
00090 {
00091     int i;
00092 
00093     if (list)
00094     {
00095         for (i = 0; i < count; i++)
00096             db_free_index (&list[i]);
00097         free (list);
00098     }
00099 }
00100 
00107 int
00108 db_set_index_name (index, name)
00109     dbIndex *index;
00110     char *name;
00111 {
00112     return db_set_string (&index->indexName, name);
00113 }
00114 
00121 char *
00122 db_get_index_name (index)
00123     dbIndex *index;
00124 {
00125     return db_get_string (&index->indexName);
00126 }
00127 
00134 int
00135 db_set_index_table_name (index, name)
00136     dbIndex *index;
00137     char *name;
00138 {
00139     return db_set_string (&index->tableName, name);
00140 }
00141 
00148 char *
00149 db_get_index_table_name (index)
00150     dbIndex *index;
00151 {
00152     return db_get_string (&index->tableName);
00153 }
00154 
00161 int
00162 db_get_index_number_of_columns (index)
00163     dbIndex *index;
00164 {
00165     return index->numColumns;
00166 }
00167 
00174 int
00175 db_set_index_column_name (index, column_num, name)
00176     dbIndex *index;
00177     int column_num;
00178     char *name;
00179 {
00180     if (column_num < 0 || column_num >= index->numColumns)
00181     {
00182         db_error ("db_set_index_column_name(): invalid column number");
00183         return db_get_error_code();
00184     }
00185     return db_set_string (&index->columnNames[column_num], name);
00186 }
00187 
00194 char *
00195 db_get_index_column_name (index, column_num)
00196     dbIndex *index;
00197     int column_num;
00198 {
00199     if (column_num < 0 || column_num >= index->numColumns)
00200     {
00201         db_error ("db_get_index_column_name(): invalid column number");
00202         return ( (char *) NULL);
00203     }
00204     return db_get_string (&index->columnNames[column_num]);
00205 }
00206 
00213 db_set_index_type_unique (index)
00214     dbIndex *index;
00215 {
00216     index->unique = 1;
00217 }
00218 
00225 db_set_index_type_non_unique (index)
00226     dbIndex *index;
00227 {
00228     index->unique = 0;
00229 }
00230 
00237 db_test_index_type_unique (index)
00238     dbIndex *index;
00239 {
00240     return index->unique != 0;
00241 }
00242 
00249 db_print_index(fd, index)
00250     FILE *fd;
00251     dbIndex *index;
00252 {
00253     int i, nCols;
00254 
00255     fprintf(fd, "Name: %s\n", db_get_index_name(index));
00256     if( db_test_index_type_unique(index))
00257       fprintf(fd, "Unique: true\n");
00258     else
00259       fprintf(fd, "Unique: false\n");
00260     fprintf(fd, "Table: %s\n", db_get_index_table_name(index));
00261     nCols = db_get_index_number_of_columns(index);
00262     fprintf(fd, "Number of columns: %d\nColumns:\n", nCols);
00263     for (i = 0; i < nCols; i++) {
00264         fprintf(fd, "  %s\n", db_get_index_column_name(index, i));
00265     }
00266 }

Generated on Wed Aug 23 17:48:32 2006 for GRASS by  doxygen 1.4.7