ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libgender/shader.h
(Generate patch)

Comparing libgender/shader.h (file contents):
Revision 1.30 by root, Fri Nov 5 19:55:15 2004 UTC vs.
Revision 1.31 by root, Sun Nov 7 03:01:03 2004 UTC

881 void operator ()() const 881 void operator ()() const
882 { 882 {
883 shader_builder::cur->code << "("; 883 shader_builder::cur->code << "(";
884 a (); 884 a ();
885 shader_builder::cur->code << b; 885 shader_builder::cur->code << b;
886 c ();
887 shader_builder::cur->code << ")";
888 }
889 };
890
891 template<class A, class B, class C>
892 struct sl_ternary
893 {
894 const A a; const B b; const C c;
895 sl_ternary (const A &a, const B &b, const C &c) : a(a), b(b), c(c) { }
896 void operator ()() const
897 {
898 shader_builder::cur->code << "(";
899 a ();
900 shader_builder::cur->code << ") ? (";
901 b ();
902 shader_builder::cur->code << ") : (";
903 c (); 886 c ();
904 shader_builder::cur->code << ")"; 887 shader_builder::cur->code << ")";
905 } 888 }
906 }; 889 };
907 890
1197# undef SHADER_FUNC2_ 1180# undef SHADER_FUNC2_
1198# undef SHADER_FUNC3 1181# undef SHADER_FUNC3
1199# undef SHADER_FUNC3_ 1182# undef SHADER_FUNC3_
1200# undef SHADER_FUNC4 1183# undef SHADER_FUNC4
1201# undef SHADER_FUNC5_ 1184# undef SHADER_FUNC5_
1185
1186 template<class A, class B, class C>
1187 struct sl_ternary
1188 {
1189 const A a; const B b; const C c;
1190 sl_ternary (const A &a, const B &b, const C &c) : a(a), b(b), c(c) { }
1191 void operator ()() const
1192 {
1193 shader_builder::cur->code << "(";
1194 a ();
1195 shader_builder::cur->code << ") ? (";
1196 b ();
1197 shader_builder::cur->code << ") : (";
1198 c ();
1199 shader_builder::cur->code << ")";
1200 }
1201 };
1202
1203 template<typename A, typename B, typename C>
1204 inline const sl_expr< sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> >
1205 ifelse (const A &a, const B &b, const C &c)
1206 {
1207 return sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T>
1208 (sl_convert<A>::convert (a), sl_convert<B>::convert (b), sl_convert<C>::convert (c));
1209 }
1210
1202 } 1211 }
1212}
1203 1213
1204#if 0
1205 template<typename A, typename B, typename C>
1206 inline const sl_expr< sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T> >
1207 ifelse (const A &a, const B &b, const C &c)
1208 {
1209 return sl_ternary<typename sl_convert<A>::T, typename sl_convert<B>::T, typename sl_convert<C>::T>
1210 (sl_convert<A>::convert (a), sl_convert<B>::convert (b), sl_convert<C>::convert (c));
1211 }
1212#endif 1214#endif
1213 1215
1214}
1215
1216#endif
1217
1218#include "shader_vars.h" 1216#include "shader_vars.h"
1219 1217
1220 1218

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines