diff options
Diffstat (limited to 'tools/d2c/conv.h')
-rw-r--r-- | tools/d2c/conv.h | 98 |
1 files changed, 16 insertions, 82 deletions
diff --git a/tools/d2c/conv.h b/tools/d2c/conv.h index acf007b..85c7578 100644 --- a/tools/d2c/conv.h +++ b/tools/d2c/conv.h @@ -25,88 +25,12 @@ #define _TOOLS_CONV_H -#include "bits.h" -#include "pproc.h" - - - - -/* Liste des fonctions de conversions présentes */ -typedef struct _conv_list conv_list; - - - - - - - -/* Types d'opérations unaires */ -typedef enum _ConvUnaryOperation -{ - CUO_NOT, /* NOT (booléen) */ - - CUO_COUNT - -} ConvUnaryOperation; - - - -/* Types d'opérations binaires */ -typedef enum _ConvBinaryOperation -{ - CBO_EOR, /* Ou exclusif (booléen) */ - - CBO_COUNT - -} ConvBinaryOperation; - - -/* Représentation d'une expression de conversion */ -typedef struct _conv_expr_t conv_expr_t; - - - -/* Référence une variable en tant qu'expression de conversion. */ -conv_expr_t *build_conv_expr_from_name(char *); +#include <stdbool.h> -/* Conserve une valeur en tant qu'expression de conversion. */ -conv_expr_t *build_conv_expr_from_number(unsigned long ); - -/* Construit une base d'expression de conversion composée. */ -conv_expr_t *build_composed_conv_expr(char *, char *); - -/* Etend une base d'expression de conversion composée. */ -conv_expr_t *extend_composed_conv_expr(conv_expr_t *, char *); - -/* Traduit une opération unaire sur expression de conversion. */ -conv_expr_t *build_unary_conv_expr(conv_expr_t *, ConvUnaryOperation); - -/* Traduit une opération binaire sur expression de conversion. */ -conv_expr_t *build_binary_conv_expr(conv_expr_t *, conv_expr_t *, ConvBinaryOperation); - - - - - - - - -/* ------------------------ LISTES D'ARGUMENTS DE CONVERSION ------------------------ */ - - -/* Liste d'expressions utilisées en arguments de conversion */ -typedef struct _conv_arg_list_t conv_arg_list_t; - - -/* Crée une liste d'arguments de conversion. */ -conv_arg_list_t *build_conv_arg_list(conv_expr_t *); - -/* Libère la mémoire occupée par une liste d'expressions. */ -void delete_conv_arg_list(conv_arg_list_t *); - -/* Ajoute un élément à une liste d'arguments de conversion. */ -conv_arg_list_t *extend_conv_arg_list(conv_arg_list_t *, conv_expr_t *); +#include "args.h" +#include "bits.h" +#include "pproc.h" @@ -118,10 +42,10 @@ typedef struct _conv_func conv_func; /* Définit une conversion à partir d'une simple expression. */ -conv_func *make_conv_from_expr(char *, conv_expr_t *); +conv_func *make_conv_from_expr(char *, arg_expr_t *); /* Définit une conversion à partir d'une function à appeler. */ -conv_func *make_conv_from_func(char *, char *, conv_arg_list_t *); +conv_func *make_conv_from_func(char *, char *, arg_list_t *); /* Libère de la mémoire une conversion enregistrée. */ void delete_conv_func(conv_func *); @@ -129,6 +53,12 @@ void delete_conv_func(conv_func *); /* Indique la variable de destination d'une conversion. */ const char *get_conv_dest_name(const conv_func *); +/* Indique la nature d'une conversion : fonction ou expression ? */ +bool is_conv_func_expression(const conv_func *); + +/* Détermine la taille en bits du résultat d'une fonction. */ +bool compute_conv_func_size(const conv_func *, const coding_bits *, const conv_list *, unsigned int *); + /* Marque les champs utilisés par une fonction de conversion. */ bool mark_conv_func(conv_func *, const coding_bits *, const conv_list *); @@ -143,6 +73,10 @@ bool define_conv_func(conv_func *, bool, bool, int, const char *, const coding_b /* ---------------------------- ENSEMBLES DE CONVERSIONS ---------------------------- */ +/* Liste des fonctions de conversions présentes */ +typedef struct _conv_list conv_list; + + /* Crée un nouvelle liste vierge de fonctions de conversion. */ conv_list *create_conv_list(void); |