indent, comments, etc

This commit is contained in:
Brian Paul 2006-11-28 15:46:50 +00:00
parent c058f69daa
commit 716091a6a0
2 changed files with 87 additions and 61 deletions

View file

@ -1,6 +1,6 @@
/*
* Mesa 3-D graphics library
* Version: 6.5
* Version: 6.5.2
*
* Copyright (C) 2005-2006 Brian Paul All Rights Reserved.
*
@ -31,68 +31,85 @@
#include "imports.h"
#include "slang_compile.h"
/* slang_operation */
int slang_operation_construct (slang_operation *oper)
/**
* Init a slang_operation object
*/
GLboolean
slang_operation_construct(slang_operation * oper)
{
oper->type = slang_oper_none;
oper->children = NULL;
oper->num_children = 0;
oper->literal = (float) 0;
oper->a_id = SLANG_ATOM_NULL;
oper->locals = (slang_variable_scope *) slang_alloc_malloc (sizeof (slang_variable_scope));
if (oper->locals == NULL)
return 0;
_slang_variable_scope_ctr (oper->locals);
return 1;
oper->type = slang_oper_none;
oper->children = NULL;
oper->num_children = 0;
oper->literal = (float) 0;
oper->a_id = SLANG_ATOM_NULL;
oper->locals =
(slang_variable_scope *)
slang_alloc_malloc(sizeof(slang_variable_scope));
if (oper->locals == NULL)
return GL_FALSE;
_slang_variable_scope_ctr(oper->locals);
return GL_TRUE;
}
void slang_operation_destruct (slang_operation *oper)
void
slang_operation_destruct(slang_operation * oper)
{
unsigned int i;
GLuint i;
for (i = 0; i < oper->num_children; i++)
slang_operation_destruct (oper->children + i);
slang_alloc_free (oper->children);
slang_variable_scope_destruct (oper->locals);
slang_alloc_free (oper->locals);
for (i = 0; i < oper->num_children; i++)
slang_operation_destruct(oper->children + i);
slang_alloc_free(oper->children);
slang_variable_scope_destruct(oper->locals);
slang_alloc_free(oper->locals);
}
int slang_operation_copy (slang_operation *x, const slang_operation *y)
/**
* Recursively copy a slang_operation node.
* \return GL_TRUE for success, GL_FALSE if failure
*/
GLboolean
slang_operation_copy(slang_operation * x, const slang_operation * y)
{
slang_operation z;
unsigned int i;
slang_operation z;
GLuint i;
if (!slang_operation_construct (&z))
return 0;
z.type = y->type;
z.children = (slang_operation *) slang_alloc_malloc (y->num_children * sizeof (slang_operation));
if (z.children == NULL)
{
slang_operation_destruct (&z);
return 0;
}
for (z.num_children = 0; z.num_children < y->num_children; z.num_children++)
if (!slang_operation_construct (&z.children[z.num_children]))
{
slang_operation_destruct (&z);
return 0;
}
for (i = 0; i < z.num_children; i++)
if (!slang_operation_copy (&z.children[i], &y->children[i]))
{
slang_operation_destruct (&z);
return 0;
}
z.literal = y->literal;
z.a_id = y->a_id;
if (!slang_variable_scope_copy (z.locals, y->locals))
{
slang_operation_destruct (&z);
return 0;
}
slang_operation_destruct (x);
*x = z;
return 1;
if (!slang_operation_construct(&z))
return GL_FALSE;
z.type = y->type;
z.children = (slang_operation *)
slang_alloc_malloc(y->num_children * sizeof(slang_operation));
if (z.children == NULL) {
slang_operation_destruct(&z);
return GL_FALSE;
}
for (z.num_children = 0; z.num_children < y->num_children;
z.num_children++) {
if (!slang_operation_construct(&z.children[z.num_children])) {
slang_operation_destruct(&z);
return GL_FALSE;
}
}
for (i = 0; i < z.num_children; i++) {
if (!slang_operation_copy(&z.children[i], &y->children[i])) {
slang_operation_destruct(&z);
return GL_FALSE;
}
}
z.literal = y->literal;
z.a_id = y->a_id;
if (!slang_variable_scope_copy(z.locals, y->locals)) {
slang_operation_destruct(&z);
return GL_FALSE;
}
slang_operation_destruct(x);
*x = z;
return GL_TRUE;
}
slang_operation *
slang_operation_new(GLuint count)
{
return (slang_operation *) _mesa_calloc(count * sizeof(slang_operation));
}

View file

@ -32,7 +32,7 @@ extern "C" {
/**
* Types of slang operations.
* These are the basic intermediate code representations.
* These are the types of the AST (abstract syntax tree) nodes.
* [foo] indicates a sub-tree or reference to another type of node
*/
typedef enum slang_operation_type_
@ -105,6 +105,7 @@ typedef enum slang_operation_type_
/**
* A slang_operation is basically a compiled instruction (such as assignment,
* a while-loop, a conditional, a multiply, a function call, etc).
* The AST (abstract syntax tree) is built from these nodes.
* NOTE: This structure could have been implemented as a union of simpler
* structs which would correspond to the operation types above.
*/
@ -112,16 +113,24 @@ typedef struct slang_operation_
{
slang_operation_type type;
struct slang_operation_ *children;
unsigned int num_children;
float literal; /**< Used for float, int and bool values */
slang_atom a_id; /**< type: asm, identifier, call, field */
GLuint num_children;
GLfloat literal; /**< Used for float, int and bool values */
slang_atom a_id; /**< type: asm, identifier, call, field */
slang_variable_scope *locals; /**< local vars for scope */
} slang_operation;
extern int slang_operation_construct(slang_operation *);
extern void slang_operation_destruct(slang_operation *);
extern int slang_operation_copy(slang_operation *, const slang_operation *);
extern GLboolean
slang_operation_construct(slang_operation *);
extern void
slang_operation_destruct(slang_operation *);
extern GLboolean
slang_operation_copy(slang_operation *, const slang_operation *);
extern slang_operation *
slang_operation_new(GLuint count);
#ifdef __cplusplus