index.c

Go to the documentation of this file.
00001 #include <string.h>
00002 #include <stdlib.h>
00003 #include <grass/dbmi.h>
00004 
00011 void
00012 db_init_index  (dbIndex *index)
00013 
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  (dbIndex *index)
00030 
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  (dbIndex *index, int ncols)
00047 
00048 {
00049     index->columnNames = db_alloc_string_array (ncols);
00050     if (index->columnNames == NULL)
00051         return db_get_error_code();
00052     index->numColumns = ncols;
00053 
00054     return DB_OK;
00055 }
00056 
00063 dbIndex *
00064 db_alloc_index_array  (int count)
00065 
00066 {
00067     dbIndex *list;
00068     int i;
00069 
00070     list = (dbIndex *) db_calloc (count, sizeof(dbIndex));
00071     if (list)
00072     {
00073         for (i = 0; i < count; i++)
00074             db_init_index (&list[i]);
00075     }
00076     return list;
00077 }
00078 
00085 void
00086 db_free_index_array  (dbIndex *list, int count)
00087 
00088 {
00089     int i;
00090 
00091     if (list)
00092     {
00093         for (i = 0; i < count; i++)
00094             db_free_index (&list[i]);
00095         free (list);
00096     }
00097 }
00098 
00105 int
00106 db_set_index_name  (dbIndex *index, char *name)
00107 
00108 {
00109     return db_set_string (&index->indexName, name);
00110 }
00111 
00118 char *
00119 db_get_index_name  (dbIndex *index)
00120 
00121 {
00122     return db_get_string (&index->indexName);
00123 }
00124 
00131 int
00132 db_set_index_table_name  (dbIndex *index, char *name)
00133 
00134 {
00135     return db_set_string (&index->tableName, name);
00136 }
00137 
00144 char *
00145 db_get_index_table_name  (dbIndex *index)
00146 
00147 {
00148     return db_get_string (&index->tableName);
00149 }
00150 
00157 int
00158 db_get_index_number_of_columns  (dbIndex *index)
00159 
00160 {
00161     return index->numColumns;
00162 }
00163 
00170 int
00171 db_set_index_column_name  (dbIndex *index, int column_num, char *name)
00172 
00173 {
00174     if (column_num < 0 || column_num >= index->numColumns)
00175     {
00176         db_error ("db_set_index_column_name(): invalid column number");
00177         return db_get_error_code();
00178     }
00179     return db_set_string (&index->columnNames[column_num], name);
00180 }
00181 
00188 char *
00189 db_get_index_column_name  (dbIndex *index, int column_num)
00190 
00191 {
00192     if (column_num < 0 || column_num >= index->numColumns)
00193     {
00194         db_error ("db_get_index_column_name(): invalid column number");
00195         return ( (char *) NULL);
00196     }
00197     return db_get_string (&index->columnNames[column_num]);
00198 }
00199 
00206 db_set_index_type_unique  (dbIndex *index)
00207 
00208 {
00209     index->unique = 1;
00210 }
00211 
00218 db_set_index_type_non_unique  (dbIndex *index)
00219 
00220 {
00221     index->unique = 0;
00222 }
00223 
00230 db_test_index_type_unique  (dbIndex *index)
00231 
00232 {
00233     return index->unique != 0;
00234 }
00235 
00242 db_print_index (FILE *fd, dbIndex *index)
00243 
00244 {
00245     int i, nCols;
00246 
00247     fprintf(fd, "Name: %s\n", db_get_index_name(index));
00248     if( db_test_index_type_unique(index))
00249       fprintf(fd, "Unique: true\n");
00250     else
00251       fprintf(fd, "Unique: false\n");
00252     fprintf(fd, "Table: %s\n", db_get_index_table_name(index));
00253     nCols = db_get_index_number_of_columns(index);
00254     fprintf(fd, "Number of columns: %d\nColumns:\n", nCols);
00255     for (i = 0; i < nCols; i++) {
00256         fprintf(fd, "  %s\n", db_get_index_column_name(index, i));
00257     }
00258 }

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