13 #ifndef OGLPLUS_PROG_VAR_LAZY_1405052234_HPP
14 #define OGLPLUS_PROG_VAR_LAZY_1405052234_HPP
16 #include <oglplus/detail/lazy.hpp>
23 template <
typename ProgVar_>
24 class LazyImpl<tag::ProgVar, ProgVar_>
30 LazyImpl(ProgramName program,
String&& identifier)
32 , _identifier(std::move(identifier))
39 this->BindTo(_identifier);
40 ProgVar_::RequireActive(_identifier);
46 LazyImpl& TryInit(
void)
50 if(this->BindTo(_identifier,
false).IsActive())
58 ProgVar_ operator[](std::size_t offset)
62 ProgramName(this->_program),
63 this->_location+offset
74 template <
typename T0,
typename T1>
75 void Set(T0&& v0, T1&& v1)
84 template <
typename T0,
typename T1,
typename T2>
85 void Set(T0&& v0, T1&& v1, T2&& v2)
95 template <
typename T0,
typename T1,
typename T2,
typename T3>
96 void Set(T0&& v0, T1&& v1, T2&& v2, T3&& v3)
100 std::forward<T0>(v0),
101 std::forward<T1>(v1),
102 std::forward<T1>(v2),
110 #endif // include guard
Program variable wrapper.
String type definition and related functions.
::std::basic_string< ALchar > String