X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Fparser.cpp;h=46bee183f9c061330dc984efd3e88d7ef6773202;hp=4e8ff97aa894864632fcb47e044b3102d04b9f70;hb=4d292eadc135b07e8e0996deb539b1984d7d38d3;hpb=5479327430fe3091fb49f78e0b8d6d3c08b12617 diff --git a/source/glsl/parser.cpp b/source/glsl/parser.cpp index 4e8ff97a..46bee183 100644 --- a/source/glsl/parser.cpp +++ b/source/glsl/parser.cpp @@ -605,6 +605,15 @@ RefPtr Parser::parse_function_call(const VariableReference &var) return call; } +void Parser::add_type(TypeDeclaration &type) +{ + cur_stage->types[type.name] = &type; + if(cur_stage->type==Stage::SHARED) + global_types.insert(type.name); + else + stage_types.insert(type.name); +} + RefPtr Parser::parse_type_declaration() { tokenizer.expect("typedef"); @@ -616,11 +625,7 @@ RefPtr Parser::parse_type_declaration() type = parse_basic_type_declaration(); tokenizer.expect(";"); - cur_stage->types[type->name] = type.get(); - if(cur_stage->type==Stage::SHARED) - global_types.insert(type->name); - else - stage_types.insert(type->name); + add_type(*type); return type; } @@ -710,11 +715,7 @@ RefPtr Parser::parse_struct_declaration() parse_block(strct->members, true, &Parser::parse_variable_declaration); tokenizer.expect(";"); - cur_stage->types[strct->name] = strct.get(); - if(cur_stage->type==Stage::SHARED) - global_types.insert(strct->name); - else - stage_types.insert(strct->name); + add_type(*strct); return strct; }