summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2010-04-16 08:25:28 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2010-04-16 08:25:28 -0400
commitfa6f8a0ee6495cefeabe6b6972b194e7792cc971 (patch)
tree95883335216bc5abd5e9af024efe2245bcebbc8f
parentadd4d50642138cdb302811a4c93ab5628750cf54 (diff)
Add varsHEADmaster
-rw-r--r--psl.c68
1 files changed, 67 insertions, 1 deletions
diff --git a/psl.c b/psl.c
index f3eafcb..5dbd2cf 100644
--- a/psl.c
+++ b/psl.c
@@ -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