Macro: BASE_CREATE_CLASS

Module location: FMAC line 10712 (view source)

Change: Clear In object Flag. If a class is created within an object it is not relevant.

  #PUSH !b              // save obj_flag
  #PUSH !Zb             // save current_dep
  #PUSH !Zf             // save the super_class_count
  #SET B$ (!b | 2)      // set flag to in_class
  // we want to strip in in-object flag. This will get restored when
  // the class is ended. When a class is defined it is not relevant if
  // it is in an object or not.
  #SET B$ (!b & 14)     // set flag to not in_class (remove bit 0)
  #SET ZB$ 0                // based on atomic class object
  #IF ( (!b & 1) = 0 )          // are we NOT in a create_object?
    #IFDEF !4.AGG               // bump dep number by already
      #SET ZB$ !4.AGG           // defined sub objects
    #ENDIF
  #ENDIF
  #SET ZF$ !Zb              // save the super_class_count
  #PUSH !Zi             // save current sub object count
  #SET ZI$ 0                // and init for new class

  #PUSH !x                  // save old property index
  #SET X$ 0                 //init to first array index# (0)

  #SPUSH             // save the old class name
  #SET $$ !1                // retain the name of the class
  #IFDEF U_!1               // if the new class id has already
  #ELSE                 // been defined, dont bother
    Global_variable INTEGER U_!1            // else put it into a int of that name
  #ENDIF
  #DATA                 // wind up the stream
  #IFDEF !4
    #DPUSH !4
  #ELSE
    #DPUSH U_!4             // based upon
  #ENDIF
  #IF (!0<5)
    #DPUSH |CI0             // no colors defined, use default
  #ELSE
    #DPUSH !5               // else do what they say
  #ENDIF
  #IF (!0<6)
    #DPUSH |CI0             // no colors defined, use default
  #ELSE
    #DPUSH !6               // else do what they say
  #ENDIF
  #IF (!0=7)                // if parameter used, this will be
    #DPUSH |CS"!7"          // the name of a 'C' function.
  #ELSE
    #DPUSH |CS""            // else inherit one from the parent
  #ENDIF
  !A [] CREATE$CLASS U_!1 |VL       // let 'er rip