[svn:parrot] r39746 - trunk/runtime/parrot/library/OpenGL
japhb at svn.parrot.org
japhb at svn.parrot.org
Tue Jun 23 19:32:25 UTC 2009
Author: japhb
Date: Tue Jun 23 19:32:23 2009
New Revision: 39746
URL: https://trac.parrot.org/parrot/changeset/39746
Log:
[OpenGL] Math.pir: Refactor elementwise binops again using macros of macros
Modified:
trunk/runtime/parrot/library/OpenGL/Math.pir
Modified: trunk/runtime/parrot/library/OpenGL/Math.pir
==============================================================================
--- trunk/runtime/parrot/library/OpenGL/Math.pir Tue Jun 23 17:37:39 2009 (r39745)
+++ trunk/runtime/parrot/library/OpenGL/Math.pir Tue Jun 23 19:32:23 2009 (r39746)
@@ -242,102 +242,48 @@
.return(result)
.endm
-=over 4
-
-=item Vec4 result = vec1.add(Vec4 vec2)
-
-Calculate the elementwise addition C<vec1 + vec2> and return
-a new C<Vec4> vector C<result>.
-
-=cut
-
-.sub add :method
+# A standard elementwise vec4 binop (vec4 op vec4 --> vec4)
+.macro vec4_vec4_vec4_binop(name, op)
+.sub .name :method
.vec4_extract_self_plus_vec_arg
- $N30 = $N10 + $N20
- $N31 = $N11 + $N21
- $N32 = $N12 + $N22
- $N33 = $N13 + $N23
+ $N30 = $N10 .op $N20
+ $N31 = $N11 .op $N21
+ $N32 = $N12 .op $N22
+ $N33 = $N13 .op $N23
.vec4_return_new_result
.end
+.endm
+=over 4
-=item Vec4 result = vec1.sub(Vec4 vec2)
-
-Calculate the elementwise subtraction C<vec1 - vec2> and return
-a new C<Vec4> vector C<result>.
-
-=cut
-
-.sub sub :method
- .vec4_extract_self_plus_vec_arg
-
- $N30 = $N10 - $N20
- $N31 = $N11 - $N21
- $N32 = $N12 - $N22
- $N33 = $N13 - $N23
-
- .vec4_return_new_result
-.end
+=item Vec4 result = vec1.add(Vec4 vec2)
+=item Vec4 result = vec1.sub(Vec4 vec2)
=item Vec4 result = vec1.mult(Vec4 vec2)
-Calculate the elementwise multiplication C<vec1 * vec2> and return
-a new C<Vec4> vector C<result>.
-
-=cut
-
-.sub mult :method
- .vec4_extract_self_plus_vec_arg
-
- $N30 = $N10 * $N20
- $N31 = $N11 * $N21
- $N32 = $N12 * $N22
- $N33 = $N13 * $N23
-
- .vec4_return_new_result
-.end
-
-
=item Vec4 result = vec1.div(Vec4 vec2)
-Calculate the elementwise division C<vec1 / vec2> and return a new C<Vec4>
-vector C<result>. No attempt is made to prevent division by zero,
+=item Vec4 result = vec1.mod(Vec4 vec2)
+
+Calculate the elementwise addition, subtraction, multiplication, division,
+or modulus C<vec1 [+-*/%] vec2> and return a new C<Vec4> vector C<result>.
+No attempt is made in C<div> and C<mod> to prevent division by zero,
XXX - SO WHAT HAPPENS?
=cut
-.sub div :method
- .vec4_extract_self_plus_vec_arg
+.vec4_vec4_vec4_binop(add, +)
- $N30 = $N10 / $N20
- $N31 = $N11 / $N21
- $N32 = $N12 / $N22
- $N33 = $N13 / $N23
+.vec4_vec4_vec4_binop(sub, -)
- .vec4_return_new_result
-.end
-
-
-=item Vec4 result = vec1.mod(Vec4 vec2)
-
-Calculate the elementwise modulus C<vec1 % vec2> and return
-a new C<Vec4> vector C<result>.
+.vec4_vec4_vec4_binop(mult, *)
-=cut
-
-.sub mod :method
- .vec4_extract_self_plus_vec_arg
+.vec4_vec4_vec4_binop(div, /)
- $N30 = $N10 % $N20
- $N31 = $N11 % $N21
- $N32 = $N12 % $N22
- $N33 = $N13 % $N23
-
- .vec4_return_new_result
-.end
+.vec4_vec4_vec4_binop(mod, %)
=item Vec4 result = vector.div_num(num N)
More information about the parrot-commits
mailing list