… | |
… | |
232 | struct lvalue_i : fragment_i |
232 | struct lvalue_i : fragment_i |
233 | { |
233 | { |
234 | }; |
234 | }; |
235 | |
235 | |
236 | // a simple predeclared variable with unspecified type |
236 | // a simple predeclared variable with unspecified type |
237 | struct glvar_i : lvalue_i |
237 | struct gluvar_i : lvalue_i |
238 | { |
238 | { |
239 | const char *name; |
239 | const char *name; |
240 | void build (shader_builder &b); |
240 | void build (shader_builder &b); |
241 | glvar_i (const char *name) : name (name) { } |
241 | gluvar_i (const char *name) : name (name) { } |
242 | }; |
242 | }; |
243 | |
243 | |
244 | typedef auto_lvalue_ref1<glvar_i, const char *> glvar; |
244 | typedef auto_lvalue_ref1<gluvar_i, const char *> gluvar; |
245 | |
245 | |
246 | struct var_i : lvalue_i |
246 | struct var_i : lvalue_i |
247 | { |
247 | { |
248 | static unsigned int next_id; |
248 | static unsigned int next_id; |
249 | |
249 | |
… | |
… | |
749 | return sl_append< var_ref<V> > (v); |
749 | return sl_append< var_ref<V> > (v); |
750 | } |
750 | } |
751 | }; |
751 | }; |
752 | |
752 | |
753 | template<> |
753 | template<> |
754 | struct sl_convert<glvar> |
754 | struct sl_convert<gluvar> |
755 | { |
755 | { |
756 | typedef sl_expr< sl_append<glvar> > T; |
756 | typedef sl_expr< sl_append<gluvar> > T; |
757 | static inline const T convert (const glvar &v) |
757 | static inline const T convert (const gluvar &v) |
758 | { |
758 | { |
759 | return sl_append<glvar> (v); |
759 | return sl_append<gluvar> (v); |
760 | } |
760 | } |
761 | }; |
761 | }; |
762 | |
762 | |
763 | template<> |
763 | template<> |
764 | template<const char *strtype> |
764 | template<const char *strtype> |