coan 4.2.4
#include "canonical_string.h"
#include "integer_constant.h"
Include dependency graph for eval_result.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  eval_result

Defines

#define EVAL_RESULT_INITOR   {0,0,0,INT_SPEC_INITOR,EVAL_PENDING,0}
#define SET_FLAGS(eval_result, bits)   ((eval_result).flags |= (bits))
#define SET_FLAGS_IF(cond, eval_result, bits)   (void)((cond) ? SET_FLAGS(eval_result,bits) : 0)
#define CLEAR_FLAGS(eval_result, bits)   ((eval_result).flags &= ~(bits))
#define CLEAR_FLAGS_IF(cond, eval_result, bits)   (void)((cond) ? CLEAR_FLAGS(eval_result,bits) : 0)
#define FLIP_FLAGS(eval_result, bits)   ((eval_result).flags ^= (bits))
#define FLAGS_IN(eval_result, bits)   ((eval_result).flags & (bits))
#define AFFIRM_FLAGS(eval_result, bits)   (((eval_result).flags & (bits)) == (bits))
#define DENY_FLAGS(eval_result, bits)   (((eval_result).flags & (bits)) == 0)
#define IS_TRUE(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_TRUE)
#define IS_FALSE(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_FALSE)
#define IS_CONST(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_CONST)
#define INT_WIDTH(eval_result)   ((eval_result).value.width)
#define UNRESOLVED(eval_result)   DENY_FLAGS(eval_result,EVAL_FALSE | EVAL_TRUE)
#define RESOLVED(eval_result)   !UNRESOLVED(eval_result)
#define SET_REPORTED(eval_result)   SET_FLAGS(eval_result,EVAL_REPORTED_SYM)
#define REPORTED(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_REPORTED_SYM)
#define DEL_PAREN(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_DEL_PAREN)
#define SET_DEL_PAREN(eval_result)   SET_FLAGS(eval_result,EVAL_DEL_PAREN)
#define SET_KEEP_PAREN(eval_result)   CLEAR_FLAGS(eval_result,EVAL_DEL_PAREN)
#define KEEP(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_KEEP)
#define SET_KEEP(eval_result)   SET_FLAGS(eval_result,EVAL_KEEP)
#define KEEP_CONST(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_KEEP_CONST)
#define SET_KEEP_CONST(eval_result)   SET_FLAGS(eval_result,EVAL_KEEP_CONST)
#define SET_CONST(eval_result)   SET_FLAGS(eval_result,EVAL_CONST)
#define SET_ILLEGAL(eval_result)   SET_FLAGS(eval_result,EVAL_ILLEGAL)
#define SET_LEGAL(eval_result)   CLEAR_FLAGS(eval_result,EVAL_ILLEGAL)
#define ILLEGAL(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_ILLEGAL)
#define LEGAL(eval_result)   !ILLEGAL(eval_result)
#define SET_UNRESOLVED(eval_result)   CLEAR_FLAGS(eval_result,EVAL_TRUE | EVAL_FALSE)
#define SET_INSOURCE_SYM(eval_result)   SET_FLAGS(eval_result,EVAL_INSOURCE_SYM)
#define INSOURCE_SYM(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_INSOURCE_SYM)
#define SET_GLOBAL_SYM(eval_result)   SET_FLAGS(eval_result,EVAL_GLOBAL_SYM)
#define GLOBAL_SYM(eval_result)   AFFIRM_FLAGS(eval_result,EVAL_GLOBAL_SYM)

Typedefs

typedef struct eval_result eval_result_t

Enumerations

enum  eval_flags {
  EVAL_PENDING, EVAL_CONST = 1, EVAL_KEEP = 2, EVAL_KEEP_CONST = EVAL_CONST | EVAL_KEEP,
  EVAL_DEL_PAREN = 4, EVAL_TRUE = 8, EVAL_FALSE = 16, EVAL_ILLEGAL = 32,
  EVAL_INSOURCE_SYM = 64, EVAL_GLOBAL_SYM = 128, EVAL_REPORTED_SYM = 256, EVAL_RESOLVED = EVAL_TRUE | EVAL_FALSE,
  EVAL_PARSED = EVAL_RESOLVED | EVAL_KEEP
}
enum  line_type_t {
  LT_IF, LT_TRUE, LT_FALSE, LT_ELIF,
  LT_ELTRUE, LT_ELFALSE, LT_ELSE, LT_ENDIF,
  LT_PLAIN, LT_EOF, LT_DIRECTIVE_DROP, LT_DIRECTIVE_KEEP,
  LT_SENTINEL
}

Functions

void eval_result_set_value (eval_result_t *result, int_spec_t const *int_spec)
void eval_result_clear (eval_result_t *result)
bool eval_result_parsed (eval_result_t *result)

Variables

int_spec_t const int_spec_false
int_spec_t const int_spec_true

Detailed Description

This file defines a structure to represent the result of evaluating an expression, and symbolic constants to represent attributes of such results.

Definition in file eval_result.h.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines