1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
;; -*-theme-d-*-
;; Copyright (C) 2014, 2024 Tommi Höynälänmaa
;; Distributed under GNU General Public License version 3,
;; see file doc/GPL-3.
;; Expected results: compilation OK
(define-interface (tests test247)
(import (standard-library core))
(define-param-class :matrix
(parameters %number)
(attributes equal-by-value)
(inheritance-access hidden)
(constructor-access module)
(fields
(rows <integer> public hidden)
(columns <integer> public hidden)
(contents (:mutable-vector %number) public module)))
(define-param-class :diagonal-matrix
(parameters %number)
(attributes equal-by-value)
(inheritance-access hidden)
(constructor-access module)
(fields
(len <integer> public hidden)
(contents (:mutable-vector %number) public module)))
(declare make-matrix
(:param-proc (%number) (<integer> <integer> %number)
(:matrix %number)
(pure)))
(declare make-diagonal-matrix
(:param-proc (%number) (<integer> %number)
(:diagonal-matrix %number)
(pure)))
(declare-virtual-method matrix-ref
(:param-proc (%number)
((:matrix %number) <integer> <integer>)
%number (pure)))
(declare-virtual-method matrix-ref
(:param-proc (%number)
((:diagonal-matrix %number) <integer> <integer>)
%number (pure)))
(declare-virtual-method matrix-set!
(:param-proc (%number)
((:matrix %number) <integer> <integer> %number)
<none> (nonpure)))
(declare-virtual-method matrix-set!
(:param-proc (%number)
((:diagonal-matrix %number) <integer> <integer> %number)
<none> (nonpure)))
(declare diagonal-matrix-set!
(:param-proc (%number)
((:diagonal-matrix %number) <integer> %number)
<none> (nonpure)))
(declare matrix*
(:param-proc (%number)
((:matrix %number) (:matrix %number))
(:matrix %number)
(pure)))
(declare diagonal-matrix*
(:param-proc (%number)
((:diagonal-matrix %number) (:diagonal-matrix %number))
(:diagonal-matrix %number)
(pure)))
(declare-virtual-method *
(:param-proc (%number)
((:matrix %number) (:matrix %number))
(:matrix %number)
(pure)))
(declare-virtual-method *
(:param-proc (%number)
(%number (:matrix %number))
(:matrix %number)
(pure)))
(declare-virtual-method *
(:param-proc (%number)
((:matrix %number) %number)
(:matrix %number)
(pure)))
(declare-virtual-method *
(:param-proc (%number)
((:matrix %number) (:diagonal-matrix %number))
(:matrix %number)
(pure)))
(declare-virtual-method *
(:param-proc (%number)
((:diagonal-matrix %number) (:matrix %number))
(:matrix %number)
(pure)))
(declare-virtual-method *
(:param-proc (%number)
((:diagonal-matrix %number) (:diagonal-matrix %number))
(:diagonal-matrix %number)
(pure))))
|