Blame isl-0.16.1/isl_stream_private.h
|
Packit |
fb9d21 |
#include <isl_int.h>
|
|
Packit |
fb9d21 |
#include <isl/stream.h>
|
|
Packit |
fb9d21 |
#include <isl_yaml.h>
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
struct isl_token {
|
|
Packit |
fb9d21 |
int type;
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
unsigned int on_new_line : 1;
|
|
Packit |
fb9d21 |
unsigned is_keyword : 1;
|
|
Packit |
fb9d21 |
int line;
|
|
Packit |
fb9d21 |
int col;
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
union {
|
|
Packit |
fb9d21 |
isl_int v;
|
|
Packit |
fb9d21 |
char *s;
|
|
Packit |
fb9d21 |
isl_map *map;
|
|
Packit |
fb9d21 |
isl_pw_aff *pwaff;
|
|
Packit |
fb9d21 |
} u;
|
|
Packit |
fb9d21 |
};
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
struct isl_token *isl_token_new(isl_ctx *ctx,
|
|
Packit |
fb9d21 |
int line, int col, unsigned on_new_line);
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
/* An input stream that may be either a file or a string.
|
|
Packit |
fb9d21 |
*
|
|
Packit |
fb9d21 |
* line and col are the line and column number of the next character (1-based).
|
|
Packit |
fb9d21 |
* start_line and start_col are set by isl_stream_getc to point
|
|
Packit |
fb9d21 |
* to the position of the returned character.
|
|
Packit |
fb9d21 |
* last_line is the line number of the previous token.
|
|
Packit |
fb9d21 |
*
|
|
Packit |
fb9d21 |
* yaml_state and yaml_indent keep track of the currently active YAML
|
|
Packit |
fb9d21 |
* elements. yaml_size is the size of these arrays, while yaml_depth
|
|
Packit |
fb9d21 |
* is the number of elements currently in use.
|
|
Packit |
fb9d21 |
* yaml_state and yaml_indent may be NULL if no YAML parsing is being
|
|
Packit |
fb9d21 |
* performed.
|
|
Packit |
fb9d21 |
* yaml_state keeps track of what is expected next at each level.
|
|
Packit |
fb9d21 |
* yaml_indent keeps track of the indentation at each level, with
|
|
Packit |
fb9d21 |
* ISL_YAML_INDENT_FLOW meaning that the element is in flow format
|
|
Packit |
fb9d21 |
* (such that the indentation is not relevant).
|
|
Packit |
fb9d21 |
*/
|
|
Packit |
fb9d21 |
struct isl_stream {
|
|
Packit |
fb9d21 |
struct isl_ctx *ctx;
|
|
Packit |
fb9d21 |
FILE *file;
|
|
Packit |
fb9d21 |
const char *str;
|
|
Packit |
fb9d21 |
int line;
|
|
Packit |
fb9d21 |
int col;
|
|
Packit |
fb9d21 |
int start_line;
|
|
Packit |
fb9d21 |
int start_col;
|
|
Packit |
fb9d21 |
int last_line;
|
|
Packit |
fb9d21 |
int eof;
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
char *buffer;
|
|
Packit |
fb9d21 |
size_t size;
|
|
Packit |
fb9d21 |
size_t len;
|
|
Packit |
fb9d21 |
int c;
|
|
Packit |
fb9d21 |
int un[5];
|
|
Packit |
fb9d21 |
int n_un;
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
struct isl_token *tokens[5];
|
|
Packit |
fb9d21 |
int n_token;
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
struct isl_hash_table *keywords;
|
|
Packit |
fb9d21 |
enum isl_token_type next_type;
|
|
Packit |
fb9d21 |
|
|
Packit |
fb9d21 |
int yaml_depth;
|
|
Packit |
fb9d21 |
int yaml_size;
|
|
Packit |
fb9d21 |
enum isl_yaml_state *yaml_state;
|
|
Packit |
fb9d21 |
int *yaml_indent;
|
|
Packit |
fb9d21 |
};
|