#include "sqlite/sqliteInt.h"
struct __db_schema; typedef struct __db_schema DB_SCHEMA;
struct __parse_progress; typedef struct __parse_progress PARSE_PROGRESS;
struct __environment_info; typedef struct __environment_info ENVIRONMENT_INFO;
struct __db_entity; typedef struct __db_entity ENTITY;
struct __db_attribute; typedef struct __db_attribute ATTRIBUTE;
struct __db_attr_type; typedef struct __db_attr_type ATTR_TYPE;
struct __db_index; typedef struct __db_index DB_INDEX;
struct __environment_info {
char *name;
char *uppercase_name;
int line_number;
unsigned long int cache_size;
int transactional;
};
struct __db_schema {
ENVIRONMENT_INFO environment;
ENTITY *entities_head;
ENTITY *entities_tail;
DB_INDEX *indexes_head;
DB_INDEX *indexes_tail;
};
struct __db_entity {
ENTITY *next;
char *name;
ATTRIBUTE *attributes_head;
ATTRIBUTE *attributes_tail;
ATTRIBUTE *primary_key;
char *serialized_length_name;
int line_number;
char *dbtype;
int transactional;
};
struct __db_attribute {
ATTRIBUTE *next;
char *name;
ATTR_TYPE *type;
int is_autoincrement;
char *array_dim_name;
char *decl_name;
};
struct __db_attr_type {
char *sql_token;
char *c_type;
int array_dim;
int is_array;
int is_string;
};
struct __db_index {
DB_INDEX *next;
char *name;
ENTITY *primary;
ATTRIBUTE *attribute;
int line_number;
char *dbtype;
};
enum parse_event {
PE_NONE = 0, PE_ENVIRONMENT =1, PE_ENTITY = 2,
PE_ATTRIBUTE = 3, PE_INDEX = 4
};
struct __parse_progress {
enum parse_event last_event;
ENTITY *last_entity;
ATTRIBUTE *last_attribute;
DB_INDEX *last_index;
};
extern DB_SCHEMA the_schema;
extern PARSE_PROGRESS the_parse_progress;
extern int line_number;
extern int debug;
extern int txnflag;
extern char *me;
#define MAX_SQL_LENGTH 1000000000
#define KILO (1024)
#define MEGA (KILO * KILO)
#define GIGA (MEGA * KILO)
#define TERA (GIGA * KILO)
#if defined (_WIN32) && !defined(__MINGW_H)
#define snprintf sprintf_s
#define strdup _strdup
#define strconcat(dest, size, src) strcat_s(dest, size, src)
#define strnconcat(dest, size, src, count) strncat_s(dest, size, src, count)
#else
#define strconcat(dest, size, src) strcat(dest, src)
#define strnconcat(dest, size, src, count) strncat(dest, src, count)
#endif
#define strcasecmp sqlite3StrICmp
extern void generate(FILE *, FILE *, FILE *, FILE *, char *);
extern void generate_test(FILE *, char *);
extern int do_parse(const char *, char **);
extern void parse_hint_comment(Token *);
extern void setString(char **, ...);
extern void preparser(void *, int,Token, Parse *);
extern void bdb_create_database(Token *, Parse *);
#define COMPQUIET(n, v) do { \
(n) = (v); \
(n) = (n); \
} while (0)