[BACK]Return to trip1.k CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097 / debug

File: [local] / OpenXM / src / k097 / debug / trip1.k (download)

Revision 1.1.1.1 (vendor branch), Fri Oct 8 02:12:16 1999 UTC (24 years, 8 months ago) by maekawa
Branch: OpenXM, MAIN
CVS Tags: maekawa-ipv6, R_1_3_1-2, RELEASE_20000124, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, RELEASE_1_1_3, RELEASE_1_1_2, KNOPPIX_2006, HEAD, DEB_REL_1_2_3-9, ALPHA
Changes since 1.1: +0 -0 lines

o import OpenXM sources


/* test of class definition.  1997, 3/31, 4/1 */
/* a = Complex.new0(1,1);
   b = a+a;
   b.show();
   b.foo();
*/
class Object extends PrimitiveObject {
   ;
}

def void show() {
    local this2;
    this2 = this;
    Print(this2);
}

sm1(" /ectag { dup isClass not { pop -1 } { lc } ifelse } def ");
def k00ecTag(a) { sm1(a," ectag /FunctionValue set "); }
def IsObject() {
  local this2;
  this2 = this;
  if (!IsArray(this2)) return(false);
  if (Length(this2) < 1) return(false);
  this2 = this2[0];
  if (k00ecTag(this2) == k00ecTag(Object[0])) return(true);
  else return(false);
}

/* ------------------------------------- */ 
class Complex extends Object {
  local re,im;
  def new0(a,b) {
     local this2;
     this2 = this;
     return([this2[0],a,b]);
  }
  def void show() {
     local this2;
     this2 = this;
     Print("["); Print(this2[1]); Print("]+i["); Print(this2[2]);
     Print("]");
  }
  def void foo() {
     show();  
     super.show();
  }
  def operator add(b) {
     local this2,ans;
     this2 = this;
     ans = Complex.new0(0,0);
     if (!this2.IsObject()) {
        Println("The first argument must be in Complex.");
        sm1(" error ");
     }
     if (!b.IsObject()) {
        Println("The second argument must be in Complex.");
        sm1(" error ");
     }
     ans[1] = this2[1]+b[1];
     ans[2] = this2[2]+b[2];
     return(ans);
  }
  def operator mul(b) {
     local x1,x2,x3,x4,this2,ans;
     this2 = this;
     ans = Complex.new0(0,0);
     x1 = this2[1]; x2 = this2[2];
     if (isComplex(b)) {
       y1 = b[1]; y2 = b[2];
       ans[1] = x1*y1-x2*y2;
       ans[2] = x1*y2+x2*y1;
       return(ans);
     }
     ans[1] = x1*b;
     ans[2] = x2*b;
     return(ans);
  }
}

/* これがメンバ関数ではこまる. */
def isComplex(this2) {
   if (! this2.IsObject()) return(false);
   if (this2[0] == Complex[0]) return(true);
   else return(false);
}

class Integer extends Object {
   local ii;
   def new0(i) {
      local this2;
      this2 = this;
      return([this2[0],i]);
   }
   one = Integer.new0(1);
   def operator sub(b) {
     local this2,ans;
     this2 = this;
     ans = Integer.new0(0);
     ans[1] = this2[1]-b[1];
     return(ans);
   }
  def operator mul(b) {
     local this2, ans;
     this2 = this;
     ans = Integer.new0(0);
     ans[1] = this2[1]*b[1];
     return(ans);
  }
  def isEqual(b) {
    local this2;
    this2 = this;
    if (this2[1] == b[1]) return(true);
    else return(false);
  }
  def factorial() {
    local this2,tmp;
    this2 = this;
    if (this.isEqual(one)) return( one );
    tmp = this2 - one;
    return( (tmp.factorial())* this2 );
  }
}