Annotation of OpenXM/src/k097/debug/trip1.k, Revision 1.1
1.1 ! maekawa 1:
! 2:
! 3: /* test of class definition. 1997, 3/31, 4/1 */
! 4: /* a = Complex.new0(1,1);
! 5: b = a+a;
! 6: b.show();
! 7: b.foo();
! 8: */
! 9: class Object extends PrimitiveObject {
! 10: ;
! 11: }
! 12:
! 13: def void show() {
! 14: local this2;
! 15: this2 = this;
! 16: Print(this2);
! 17: }
! 18:
! 19: sm1(" /ectag { dup isClass not { pop -1 } { lc } ifelse } def ");
! 20: def k00ecTag(a) { sm1(a," ectag /FunctionValue set "); }
! 21: def IsObject() {
! 22: local this2;
! 23: this2 = this;
! 24: if (!IsArray(this2)) return(false);
! 25: if (Length(this2) < 1) return(false);
! 26: this2 = this2[0];
! 27: if (k00ecTag(this2) == k00ecTag(Object[0])) return(true);
! 28: else return(false);
! 29: }
! 30:
! 31: /* ------------------------------------- */
! 32: class Complex extends Object {
! 33: local re,im;
! 34: def new0(a,b) {
! 35: local this2;
! 36: this2 = this;
! 37: return([this2[0],a,b]);
! 38: }
! 39: def void show() {
! 40: local this2;
! 41: this2 = this;
! 42: Print("["); Print(this2[1]); Print("]+i["); Print(this2[2]);
! 43: Print("]");
! 44: }
! 45: def void foo() {
! 46: show();
! 47: super.show();
! 48: }
! 49: def operator add(b) {
! 50: local this2,ans;
! 51: this2 = this;
! 52: ans = Complex.new0(0,0);
! 53: if (!this2.IsObject()) {
! 54: Println("The first argument must be in Complex.");
! 55: sm1(" error ");
! 56: }
! 57: if (!b.IsObject()) {
! 58: Println("The second argument must be in Complex.");
! 59: sm1(" error ");
! 60: }
! 61: ans[1] = this2[1]+b[1];
! 62: ans[2] = this2[2]+b[2];
! 63: return(ans);
! 64: }
! 65: def operator mul(b) {
! 66: local x1,x2,x3,x4,this2,ans;
! 67: this2 = this;
! 68: ans = Complex.new0(0,0);
! 69: x1 = this2[1]; x2 = this2[2];
! 70: if (isComplex(b)) {
! 71: y1 = b[1]; y2 = b[2];
! 72: ans[1] = x1*y1-x2*y2;
! 73: ans[2] = x1*y2+x2*y1;
! 74: return(ans);
! 75: }
! 76: ans[1] = x1*b;
! 77: ans[2] = x2*b;
! 78: return(ans);
! 79: }
! 80: }
! 81:
! 82: /* これがメンバ関数ではこまる. */
! 83: def isComplex(this2) {
! 84: if (! this2.IsObject()) return(false);
! 85: if (this2[0] == Complex[0]) return(true);
! 86: else return(false);
! 87: }
! 88:
! 89: class Integer extends Object {
! 90: local ii;
! 91: def new0(i) {
! 92: local this2;
! 93: this2 = this;
! 94: return([this2[0],i]);
! 95: }
! 96: one = Integer.new0(1);
! 97: def operator sub(b) {
! 98: local this2,ans;
! 99: this2 = this;
! 100: ans = Integer.new0(0);
! 101: ans[1] = this2[1]-b[1];
! 102: return(ans);
! 103: }
! 104: def operator mul(b) {
! 105: local this2, ans;
! 106: this2 = this;
! 107: ans = Integer.new0(0);
! 108: ans[1] = this2[1]*b[1];
! 109: return(ans);
! 110: }
! 111: def isEqual(b) {
! 112: local this2;
! 113: this2 = this;
! 114: if (this2[1] == b[1]) return(true);
! 115: else return(false);
! 116: }
! 117: def factorial() {
! 118: local this2,tmp;
! 119: this2 = this;
! 120: if (this.isEqual(one)) return( one );
! 121: tmp = this2 - one;
! 122: return( (tmp.factorial())* this2 );
! 123: }
! 124: }
! 125:
! 126:
! 127:
! 128:
! 129:
! 130:
! 131:
! 132:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>