gnucash/lib/stf/stf-parse.h
Andreas Köhler a6839478a4 Merge csv-import branch back into trunk.
configure.in                                       |    2
 lib/Makefile.am                                    |    4
 lib/stf/Makefile.am                                |   13
 lib/stf/README                                     |    2
 lib/stf/stf-parse.c                                | 1414 +++++++++++++++++++++
 lib/stf/stf-parse.h                                |  112 +
 src/bin/gnucash-bin.c                              |    1
 src/import-export/Makefile.am                      |    4
 src/import-export/csv/Makefile.am                  |   59
 src/import-export/csv/example-file.csv             |    4
 src/import-export/csv/gnc-csv-gnumeric-popup.c     |  194 ++
 src/import-export/csv/gnc-csv-gnumeric-popup.h     |   78 +
 src/import-export/csv/gnc-csv-import.c             | 1173 +++++++++++++++++
 src/import-export/csv/gnc-csv-import.h             |   33
 src/import-export/csv/gnc-csv-model.c              | 1199 +++++++++++++++++
 src/import-export/csv/gnc-csv-model.h              |  122 +
 src/import-export/csv/gnc-csv-preview-dialog.glade |  496 +++++++
 src/import-export/csv/gnc-csv2glist.c              |  187 --
 src/import-export/csv/gnc-csv2glist.h              |   39
 src/import-export/csv/gnc-plugin-csv-ui.xml        |   11
 src/import-export/csv/gnc-plugin-csv.c             |  160 ++
 src/import-export/csv/gnc-plugin-csv.h             |   60
 src/import-export/csv/gncmod-csv-import.c          |   91 +
 23 files changed, 5228 insertions(+), 230 deletions(-)


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@16561 57a11ea4-9604-0410-9ed3-97b8803252fd
2007-10-12 22:51:34 +00:00

113 lines
4.6 KiB
C

#ifndef STF_PARSE_H
#define STF_PARSE_H
#include <glib.h>
#define SHEET_MAX_ROWS (16*16*16*16) /* 0, 1, ... */
#define SHEET_MAX_COLS (4*4*4*4) /* 0, 1, ... */
typedef enum {
PARSE_TYPE_NOTSET = 1 << 0,
PARSE_TYPE_CSV = 1 << 1,
PARSE_TYPE_FIXED = 1 << 2
} StfParseType_t;
/* Additive. */
typedef enum {
TRIM_TYPE_NEVER = 0,
TRIM_TYPE_LEFT = 1 << 0,
TRIM_TYPE_RIGHT = 2 << 1
} StfTrimType_t;
typedef struct {
StfParseType_t parsetype; /* The type of import to do */
StfTrimType_t trim_spaces; /* Trim spaces in fields? */
GSList * terminator; /* Line terminators */
char * locale;
struct {
guchar min, max;
} compiled_terminator;
/* CSV related */
struct {
GSList *str;
char *chr;
} sep;
gunichar stringindicator; /* String indicator */
gboolean indicator_2x_is_single;/* 2 quote chars form a single non-terminating quote */
gboolean duplicates; /* See two text separators as one? */
gboolean trim_seps; /* Ignore initial seps. */
/* Fixed width related */
GArray *splitpositions; /* Positions where text will be split vertically */
int rowcount; /* Number of rows parsed */
int colcount; /* Number of columns parsed */
gboolean *col_import_array; /* 0/1 array indicating */
/* which cols to import */
unsigned int col_import_array_len;
GPtrArray *formats ; /* Contains GnmFormat *s */
gboolean cols_exceeded; /* This is set to TRUE if */
/* we tried to import more than */
/* SHEET_MAX_COLS columns */
} StfParseOptions_t;
/* CREATION/DESTRUCTION of stf options struct */
StfParseOptions_t *stf_parse_options_new (void);
void stf_parse_options_free (StfParseOptions_t *parseoptions);
StfParseOptions_t *stf_parse_options_guess (char const *data);
/* MANIPULATION of stf options struct */
void stf_parse_options_set_type (StfParseOptions_t *parseoptions,
StfParseType_t const parsetype);
void stf_parse_options_clear_line_terminator (StfParseOptions_t *parseoptions);
void stf_parse_options_add_line_terminator (StfParseOptions_t *parseoptions,
char const *terminator);
void stf_parse_options_set_trim_spaces (StfParseOptions_t *parseoptions,
StfTrimType_t const trim_spaces);
void stf_parse_options_csv_set_separators (StfParseOptions_t *parseoptions,
char const *character, GSList const *string);
void stf_parse_options_csv_set_stringindicator (StfParseOptions_t *parseoptions,
gunichar const stringindicator);
void stf_parse_options_csv_set_indicator_2x_is_single (StfParseOptions_t *parseoptions,
gboolean const indic_2x);
void stf_parse_options_csv_set_duplicates (StfParseOptions_t *parseoptions,
gboolean const duplicates);
void stf_parse_options_csv_set_trim_seps (StfParseOptions_t *parseoptions,
gboolean const trim_seps);
void stf_parse_options_fixed_splitpositions_clear (StfParseOptions_t *parseoptions);
void stf_parse_options_fixed_splitpositions_add (StfParseOptions_t *parseoptions,
int position);
void stf_parse_options_fixed_splitpositions_remove (StfParseOptions_t *parseoptions,
int position);
int stf_parse_options_fixed_splitpositions_count (StfParseOptions_t *parseoptions);
int stf_parse_options_fixed_splitpositions_nth (StfParseOptions_t *parseoptions, int n);
/* USING the stf structs to actually do some parsing, these are the lower-level functions and utility functions */
GPtrArray *stf_parse_general (StfParseOptions_t *parseoptions,
GStringChunk *lines_chunk,
char const *data,
char const *data_end);
void stf_parse_general_free (GPtrArray *lines);
GPtrArray *stf_parse_lines (StfParseOptions_t *parseoptions,
GStringChunk *lines_chunk,
char const *data,
int maxlines,
gboolean with_lineno);
void stf_parse_options_fixed_autodiscover (StfParseOptions_t *parseoptions,
char const *data,
char const *data_end);
char const *stf_parse_find_line (StfParseOptions_t *parseoptions,
char const *data,
int line);
#endif