Change "union value" to dynamically allocate long strings.
[pspp-builds.git] / src / data / datasheet.h
index 860f236ec33af74b1ba8f53be1d5108a40644501..0508896ae9e30876be39c4e749aabe50d4e572ee 100644 (file)
 #include <data/case.h>
 #include <data/value.h>
 
+struct caseproto;
 struct casereader;
 
-/* A datasheet is a 2-d array of data that may be stored in
-   memory or on disk.  It efficiently supports data storage and
-   retrieval, as well as adding, removing, and rearranging both
-   rows and columns.  */
+/* A datasheet is a 2-d array of "union value"s that may be
+   stored in memory or on disk.  It efficiently supports data
+   storage and retrieval, as well as adding, removing, and
+   rearranging both rows and columns.  */
 
 struct datasheet *datasheet_create (struct casereader *);
 void datasheet_destroy (struct datasheet *);
 struct datasheet *datasheet_rename (struct datasheet *);
 
+const struct caseproto *datasheet_get_proto (const struct datasheet *);
+int datasheet_get_column_width (const struct datasheet *, size_t column);
+
 bool datasheet_error (const struct datasheet *);
 void datasheet_force_error (struct datasheet *);
 const struct taint *datasheet_get_taint (const struct datasheet *);
@@ -38,17 +42,20 @@ const struct taint *datasheet_get_taint (const struct datasheet *);
 struct casereader *datasheet_make_reader (struct datasheet *);
 
 /* Columns. */
-size_t datasheet_get_column_cnt (const struct datasheet *);
-bool datasheet_insert_columns (struct datasheet *,
-                               const union value[], size_t cnt,
-                               size_t before);
+size_t datasheet_get_n_columns (const struct datasheet *);
+bool datasheet_insert_column (struct datasheet *,
+                              const union value *, int width, size_t before);
 void datasheet_delete_columns (struct datasheet *, size_t start, size_t cnt);
 void datasheet_move_columns (struct datasheet *,
                              size_t old_start, size_t new_start,
                              size_t cnt);
+bool datasheet_resize_column (struct datasheet *, size_t column, int new_width,
+                              void (*resize_cb) (const union value *,
+                                                 union value *, void *aux),
+                              void *aux);
 
 /* Rows. */
-casenumber datasheet_get_row_cnt (const struct datasheet *);
+casenumber datasheet_get_n_rows (const struct datasheet *);
 bool datasheet_insert_rows (struct datasheet *,
                             casenumber before, struct ccase *[],
                             casenumber cnt);
@@ -62,11 +69,12 @@ void datasheet_move_rows (struct datasheet *,
 struct ccase *datasheet_get_row (const struct datasheet *, casenumber);
 bool datasheet_put_row (struct datasheet *, casenumber, struct ccase *);
 bool datasheet_get_value (const struct datasheet *, casenumber, size_t column,
-                          union value *, int width);
+                          union value *);
 bool datasheet_put_value (struct datasheet *, casenumber, size_t column,
-                          const union value *, int width);
+                          const union value *);
 
 
 unsigned int hash_datasheet (const struct datasheet *ds);
 struct datasheet *clone_datasheet (const struct datasheet *ds);
+
 #endif /* data/datasheet.h */