summaryrefslogtreecommitdiffstats
path: root/tools/h5tools.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>2000-10-31 16:18:47 (GMT)
committerRobb Matzke <matzke@llnl.gov>2000-10-31 16:18:47 (GMT)
commit18e823ff423976accfce87adc748e6328ca2554a (patch)
tree1182b45b19f693ea70efe46e0905d13e3c4827cb /tools/h5tools.h
parent3c2dfa4bab65093fb689b80afd285a0f2f011eaf (diff)
downloadhdf5-18e823ff423976accfce87adc748e6328ca2554a.zip
hdf5-18e823ff423976accfce87adc748e6328ca2554a.tar.gz
hdf5-18e823ff423976accfce87adc748e6328ca2554a.tar.bz2
[svn-r2768] ./hdf5/tools/h5tools.h
* 2000-10-31 Robb Matzke <matzke@llnl.gov> Reindented.
Diffstat (limited to 'tools/h5tools.h')
-rw-r--r--tools/h5tools.h585
1 files changed, 293 insertions, 292 deletions
diff --git a/tools/h5tools.h b/tools/h5tools.h
index ffda022..ffd7221 100644
--- a/tools/h5tools.h
+++ b/tools/h5tools.h
@@ -5,7 +5,7 @@
* Programmer: Robb Matzke <matzke@llnl.gov>
* Thursday, July 23, 1998
*
- * Purpose: Support functions for the various tools.
+ * Purpose: Support functions for the various tools.
*/
#ifndef _H5TOOLS_H
#define _H5TOOLS_H
@@ -19,7 +19,7 @@
#define VERSION13
#endif
#endif
-#define ESCAPE_HTML 1
+#define ESCAPE_HTML 1
/*
@@ -33,311 +33,318 @@ typedef struct h5dump_t {
* data in hexadecimal format without translating from what appears on
* disk.
*
- * raw: If set then print all data as hexadecimal without
- * performing any conversion from disk.
+ * raw: If set then print all data as hexadecimal without
+ * performing any conversion from disk.
*
- * fmt_raw: The printf() format for each byte of raw data. The
- * default is `%02x'.
+ * fmt_raw: The printf() format for each byte of raw data. The
+ * default is `%02x'.
*
- * fmt_int: The printf() format to use when rendering data which is
- * typed `int'. The default is `%d'.
+ * fmt_int: The printf() format to use when rendering data which is
+ * typed `int'. The default is `%d'.
*
- * fmt_uint: The printf() format to use when rendering data which is
- * typed `unsigned'. The default is `%u'.
+ * fmt_uint: The printf() format to use when rendering data which is
+ * typed `unsigned'. The default is `%u'.
*
- * fmt_schar: The printf() format to use when rendering data which is
- * typed `signed char'. The default is `%d'. This format is
- * used ony if the `ascii' field is zero.
+ * fmt_schar: The printf() format to use when rendering data which is
+ * typed `signed char'. The default is `%d'. This format is
+ * used ony if the `ascii' field is zero.
*
- * fmt_uchar: The printf() format to use when rendering data which is
- * typed `unsigned char'. The default is `%u'. This format
- * is used only if the `ascii' field is zero.
- *
- * fmt_short: The printf() format to use when rendering data which is
- * typed `short'. The default is `%d'.
+ * fmt_uchar: The printf() format to use when rendering data which is
+ * typed `unsigned char'. The default is `%u'. This format
+ * is used only if the `ascii' field is zero.
+ *
+ * fmt_short: The printf() format to use when rendering data which is
+ * typed `short'. The default is `%d'.
*
- * fmt_ushort: The printf() format to use when rendering data which is
- * typed `unsigned short'. The default is `%u'.
+ * fmt_ushort: The printf() format to use when rendering data which is
+ * typed `unsigned short'. The default is `%u'.
*
- * fmt_long: The printf() format to use when rendering data which is
- * typed `long'. The default is `%ld'.
+ * fmt_long: The printf() format to use when rendering data which is
+ * typed `long'. The default is `%ld'.
*
- * fmt_ulong: The printf() format to use when rendering data which is
- * typed `unsigned long'. The default is `%lu'.
+ * fmt_ulong: The printf() format to use when rendering data which is
+ * typed `unsigned long'. The default is `%lu'.
*
- * fmt_llong: The printf() format to use when rendering data which is
- * typed `long long'. The default depends on what printf()
- * format is available to print this datatype.
+ * fmt_llong: The printf() format to use when rendering data which is
+ * typed `long long'. The default depends on what printf()
+ * format is available to print this datatype.
*
- * fmt_ullong: The printf() format to use when rendering data which is
- * typed `unsigned long long'. The default depends on what
- * printf() format is available to print this datatype.
+ * fmt_ullong: The printf() format to use when rendering data which is
+ * typed `unsigned long long'. The default depends on what
+ * printf() format is available to print this datatype.
*
- * fmt_double: The printf() format to use when rendering data which is
- * typed `double'. The default is `%g'.
+ * fmt_double: The printf() format to use when rendering data which is
+ * typed `double'. The default is `%g'.
*
- * fmt_float: The printf() format to use when rendering data which is
- * typed `float'. The default is `%g'.
+ * fmt_float: The printf() format to use when rendering data which is
+ * typed `float'. The default is `%g'.
*
- * ascii: If set then print 1-byte integer values as an ASCII
- * character (no quotes). If the character is one of the
- * standard C escapes then print the escaped version. If
- * the character is unprintable then print a 3-digit octal
- * escape. If `ascii' is zero then then 1-byte integers are
- * printed as numeric values. The default is zero.
+ * ascii: If set then print 1-byte integer values as an ASCII
+ * character (no quotes). If the character is one of the
+ * standard C escapes then print the escaped version. If
+ * the character is unprintable then print a 3-digit octal
+ * escape. If `ascii' is zero then then 1-byte integers are
+ * printed as numeric values. The default is zero.
*
- * str_locale: Determines how strings are printed. If zero then strings
- * are printed like in C except. If set to ESCAPE_HTML then
- * strings are printed using HTML encoding where each
- * character not in the class [a-zA-Z0-9] is substituted
- * with `%XX' where `X' is a hexadecimal digit.
+ * str_locale: Determines how strings are printed. If zero then strings
+ * are printed like in C except. If set to ESCAPE_HTML then
+ * strings are printed using HTML encoding where each
+ * character not in the class [a-zA-Z0-9] is substituted
+ * with `%XX' where `X' is a hexadecimal digit.
*
- * str_repeat: If set to non-zero then any character value repeated N
- * or more times is printed as 'C'*N
+ * str_repeat: If set to non-zero then any character value repeated N
+ * or more times is printed as 'C'*N
*
* Numeric data is also subject to the formats for individual elements.
*/
- hbool_t raw;
- const char *fmt_raw;
- const char *fmt_int;
- const char *fmt_uint;
- const char *fmt_schar;
- const char *fmt_uchar;
- const char *fmt_short;
- const char *fmt_ushort;
- const char *fmt_long;
- const char *fmt_ulong;
- const char *fmt_llong;
- const char *fmt_ullong;
- const char *fmt_double;
- const char *fmt_float;
- int ascii;
- int str_locale;
- int str_repeat;
+ hbool_t raw;
+ const char *fmt_raw;
+ const char *fmt_int;
+ const char *fmt_uint;
+ const char *fmt_schar;
+ const char *fmt_uchar;
+ const char *fmt_short;
+ const char *fmt_ushort;
+ const char *fmt_long;
+ const char *fmt_ulong;
+ const char *fmt_llong;
+ const char *fmt_ullong;
+ const char *fmt_double;
+ const char *fmt_float;
+ int ascii;
+ int str_locale;
+ int str_repeat;
+
/*
* Fields associated with compound array members.
*
- * pre: A string to print at the beginning of each array. The
- * default value is the left square bracket `['.
+ * pre: A string to print at the beginning of each array. The
+ * default value is the left square bracket `['.
*
- * sep: A string to print between array values. The default
- * value is a ",\001" ("\001" indicates an optional line
- * break).
+ * sep: A string to print between array values. The default
+ * value is a ",\001" ("\001" indicates an optional line
+ * break).
*
- * suf: A string to print at the end of each array. The default
- * value is a right square bracket `]'.
+ * suf: A string to print at the end of each array. The default
+ * value is a right square bracket `]'.
*
- * linebreaks: a boolean value to determine if we want to break the line
- * after each row of an array
- */
- const char *arr_pre;
- const char *arr_sep;
- const char *arr_suf;
- int arr_linebreak;
+ * linebreaks: a boolean value to determine if we want to break the line
+ * after each row of an array.
+ */
+ const char *arr_pre;
+ const char *arr_sep;
+ const char *arr_suf;
+ int arr_linebreak;
/*
* Fields associated with compound data types.
*
- * name: How the name of the struct member is printed in the
- * values. By default the name is not printed, but a
- * reasonable setting might be "%s=" which prints the name
- * followed by an equal sign and then the value.
+ * name: How the name of the struct member is printed in the
+ * values. By default the name is not printed, but a
+ * reasonable setting might be "%s=" which prints the name
+ * followed by an equal sign and then the value.
*
- * sep: A string that separates one member from another. The
- * default is ", \001" (the \001 indicates an optional
- * line break to allow structs to span multiple lines of
- * output).
+ * sep: A string that separates one member from another. The
+ * default is ", \001" (the \001 indicates an optional
+ * line break to allow structs to span multiple lines of
+ * output).
*
- * pre: A string to print at the beginning of a compound type.
- * The default is a left curly brace.
+ * pre: A string to print at the beginning of a compound type.
+ * The default is a left curly brace.
*
- * suf: A string to print at the end of each compound type. The
- * default is right curly brace.
- *
- * end: a string to print after we reach the last element of
- * each compound type. prints out before the suf.
+ * suf: A string to print at the end of each compound type. The
+ * default is right curly brace.
+ *
+ * end: a string to print after we reach the last element of
+ * each compound type. prints out before the suf.
*/
- const char *cmpd_name;
- const char *cmpd_sep;
- const char *cmpd_pre;
- const char *cmpd_suf;
- const char *cmpd_end;
+ const char *cmpd_name;
+ const char *cmpd_sep;
+ const char *cmpd_pre;
+ const char *cmpd_suf;
+ const char *cmpd_end;
/*
* Fields associated with the individual elements.
*
- * fmt: A printf(3c) format to use to print the value string
- * after it has been rendered. The default is "%s".
+ * fmt: A printf(3c) format to use to print the value string
+ * after it has been rendered. The default is "%s".
*
- * suf1: This string is appended to elements which are followed by
- * another element whether the following element is on the
- * same line or the next line. The default is a comma.
+ * suf1: This string is appended to elements which are followed by
+ * another element whether the following element is on the
+ * same line or the next line. The default is a comma.
*
- * suf2: This string is appended (after `suf1') to elements which
- * are followed on the same line by another element. The
- * default is a single space.
+ * suf2: This string is appended (after `suf1') to elements which
+ * are followed on the same line by another element. The
+ * default is a single space.
*/
- const char *elmt_fmt;
- const char *elmt_suf1;
- const char *elmt_suf2;
+ const char *elmt_fmt;
+ const char *elmt_suf1;
+ const char *elmt_suf2;
/*
* Fields associated with the index values printed at the left edge of
* each line of output.
*
- * n_fmt: Each index value is printed according to this printf(3c)
- * format string which should include a format for a long
- * integer. The default is "%lu".
+ * n_fmt: Each index value is printed according to this printf(3c)
+ * format string which should include a format for a long
+ * integer. The default is "%lu".
*
- * sep: Each integer in the index list will be separated from the
- * others by this string, which defaults to a comma.
+ * sep: Each integer in the index list will be separated from the
+ * others by this string, which defaults to a comma.
*
- * fmt: After the index values are formated individually and
- * separated from one another by some string, the entire
- * resulting string will be formated according to this
- * printf(3c) format which should include a format for a
- * character string. The default is "%s".
+ * fmt: After the index values are formated individually and
+ * separated from one another by some string, the entire
+ * resulting string will be formated according to this
+ * printf(3c) format which should include a format for a
+ * character string. The default is "%s".
*/
- const char *idx_n_fmt; /*index number format */
- const char *idx_sep; /*separator between numbers */
- const char *idx_fmt; /*entire index format */
+ const char *idx_n_fmt; /*index number format */
+ const char *idx_sep; /*separator between numbers */
+ const char *idx_fmt; /*entire index format */
/*
* Fields associated with entire lines.
*
- * ncols: Number of columns per line defaults to 80.
- *
- * per_line: If this field has a positive value then every Nth element
- * will be printed at the beginning of a line.
- *
- * pre: Each line of output contains an optional prefix area
- * before the data. This area can contain the index for the
- * first datum (represented by `%s') as well as other
- * constant text. The default value is `%s'.
- *
- * 1st: This is the format to print at the beginning of the first
- * line of output. The default value is the current value of
- * `pre' described above.
- *
- * cont: This is the format to print at the beginning of each line
- * which was continued because the line was split onto
- * multiple lines. This often happens with compound
- * data which is longer than one line of output. The default
- * value is the current value of the `pre' field
- * described above.
- *
- * suf: This character string will be appended to each line of
- * output. It should not contain line feeds. The default
- * is the empty string.
- *
- * sep: A character string to be printed after every line feed
- * defaulting to the empty string. It should end with a
- * line feed.
- *
- * multi_new: Indicates the algorithm to use when data elements tend to
- * occupy more than one line of output. The possible values
- * are (zero is the default):
- *
- * 0: No consideration. Each new element is printed
- * beginning where the previous element ended.
- *
- * 1: Print the current element beginning where the
- * previous element left off. But if that would result
- * in the element occupying more than one line and it
- * would only occupy one line if it started at the
- * beginning of a line, then it is printed at the
- * beginning of the next line.
- *
- * multi_new: If an element is continued onto additional lines then
- * should the following element begin on the next line? The
- * default is to start the next element on the same line
- * unless it wouldn't fit.
- *
- * indentlevel: a string that shows how far to indent if extra spacing
- * is needed. dumper uses it.
+ * ncols: Number of columns per line defaults to 80.
+ *
+ * per_line: If this field has a positive value then every Nth element
+ * will be printed at the beginning of a line.
+ *
+ * pre: Each line of output contains an optional prefix area
+ * before the data. This area can contain the index for the
+ * first datum (represented by `%s') as well as other
+ * constant text. The default value is `%s'.
+ *
+ * 1st: This is the format to print at the beginning of the first
+ * line of output. The default value is the current value of
+ * `pre' described above.
+ *
+ * cont: This is the format to print at the beginning of each line
+ * which was continued because the line was split onto
+ * multiple lines. This often happens with compound
+ * data which is longer than one line of output. The default
+ * value is the current value of the `pre' field
+ * described above.
+ *
+ * suf: This character string will be appended to each line of
+ * output. It should not contain line feeds. The default
+ * is the empty string.
+ *
+ * sep: A character string to be printed after every line feed
+ * defaulting to the empty string. It should end with a
+ * line feed.
+ *
+ * multi_new: Indicates the algorithm to use when data elements tend to
+ * occupy more than one line of output. The possible values
+ * are (zero is the default):
+ *
+ * 0: No consideration. Each new element is printed
+ * beginning where the previous element ended.
+ *
+ * 1: Print the current element beginning where the
+ * previous element left off. But if that would result
+ * in the element occupying more than one line and it
+ * would only occupy one line if it started at the
+ * beginning of a line, then it is printed at the
+ * beginning of the next line.
+ *
+ * multi_new: If an element is continued onto additional lines then
+ * should the following element begin on the next line? The
+ * default is to start the next element on the same line
+ * unless it wouldn't fit.
+ *
+ * indentlevel: a string that shows how far to indent if extra spacing
+ * is needed. dumper uses it.
*/
- int line_ncols; /*columns of output */
- size_t line_per_line; /*max elements per line */
- const char *line_pre; /*prefix at front of each line */
- const char *line_1st; /*alternate pre. on first line */
- const char *line_cont; /*alternate pre. on continuation*/
- const char *line_suf; /*string to append to each line */
- const char *line_sep; /*separates lines */
- int line_multi_new; /*split multi-line outputs? */
- const char *line_indent; /*for extra identation if we need it*/
+ int line_ncols; /*columns of output */
+ size_t line_per_line; /*max elements per line */
+ const char *line_pre; /*prefix at front of each line */
+ const char *line_1st; /*alternate pre. on first line */
+ const char *line_cont; /*alternate pre. on continuation*/
+ const char *line_suf; /*string to append to each line */
+ const char *line_sep; /*separates lines */
+ int line_multi_new; /*split multi-line outputs? */
+ const char *line_indent; /*for extra identation if we need it*/
- int skip_first; /*used to skip the first set of checks for line length*/
+ /*used to skip the first set of checks for line length*/
+ int skip_first;
- int obj_hidefileno; /*flag used to hide or show the file number for obj refs*/
- const char *obj_format; /*string used to format the output for the obje refs*/
+ /*flag used to hide or show the file number for obj refs*/
+ int obj_hidefileno;
- int dset_hidefileno;/*flag used to hide or show the file number for dataset regions*/
- const char *dset_format; /*string used to format the output for the dataset regions*/
+ /*string used to format the output for the obje refs*/
+ const char *obj_format;
- const char *dset_blockformat_pre;
- const char *dset_ptformat_pre;
- const char *dset_ptformat;
+ /*flag used to hide or show the file number for dataset regions*/
+ int dset_hidefileno;
+ /*string used to format the output for the dataset regions*/
+ const char *dset_format;
+ const char *dset_blockformat_pre;
+ const char *dset_ptformat_pre;
+ const char *dset_ptformat;
} h5dump_t;
typedef struct dump_header{
- const char *name;
- const char *filebegin;
- const char *fileend;
- const char *bootblockbegin;
- const char *bootblockend;
- const char *groupbegin;
- const char *groupend;
- const char *datasetbegin;
- const char *datasetend;
- const char *attributebegin;
- const char *attributeend;
- const char *datatypebegin;
- const char *datatypeend;
- const char *dataspacebegin;
- const char *dataspaceend;
- const char *databegin;
- const char *dataend;
- const char *softlinkbegin;
- const char *softlinkend;
-
- const char *fileblockbegin;
- const char *fileblockend;
- const char *bootblockblockbegin;
- const char *bootblockblockend;
- const char *groupblockbegin;
- const char *groupblockend;
- const char *datasetblockbegin;
- const char *datasetblockend;
- const char *attributeblockbegin;
- const char *attributeblockend;
- const char *datatypeblockbegin;
- const char *datatypeblockend;
- const char *dataspaceblockbegin;
- const char *dataspaceblockend;
- const char *datablockbegin;
- const char *datablockend;
- const char *softlinkblockbegin;
- const char *softlinkblockend;
- const char *strblockbegin;
- const char *strblockend;
- const char *enumblockbegin;
- const char *enumblockend;
-
- const char *dataspacedescriptionbegin;
- const char *dataspacedescriptionend;
- const char *dataspacedimbegin;
- const char *dataspacedimend;
+ const char *name;
+ const char *filebegin;
+ const char *fileend;
+ const char *bootblockbegin;
+ const char *bootblockend;
+ const char *groupbegin;
+ const char *groupend;
+ const char *datasetbegin;
+ const char *datasetend;
+ const char *attributebegin;
+ const char *attributeend;
+ const char *datatypebegin;
+ const char *datatypeend;
+ const char *dataspacebegin;
+ const char *dataspaceend;
+ const char *databegin;
+ const char *dataend;
+ const char *softlinkbegin;
+ const char *softlinkend;
+
+ const char *fileblockbegin;
+ const char *fileblockend;
+ const char *bootblockblockbegin;
+ const char *bootblockblockend;
+ const char *groupblockbegin;
+ const char *groupblockend;
+ const char *datasetblockbegin;
+ const char *datasetblockend;
+ const char *attributeblockbegin;
+ const char *attributeblockend;
+ const char *datatypeblockbegin;
+ const char *datatypeblockend;
+ const char *dataspaceblockbegin;
+ const char *dataspaceblockend;
+ const char *datablockbegin;
+ const char *datablockend;
+ const char *softlinkblockbegin;
+ const char *softlinkblockend;
+ const char *strblockbegin;
+ const char *strblockend;
+ const char *enumblockbegin;
+ const char *enumblockend;
+
+ const char *dataspacedescriptionbegin;
+ const char *dataspacedescriptionend;
+ const char *dataspacedimbegin;
+ const char *dataspacedimend;
} dump_header;
hid_t h5dump_fixtype(hid_t f_type);
-int h5dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, hid_t p_typ,int indentlevel);
+int h5dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, hid_t p_typ,
+ int indentlevel);
int h5dump_mem(FILE *stream, const h5dump_t *info, hid_t type, hid_t space,
- void *mem, int indentlevel);
+ void *mem, int indentlevel);
hid_t h5dump_fopen(const char *fname, char *drivername, size_t drivername_len);
@@ -351,34 +358,33 @@ typedef enum {
/*struct taken from the dumper. needed in table struct*/
-typedef struct obj_t{
-unsigned long objno[2];
-char objname[1024];
-int displayed;
-int recorded;
-int objflag;
+typedef struct obj_t {
+ unsigned long objno[2];
+ char objname[1024];
+ int displayed;
+ int recorded;
+ int objflag;
} obj_t;
/*struct for the tables that the find_objs function uses*/
-
-typedef struct table_t{
-int size;
-int nobjs;
-obj_t *objs;
+typedef struct table_t {
+ int size;
+ int nobjs;
+ obj_t *objs;
} table_t;
/*this struct stores the information that is passed to the find_objs function*/
typedef struct find_objs_t {
- int prefix_len;
- char *prefix;
- unsigned int threshold; /* should be 0 or 1 */
- table_t *group_table;
- table_t *type_table;
- table_t *dset_table;
- int status;
+ int prefix_len;
+ char *prefix;
+ unsigned int threshold; /* should be 0 or 1 */
+ table_t *group_table;
+ table_t *type_table;
+ table_t *dset_table;
+ int status;
} find_objs_t;
herr_t find_objs(hid_t group, const char *name, void *op_data);
@@ -386,53 +392,48 @@ int search_obj (table_t *temp, unsigned long *);
void init_table(table_t **temp);
void init_prefix(char **temp, int);
-/*
- taken from h5dump.h
- */
-
+/* taken from h5dump.h */
#define ATTRIBUTE_DATA 0
-#define DATASET_DATA 1
+#define DATASET_DATA 1
#define ENUM_DATA 2
-
#define COL 3
extern int indent;
extern void indentation(int);
extern int nCols;
-extern FILE *rawdatastream; /* output stream for raw data */
+extern FILE *rawdatastream; /* output stream for raw data */
/* taken from h5dump.h*/
-#define BOOT_BLOCK "BOOT_BLOCK"
-#define GROUPNAME "GROUP"
-#define DATASET "DATASET"
-#define ATTRIBUTE "ATTRIBUTE"
-#define DATATYPE "DATATYPE"
-#define DATASPACE "DATASPACE"
-#define DATA "DATA"
-#define SCALAR "SCALAR"
-#define SIMPLE "SIMPLE"
-#define COMPLEX "COMPLEX"
-#define STORAGELAYOUT "STORAGELAYOUT"
-#define COMPRESSION "COMPRESSION"
-#define EXTERNAL "EXTERNAL"
-#define SOFTLINK "SOFTLINK"
-#define HARDLINK "HARDLINK"
-#define NLINK "NLINK"
-#define FILENO "FILENO"
-#define OBJNO "OBJNO"
-#define STRSIZE "STRSIZE"
-#define STRPAD "STRPAD"
-#define CSET "CSET"
-#define CTYPE "CTYPE"
-#define CONCATENATOR "//"
-#define DATASET "DATASET"
-#define OBJID "OBJECTID"
-#define BEGIN "{"
-#define END "}"
+#define BOOT_BLOCK "BOOT_BLOCK"
+#define GROUPNAME "GROUP"
+#define DATASET "DATASET"
+#define ATTRIBUTE "ATTRIBUTE"
+#define DATATYPE "DATATYPE"
+#define DATASPACE "DATASPACE"
+#define DATA "DATA"
+#define SCALAR "SCALAR"
+#define SIMPLE "SIMPLE"
+#define COMPLEX "COMPLEX"
+#define STORAGELAYOUT "STORAGELAYOUT"
+#define COMPRESSION "COMPRESSION"
+#define EXTERNAL "EXTERNAL"
+#define SOFTLINK "SOFTLINK"
+#define HARDLINK "HARDLINK"
+#define NLINK "NLINK"
+#define FILENO "FILENO"
+#define OBJNO "OBJNO"
+#define STRSIZE "STRSIZE"
+#define STRPAD "STRPAD"
+#define CSET "CSET"
+#define CTYPE "CTYPE"
+#define CONCATENATOR "//"
+#define DATASET "DATASET"
+#define OBJID "OBJECTID"
+#define BEGIN "{"
+#define END "}"
#endif
-
/* Definitions of useful routines */
void print_version(const char *program_name);