gmio_stl: improve speed of STL ascii read operations

This commit is contained in:
Hugues Delorme 2015-11-02 10:47:11 +01:00
parent 620930b33f
commit 6988b777e9

View File

@ -311,6 +311,13 @@ static gmio_bool_t parsing_eat_next_token(
} }
} }
GMIO_INLINE void parsing_eat_next_token_str(gmio_stla_parse_data_t* data)
{
data->string_buffer.len = 0;
gmio_eat_word(&data->stream_iterator, &data->string_buffer);
data->token = unknown_token;
}
GMIO_INLINE gmio_bool_t token_match_candidate( GMIO_INLINE gmio_bool_t token_match_candidate(
gmio_stla_token_t token, const gmio_stla_token_t* candidates) gmio_stla_token_t token, const gmio_stla_token_t* candidates)
{ {
@ -417,16 +424,16 @@ static gmio_bool_t parse_endsolid(gmio_stla_parse_data_t* data)
return GMIO_FALSE; return GMIO_FALSE;
} }
static void parse_xyz_coords( GMIO_INLINE void parse_xyz_coords(
gmio_stla_parse_data_t* data, gmio_stl_coords_t* coords) gmio_stla_parse_data_t* data, gmio_stl_coords_t* coords)
{ {
const char* strbuff_ptr = data->string_buffer.ptr; const char* strbuff_ptr = data->string_buffer.ptr;
parsing_eat_next_token(unknown_token, data); parsing_eat_next_token_str(data);
gmio_get_float32(strbuff_ptr, &coords->x); coords->x = gmio_to_float32(strbuff_ptr);
parsing_eat_next_token(unknown_token, data); parsing_eat_next_token_str(data);
gmio_get_float32(strbuff_ptr, &coords->y); coords->y = gmio_to_float32(strbuff_ptr);
parsing_eat_next_token(unknown_token, data); parsing_eat_next_token_str(data);
gmio_get_float32(strbuff_ptr, &coords->z); coords->z = gmio_to_float32(strbuff_ptr);
} }
static void parse_facet( static void parse_facet(
@ -465,7 +472,7 @@ static void parse_facets(gmio_stla_parse_data_t* data)
parse_facet(data, &facet); parse_facet(data, &facet);
if (func_add_triangle != NULL) if (func_add_triangle != NULL)
func_add_triangle(creator_cookie, i_facet, &facet); func_add_triangle(creator_cookie, i_facet, &facet);
parsing_eat_next_token(unknown_token, data); parsing_eat_next_token_str(data);
data->token = parsing_find_token_from_buff(&data->string_buffer); data->token = parsing_find_token_from_buff(&data->string_buffer);
++i_facet; ++i_facet;
} }