diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-04-16 08:25:28 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-04-16 08:25:28 -0400 |
commit | fa6f8a0ee6495cefeabe6b6972b194e7792cc971 (patch) | |
tree | 95883335216bc5abd5e9af024efe2245bcebbc8f | |
parent | add4d50642138cdb302811a4c93ab5628750cf54 (diff) |
-rw-r--r-- | psl.c | 68 |
1 files changed, 67 insertions, 1 deletions
@@ -1,5 +1,6 @@ #include <stdlib.h> #include <stdarg.h> +#include <string.h> #include "psl.h" #define new(t) \ @@ -40,6 +41,7 @@ struct psl_instruction_t struct { + char *name; } label; } u; }; @@ -55,6 +57,38 @@ struct psl_program_t instruction_list_t *instructions; }; +typedef enum +{ + VARIABLE, + IMMEDIATE +} var_type_t; + +typedef enum +{ + UN8, + SP, + DP +} type_t; + +struct psl_var_t +{ + var_type_t var_type; + type_t type; + + union + { + struct + { + char *name; + } variable; + + struct + { + + } immediate; + } u; +}; + psl_program_t * psl_program_create (psl_statement_t *statement) { @@ -143,7 +177,35 @@ run_box (pixman_box32_t *box, switch (instruction->type) { + case TEX: + { + &(instruction->u.tex); + break; + } + + case ADD: + { + + break; + } + + case MAD: + { + + break; + } + + case CMP_LT: + { + break; + } + + case LABEL: + { + + break; + } } } } @@ -174,7 +236,6 @@ psl_program_destroy (psl_program_t *program) psl_var_t * psl_imm_un8 (int value) { - } psl_var_t * @@ -191,7 +252,12 @@ psl_label (const char *name) psl_var_t * psl_var (const char *name) { + psl_var_t *result = new (psl_var_t); + + result->type = VARIABLE; + result->u.variable.name = strdup (name); + return result; } int |