Beispiel #1
0
_file_ply::_file_ply()
{
_element_token_table Element1;
const char* Text_tokens[]={"ply","format","ascii","element","vertex","face","end_header","zzzzzzzz",""};

for (int i=0;i<_tokens(NUMBER);i++)
    {
    Element1.Text=Text_tokens[i];
    Element1.Token=(_tokens) i;
    Token_table.push_back(Element1);
    }

Debug=false;
Buffer[0]='\0';
Num_lines=0;
}
Beispiel #2
0
int _file_ply::next_token()
{
char *p1,*p2;
char Aux_token[100];
int Num_char;

do
    {
    if (strlen(Buffer)==0)
        {
        if (read_line()==-1) return(-1);
        while (Buffer[0]=='#') if (read_line()==-1) return(-1);
        }
    p1=Buffer;
    while ((*p1==' ' || *p1=='\t') && *p1!='\n') p1++;
    p2=p1;
    while (*p2!=' ' && *p2!='\t' && *p2!='\n') p2++;
    Num_char=p2-p1;
    if (Num_char>99)
        {
        error("number of characters for token is too long\n");
        return(-1);
        }
    if (Num_char!=0)
        {
        strncpy(Aux_token,p1,Num_char);
        Aux_token[Num_char]='\0';
        }
    if (*p2=='\n') Buffer[0]='\0';
    else strcpy(Buffer,p2);
    }
while (Num_char==0);

if (!is_number(Aux_token))
    {
    //printf("es un numero %s\n",Aux_token);
    Yylval.Real=atof(Aux_token);
    return((int)_tokens(NUMBER));
    }
else
    {
    //printf("es texto %s\n",Aux_token);
    Yylval.Text=Aux_token;
    return(search_token(Aux_token));
    }
}
Beispiel #3
0
int _file_ply::next_token()
{
char Aux_token[100];
char *Aux_token1;
int Num_char=0;

do{
    if (strlen(Buffer)==0){
        // leer una linea si no se ha leido antes
		if (read_line()==-1) return(-1);
        // si es un comentario lee la siguiente
		while (Buffer[0]=='#') if (read_line()==-1) return(-1);
		}
    Aux_token1= strtok(Buffer," \t\n");
    if (Aux_token1!=NULL){
        strcpy(Aux_token,Aux_token1);
        Num_char=strlen(Aux_token);
        strcpy(Buffer,Buffer+Num_char+1);
    }
    else{// por si hay delimitadores al final de una linea
        Num_char=0;
        Buffer[0]=0;
    }

	}
while (Num_char==0);


if (!is_number(Aux_token))
	{
	//printf("es un numero %s\n",Aux_token);
	Yylval.Real=atof(Aux_token);
	return((int)_tokens(NUMBER));
	}
else
	{
	//printf("es texto %s\n",Aux_token);
	Yylval.Text=Aux_token;
	return(search_token(Aux_token));
	}
}