blob: 94081bc0448fb53572d9349b22620ab5e16bb61b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
/*
* See the file LICENSE for redistribution information.
*
* Copyright (c) 1996, 2015 Oracle and/or its affiliates. All rights reserved.
*
*/
/*
* This include file contains declarations shared between the code
* generation modules.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <stdarg.h>
#include "db_sql_codegen.h"
/* Function pointer types to be invoked by the entity and attribute iterators */
typedef void (*enter_entity_operation)(ENTITY *e);
typedef void (*exit_entity_operation)(ENTITY *e);
typedef void (*attribute_operation)(ENTITY *e, ATTRIBUTE *a,
int first, int last);
typedef void (*index_operation)(DB_INDEX *idx);
/* The entity and attribute iterator function prototypes */
void iterate_over_entities(enter_entity_operation e_enter_op,
exit_entity_operation e_exit_op,
attribute_operation a_op);
void iterate_over_attributes(ENTITY *e, attribute_operation a_op);
void iterate_over_indexes(index_operation i_op);
/* Other common utilities used by the code generators */
char *prepare_string(const char *in, int indent_level, int is_comment);
int is_array(ATTR_TYPE *t);
int is_string(ATTR_TYPE *t);
char *custom_comparator_for_type(ATTR_TYPE *t);
char *array_dim_name(ENTITY *e, ATTRIBUTE *a);
char *decl_name(ENTITY *e, ATTRIBUTE *a);
char *serialized_length_name(ENTITY *e);
char *upcase_env_name(ENVIRONMENT_INFO *envp);
#define INDENT_MULTIPLIER 1 /* How many chars per indent level */
#define INDENT_CHAR '\t' /* Char to use for indenting */
|