Browse Source

fix a bunch of warnings

tags/vtx-0-2-21112003-freeze
Brian Paul 23 years ago
parent
commit
2c50b922d6
1 changed files with 51 additions and 49 deletions
  1. 51
    49
      src/mesa/main/arbvertparse.c

+ 51
- 49
src/mesa/main/arbvertparse.c View File

@@ -22,6 +22,12 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

/**
* \file arbvertparse.c
* ARB_vertex_program parser.
* \author Karl Rasche
*/

#include "glheader.h"
#include "context.h"
#include "hash.h"
@@ -271,7 +277,7 @@ typedef struct st_prod_table
{
GLint lhs;
GLint rhs[4];
GLubyte *key[4];
char *key[4];
}
prod_table;

@@ -295,7 +301,7 @@ typedef struct st_look_ahead_table
{
GLint lhs;
GLint la;
GLubyte *la_kw;
char *la_kw;
GLint prod_idx;
}
look_ahead_table;
@@ -305,7 +311,7 @@ look_ahead_table;
*/
typedef struct st_parse_state
{
GLubyte *str;
char *str;
GLint len;

/* lex stuff ------ */
@@ -326,11 +332,11 @@ typedef struct st_parse_state
parse_state;

/* local prototypes */
static GLint float_table_add(float_table * tab, GLubyte * str, GLint start,
static GLint float_table_add(float_table * tab, const char *str, GLint start,
GLint end);
static GLint int_table_add(int_table * tab, GLubyte * str, GLint start,
static GLint int_table_add(int_table * tab, const char *str, GLint start,
GLint end);
static GLint id_table_add(id_table * tab, GLubyte * str, GLint start,
static GLint id_table_add(id_table * tab, const char *str, GLint start,
GLint end);
static void parse_tree_free_children(parse_tree_node * ptn);

@@ -3251,14 +3257,14 @@ get_next_token(parse_state * s, GLint * token, GLint * token_attr)
ADV_TO_STATE(STATE_N3);
}
else {
//ADV_AND_FINISH(PERIOD_TOKEN);
/*ADV_AND_FINISH(PERIOD_TOKEN); */
FINISH(PERIOD_TOKEN);
}
break;

case STATE_N2:
#if 1
//ADV_AND_FINISH(DOTDOT_TOKEN);
/*ADV_AND_FINISH(DOTDOT_TOKEN);*/
FINISH(DOTDOT_TOKEN);
#else
FINISH(PERIOD_TOKEN);
@@ -3282,7 +3288,7 @@ get_next_token(parse_state * s, GLint * token, GLint * token_attr)
else {
*token_attr =
float_table_add(&s->floats, s->str, s->start_pos, s->curr_pos);
//ADV_AND_FINISH(FLOAT_TOKEN);
/*ADV_AND_FINISH(FLOAT_TOKEN);*/
FINISH(FLOAT_TOKEN);
}
break;
@@ -3300,7 +3306,7 @@ get_next_token(parse_state * s, GLint * token, GLint * token_attr)
else {
*token_attr =
int_table_add(&s->ints, s->str, s->start_pos, s->curr_pos);
//ADV_AND_FINISH(INTEGER_TOKEN);
/*ADV_AND_FINISH(INTEGER_TOKEN);*/
FINISH(INTEGER_TOKEN);
}
break;
@@ -3324,7 +3330,7 @@ get_next_token(parse_state * s, GLint * token, GLint * token_attr)
else {
*token_attr =
float_table_add(&s->floats, s->str, s->start_pos, s->curr_pos);
//ADV_AND_FINISH(FLOAT_TOKEN);
/*ADV_AND_FINISH(FLOAT_TOKEN);*/
FINISH(FLOAT_TOKEN);
}
break;
@@ -3592,7 +3598,7 @@ parse_state_init(GLubyte * str, GLint len)
{
parse_state *s = (parse_state *) _mesa_malloc(sizeof(parse_state));

s->str = _mesa_strdup(str);
s->str = _mesa_strdup((char *) str);
s->len = len;
s->curr_pos = 0;
s->start_pos = 0;
@@ -3967,7 +3973,7 @@ binding_table_add(binding_table * tab, GLint type, GLint offset, GLint row,

tab->type[key] = type;
tab->offset[key] = offset;
tab->row[key] = row; //key;
tab->row[key] = row; /*key;*/
tab->num_rows[key] = nrows;
tab->reg_num[key] = 0;
_mesa_memcpy(tab->consts[key], values, 4 * sizeof(GLfloat));
@@ -3991,7 +3997,7 @@ binding_table_add(binding_table * tab, GLint type, GLint offset, GLint row,
* \return The index of the float, after we insert it, in the float table
*/
static GLint
float_table_add(float_table * tab, GLubyte * str, GLint start, GLint end)
float_table_add(float_table *tab, const char *str, GLint start, GLint end)
{
GLint key, a;
GLubyte *newstr;
@@ -4004,7 +4010,7 @@ float_table_add(float_table * tab, GLubyte * str, GLint start, GLint end)

/* test for existance */
for (a = 0; a < tab->len; a++) {
if (tab->data[a] == atof(newstr)) {
if (tab->data[a] == atof((char *) newstr)) {
_mesa_free(newstr);
return a;
}
@@ -4019,7 +4025,7 @@ float_table_add(float_table * tab, GLubyte * str, GLint start, GLint end)
(tab->len + 1) * sizeof(GLdouble));
}

tab->data[key] = atof(newstr);
tab->data[key] = atof((char *) newstr);
tab->len++;

_mesa_free(newstr);
@@ -4041,14 +4047,14 @@ float_table_add(float_table * tab, GLubyte * str, GLint start, GLint end)
* \return The index of the int, after we insert it, in the int table
*/
static GLint
int_table_add(int_table * tab, GLubyte * str, GLint start, GLint end)
int_table_add(int_table * tab, const char *str, GLint start, GLint end)
{
GLint key, a;
GLubyte *newstr;
char *newstr;

key = tab->len;

newstr = (GLubyte *) _mesa_malloc(end - start + 2);
newstr = (char *) _mesa_malloc(end - start + 2);
_mesa_memset(newstr, 0, end - start + 2);
_mesa_memcpy(newstr, str + start, end - start);

@@ -4096,7 +4102,7 @@ int_table_add(int_table * tab, GLubyte * str, GLint start, GLint end)
* in the table, and it has been initialized to type ALIAS
*/
static GLint
id_table_add(id_table * tab, GLubyte * str, GLint start, GLint end)
id_table_add(id_table * tab, const char * str, GLint start, GLint end)
{
GLint key, a;
GLubyte *newstr;
@@ -4120,7 +4126,7 @@ id_table_add(id_table * tab, GLubyte * str, GLint start, GLint end)
(tab->len + 1) * sizeof(GLint));
}

//tab->type[key] = TYPE_NONE;
/*tab->type[key] = TYPE_NONE;*/

newstr = (GLubyte *) _mesa_malloc((end - start + 2) * sizeof(GLubyte));
_mesa_memset(newstr, 0, end - start + 2);
@@ -4128,7 +4134,7 @@ id_table_add(id_table * tab, GLubyte * str, GLint start, GLint end)

for (a = 0; a < tab->len; a++) {
/* aha! we found it in the table */
if (!_mesa_strcmp(tab->data[a], newstr)) {
if (!_mesa_strcmp((char *) tab->data[a], (char *) newstr)) {
_mesa_free(newstr);

key = a;
@@ -4151,7 +4157,7 @@ id_table_add(id_table * tab, GLubyte * str, GLint start, GLint end)
return key;
}

//#define SHOW_STEPS 1
/*#define SHOW_STEPS 1*/


/**
@@ -4173,7 +4179,7 @@ apply_production(parse_state * s, int num)
parse_tree_node *ptn;
parse_tree_node *pt_ptr_new[4];

_stack_pop(s, &stack_tok, &stack_tok_attr, &ptn);
(void) _stack_pop(s, &stack_tok, &stack_tok_attr, &ptn);
/*printf("apply prod %d\n", num); */

ptn->prod_applied = num;
@@ -4188,19 +4194,16 @@ apply_production(parse_state * s, int num)
* in the production table into an entry in the approprate symbol table
*/
if (tok == ID_TOKEN) {
str_key =
id_table_add(&s->idents, ptab[num].key[a], 0,
strlen(ptab[num].key[a]));
str_key = id_table_add(&s->idents, ptab[num].key[a], 0,
_mesa_strlen(ptab[num].key[a]));
}
else if (tok == INTEGER_TOKEN) {
str_key =
int_table_add(&s->ints, ptab[num].key[a], 0,
strlen(ptab[num].key[a]));
str_key = int_table_add(&s->ints, ptab[num].key[a], 0,
_mesa_strlen(ptab[num].key[a]));
}
else if (tok == FLOAT_TOKEN) {
str_key =
float_table_add(&s->floats, ptab[num].key[a], 0,
strlen(ptab[num].key[a]));
str_key = float_table_add(&s->floats, ptab[num].key[a], 0,
_mesa_strlen(ptab[num].key[a]));
}

/* "-1" is a wildcard flag, accept any id/float/int */
@@ -4434,8 +4437,8 @@ parse(parse_state * s)
else if (input_tok == PERIOD_TOKEN) {
ret = peek_next_token(s, &peek_tok, &peek_tok_attr, 1);
if ((peek_tok == ID_TOKEN) &&
((!_mesa_strcmp(s->idents.data[peek_tok_attr], "back")) ||
(!_mesa_strcmp(s->idents.data[peek_tok_attr], "front")))) {
((!_mesa_strcmp((char *) s->idents.data[peek_tok_attr], "back")) ||
(!_mesa_strcmp((char *) s->idents.data[peek_tok_attr], "front")))) {
apply_production(s, 297);
}
else {
@@ -4455,8 +4458,8 @@ parse(parse_state * s)
else if (input_tok == PERIOD_TOKEN) {
ret = peek_next_token(s, &peek_tok, &peek_tok_attr, 1);
if ((ret == ARB_VP_SUCESS) && (peek_tok == ID_TOKEN) &&
((!_mesa_strcmp(s->idents.data[peek_tok_attr], "primary")) ||
(!_mesa_strcmp(s->idents.data[peek_tok_attr], "secondary"))))
((!_mesa_strcmp((char *) s->idents.data[peek_tok_attr], "primary")) ||
(!_mesa_strcmp((char *) s->idents.data[peek_tok_attr], "secondary"))))
{
apply_production(s, 301);
}
@@ -4477,8 +4480,8 @@ parse(parse_state * s)
else if (input_tok == PERIOD_TOKEN) {
ret = peek_next_token(s, &peek_tok, &peek_tok_attr, 1);
if ((ret == ARB_VP_SUCESS) && (peek_tok == ID_TOKEN) &&
((!_mesa_strcmp(s->idents.data[peek_tok_attr], "primary")) ||
(!_mesa_strcmp(s->idents.data[peek_tok_attr], "secondary"))))
((!_mesa_strcmp((char *) s->idents.data[peek_tok_attr], "primary")) ||
(!_mesa_strcmp((char *) s->idents.data[peek_tok_attr], "secondary"))))
{
apply_production(s, 306);
}
@@ -4546,10 +4549,10 @@ parse(parse_state * s)

/* productions 318-9 */
case NT_SWIZZLE_SUFFIX2_TOKEN:
if (strlen(s->idents.data[input_tok_attr]) == 1) {
if (_mesa_strlen((char *) s->idents.data[input_tok_attr]) == 1) {
apply_production(s, 318);
}
else if (strlen(s->idents.data[input_tok_attr]) == 4) {
else if (_mesa_strlen((char *) s->idents.data[input_tok_attr]) == 4) {
apply_production(s, 319);
}
else {
@@ -4566,7 +4569,7 @@ parse(parse_state * s)
if (IS_SWZ_CMP(str[0]) && IS_SWZ_CMP(str[1]) && IS_SWZ_CMP(str[2])
&& IS_SWZ_CMP(str[3])) {
_stack_pop(s, &stack_tok, &stack_tok_attr, &ptn);
// _stack_push(s, input_tok, input_tok_attr, NULL);
/* _stack_push(s, input_tok, input_tok_attr, NULL);*/

ptn2 = parse_tree_node_init();
ptn2->tok = input_tok;
@@ -4594,7 +4597,7 @@ parse(parse_state * s)
if (input_tok == ID_TOKEN) {
str_key =
id_table_add(&s->idents, latab[la].la_kw, 0,
strlen(latab[la].la_kw));
_mesa_strlen(latab[la].la_kw));
if ((str_key != input_tok_attr)
&& (_mesa_strcmp(latab[la].la_kw, "-1")))
continue;
@@ -6527,13 +6530,12 @@ _mesa_parse_arb_vertex_program(GLcontext * ctx, GLenum target,
GLubyte *our_string;
parse_state *state;

printf("len: %d\n", len);

/* XXX: How do I handle these errors? */
if (len < 10)
return;
if (_mesa_strncmp(string, "!!ARBvp1.0", 10))
if (len < 10 || _mesa_strncmp((const char *) string, "!!ARBvp1.0", 10)) {
ctx->Program.ErrorPos = 0;
_mesa_error(ctx, GL_INVALID_OPERATION, "glProgramStringARB(bad header)");
return;
}

/* Make a null-terminated copy of the program string */
our_string = (GLubyte *) MALLOC(len + 1);
@@ -6544,7 +6546,7 @@ _mesa_parse_arb_vertex_program(GLcontext * ctx, GLenum target,
MEMCPY(our_string, string, len);
our_string[len] = 0;

state = parse_state_init(our_string + 10, strlen(our_string) - 10);
state = parse_state_init(our_string + 10, _mesa_strlen((char *) our_string) - 10);

if (parse(state) == ARB_VP_SUCESS) {
printf("parse sucess!\n");

Loading…
Cancel
Save