New one-character alternatives of operators, keeping ASCII fall-backs.
[shapes.git] / doc / parts / syntax / operators.sxml
blob1d3313a28326c22c96fa83f5109cf6c0da90a4ac
1 <!-- This file is part of Shapes.                                           -->
2 <!--                                                                        -->
3 <!-- Shapes is free software: you can redistribute it and/or modify         -->
4 <!-- it under the terms of the GNU General Public License as published by   -->
5 <!-- the Free Software Foundation, either version 3 of the License, or      -->
6 <!-- any later version.                                                     -->
7 <!--                                                                        -->
8 <!-- Shapes is distributed in the hope that it will be useful,              -->
9 <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of         -->
10 <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          -->
11 <!-- GNU General Public License for more details.                           -->
12 <!--                                                                        -->
13 <!-- You should have received a copy of the GNU General Public License      -->
14 <!-- along with Shapes.  If not, see <http://www.gnu.org/licenses/>.        -->
15 <!--                                                                        -->
16 <!-- Copyright 2008 Henrik Tidefelt                                         -->
18 <operator-unary op="~" side="prefix">
20 <case type="Float">
21 <result><named-type name="Float" /></result>
22 <description>
23 Negation.
24 </description>
25 </case>
27 <case type="Integer">
28 <result><named-type name="Integer" /></result>
29 <description>
30 Negation.
31 </description>
32 </case>
34 <case type="Length">
35 <result><named-type name="Length" /></result>
36 <description>
37 Negation.
38 </description>
39 </case>
41 <case type="FloatPair">
42 <result><named-type name="FloatPair" /></result>
43 <description>
44 Scaling by negative unit.
45 </description>
46 </case>
48 <case type="FloatTriple">
49 <result><named-type name="FloatTriple" /></result>
50 <description>
51 Scaling by negative unit.
52 </description>
53 </case>
55 <case type="Coords">
56 <result><named-type name="Coords" /></result>
57 <description>
58 Scaling by negative unit.
59 </description>
60 </case>
62 <case type="Coords3D">
63 <result><named-type name="Coords3D" /></result>
64 <description>
65 Scaling by negative unit.
66 </description>
67 </case>
69 </operator-unary> <!-- end of prefix "~" -->
72 <operator-unary op="+" side="prefix">
74 <case type="Length">
75 <result consider-constructor="yes"><named-type name="Offset" /></result>
76 <description>
77 <em>Note: Requires enclosing parantheses!</em>  Constructs a relative length.
78 </description>
79 </case>
81 <case type="Coords">
82 <result consider-constructor="yes"><named-type name="OffsetCoords" /></result>
83 <description>
84 <em>Note: Requires enclosing parantheses!</em>  Constructs relative coordinates.
85 </description>
86 </case>
88 <case type="Coords3D">
89 <result consider-constructor="yes"><named-type name="OffsetCoords3D" /></result>
90 <description>
91 <em>Note: Requires enclosing parantheses!</em>  Constructs relative coordinates.
92 </description>
93 </case>
95 </operator-unary> <!-- end of prefix "+" -->
98 <operator-unary op="not" side="prefix">
99         <alternative op="¬" />
101 <case type="Boolean">
102 <result><named-type name="Boolean" /></result>
103 <description>
104 Negation.
105 </description>
106 </case>
108 </operator-unary> <!-- end of prefix "not" -->
110 <operator-unary op="--cycle" side="postfix">
112 <case type="PathPoint">
113 <result><named-type name="Path" /></result>
114 <description>
115 Constructs a closed path with only one spline.
116 </description>
117 </case>
119 <case type="Path">
120 <result><named-type name="Path" /></result>
121 <description>
122 Closes an open path.
123 </description>
124 </case>
126 <case type="Path3D">
127 <result><named-type name="Path" /></result>
128 <description>
129 Closes an open path.
130 </description>
131 </case>
133 <case type="PathPoint3D">
134 <result><named-type name="Path3D" /></result>
135 <description>
136 Constructs a closed path with only one spline.
137 </description>
138 </case>
140 </operator-unary> <!-- end of postfix "- -cycle" (Don't mess with the ugly space in this comment!) -->
143 <operator-binary op="--">
145 <case first-type="Float" second-type="Float">
146 <result><named-type name="Float" /></result>
147 <description>
148 Pythagoream subtraction.  Both terms must be non-negative, and second term must not be larger than the first.
149 </description>
150 </case>
152 <case first-type="Length" second-type="Length">
153 <result><named-type name="Length" /></result>
154 <description>
155 Pythagoream subtraction.  Both terms must be non-negative, and second term must not be larger than the first.
156 </description>
157 </case>
159 <case first-type="Coords" second-type="Coords">
160 <result><named-type name="Path" /></result>
161 <description>
162 Path connection.
163 </description>
164 </case>
165 <case first-type="Coords" second-type="PathPoint">
166 <result><named-type name="Path" /></result>
167 <description>
168 Path connection.
169 </description>
170 </case>
171 <case first-type="PathPoint" second-type="PathPoint">
172 <result><named-type name="Path" /></result>
173 <description>
174 Path connection.
175 </description>
176 </case>
177 <case first-type="Coords" second-type="Path">
178 <result><named-type name="Path" /></result>
179 <description>
180 Path connection.
181 </description>
182 </case>
183 <case first-type="Path" second-type="Coords">
184 <result><named-type name="Path" /></result>
185 <description>
186 Path connection.
187 </description>
188 </case>
189 <case first-type="PathPoint" second-type="PathPoint">
190 <result consider-constructor="yes"><named-type name="Path" /></result>
191 <description>
192 Path connection.
193 </description>
194 </case>
195 <case first-type="PathPoint" second-type="Path">
196 <result><named-type name="Path" /></result>
197 <description>
198 Path connection.
199 </description>
200 </case>
201 <case first-type="Path" second-type="PathPoint">
202 <result><named-type name="Path" /></result>
203 <description>
204 Path connection.
205 </description>
206 </case>
207 <case first-type="Path" second-type="Path">
208 <result consider-constructor="yes"><named-type name="Path" /></result>
209 <description>
210 Path connection.
211 </description>
212 </case>
213 <case first-type="PathSlider" second-type="PathSlider">
214 <result consider-constructor="yes"><named-type name="Path" /></result>
215 <description>
216 Path connection.
217 </description>
218 </case>
220 <case first-type="Coords3D" second-type="Coords3D">
221 <result><named-type name="Path3D" /></result>
222 <description>
223 Path connection.
224 </description>
225 </case>
226 <case first-type="Coords3D" second-type="PathPoint3D">
227 <result><named-type name="Path3D" /></result>
228 <description>
229 Path connection.
230 </description>
231 </case>
232 <case first-type="PathPoint3D" second-type="PathPoint3D">
233 <result consider-constructor="yes"><named-type name="Path3D" /></result>
234 <description>
235 Path connection.
236 </description>
237 </case>
238 <case first-type="Coords3D" second-type="Path3D">
239 <result><named-type name="Path3D" /></result>
240 <description>
241 Path connection.
242 </description>
243 </case>
244 <case first-type="Path3D" second-type="Coords3D">
245 <result><named-type name="Path3D" /></result>
246 <description>
247 Path connection.
248 </description>
249 </case>
250 <case first-type="PathPoint3D" second-type="PathPoint3D">
251 <result><named-type name="Path3D" /></result>
252 <description>
253 Path connection.
254 </description>
255 </case>
256 <case first-type="PathPoint3D" second-type="Path3D">
257 <result><named-type name="Path3D" /></result>
258 <description>
259 Path connection.
260 </description>
261 </case>
262 <case first-type="Path3D" second-type="PathPoint3D">
263 <result><named-type name="Path3D" /></result>
264 <description>
265 Path connection.
266 </description>
267 </case>
268 <case first-type="Path3D" second-type="Path3D">
269 <result consider-constructor="yes"><named-type name="Path3D" /></result>
270 <description>
271 Path connection.
272 </description>
273 </case>
274 <case first-type="PathSlider3D" second-type="PathSlider3D">
275 <result consider-constructor="yes"><named-type name="Path3D" /></result>
276 <description>
277 Path connection.
278 </description>
279 </case>
281 </operator-binary> <!-- end of binary "- -" -->
284 <operator-binary op="++">
286 <case first-type="Float" second-type="Float">
287 <result><named-type name="Float" /></result>
288 <description>
289 Pythagoream addition.
290 </description>
291 </case>
293 <case first-type="Length" second-type="Length">
294 <result><named-type name="Length" /></result>
295 <description>
296 Pythagoream addition.
297 </description>
298 </case>
300 </operator-binary> <!-- end of binary "++" -->
303 <operator-binary op="&amp;">
305 <case first-type="Path" second-type="Path">
306 <result consider-constructor="yes"><named-type name="MultiPath" /></result>
307 <description>
308 Path union.
309 </description>
310 </case>
311 <case first-type="MultiPath" second-type="Path">
312 <result><named-type name="MultiPath" /></result>
313 <description>
314 Path union.
315 </description>
316 </case>
317 <case first-type="Path" second-type="MultiPath">
318 <result><named-type name="MultiPath" /></result>
319 <description>
320 Path union.
321 </description>
322 </case>
323 <case first-type="MultiPath" second-type="MultiPath">
324 <result><named-type name="MultiPath" /></result>
325 <description>
326 Path union.
327 </description>
328 </case>
330 <case first-type="Path3D" second-type="Path3D">
331 <result consider-constructor="yes"><named-type name="MultiPath3D" /></result>
332 <description>
333 Path union.
334 </description>
335 </case>
336 <case first-type="MultiPath3D" second-type="Path3D">
337 <result><named-type name="MultiPath3D" /></result>
338 <description>
339 Path union.
340 </description>
341 </case>
342 <case first-type="Path3D" second-type="MultiPath3D">
343 <result><named-type name="MultiPath3D" /></result>
344 <description>
345 Path union.
346 </description>
347 </case>
348 <case first-type="MultiPath3D" second-type="MultiPath3D">
349 <result><named-type name="MultiPath3D" /></result>
350 <description>
351 Path union.
352 </description>
353 </case>
355 <case first-type="DynamicBindings" second-type="DynamicBindings">
356 <result><named-type name="DynamicBindings" /></result>
357 <description>
358 Dynamic binding union.
359 </description>
360 </case>
362 <case first-type="Drawable" second-type="Drawable">
363 <result><named-type name="Drawable" /></result>
364 <description>
365 Graphics composition.  Second argument on top of first.
366 </description>
367 </case>
369 <case first-type="Drawable3D" second-type="Drawable3D">
370 <result><named-type name="Drawable3D" /></result>
371 <description>
372 Graphics composition.  Second argument on top of first.
373 </description>
374 </case>
376 </operator-binary> <!-- end of binary "&" -->
378 <operator-binary op="&amp;|">
380 <case first-type="DynamicBindings" second-type="DynamicBindings">
381 <result><named-type name="DynamicBindings" /></result>
382 <description>
383 Asymmetric dynamic binding union.  Bindings to the right take precedence over bindings to the left.
384 </description>
385 </case>
387 </operator-binary> <!-- end of binary "&|" -->
390 <operator-binary op="+">
392 <case first-type="Float" second-type="Float">
393 <result><named-type name="Float" /></result>
394 <description>
395 Addition.
396 </description>
397 </case>
398 <case first-type="Integer" second-type="Integer">
399 <result><named-type name="Integer" /></result>
400 <description>
401 Addition.
402 </description>
403 </case>
404 <case first-type="Length" second-type="Length">
405 <result><named-type name="Length" /></result>
406 <description>
407 Addition.
408 </description>
409 </case>
410 <case first-type="FloatPair" second-type="FloatPair">
411 <result><named-type name="FloatPair" /></result>
412 <description>
413 Addition.
414 </description>
415 </case>
416 <case first-type="Coords" second-type="Coords">
417 <result><named-type name="Coords" /></result>
418 <description>
419 Addition.
420 </description>
421 </case>
422 <case first-type="FloatTriple" second-type="FloatTriple">
423 <result><named-type name="FloatTriple" /></result>
424 <description>
425 Addition.
426 </description>
427 </case>
428 <case first-type="Coords3D" second-type="Coords3D">
429 <result><named-type name="Coords3D" /></result>
430 <description>
431 Addition.
432 </description>
433 </case>
435 <case first-type="String" second-type="String">
436 <result><named-type name="String" /></result>
437 <description>
438 Concatenation.
439 </description>
440 </case>
442 <case first-type="Dash" second-type="Length">
443 <result><named-type name="Dash" /></result>
444 <description>
445 Shift.
446 </description>
447 </case>
448 <case first-type="Length" second-type="Dash">
449 <result><named-type name="Dash" /></result>
450 <description>
451 Shift.
452 </description>
453 </case>
455 <case first-type="PathSlider" second-type="Float">
456 <result><named-type name="PathSlider" /></result>
457 <description>
458 Move spline time.
459 </description>
460 </case>
461 <case first-type="PathSlider" second-type="Length">
462 <result><named-type name="PathSlider" /></result>
463 <description>
464 Move distance.
465 </description>
466 </case>
467 <case first-type="PathSlider3D" second-type="Float">
468 <result><named-type name="PathSlider3D" /></result>
469 <description>
470 Move spline time.
471 </description>
472 </case>
473 <case first-type="PathSlider3D" second-type="Length">
474 <result><named-type name="PathSlider3D" /></result>
475 <description>
476 Move distance.
477 </description>
478 </case>
480 <case first-type="RGB" second-type="RGB">
481 <result><named-type name="RGB" /></result>
482 <description>
483 Component-wise addition.
484 </description>
485 </case>
486 <case first-type="Gray" second-type="Gray">
487 <result><named-type name="Gray" /></result>
488 <description>
489 Component addition.
490 </description>
491 </case>
492 <case first-type="SpecularReflection" second-type="SpecularReflection">
493 <result><named-type name="SpecularReflection" /></result>
494 <description>
495 Combine reflections.
496 </description>
497 </case>
499 </operator-binary> <!-- end of binary "+" -->
502 <operator-binary op="-">
504 <case first-type="Float" second-type="Float">
505 <result><named-type name="Float" /></result>
506 <description>
507 Subtraction.
508 </description>
509 </case>
510 <case first-type="Integer" second-type="Integer">
511 <result><named-type name="Integer" /></result>
512 <description>
513 Subtraction.
514 </description>
515 </case>
516 <case first-type="Length" second-type="Length">
517 <result><named-type name="Length" /></result>
518 <description>
519 Subtraction.
520 </description>
521 </case>
522 <case first-type="FloatPair" second-type="FloatPair">
523 <result><named-type name="FloatPair" /></result>
524 <description>
525 Subtraction.
526 </description>
527 </case>
528 <case first-type="Coords" second-type="Coords">
529 <result><named-type name="Coords" /></result>
530 <description>
531 Subtraction.
532 </description>
533 </case>
534 <case first-type="FloatTriple" second-type="FloatTriple">
535 <result><named-type name="FloatTriple" /></result>
536 <description>
537 Subtraction.
538 </description>
539 </case>
540 <case first-type="Coords3D" second-type="Coords3D">
541 <result><named-type name="Coords3D" /></result>
542 <description>
543 Subtraction.
544 </description>
545 </case>
547 <case first-type="PathSlider" second-type="Float">
548 <result><named-type name="PathSlider" /></result>
549 <description>
550 Reverse move spline time.
551 </description>
552 </case>
553 <case first-type="PathSlider" second-type="Length">
554 <result><named-type name="PathSlider" /></result>
555 <description>
556 Reverse move distance.
557 </description>
558 </case>
559 <case first-type="PathSlider3D" second-type="Float">
560 <result><named-type name="PathSlider3D" /></result>
561 <description>
562 Reverse move spline time.
563 </description>
564 </case>
565 <case first-type="PathSlider3D" second-type="Length">
566 <result><named-type name="PathSlider3D" /></result>
567 <description>
568 Reverse move distance.
569 </description>
570 </case>
572 </operator-binary> <!-- end of binary "-" -->
575 <operator-binary op="∠">
576 <alternative op="/_" />
578 <case first-type="Float" second-type="Float">
579 <result><named-type name="Float" /></result>
580 <description>
581 In presence of a zero arguent, the result is π/2.  The result is zero if signs are equal, otherwise the result is π.
582 </description>
583 </case>
584 <case first-type="Float" second-type="Length">
585 <result><named-type name="Float" /></result>
586 <description>
587 In presence of a zero arguent, the result is π/2.  The result is zero if signs are equal, otherwise the result is π.
588 </description>
589 </case>
590 <case first-type="Length" second-type="Float">
591 <result><named-type name="Float" /></result>
592 <description>
593 In presence of a zero arguent, the result is π/2.  The result is zero if signs are equal, otherwise the result is π.
594 </description>
595 </case>
596 <case first-type="Length" second-type="Length">
597 <result><named-type name="Float" /></result>
598 <description>
599 In presence of a zero arguent, the result is π/2.  The result is zero if signs are equal, otherwise the result is π.
600 </description>
601 </case>
603 <case first-type="FloatPair" second-type="FloatPair">
604 <result><named-type name="Float" /></result>
605 <description>
606 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
607 </description>
608 </case>
609 <case first-type="FloatPair" second-type="Coords">
610 <result><named-type name="Float" /></result>
611 <description>
612 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
613 </description>
614 </case>
615 <case first-type="Coords" second-type="FloatPair">
616 <result><named-type name="Float" /></result>
617 <description>
618 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
619 </description>
620 </case>
621 <case first-type="Coords" second-type="Coords">
622 <result><named-type name="Float" /></result>
623 <description>
624 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
625 </description>
626 </case>
628 <case first-type="FloatTriple" second-type="FloatTriple">
629 <result><named-type name="Float" /></result>
630 <description>
631 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
632 </description>
633 </case>
634 <case first-type="FloatTriple" second-type="Coords3D">
635 <result><named-type name="Float" /></result>
636 <description>
637 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
638 </description>
639 </case>
640 <case first-type="Coords3D" second-type="FloatTriple">
641 <result><named-type name="Float" /></result>
642 <description>
643 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
644 </description>
645 </case>
646 <case first-type="Coords3D" second-type="Coords3D">
647 <result><named-type name="Float" /></result>
648 <description>
649 In presence of a zero arguent, the result is π/2.  Otherwise, the usual definition of angle between vector applies.
650 </description>
651 </case>
653 </operator-binary> <!-- end of binary "/_" -->
656 <operator-binary op="*">
658 <case first-type="Float" second-type="Float">
659 <result><named-type name="Float" /></result>
660 <description>
661 Multiplication.
662 </description>
663 </case>
665 <case first-type="FloatPair" second-type="FloatPair">
666 <result><named-type name="Float" /></result>
667 <description>
668 Standard inner product.
669 </description>
670 </case>
671 <case first-type="FloatPair" second-type="Float">
672 <result><named-type name="FloatPair" /></result>
673 <description>
674 Vector-scalar multiplication.
675 </description>
676 </case>
677 <case first-type="Float" second-type="FloatPair">
678 <result><named-type name="FloatPair" /></result>
679 <description>
680 Vector-scalar multiplication.
681 </description>
682 </case>
683 <case first-type="FloatTriple" second-type="FloatTriple">
684 <result><named-type name="Float" /></result>
685 <description>
686 Standard inner product.
687 </description>
688 </case>
689 <case first-type="FloatTriple" second-type="Float">
690 <result><named-type name="FloatTriple" /></result>
691 <description>
692 Vector-scalar multiplication.
693 </description>
694 </case>
695 <case first-type="Float" second-type="FloatTriple">
696 <result><named-type name="FloatTriple" /></result>
697 <description>
698 Vector-scalar multiplication.
699 </description>
700 </case>
702 <case first-type="Float" second-type="Length">
703 <result><named-type name="Length" /></result>
704 <description>
705 Multiplication.
706 </description>
707 </case>
708 <case first-type="Length" second-type="Float">
709 <result><named-type name="Length" /></result>
710 <description>
711 Multiplication.
712 </description>
713 </case>
715 <case first-type="Coords" second-type="Float">
716 <result><named-type name="Coords" /></result>
717 <description>
718 Vector-scalar multiplication.
719 </description>
720 </case>
721 <case first-type="Float" second-type="Coords">
722 <result><named-type name="Coords" /></result>
723 <description>
724 Vector-scalar multiplication.
725 </description>
726 </case>
727 <case first-type="Coords" second-type="FloatPair">
728 <result><named-type name="Length" /></result>
729 <description>
730 Standard inner product.
731 </description>
732 </case>
733 <case first-type="FloatPair" second-type="Coords">
734 <result><named-type name="Length" /></result>
735 <description>
736 Standard inner product.
737 </description>
738 </case>
739 <case first-type="FloatPair" second-type="Length">
740 <result><named-type name="Coords" /></result>
741 <description>
742 Scale direction by length.
743 </description>
744 </case>
745 <case first-type="Length" second-type="FloatPair">
746 <result><named-type name="Coords" /></result>
747 <description>
748 Scale direction by length.
749 </description>
750 </case>
752 <case first-type="Coords3D" second-type="Float">
753 <result><named-type name="Coords3D" /></result>
754 <description>
755 Vector-scalar multiplication.
756 </description>
757 </case>
758 <case first-type="Float" second-type="Coords3D">
759 <result><named-type name="Coords3D" /></result>
760 <description>
761 Vector-scalar multiplication.
762 </description>
763 </case>
764 <case first-type="Coords3D" second-type="FloatTriple">
765 <result><named-type name="Length" /></result>
766 <description>
767 Standard inner product.
768 </description>
769 </case>
770 <case first-type="FloatTriple" second-type="Coords3D">
771 <result><named-type name="Length" /></result>
772 <description>
773 Standard inner product.
774 </description>
775 </case>
776 <case first-type="FloatTriple" second-type="Length">
777 <result><named-type name="Coords3D" /></result>
778 <description>
779 Scale direction by length.
780 </description>
781 </case>
782 <case first-type="Length" second-type="FloatTriple">
783 <result><named-type name="Coords3D" /></result>
784 <description>
785 Scale direction by length.
786 </description>
787 </case>
789 <case first-type="Dash" second-type="Float">
790 <result><named-type name="Dash" /></result>
791 <description>
792 Scale.
793 </description>
794 </case>
795 <case first-type="Float" second-type="Dash">
796 <result><named-type name="Dash" /></result>
797 <description>
798 Scale.
799 </description>
800 </case>
802 <case first-type="Transform" second-type="Transform">
803 <result><named-type name="Transform" /></result>
804 <description>
805 Composition.
806 </description>
807 </case>
808 <case first-type="Transform3D" second-type="Transform3D">
809 <result><named-type name="Transform3D" /></result>
810 <description>
811 Composition.
812 </description>
813 </case>
815 <case first-type="Float" second-type="RGB">
816 <result><named-type name="RGB" /></result>
817 <description>
818 Scale components.
819 </description>
820 </case>
821 <case first-type="RGB" second-type="Float">
822 <result><named-type name="RGB" /></result>
823 <description>
824 Scale components.
825 </description>
826 </case>
827 <case first-type="Float" second-type="Gray">
828 <result><named-type name="Gray" /></result>
829 <description>
830 Scale components.
831 </description>
832 </case>
833 <case first-type="Gray" second-type="Float">
834 <result><named-type name="Gray" /></result>
835 <description>
836 Scale components.
837 </description>
838 </case>
840 <case first-type="Float" second-type="SpecularReflection">
841 <result><named-type name="SpecularReflection" /></result>
842 <description>
843 Scale weight.
844 </description>
845 </case>
846 <case first-type="SpecularReflection" second-type="Float">
847 <result><named-type name="SpecularReflection" /></result>
848 <description>
849 Scale weight.
850 </description>
851 </case>
853 <case first-type="Integer" second-type="Integer">
854 <result><named-type name="Integer" /></result>
855 <description>
856 Multiplication.
857 </description>
858 </case>
859 <case first-type="Float" second-type="Integer">
860 <result><named-type name="Float" /></result>
861 <description>
862 Multiplication.
863 </description>
864 </case>
865 <case first-type="Integer" second-type="Float">
866 <result><named-type name="Float" /></result>
867 <description>
868 Multiplication.
869 </description>
870 </case>
871 <case first-type="Length" second-type="Integer">
872 <result><named-type name="Length" /></result>
873 <description>
874 Multiplication.
875 </description>
876 </case>
877 <case first-type="Integer" second-type="Length">
878 <result><named-type name="Length" /></result>
879 <description>
880 Multiplication.
881 </description>
882 </case>
884 </operator-binary> <!-- end of binary "*" -->
887 <operator-binary op="/">
889 <case first-type="Float" second-type="Float">
890 <result><named-type name="Float" /></result>
891 <description>
892 Division.
893 </description>
894 </case>
895 <case first-type="Length" second-type="Length">
896 <result><named-type name="Float" /></result>
897 <description>
898 Ratio.
899 </description>
900 </case>
901 <case first-type="Length" second-type="Float">
902 <result><named-type name="Length" /></result>
903 <description>
904 Division.
905 </description>
906 </case>
908 <case first-type="FloatPair" second-type="Float">
909 <result><named-type name="FloatPair" /></result>
910 <description>
911 Division by scalar.
912 </description>
913 </case>
914 <case first-type="Coords" second-type="Length">
915 <result><named-type name="FloatPair" /></result>
916 <description>
917 Directional ratio.
918 </description>
919 </case>
920 <case first-type="Coords" second-type="Float">
921 <result><named-type name="Coords" /></result>
922 <description>
923 Division by scalar.
924 </description>
925 </case>
927 <case first-type="FloatTriple" second-type="Float">
928 <result><named-type name="FloatTriple" /></result>
929 <description>
930 Division by scalar.
931 </description>
932 </case>
933 <case first-type="Coords3D" second-type="Length">
934 <result><named-type name="FloatTriple" /></result>
935 <description>
936 Directional ratio.
937 </description>
938 </case>
939 <case first-type="Coords3D" second-type="Float">
940 <result><named-type name="Coords3D" /></result>
941 <description>
942 Division by scalar.
943 </description>
944 </case>
946 <case first-type="Integer" second-type="Integer">
947 <result><named-type name="Integer" /></result>
948 <description>
949 Integer division.
950 </description>
951 </case>
952 <case first-type="Float" second-type="Integer">
953 <result><named-type name="Float" /></result>
954 <description>
955 Division.
956 </description>
957 </case>
958 <case first-type="Length" second-type="Integer">
959 <result><named-type name="Length" /></result>
960 <description>
961 Division.
962 </description>
963 </case>
965 </operator-binary> <!-- end of binary "/" -->
968 <operator-binary op="∥">
969         <alternative "*/" />
971 <case first-type="FloatPair" second-type="FloatPair">
972 <result><named-type name="FloatPair" /></result>
973 <description>
974 Orthogonal projection of first argument on direction given by second argument.
975 </description>
976 </case>
977 <case first-type="FloatPair" second-type="Coords">
978 <result><named-type name="FloatPair" /></result>
979 <description>
980 Orthogonal projection of first argument on direction given by second argument.
981 </description>
982 </case>
983 <case first-type="Coords" second-type="FloatPair">
984 <result><named-type name="Coords" /></result>
985 <description>
986 Orthogonal projection of first argument on direction given by second argument.
987 </description>
988 </case>
989 <case first-type="Coords" second-type="Coords">
990 <result><named-type name="Coords" /></result>
991 <description>
992 Orthogonal projection of first argument on direction given by second argument.
993 </description>
994 </case>
996 <case first-type="FloatTriple" second-type="FloatTriple">
997 <result><named-type name="FloatTriple" /></result>
998 <description>
999 Orthogonal projection of first argument on direction given by second argument.
1000 </description>
1001 </case>
1002 <case first-type="FloatTriple" second-type="Coords3D">
1003 <result><named-type name="FloatTriple" /></result>
1004 <description>
1005 Orthogonal projection of first argument on direction given by second argument.
1006 </description>
1007 </case>
1008 <case first-type="Coords3D" second-type="FloatTriple">
1009 <result><named-type name="Coords3D" /></result>
1010 <description>
1011 Orthogonal projection of first argument on direction given by second argument.
1012 </description>
1013 </case>
1014 <case first-type="Coords3D" second-type="Coords3D">
1015 <result><named-type name="Coords3D" /></result>
1016 <description>
1017 Orthogonal projection of first argument on direction given by second argument.
1018 </description>
1019 </case>
1021 </operator-binary> <!-- end of binary "*/" -->
1023 <operator-binary op="⊙">
1024         <alternative op="()" />
1026 <case first-type="Transform" second-type="Transform">
1027 <result><named-type name="Transform" /></result>
1028 <description>
1029 Composition.
1030 </description>
1031 </case>
1033 <case first-type="Transform3D" second-type="Transform3D">
1034 <result><named-type name="Transform3D" /></result>
1035 <description>
1036 Composition.
1037 </description>
1038 </case>
1040 <case first-type="Function" second-type="Function">
1041 <result><named-type name="Function" /></result>
1042 <description>
1043 Composition.
1044 </description>
1045 </case>
1047 </operator-binary> <!-- end of binary "()" -->
1050 <operator-binary op="&lt;">
1052 <case first-type="Symbol" second-type="Symbol">
1053 <result><named-type name="Boolean" /></result>
1054 <description>
1055 Order predicate.
1056 </description>
1057 </case>
1058 <case first-type="Float" second-type="Float">
1059 <result><named-type name="Boolean" /></result>
1060 <description>
1061 Less than comparison.
1062 </description>
1063 </case>
1064 <case first-type="Integer" second-type="Integer">
1065 <result><named-type name="Boolean" /></result>
1066 <description>
1067 Less than comparison.
1068 </description>
1069 </case>
1070 <case first-type="Length" second-type="Length">
1071 <result><named-type name="Boolean" /></result>
1072 <description>
1073 Less than comparison (with signed lengths).
1074 </description>
1075 </case>
1077 <case first-type="Coords" second-type="Coords">
1078 <result><named-type name="PathPoint" /></result>
1079 <description>
1080 Attach backward handle to second argument.
1081 </description>
1082 </case>
1083 <case first-type="Coords" second-type="PathPoint">
1084 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1085 <description>
1086 Attach backward handle to second argument.
1087 </description>
1088 </case>
1089 <case first-type="Coords" second-type="PathSlider">
1090 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1091 <description>
1092 Attach backward handle to second argument.
1093 </description>
1094 </case>
1096 <case first-type="PolarHandleBase" second-type="Coords">
1097 <result><named-type name="PathPoint" /></result>
1098 <description>
1099 Attach backward handle to second argument.
1100 </description>
1101 </case>
1102 <case first-type="PolarHandleBase" second-type="PathPoint">
1103 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1104 <description>
1105 Attach backward handle to second argument.
1106 </description>
1107 </case>
1108 <case first-type="PolarHandleBase" second-type="PathSlider">
1109 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1110 <description>
1111 Attach backward handle to second argument.
1112 </description>
1113 </case>
1115 <case first-type="Coords3D" second-type="Coords3D">
1116 <result><named-type name="PathPoint3D" /></result>
1117 <description>
1118 Attach backward handle to second argument.
1119 </description>
1120 </case>
1121 <case first-type="Coords3D" second-type="PathPoint3D">
1122 <result consider-constructor="yes"><named-type name="PathPoint3D" /></result>
1123 <description>
1124 Attach backward handle to second argument.
1125 </description>
1126 </case>
1127 <case first-type="Coords3D" second-type="PathSlider3D">
1128 <result consider-constructor="yes"><named-type name="PathPoint3D" /></result>
1129 <description>
1130 Attach backward handle to second argument.
1131 </description>
1132 </case>
1134 </operator-binary> <!-- end of binary "&lt;" -->
1136 <operator-binary op="&gt;">
1138 <case first-type="Symbol" second-type="Symbol">
1139 <result><named-type name="Boolean" /></result>
1140 <description>
1141 Order predicate.
1142 </description>
1143 </case>
1144 <case first-type="Float" second-type="Float">
1145 <result><named-type name="Boolean" /></result>
1146 <description>
1147 Greater than comparison.
1148 </description>
1149 </case>
1150 <case first-type="Integer" second-type="Integer">
1151 <result><named-type name="Boolean" /></result>
1152 <description>
1153 Greater than comparison.
1154 </description>
1155 </case>
1156 <case first-type="Length" second-type="Length">
1157 <result><named-type name="Boolean" /></result>
1158 <description>
1159 Greater than comparison (with signed lengths).
1160 </description>
1161 </case>
1163 <case first-type="Coords" second-type="Coords">
1164 <result><named-type name="PathPoint" /></result>
1165 <description>
1166 Attach forward handle to first argument.
1167 </description>
1168 </case>
1169 <case first-type="PathPoint" second-type="Coords">
1170 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1171 <description>
1172 Attach forward handle to first argument.
1173 </description>
1174 </case>
1175 <case first-type="PathSlider" second-type="Coords">
1176 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1177 <description>
1178 Attach forward handle to first argument.
1179 </description>
1180 </case>
1182 <case first-type="Coords" second-type="PolarHandleBase">
1183 <result><named-type name="PathPoint" /></result>
1184 <description>
1185 Attach forward handle to first argument.
1186 </description>
1187 </case>
1188 <case first-type="PathPoint" second-type="PolarHandleBase">
1189 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1190 <description>
1191 Attach forward handle to first argument.
1192 </description>
1193 </case>
1194 <case first-type="PathSlider" second-type="PolarHandleBase">
1195 <result consider-constructor="yes"><named-type name="PathPoint" /></result>
1196 <description>
1197 Attach forward handle to first argument.
1198 </description>
1199 </case>
1201 <case first-type="Coords3D" second-type="Coords3D">
1202 <result><named-type name="PathPoint3D" /></result>
1203 <description>
1204 Attach forward handle to first argument.
1205 </description>
1206 </case>
1207 <case first-type="PathPoint3D" second-type="Coords3D">
1208 <result consider-constructor="yes"><named-type name="PathPoint3D" /></result>
1209 <description>
1210 Attach forward handle to first argument.
1211 </description>
1212 </case>
1213 <case first-type="PathSlider3D" second-type="Coords3D">
1214 <result consider-constructor="yes"><named-type name="PathPoint3D" /></result>
1215 <description>
1216 Attach forward handle to first argument.
1217 </description>
1218 </case>
1220 </operator-binary> <!-- end of binary "&gt;" -->
1223 <operator-binary op="=">
1225 <case first-type="Symbol" second-type="Symbol">
1226 <result><named-type name="Boolean" /></result>
1227 <description>
1228 Equality test.
1229 </description>
1230 </case>
1231 <case first-type="Float" second-type="Float">
1232 <result><named-type name="Boolean" /></result>
1233 <description>
1234 Equality test.
1235 </description>
1236 </case>
1237 <case first-type="Integer" second-type="Integer">
1238 <result><named-type name="Boolean" /></result>
1239 <description>
1240 Equality test.
1241 </description>
1242 </case>
1243 <case first-type="Length" second-type="Length">
1244 <result><named-type name="Boolean" /></result>
1245 <description>
1246 Equality test.
1247 </description>
1248 </case>
1250 <case first-type="Class" second-type="Class">
1251 <result><named-type name="Boolean" /></result>
1252 <description>
1253 Same type test.
1254 </description>
1255 </case>
1257 </operator-binary> <!-- end of binary "=" -->
1260 <operator-binary op="≠">
1261         <alternative op="/=" />
1263 <case first-type="Symbol" second-type="Symbol">
1264 <result><named-type name="Boolean" /></result>
1265 <description>
1266 Inequality test.
1267 </description>
1268 </case>
1269 <case first-type="Float" second-type="Float">
1270 <result><named-type name="Boolean" /></result>
1271 <description>
1272 Inequality test.
1273 </description>
1274 </case>
1275 <case first-type="Integer" second-type="Integer">
1276 <result><named-type name="Boolean" /></result>
1277 <description>
1278 Inequality test.
1279 </description>
1280 </case>
1281 <case first-type="Length" second-type="Length">
1282 <result><named-type name="Boolean" /></result>
1283 <description>
1284 Inequality test.
1285 </description>
1286 </case>
1288 <case first-type="Class" second-type="Class">
1289 <result><named-type name="Boolean" /></result>
1290 <description>
1291 Not same type test.
1292 </description>
1293 </case>
1295 </operator-binary> <!-- end of binary "=/=" -->
1298 <operator-binary op="≠">
1300 <case first-type="Symbol" second-type="Symbol">
1301 <result><named-type name="Boolean" /></result>
1302 <description>
1303 Inequality test.
1304 </description>
1305 </case>
1306 <case first-type="Float" second-type="Float">
1307 <result><named-type name="Boolean" /></result>
1308 <description>
1309 Inequality test.
1310 </description>
1311 </case>
1312 <case first-type="Integer" second-type="Integer">
1313 <result><named-type name="Boolean" /></result>
1314 <description>
1315 Inequality test.
1316 </description>
1317 </case>
1318 <case first-type="Length" second-type="Length">
1319 <result><named-type name="Boolean" /></result>
1320 <description>
1321 Inequality test.
1322 </description>
1323 </case>
1325 <case first-type="Class" second-type="Class">
1326 <result><named-type name="Boolean" /></result>
1327 <description>
1328 Not same type test.
1329 </description>
1330 </case>
1332 </operator-binary> <!-- end of binary "≠" -->
1335 <operator-binary op="≤">
1336 <alternative op="&lt;=" />
1338 <case first-type="Symbol" second-type="Symbol">
1339 <result><named-type name="Boolean" /></result>
1340 <description>
1341 Reflexive order predicate.
1342 </description>
1343 </case>
1344 <case first-type="Float" second-type="Float">
1345 <result><named-type name="Boolean" /></result>
1346 <description>
1347 Test less than or equal.
1348 </description>
1349 </case>
1350 <case first-type="Integer" second-type="Integer">
1351 <result><named-type name="Boolean" /></result>
1352 <description>
1353 Test less than or equal.
1354 </description>
1355 </case>
1356 <case first-type="Length" second-type="Length">
1357 <result><named-type name="Boolean" /></result>
1358 <description>
1359 Test less than or equal.
1360 </description>
1361 </case>
1363 </operator-binary> <!-- end of binary "≤" -->
1366 <operator-binary op="≥">
1367 <alternative op="&gt;=" />
1369 <case first-type="Symbol" second-type="Symbol">
1370 <result><named-type name="Boolean" /></result>
1371 <description>
1372 Reflexive order predicate.
1373 </description>
1374 </case>
1375 <case first-type="Float" second-type="Float">
1376 <result><named-type name="Boolean" /></result>
1377 <description>
1378 Test greater than or equal.
1379 </description>
1380 </case>
1381 <case first-type="Integer" second-type="Integer">
1382 <result><named-type name="Boolean" /></result>
1383 <description>
1384 Test greater than or equal.
1385 </description>
1386 </case>
1387 <case first-type="Length" second-type="Length">
1388 <result><named-type name="Boolean" /></result>
1389 <description>
1390 Test greater than or equal.
1391 </description>
1392 </case>
1394 </operator-binary> <!-- end of binary "≥" -->
1397 <operator-binary op="∧">
1398         <alternative op="and" />
1399 <case first-type="Boolean" second-type="Boolean">
1400 <result><named-type name="Boolean" /></result>
1401 <description>
1402 Conjunction.
1403 </description>
1404 </case>
1406 </operator-binary> <!-- end of binary "and" -->
1409 <operator-binary op="∨">
1410         <alternative op="or" />
1412 <case first-type="Boolean" second-type="Boolean">
1413 <result><named-type name="Boolean" /></result>
1414 <description>
1415 Disjunction.
1416 </description>
1417 </case>
1419 </operator-binary> <!-- end of binary "or" -->
1422 <operator-binary op="⊻">
1423         <alternative op="xor" />
1425 <case first-type="Boolean" second-type="Boolean">
1426 <result><named-type name="Boolean" /></result>
1427 <description>
1428 Exclusive or.
1429 </description>
1430 </case>
1432 </operator-binary> <!-- end of binary "or" -->