Files
harbour-core/utils/hbtest/rt_class.prg
Viktor Szakats 5a2a287752 2017-09-08 16:00 UTC Viktor Szakats (vszakats users.noreply.github.com)
* *
    * partial sync with the 3.4 fork codebase. These are the things
      synces for the most part:
      - copyright headers
      - grammar/typos in comments and some readmes
      - comment/whitespace/decorations
      - variable scoping in C files
      - DO CASE/SWITCH and some other alternate syntax usage
      - minimal amount of human readable text in strings
      - minor code updates
      - HB_TRACE() void * casts for pointers and few other changes to
        avoid C compiler warnings
      - various other, minor code cleanups
      - only Harbour/C code/headers were touched in src, utils, contrib,
        include. No 3rd party code, no make files, and with just a few
        exceptions, no 'tests' code was touched.
      - certain components were not touched were 3.4 diverged too much
        already, like f.e. hbmk2, hbssl, hbcurl, hbexpat
      - the goal was that no actual program logic should be altered by
        these changes. Except some possible minor exceptions, any such
        change is probably a bug in this patch.
      It's a massive patch, if you find anything broken after it, please
      open an Issue with the details. Build test was done on macOS.
      The goal is make it easier to see what actual code/logic was changed
      in 3.4 compared to 3.2 and to make patches easier to apply in both
      ways.
2017-09-08 16:25:13 +00:00

1444 lines
62 KiB
Plaintext

/*
* Harbour class/OOP test
*
* Copyright 2006 Przemyslaw Czerpak <druzus / at / priv.onet.pl>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file LICENSE.txt. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA (or visit https://www.gnu.org/licenses/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#include "rt_main.ch"
/* Don't change the position of this #include. */
#include "rt_vars.ch"
#include "hbclass.ch"
MEMVAR objHolder, cDtorResult
PROCEDURE Main_CLASS()
LOCAL oValue, aRef
PRIVATE objHolder, cDtorResult
#ifdef __HARBOUR__
/* Test destructors */
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 0 )
HBTEST oValue:type IS 0
HBTEST oValue := NIL IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS "No references to self."
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 1 )
HBTEST oValue:type IS 1
HBTEST oValue := NIL IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS "Reference to self in instance variable."
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 2 )
HBTEST oValue:type IS 2
HBTEST oValue := NIL IS "E 45 BASE 1301 Object destructor failure (Reference to freed block) OS:0 #:0 "
HBTEST objHolder IS NIL
HBTEST cDtorResult IS "Reference to self in class variable."
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 3 )
HBTEST oValue:type IS 3
HBTEST oValue := NIL IS "E 45 BASE 1301 Object destructor failure (Reference to freed block) OS:0 #:0 "
HBTEST ValType( objHolder ) IS "A"
HBTEST Len( objHolder ) IS 0
HBTEST cDtorResult IS "Reference to self in private memvar."
/* Tests with cross references and releasing by Garbage Collector */
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 0 )
HBTEST oValue:type IS 0
/* create cross reference */
aRef := { oValue, NIL }; aRef[ 2 ] := aRef; aRef := NIL
HBTEST oValue := NIL IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS ""
HBTEST hb_gcAll() IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS "No references to self."
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 1 )
HBTEST oValue:type IS 1
/* create cross reference */
aRef := { oValue, NIL }; aRef[ 2 ] := aRef; aRef := NIL
HBTEST oValue := NIL IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS ""
HBTEST hb_gcAll() IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS "Reference to self in instance variable."
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 2 )
HBTEST oValue:type IS 2
/* create cross reference */
aRef := { oValue, NIL }; aRef[ 2 ] := aRef; aRef := NIL
HBTEST oValue := NIL IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS ""
HBTEST hb_gcAll() IS "E 45 BASE 1302 Object destructor failure (Reference to freed block) OS:0 #:0 "
HBTEST objHolder IS NIL
HBTEST cDtorResult IS "Reference to self in class variable."
HBTEST cDtorResult := "" IS ""
HBTEST objHolder := NIL IS NIL
oValue := DTORCLASS():NEW( 3 )
HBTEST oValue:type IS 3
/* create cross reference */
aRef := { oValue, NIL }; aRef[ 2 ] := aRef; aRef := NIL
HBTEST oValue := NIL IS NIL
HBTEST objHolder IS NIL
HBTEST cDtorResult IS ""
HBTEST hb_gcAll() IS "E 45 BASE 1302 Object destructor failure (Reference to freed block) OS:0 #:0 "
HBTEST ValType( objHolder ) IS "A"
HBTEST Len( objHolder ) IS 0
HBTEST cDtorResult IS "Reference to self in private memvar."
/* Test instance area allocating and casting */
oValue := IVARSCLASS4():new()
HBTEST oValue:x1 IS "(x1)"
HBTEST oValue:y1 IS "(y1)"
HBTEST oValue:z1 IS "(z1)"
HBTEST oValue:x2 IS "(x2)"
HBTEST oValue:y2 IS "(y2)"
HBTEST oValue:z2 IS "(z2)"
HBTEST oValue:x3 IS "(x3)"
HBTEST oValue:y3 IS "(y3)"
HBTEST oValue:z3 IS "(z3)"
HBTEST oValue:x4 IS "(x4)"
HBTEST oValue:y4 IS "(y4)"
HBTEST oValue:z4 IS "(z4)"
HBTEST INSTANCE_DATA( oValue ) IS "[12]: (x1) (y1) (z1) (x2) (y2) (z2) (x3) (y3) (z3) (x4) (y4) (z4)"
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* simple assignment... */
HBTEST oValue:x1 := " X1 " IS " X1 "
HBTEST oValue:y1 := " Y1 " IS " Y1 "
HBTEST oValue:z1 := " Z1 " IS " Z1 "
HBTEST oValue:x2 := " X2 " IS " X2 "
HBTEST oValue:y2 := " Y2 " IS " Y2 "
HBTEST oValue:z2 := " Z2 " IS " Z2 "
HBTEST oValue:x3 := " X3 " IS " X3 "
HBTEST oValue:y3 := " Y3 " IS " Y3 "
HBTEST oValue:z3 := " Z3 " IS " Z3 "
HBTEST oValue:x4 := " X4 " IS " X4 "
HBTEST oValue:y4 := " Y4 " IS " Y4 "
HBTEST oValue:z4 := " Z4 " IS " Z4 "
HBTEST oValue:x1 IS " X1 "
HBTEST oValue:y1 IS " Y1 "
HBTEST oValue:z1 IS " Z1 "
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST INSTANCE_DATA( oValue ) IS "[12]: X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3 X4 Y4 Z4 "
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting IVARSCLASS1 instance variables... */
HBTEST oValue:IVARSCLASS1:x1 := "[X1]" IS "[X1]"
HBTEST oValue:IVARSCLASS1:y1 := "[Y1]" IS "[Y1]"
HBTEST oValue:IVARSCLASS1:z1 := "[Z1]" IS "[Z1]"
HBTEST oValue:x1 IS "[X1]"
HBTEST oValue:y1 IS "[Y1]"
HBTEST oValue:z1 IS "[Z1]"
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST INSTANCE_DATA( oValue ) IS "[12]: [X1] [Y1] [Z1] X2 Y2 Z2 X3 Y3 Z3 X4 Y4 Z4 "
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting IVARSCLASS2 instance variables... */
HBTEST oValue:IVARSCLASS2:x2 := "[X2]" IS "[X2]"
HBTEST oValue:IVARSCLASS2:y2 := "[Y2]" IS "[Y2]"
HBTEST oValue:IVARSCLASS2:z2 := "[Z2]" IS "[Z2]"
HBTEST oValue:x1 IS "[X1]"
HBTEST oValue:y1 IS "[Y1]"
HBTEST oValue:z1 IS "[Z1]"
HBTEST oValue:x2 IS "[X2]"
HBTEST oValue:y2 IS "[Y2]"
HBTEST oValue:z2 IS "[Z2]"
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST INSTANCE_DATA( oValue ) IS "[12]: [X1] [Y1] [Z1] [X2] [Y2] [Z2] X3 Y3 Z3 X4 Y4 Z4 "
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting IVARSCLASS3 instance variables... */
HBTEST oValue:IVARSCLASS3:x3 := "[X3]" IS "[X3]"
HBTEST oValue:IVARSCLASS3:y3 := "[Y3]" IS "[Y3]"
HBTEST oValue:IVARSCLASS3:z3 := "[Z3]" IS "[Z3]"
HBTEST oValue:x1 IS "[X1]"
HBTEST oValue:y1 IS "[Y1]"
HBTEST oValue:z1 IS "[Z1]"
HBTEST oValue:x2 IS "[X2]"
HBTEST oValue:y2 IS "[Y2]"
HBTEST oValue:z2 IS "[Z2]"
HBTEST oValue:x3 IS "[X3]"
HBTEST oValue:y3 IS "[Y3]"
HBTEST oValue:z3 IS "[Z3]"
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST INSTANCE_DATA( oValue ) IS "[12]: [X1] [Y1] [Z1] [X2] [Y2] [Z2] [X3] [Y3] [Z3] X4 Y4 Z4 "
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting IVARSCLASS4 instance variables... */
HBTEST oValue:IVARSCLASS4:x4 := "[X4]" IS "[X4]"
HBTEST oValue:IVARSCLASS4:y4 := "[Y4]" IS "[Y4]"
HBTEST oValue:IVARSCLASS4:z4 := "[Z4]" IS "[Z4]"
HBTEST oValue:x1 IS "[X1]"
HBTEST oValue:y1 IS "[Y1]"
HBTEST oValue:z1 IS "[Z1]"
HBTEST oValue:x2 IS "[X2]"
HBTEST oValue:y2 IS "[Y2]"
HBTEST oValue:z2 IS "[Z2]"
HBTEST oValue:x3 IS "[X3]"
HBTEST oValue:y3 IS "[Y3]"
HBTEST oValue:z3 IS "[Z3]"
HBTEST oValue:x4 IS "[X4]"
HBTEST oValue:y4 IS "[Y4]"
HBTEST oValue:z4 IS "[Z4]"
HBTEST INSTANCE_DATA( oValue ) IS "[12]: [X1] [Y1] [Z1] [X2] [Y2] [Z2] [X3] [Y3] [Z3] [X4] [Y4] [Z4]"
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting IVARSCLASS3:IVARSCLASS1 instance variables... */
HBTEST oValue:IVARSCLASS3:IVARSCLASS1:x1 := "<X1>" IS "<X1>"
HBTEST oValue:IVARSCLASS3:IVARSCLASS1:y1 := "<Y1>" IS "<Y1>"
HBTEST oValue:IVARSCLASS3:IVARSCLASS1:z1 := "<Z1>" IS "<Z1>"
HBTEST oValue:x1 IS "<X1>"
HBTEST oValue:y1 IS "<Y1>"
HBTEST oValue:z1 IS "<Z1>"
HBTEST oValue:x2 IS "[X2]"
HBTEST oValue:y2 IS "[Y2]"
HBTEST oValue:z2 IS "[Z2]"
HBTEST oValue:x3 IS "[X3]"
HBTEST oValue:y3 IS "[Y3]"
HBTEST oValue:z3 IS "[Z3]"
HBTEST oValue:x4 IS "[X4]"
HBTEST oValue:y4 IS "[Y4]"
HBTEST oValue:z4 IS "[Z4]"
HBTEST INSTANCE_DATA( oValue ) IS "[12]: <X1> <Y1> <Z1> [X2] [Y2] [Z2] [X3] [Y3] [Z3] [X4] [Y4] [Z4]"
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting IVARSCLASS3:IVARSCLASS2 instance variables... */
HBTEST oValue:IVARSCLASS3:IVARSCLASS2:x2 := "<X2>" IS "<X2>"
HBTEST oValue:IVARSCLASS3:IVARSCLASS2:y2 := "<Y2>" IS "<Y2>"
HBTEST oValue:IVARSCLASS3:IVARSCLASS2:z2 := "<Z2>" IS "<Z2>"
HBTEST oValue:x1 IS "<X1>"
HBTEST oValue:y1 IS "<Y1>"
HBTEST oValue:z1 IS "<Z1>"
HBTEST oValue:x2 IS "<X2>"
HBTEST oValue:y2 IS "<Y2>"
HBTEST oValue:z2 IS "<Z2>"
HBTEST oValue:x3 IS "[X3]"
HBTEST oValue:y3 IS "[Y3]"
HBTEST oValue:z3 IS "[Z3]"
HBTEST oValue:x4 IS "[X4]"
HBTEST oValue:y4 IS "[Y4]"
HBTEST oValue:z4 IS "[Z4]"
HBTEST INSTANCE_DATA( oValue ) IS "[12]: <X1> <Y1> <Z1> <X2> <Y2> <Z2> [X3] [Y3] [Z3] [X4] [Y4] [Z4]"
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting SUPER instance variables... */
HBTEST oValue:super:x1 := "{X1}" IS "{X1}"
HBTEST oValue:super:y1 := "{Y1}" IS "{Y1}"
HBTEST oValue:super:z1 := "{Z1}" IS "{Z1}"
HBTEST oValue:super:x2 := "{X2}" IS "{X2}"
HBTEST oValue:super:y2 := "{Y2}" IS "{Y2}"
HBTEST oValue:super:z2 := "{Z2}" IS "{Z2}"
HBTEST oValue:super:x3 := "{X3}" IS "{X3}"
HBTEST oValue:super:y3 := "{Y3}" IS "{Y3}"
HBTEST oValue:super:z3 := "{Z3}" IS "{Z3}"
HBTEST oValue:x1 IS "{X1}"
HBTEST oValue:y1 IS "{Y1}"
HBTEST oValue:z1 IS "{Z1}"
HBTEST oValue:x2 IS "{X2}"
HBTEST oValue:y2 IS "{Y2}"
HBTEST oValue:z2 IS "{Z2}"
HBTEST oValue:x3 IS "{X3}"
HBTEST oValue:y3 IS "{Y3}"
HBTEST oValue:z3 IS "{Z3}"
HBTEST oValue:x4 IS "[X4]"
HBTEST oValue:y4 IS "[Y4]"
HBTEST oValue:z4 IS "[Z4]"
HBTEST INSTANCE_DATA( oValue ) IS "[12]: {X1} {Y1} {Z1} {X2} {Y2} {Z2} {X3} {Y3} {Z3} [X4] [Y4] [Z4]"
HBTEST __cls_CntClsData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:IVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Test class variables allocating and casting */
oValue := CVARSCLASS4():new()
HBTEST oValue:x1 IS "(x1)"
HBTEST oValue:y1 IS "(y1)"
HBTEST oValue:z1 IS "(z1)"
HBTEST oValue:x2 IS "(x2)"
HBTEST oValue:y2 IS "(y2)"
HBTEST oValue:z2 IS "(z2)"
HBTEST oValue:x3 IS "(x3)"
HBTEST oValue:y3 IS "(y3)"
HBTEST oValue:z3 IS "(z3)"
HBTEST oValue:x4 IS "(x4)"
HBTEST oValue:y4 IS "(y4)"
HBTEST oValue:z4 IS "(z4)"
HBTEST oValue:CVARSCLASS1:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS1:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS1:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS2:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS2:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS2:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS2:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS2:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS2:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS3:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS3:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS3:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS3:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS3:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS3:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS3:x3 IS "(x3)"
HBTEST oValue:CVARSCLASS3:y3 IS "(y3)"
HBTEST oValue:CVARSCLASS3:z3 IS "(z3)"
HBTEST oValue:CVARSCLASS4:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS4:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS4:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS4:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS4:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS4:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS4:x3 IS "(x3)"
HBTEST oValue:CVARSCLASS4:y3 IS "(y3)"
HBTEST oValue:CVARSCLASS4:z3 IS "(z3)"
HBTEST oValue:CVARSCLASS4:x4 IS "(x4)"
HBTEST oValue:CVARSCLASS4:y4 IS "(y4)"
HBTEST oValue:CVARSCLASS4:z4 IS "(z4)"
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
HBTEST __cls_CntClsData( oValue:CVARSCLASS1:classH ) IS 3
HBTEST __cls_CntClsData( oValue:CVARSCLASS2:classH ) IS 6
HBTEST __cls_CntClsData( oValue:CVARSCLASS3:classH ) IS 9
HBTEST __cls_CntClsData( oValue:CVARSCLASS4:classH ) IS 12
HBTEST __cls_CntClsData( oValue:classH ) IS 12
HBTEST __cls_CntShrData( oValue:CVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* simple assignment... */
HBTEST oValue:x1 := " X1 " IS " X1 "
HBTEST oValue:y1 := " Y1 " IS " Y1 "
HBTEST oValue:z1 := " Z1 " IS " Z1 "
HBTEST oValue:x2 := " X2 " IS " X2 "
HBTEST oValue:y2 := " Y2 " IS " Y2 "
HBTEST oValue:z2 := " Z2 " IS " Z2 "
HBTEST oValue:x3 := " X3 " IS " X3 "
HBTEST oValue:y3 := " Y3 " IS " Y3 "
HBTEST oValue:z3 := " Z3 " IS " Z3 "
HBTEST oValue:x4 := " X4 " IS " X4 "
HBTEST oValue:y4 := " Y4 " IS " Y4 "
HBTEST oValue:z4 := " Z4 " IS " Z4 "
HBTEST oValue:x1 IS " X1 "
HBTEST oValue:y1 IS " Y1 "
HBTEST oValue:z1 IS " Z1 "
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:CVARSCLASS1:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS1:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS1:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS2:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS2:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS2:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS2:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS2:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS2:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS3:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS3:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS3:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS3:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS3:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS3:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS3:x3 IS "(x3)"
HBTEST oValue:CVARSCLASS3:y3 IS "(y3)"
HBTEST oValue:CVARSCLASS3:z3 IS "(z3)"
HBTEST oValue:CVARSCLASS4:x1 IS " X1 "
HBTEST oValue:CVARSCLASS4:y1 IS " Y1 "
HBTEST oValue:CVARSCLASS4:z1 IS " Z1 "
HBTEST oValue:CVARSCLASS4:x2 IS " X2 "
HBTEST oValue:CVARSCLASS4:y2 IS " Y2 "
HBTEST oValue:CVARSCLASS4:z2 IS " Z2 "
HBTEST oValue:CVARSCLASS4:x3 IS " X3 "
HBTEST oValue:CVARSCLASS4:y3 IS " Y3 "
HBTEST oValue:CVARSCLASS4:z3 IS " Z3 "
HBTEST oValue:CVARSCLASS4:x4 IS " X4 "
HBTEST oValue:CVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:CVARSCLASS4:z4 IS " Z4 "
HBTEST __cls_CntClsData( oValue:CVARSCLASS1:classH ) IS 3
HBTEST __cls_CntClsData( oValue:CVARSCLASS2:classH ) IS 6
HBTEST __cls_CntClsData( oValue:CVARSCLASS3:classH ) IS 9
HBTEST __cls_CntClsData( oValue:CVARSCLASS4:classH ) IS 12
HBTEST __cls_CntClsData( oValue:classH ) IS 12
HBTEST __cls_CntShrData( oValue:CVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting CVARSCLASS1 class variables... */
HBTEST oValue:CVARSCLASS1:x1 := "[X1]" IS "[X1]"
HBTEST oValue:CVARSCLASS1:y1 := "[Y1]" IS "[Y1]"
HBTEST oValue:CVARSCLASS1:z1 := "[Z1]" IS "[Z1]"
HBTEST oValue:x1 IS " X1 "
HBTEST oValue:y1 IS " Y1 "
HBTEST oValue:z1 IS " Z1 "
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:CVARSCLASS1:x1 IS "[X1]"
HBTEST oValue:CVARSCLASS1:y1 IS "[Y1]"
HBTEST oValue:CVARSCLASS1:z1 IS "[Z1]"
HBTEST oValue:CVARSCLASS2:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS2:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS2:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS2:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS2:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS2:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS3:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS3:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS3:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS3:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS3:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS3:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS3:x3 IS "(x3)"
HBTEST oValue:CVARSCLASS3:y3 IS "(y3)"
HBTEST oValue:CVARSCLASS3:z3 IS "(z3)"
HBTEST oValue:CVARSCLASS4:x1 IS " X1 "
HBTEST oValue:CVARSCLASS4:y1 IS " Y1 "
HBTEST oValue:CVARSCLASS4:z1 IS " Z1 "
HBTEST oValue:CVARSCLASS4:x2 IS " X2 "
HBTEST oValue:CVARSCLASS4:y2 IS " Y2 "
HBTEST oValue:CVARSCLASS4:z2 IS " Z2 "
HBTEST oValue:CVARSCLASS4:x3 IS " X3 "
HBTEST oValue:CVARSCLASS4:y3 IS " Y3 "
HBTEST oValue:CVARSCLASS4:z3 IS " Z3 "
HBTEST oValue:CVARSCLASS4:x4 IS " X4 "
HBTEST oValue:CVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:CVARSCLASS4:z4 IS " Z4 "
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
HBTEST __cls_CntClsData( oValue:CVARSCLASS1:classH ) IS 3
HBTEST __cls_CntClsData( oValue:CVARSCLASS2:classH ) IS 6
HBTEST __cls_CntClsData( oValue:CVARSCLASS3:classH ) IS 9
HBTEST __cls_CntClsData( oValue:CVARSCLASS4:classH ) IS 12
HBTEST __cls_CntClsData( oValue:classH ) IS 12
HBTEST __cls_CntShrData( oValue:CVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting CVARSCLASS2 class variables... */
HBTEST oValue:CVARSCLASS2:x1 := "{X1}" IS "{X1}"
HBTEST oValue:CVARSCLASS2:y1 := "{Y1}" IS "{Y1}"
HBTEST oValue:CVARSCLASS2:z1 := "{Z1}" IS "{Z1}"
HBTEST oValue:CVARSCLASS2:x2 := "{X2}" IS "{X2}"
HBTEST oValue:CVARSCLASS2:y2 := "{Y2}" IS "{Y2}"
HBTEST oValue:CVARSCLASS2:z2 := "{Z2}" IS "{Z2}"
HBTEST oValue:x1 IS " X1 "
HBTEST oValue:y1 IS " Y1 "
HBTEST oValue:z1 IS " Z1 "
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:CVARSCLASS1:x1 IS "[X1]"
HBTEST oValue:CVARSCLASS1:y1 IS "[Y1]"
HBTEST oValue:CVARSCLASS1:z1 IS "[Z1]"
HBTEST oValue:CVARSCLASS2:x1 IS "{X1}"
HBTEST oValue:CVARSCLASS2:y1 IS "{Y1}"
HBTEST oValue:CVARSCLASS2:z1 IS "{Z1}"
HBTEST oValue:CVARSCLASS2:x2 IS "{X2}"
HBTEST oValue:CVARSCLASS2:y2 IS "{Y2}"
HBTEST oValue:CVARSCLASS2:z2 IS "{Z2}"
HBTEST oValue:CVARSCLASS3:x1 IS "(x1)"
HBTEST oValue:CVARSCLASS3:y1 IS "(y1)"
HBTEST oValue:CVARSCLASS3:z1 IS "(z1)"
HBTEST oValue:CVARSCLASS3:x2 IS "(x2)"
HBTEST oValue:CVARSCLASS3:y2 IS "(y2)"
HBTEST oValue:CVARSCLASS3:z2 IS "(z2)"
HBTEST oValue:CVARSCLASS3:x3 IS "(x3)"
HBTEST oValue:CVARSCLASS3:y3 IS "(y3)"
HBTEST oValue:CVARSCLASS3:z3 IS "(z3)"
HBTEST oValue:CVARSCLASS4:x1 IS " X1 "
HBTEST oValue:CVARSCLASS4:y1 IS " Y1 "
HBTEST oValue:CVARSCLASS4:z1 IS " Z1 "
HBTEST oValue:CVARSCLASS4:x2 IS " X2 "
HBTEST oValue:CVARSCLASS4:y2 IS " Y2 "
HBTEST oValue:CVARSCLASS4:z2 IS " Z2 "
HBTEST oValue:CVARSCLASS4:x3 IS " X3 "
HBTEST oValue:CVARSCLASS4:y3 IS " Y3 "
HBTEST oValue:CVARSCLASS4:z3 IS " Z3 "
HBTEST oValue:CVARSCLASS4:x4 IS " X4 "
HBTEST oValue:CVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:CVARSCLASS4:z4 IS " Z4 "
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
HBTEST __cls_CntClsData( oValue:CVARSCLASS1:classH ) IS 3
HBTEST __cls_CntClsData( oValue:CVARSCLASS2:classH ) IS 6
HBTEST __cls_CntClsData( oValue:CVARSCLASS3:classH ) IS 9
HBTEST __cls_CntClsData( oValue:CVARSCLASS4:classH ) IS 12
HBTEST __cls_CntClsData( oValue:classH ) IS 12
HBTEST __cls_CntShrData( oValue:CVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Setting CVARSCLASS3 class variables... */
HBTEST oValue:CVARSCLASS3:x1 := "<X1>" IS "<X1>"
HBTEST oValue:CVARSCLASS3:y1 := "<Y1>" IS "<Y1>"
HBTEST oValue:CVARSCLASS3:z1 := "<Z1>" IS "<Z1>"
HBTEST oValue:CVARSCLASS3:x2 := "<X2>" IS "<X2>"
HBTEST oValue:CVARSCLASS3:y2 := "<Y2>" IS "<Y2>"
HBTEST oValue:CVARSCLASS3:z2 := "<Z2>" IS "<Z2>"
HBTEST oValue:CVARSCLASS3:x3 := "<X3>" IS "<X3>"
HBTEST oValue:CVARSCLASS3:y3 := "<Y3>" IS "<Y3>"
HBTEST oValue:CVARSCLASS3:z3 := "<Z3>" IS "<Z3>"
HBTEST oValue:x1 IS " X1 "
HBTEST oValue:y1 IS " Y1 "
HBTEST oValue:z1 IS " Z1 "
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:CVARSCLASS1:x1 IS "[X1]"
HBTEST oValue:CVARSCLASS1:y1 IS "[Y1]"
HBTEST oValue:CVARSCLASS1:z1 IS "[Z1]"
HBTEST oValue:CVARSCLASS2:x1 IS "{X1}"
HBTEST oValue:CVARSCLASS2:y1 IS "{Y1}"
HBTEST oValue:CVARSCLASS2:z1 IS "{Z1}"
HBTEST oValue:CVARSCLASS2:x2 IS "{X2}"
HBTEST oValue:CVARSCLASS2:y2 IS "{Y2}"
HBTEST oValue:CVARSCLASS2:z2 IS "{Z2}"
HBTEST oValue:CVARSCLASS3:x1 IS "<X1>"
HBTEST oValue:CVARSCLASS3:y1 IS "<Y1>"
HBTEST oValue:CVARSCLASS3:z1 IS "<Z1>"
HBTEST oValue:CVARSCLASS3:x2 IS "<X2>"
HBTEST oValue:CVARSCLASS3:y2 IS "<Y2>"
HBTEST oValue:CVARSCLASS3:z2 IS "<Z2>"
HBTEST oValue:CVARSCLASS3:x3 IS "<X3>"
HBTEST oValue:CVARSCLASS3:y3 IS "<Y3>"
HBTEST oValue:CVARSCLASS3:z3 IS "<Z3>"
HBTEST oValue:CVARSCLASS4:x1 IS " X1 "
HBTEST oValue:CVARSCLASS4:y1 IS " Y1 "
HBTEST oValue:CVARSCLASS4:z1 IS " Z1 "
HBTEST oValue:CVARSCLASS4:x2 IS " X2 "
HBTEST oValue:CVARSCLASS4:y2 IS " Y2 "
HBTEST oValue:CVARSCLASS4:z2 IS " Z2 "
HBTEST oValue:CVARSCLASS4:x3 IS " X3 "
HBTEST oValue:CVARSCLASS4:y3 IS " Y3 "
HBTEST oValue:CVARSCLASS4:z3 IS " Z3 "
HBTEST oValue:CVARSCLASS4:x4 IS " X4 "
HBTEST oValue:CVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:CVARSCLASS4:z4 IS " Z4 "
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
HBTEST __cls_CntClsData( oValue:CVARSCLASS1:classH ) IS 3
HBTEST __cls_CntClsData( oValue:CVARSCLASS2:classH ) IS 6
HBTEST __cls_CntClsData( oValue:CVARSCLASS3:classH ) IS 9
HBTEST __cls_CntClsData( oValue:CVARSCLASS4:classH ) IS 12
HBTEST __cls_CntClsData( oValue:classH ) IS 12
HBTEST __cls_CntShrData( oValue:CVARSCLASS1:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS2:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS3:classH ) IS 0
HBTEST __cls_CntShrData( oValue:CVARSCLASS4:classH ) IS 0
HBTEST __cls_CntShrData( oValue:classH ) IS 0
/* Test shared class variables allocating and casting */
oValue := SVARSCLASS4():new()
HBTEST oValue:x1 IS "(x1)"
HBTEST oValue:y1 IS "(y1)"
HBTEST oValue:z1 IS "(z1)"
HBTEST oValue:x2 IS "(x2)"
HBTEST oValue:y2 IS "(y2)"
HBTEST oValue:z2 IS "(z2)"
HBTEST oValue:x3 IS "(x3)"
HBTEST oValue:y3 IS "(y3)"
HBTEST oValue:z3 IS "(z3)"
HBTEST oValue:x4 IS "(x4)"
HBTEST oValue:y4 IS "(y4)"
HBTEST oValue:z4 IS "(z4)"
HBTEST oValue:SVARSCLASS1:x1 IS "(x1)"
HBTEST oValue:SVARSCLASS1:y1 IS "(y1)"
HBTEST oValue:SVARSCLASS1:z1 IS "(z1)"
HBTEST oValue:SVARSCLASS2:x1 IS "(x1)"
HBTEST oValue:SVARSCLASS2:y1 IS "(y1)"
HBTEST oValue:SVARSCLASS2:z1 IS "(z1)"
HBTEST oValue:SVARSCLASS2:x2 IS "(x2)"
HBTEST oValue:SVARSCLASS2:y2 IS "(y2)"
HBTEST oValue:SVARSCLASS2:z2 IS "(z2)"
HBTEST oValue:SVARSCLASS3:x1 IS "(x1)"
HBTEST oValue:SVARSCLASS3:y1 IS "(y1)"
HBTEST oValue:SVARSCLASS3:z1 IS "(z1)"
HBTEST oValue:SVARSCLASS3:x2 IS "(x2)"
HBTEST oValue:SVARSCLASS3:y2 IS "(y2)"
HBTEST oValue:SVARSCLASS3:z2 IS "(z2)"
HBTEST oValue:SVARSCLASS3:x3 IS "(x3)"
HBTEST oValue:SVARSCLASS3:y3 IS "(y3)"
HBTEST oValue:SVARSCLASS3:z3 IS "(z3)"
HBTEST oValue:SVARSCLASS4:x1 IS "(x1)"
HBTEST oValue:SVARSCLASS4:y1 IS "(y1)"
HBTEST oValue:SVARSCLASS4:z1 IS "(z1)"
HBTEST oValue:SVARSCLASS4:x2 IS "(x2)"
HBTEST oValue:SVARSCLASS4:y2 IS "(y2)"
HBTEST oValue:SVARSCLASS4:z2 IS "(z2)"
HBTEST oValue:SVARSCLASS4:x3 IS "(x3)"
HBTEST oValue:SVARSCLASS4:y3 IS "(y3)"
HBTEST oValue:SVARSCLASS4:z3 IS "(z3)"
HBTEST oValue:SVARSCLASS4:x4 IS "(x4)"
HBTEST oValue:SVARSCLASS4:y4 IS "(y4)"
HBTEST oValue:SVARSCLASS4:z4 IS "(z4)"
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
HBTEST __cls_CntClsData( oValue:SVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:SVARSCLASS1:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS2:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS3:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS4:classH ) IS 3
HBTEST __cls_CntShrData( oValue:classH ) IS 3
/* simple assignment... */
HBTEST oValue:x1 := " X1 " IS " X1 "
HBTEST oValue:y1 := " Y1 " IS " Y1 "
HBTEST oValue:z1 := " Z1 " IS " Z1 "
HBTEST oValue:x2 := " X2 " IS " X2 "
HBTEST oValue:y2 := " Y2 " IS " Y2 "
HBTEST oValue:z2 := " Z2 " IS " Z2 "
HBTEST oValue:x3 := " X3 " IS " X3 "
HBTEST oValue:y3 := " Y3 " IS " Y3 "
HBTEST oValue:z3 := " Z3 " IS " Z3 "
HBTEST oValue:x4 := " X4 " IS " X4 "
HBTEST oValue:y4 := " Y4 " IS " Y4 "
HBTEST oValue:z4 := " Z4 " IS " Z4 "
HBTEST oValue:x1 IS " X1 "
HBTEST oValue:y1 IS " Y1 "
HBTEST oValue:z1 IS " Z1 "
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:SVARSCLASS1:x1 IS " X1 "
HBTEST oValue:SVARSCLASS1:y1 IS " Y1 "
HBTEST oValue:SVARSCLASS1:z1 IS " Z1 "
HBTEST oValue:SVARSCLASS2:x1 IS " X1 "
HBTEST oValue:SVARSCLASS2:y1 IS " Y1 "
HBTEST oValue:SVARSCLASS2:z1 IS " Z1 "
HBTEST oValue:SVARSCLASS2:x2 IS " X2 "
HBTEST oValue:SVARSCLASS2:y2 IS " Y2 "
HBTEST oValue:SVARSCLASS2:z2 IS " Z2 "
HBTEST oValue:SVARSCLASS3:x1 IS " X1 "
HBTEST oValue:SVARSCLASS3:y1 IS " Y1 "
HBTEST oValue:SVARSCLASS3:z1 IS " Z1 "
HBTEST oValue:SVARSCLASS3:x2 IS " X2 "
HBTEST oValue:SVARSCLASS3:y2 IS " Y2 "
HBTEST oValue:SVARSCLASS3:z2 IS " Z2 "
HBTEST oValue:SVARSCLASS3:x3 IS " X3 "
HBTEST oValue:SVARSCLASS3:y3 IS " Y3 "
HBTEST oValue:SVARSCLASS3:z3 IS " Z3 "
HBTEST oValue:SVARSCLASS4:x1 IS " X1 "
HBTEST oValue:SVARSCLASS4:y1 IS " Y1 "
HBTEST oValue:SVARSCLASS4:z1 IS " Z1 "
HBTEST oValue:SVARSCLASS4:x2 IS " X2 "
HBTEST oValue:SVARSCLASS4:y2 IS " Y2 "
HBTEST oValue:SVARSCLASS4:z2 IS " Z2 "
HBTEST oValue:SVARSCLASS4:x3 IS " X3 "
HBTEST oValue:SVARSCLASS4:y3 IS " Y3 "
HBTEST oValue:SVARSCLASS4:z3 IS " Z3 "
HBTEST oValue:SVARSCLASS4:x4 IS " X4 "
HBTEST oValue:SVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:SVARSCLASS4:z4 IS " Z4 "
HBTEST __cls_CntClsData( oValue:SVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:SVARSCLASS1:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS2:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS3:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS4:classH ) IS 3
HBTEST __cls_CntShrData( oValue:classH ) IS 3
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
/* Setting SVARSCLASS1 class variables... */
HBTEST oValue:SVARSCLASS1:x1 := "[X1]" IS "[X1]"
HBTEST oValue:SVARSCLASS1:y1 := "[Y1]" IS "[Y1]"
HBTEST oValue:SVARSCLASS1:z1 := "[Z1]" IS "[Z1]"
HBTEST oValue:x1 IS "[X1]"
HBTEST oValue:y1 IS "[Y1]"
HBTEST oValue:z1 IS "[Z1]"
HBTEST oValue:x2 IS " X2 "
HBTEST oValue:y2 IS " Y2 "
HBTEST oValue:z2 IS " Z2 "
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:SVARSCLASS1:x1 IS "[X1]"
HBTEST oValue:SVARSCLASS1:y1 IS "[Y1]"
HBTEST oValue:SVARSCLASS1:z1 IS "[Z1]"
HBTEST oValue:SVARSCLASS2:x1 IS "[X1]"
HBTEST oValue:SVARSCLASS2:y1 IS "[Y1]"
HBTEST oValue:SVARSCLASS2:z1 IS "[Z1]"
HBTEST oValue:SVARSCLASS2:x2 IS " X2 "
HBTEST oValue:SVARSCLASS2:y2 IS " Y2 "
HBTEST oValue:SVARSCLASS2:z2 IS " Z2 "
HBTEST oValue:SVARSCLASS3:x1 IS "[X1]"
HBTEST oValue:SVARSCLASS3:y1 IS "[Y1]"
HBTEST oValue:SVARSCLASS3:z1 IS "[Z1]"
HBTEST oValue:SVARSCLASS3:x2 IS " X2 "
HBTEST oValue:SVARSCLASS3:y2 IS " Y2 "
HBTEST oValue:SVARSCLASS3:z2 IS " Z2 "
HBTEST oValue:SVARSCLASS3:x3 IS " X3 "
HBTEST oValue:SVARSCLASS3:y3 IS " Y3 "
HBTEST oValue:SVARSCLASS3:z3 IS " Z3 "
HBTEST oValue:SVARSCLASS4:x1 IS "[X1]"
HBTEST oValue:SVARSCLASS4:y1 IS "[Y1]"
HBTEST oValue:SVARSCLASS4:z1 IS "[Z1]"
HBTEST oValue:SVARSCLASS4:x2 IS " X2 "
HBTEST oValue:SVARSCLASS4:y2 IS " Y2 "
HBTEST oValue:SVARSCLASS4:z2 IS " Z2 "
HBTEST oValue:SVARSCLASS4:x3 IS " X3 "
HBTEST oValue:SVARSCLASS4:y3 IS " Y3 "
HBTEST oValue:SVARSCLASS4:z3 IS " Z3 "
HBTEST oValue:SVARSCLASS4:x4 IS " X4 "
HBTEST oValue:SVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:SVARSCLASS4:z4 IS " Z4 "
HBTEST __cls_CntClsData( oValue:SVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:SVARSCLASS1:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS2:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS3:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS4:classH ) IS 3
HBTEST __cls_CntShrData( oValue:classH ) IS 3
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
/* Setting SVARSCLASS2 class variables... */
HBTEST oValue:SVARSCLASS2:x1 := "{X1}" IS "{X1}"
HBTEST oValue:SVARSCLASS2:y1 := "{Y1}" IS "{Y1}"
HBTEST oValue:SVARSCLASS2:z1 := "{Z1}" IS "{Z1}"
HBTEST oValue:SVARSCLASS2:x2 := "{X2}" IS "{X2}"
HBTEST oValue:SVARSCLASS2:y2 := "{Y2}" IS "{Y2}"
HBTEST oValue:SVARSCLASS2:z2 := "{Z2}" IS "{Z2}"
HBTEST oValue:x1 IS "{X1}"
HBTEST oValue:y1 IS "{Y1}"
HBTEST oValue:z1 IS "{Z1}"
HBTEST oValue:x2 IS "{X2}"
HBTEST oValue:y2 IS "{Y2}"
HBTEST oValue:z2 IS "{Z2}"
HBTEST oValue:x3 IS " X3 "
HBTEST oValue:y3 IS " Y3 "
HBTEST oValue:z3 IS " Z3 "
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:SVARSCLASS1:x1 IS "{X1}"
HBTEST oValue:SVARSCLASS1:y1 IS "{Y1}"
HBTEST oValue:SVARSCLASS1:z1 IS "{Z1}"
HBTEST oValue:SVARSCLASS2:x1 IS "{X1}"
HBTEST oValue:SVARSCLASS2:y1 IS "{Y1}"
HBTEST oValue:SVARSCLASS2:z1 IS "{Z1}"
HBTEST oValue:SVARSCLASS2:x2 IS "{X2}"
HBTEST oValue:SVARSCLASS2:y2 IS "{Y2}"
HBTEST oValue:SVARSCLASS2:z2 IS "{Z2}"
HBTEST oValue:SVARSCLASS3:x1 IS "{X1}"
HBTEST oValue:SVARSCLASS3:y1 IS "{Y1}"
HBTEST oValue:SVARSCLASS3:z1 IS "{Z1}"
HBTEST oValue:SVARSCLASS3:x2 IS "{X2}"
HBTEST oValue:SVARSCLASS3:y2 IS "{Y2}"
HBTEST oValue:SVARSCLASS3:z2 IS "{Z2}"
HBTEST oValue:SVARSCLASS3:x3 IS " X3 "
HBTEST oValue:SVARSCLASS3:y3 IS " Y3 "
HBTEST oValue:SVARSCLASS3:z3 IS " Z3 "
HBTEST oValue:SVARSCLASS4:x1 IS "{X1}"
HBTEST oValue:SVARSCLASS4:y1 IS "{Y1}"
HBTEST oValue:SVARSCLASS4:z1 IS "{Z1}"
HBTEST oValue:SVARSCLASS4:x2 IS "{X2}"
HBTEST oValue:SVARSCLASS4:y2 IS "{Y2}"
HBTEST oValue:SVARSCLASS4:z2 IS "{Z2}"
HBTEST oValue:SVARSCLASS4:x3 IS " X3 "
HBTEST oValue:SVARSCLASS4:y3 IS " Y3 "
HBTEST oValue:SVARSCLASS4:z3 IS " Z3 "
HBTEST oValue:SVARSCLASS4:x4 IS " X4 "
HBTEST oValue:SVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:SVARSCLASS4:z4 IS " Z4 "
HBTEST __cls_CntClsData( oValue:SVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:SVARSCLASS1:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS2:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS3:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS4:classH ) IS 3
HBTEST __cls_CntShrData( oValue:classH ) IS 3
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
/* Setting SVARSCLASS3 class variables... */
HBTEST oValue:SVARSCLASS3:x1 := "<X1>" IS "<X1>"
HBTEST oValue:SVARSCLASS3:y1 := "<Y1>" IS "<Y1>"
HBTEST oValue:SVARSCLASS3:z1 := "<Z1>" IS "<Z1>"
HBTEST oValue:SVARSCLASS3:x2 := "<X2>" IS "<X2>"
HBTEST oValue:SVARSCLASS3:y2 := "<Y2>" IS "<Y2>"
HBTEST oValue:SVARSCLASS3:z2 := "<Z2>" IS "<Z2>"
HBTEST oValue:SVARSCLASS3:x3 := "<X3>" IS "<X3>"
HBTEST oValue:SVARSCLASS3:y3 := "<Y3>" IS "<Y3>"
HBTEST oValue:SVARSCLASS3:z3 := "<Z3>" IS "<Z3>"
HBTEST oValue:x1 IS "<X1>"
HBTEST oValue:y1 IS "<Y1>"
HBTEST oValue:z1 IS "<Z1>"
HBTEST oValue:x2 IS "<X2>"
HBTEST oValue:y2 IS "<Y2>"
HBTEST oValue:z2 IS "<Z2>"
HBTEST oValue:x3 IS "<X3>"
HBTEST oValue:y3 IS "<Y3>"
HBTEST oValue:z3 IS "<Z3>"
HBTEST oValue:x4 IS " X4 "
HBTEST oValue:y4 IS " Y4 "
HBTEST oValue:z4 IS " Z4 "
HBTEST oValue:SVARSCLASS1:x1 IS "<X1>"
HBTEST oValue:SVARSCLASS1:y1 IS "<Y1>"
HBTEST oValue:SVARSCLASS1:z1 IS "<Z1>"
HBTEST oValue:SVARSCLASS2:x1 IS "<X1>"
HBTEST oValue:SVARSCLASS2:y1 IS "<Y1>"
HBTEST oValue:SVARSCLASS2:z1 IS "<Z1>"
HBTEST oValue:SVARSCLASS2:x2 IS "<X2>"
HBTEST oValue:SVARSCLASS2:y2 IS "<Y2>"
HBTEST oValue:SVARSCLASS2:z2 IS "<Z2>"
HBTEST oValue:SVARSCLASS3:x1 IS "<X1>"
HBTEST oValue:SVARSCLASS3:y1 IS "<Y1>"
HBTEST oValue:SVARSCLASS3:z1 IS "<Z1>"
HBTEST oValue:SVARSCLASS3:x2 IS "<X2>"
HBTEST oValue:SVARSCLASS3:y2 IS "<Y2>"
HBTEST oValue:SVARSCLASS3:z2 IS "<Z2>"
HBTEST oValue:SVARSCLASS3:x3 IS "<X3>"
HBTEST oValue:SVARSCLASS3:y3 IS "<Y3>"
HBTEST oValue:SVARSCLASS3:z3 IS "<Z3>"
HBTEST oValue:SVARSCLASS4:x1 IS "<X1>"
HBTEST oValue:SVARSCLASS4:y1 IS "<Y1>"
HBTEST oValue:SVARSCLASS4:z1 IS "<Z1>"
HBTEST oValue:SVARSCLASS4:x2 IS "<X2>"
HBTEST oValue:SVARSCLASS4:y2 IS "<Y2>"
HBTEST oValue:SVARSCLASS4:z2 IS "<Z2>"
HBTEST oValue:SVARSCLASS4:x3 IS "<X3>"
HBTEST oValue:SVARSCLASS4:y3 IS "<Y3>"
HBTEST oValue:SVARSCLASS4:z3 IS "<Z3>"
HBTEST oValue:SVARSCLASS4:x4 IS " X4 "
HBTEST oValue:SVARSCLASS4:y4 IS " Y4 "
HBTEST oValue:SVARSCLASS4:z4 IS " Z4 "
HBTEST __cls_CntClsData( oValue:SVARSCLASS1:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS2:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS3:classH ) IS 0
HBTEST __cls_CntClsData( oValue:SVARSCLASS4:classH ) IS 0
HBTEST __cls_CntClsData( oValue:classH ) IS 0
HBTEST __cls_CntShrData( oValue:SVARSCLASS1:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS2:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS3:classH ) IS 3
HBTEST __cls_CntShrData( oValue:SVARSCLASS4:classH ) IS 3
HBTEST __cls_CntShrData( oValue:classH ) IS 3
HBTEST INSTANCE_DATA( oValue ) IS "[0]:"
/* Test non virtual hidden messages */
oValue := NVCLASS4():new()
HBTEST oValue:m1() IS "NVCLASS1:M1 (a1) (b1) (c3) (d3) (e3) (f3) (ex1)|" + ;
"NVCLASS1:X (a1) (b1) (c3) (d3) (e3) (f3) (ex1)|" + ;
"NVCLASS3:Y (a3) (b3) (c3) (d3) (e3) (f3) (HI3)|" + ;
"NVCLASS3:Z (a3) (b3) (c3) (d3) (e3) (f3) (HI3)"
HBTEST oValue:m2() IS "NVCLASS2:M2 (a2) (b2) (c3) (d3) (e3) (f3) (ex1)|" + ;
"NVCLASS2:X (a2) (b2) (c3) (d3) (e3) (f3) (ex1)|" + ;
"NVCLASS3:Y (a3) (b3) (c3) (d3) (e3) (f3) (HI3)|" + ;
"NVCLASS3:Z (a3) (b3) (c3) (d3) (e3) (f3) (HI3)"
HBTEST oValue:m3() IS "NVCLASS3:M3 (a3) (b3) (c3) (d3) (e3) (f3) (HI3)|" + ;
"NVCLASS3:X (a3) (b3) (c3) (d3) (e3) (f3) (HI3)|" + ;
"NVCLASS3:Y (a3) (b3) (c3) (d3) (e3) (f3) (HI3)|" + ;
"NVCLASS3:Z (a3) (b3) (c3) (d3) (e3) (f3) (HI3)"
/* Test super casting */
HBTEST oValue:classname() IS "NVCLASS4"
HBTEST oValue:super:classname() IS "NVCLASS3"
HBTEST oValue:super:super:classname() IS "NVCLASS1"
HBTEST oValue:super:super:super:classname() IS "HBOBJECT"
HBTEST oValue:super:super:super:super:classname() IS "E 13 BASE 1004 Message not found (NVCLASS4:SUPER) OS:0 #:0 A:1:O:NVCLASS4 Object F:S"
#endif
RETURN
#ifdef __HARBOUR__
STATIC FUNCTION INSTANCE_DATA( oValue )
LOCAL cData, i
cData := "[" + hb_ntos( Len( oValue ) ) + "]:"
FOR i := 1 TO Len( oValue )
DO CASE
CASE HB_ISSTRING( oValue[ i ] )
cData += " " + oValue[ i ]
CASE oValue[ i ] == NIL
cData += " NIL"
OTHERWISE
cData += " ..."
ENDCASE
NEXT
RETURN cData
CREATE CLASS DTORCLASS
EXPORTED:
VAR type
VAR var1
CLASS VAR var2
METHOD init
DESTRUCTOR dtor
ENDCLASS
METHOD INIT( type ) CLASS DTORCLASS
::type := type
RETURN self
METHOD PROCEDURE DTOR CLASS DTORCLASS
DO CASE
CASE ::Type == 1
cDtorResult += "Reference to self in instance variable."
::var1 := self
CASE ::Type == 2
cDtorResult += "Reference to self in class variable."
::var2 := self
CASE ::Type == 3
cDtorResult += "Reference to self in private memvar."
objHolder := self
OTHERWISE
cDtorResult += "No references to self."
ENDCASE
RETURN
CREATE CLASS IVARSCLASS1
EXPORTED:
VAR x1 INIT "(x1)"
VAR y1 INIT "(y1)"
VAR z1 INIT "(z1)"
ENDCLASS
CREATE CLASS IVARSCLASS2 INHERIT IVARSCLASS1
EXPORTED:
VAR x2 INIT "(x2)"
VAR y2 INIT "(y2)"
VAR z2 INIT "(z2)"
ENDCLASS
CREATE CLASS IVARSCLASS3 INHERIT IVARSCLASS1, IVARSCLASS2
EXPORTED:
VAR x3 INIT "(x3)"
VAR y3 INIT "(y3)"
VAR z3 INIT "(z3)"
ENDCLASS
CREATE CLASS IVARSCLASS4 INHERIT IVARSCLASS3, IVARSCLASS2
EXPORTED:
VAR x4 INIT "(x4)"
VAR y4 INIT "(y4)"
VAR z4 INIT "(z4)"
ENDCLASS
CREATE CLASS CVARSCLASS1
EXPORTED:
CLASS VAR x1 INIT "(x1)"
CLASS VAR y1 INIT "(y1)"
CLASS VAR z1 INIT "(z1)"
ENDCLASS
CREATE CLASS CVARSCLASS2 INHERIT CVARSCLASS1
EXPORTED:
CLASS VAR x2 INIT "(x2)"
CLASS VAR y2 INIT "(y2)"
CLASS VAR z2 INIT "(z2)"
ENDCLASS
CREATE CLASS CVARSCLASS3 INHERIT CVARSCLASS1, CVARSCLASS2
EXPORTED:
CLASS VAR x3 INIT "(x3)"
CLASS VAR y3 INIT "(y3)"
CLASS VAR z3 INIT "(z3)"
ENDCLASS
CREATE CLASS CVARSCLASS4 INHERIT CVARSCLASS3, CVARSCLASS2
EXPORTED:
CLASS VAR x4 INIT "(x4)"
CLASS VAR y4 INIT "(y4)"
CLASS VAR z4 INIT "(z4)"
ENDCLASS
CREATE CLASS SVARSCLASS1
EXPORTED:
CLASS VAR x1 INIT "(x1)" SHARED
CLASS VAR y1 INIT "(y1)" SHARED
CLASS VAR z1 INIT "(z1)" SHARED
ENDCLASS
CREATE CLASS SVARSCLASS2 INHERIT SVARSCLASS1
EXPORTED:
CLASS VAR x2 INIT "(x2)" SHARED
CLASS VAR y2 INIT "(y2)" SHARED
CLASS VAR z2 INIT "(z2)" SHARED
ENDCLASS
CREATE CLASS SVARSCLASS3 INHERIT SVARSCLASS1, SVARSCLASS2
EXPORTED:
CLASS VAR x3 INIT "(x3)" SHARED
CLASS VAR y3 INIT "(y3)" SHARED
CLASS VAR z3 INIT "(z3)" SHARED
ENDCLASS
CREATE CLASS SVARSCLASS4 INHERIT SVARSCLASS3, SVARSCLASS2
EXPORTED:
CLASS VAR x4 INIT "(x4)" SHARED
CLASS VAR y4 INIT "(y4)" SHARED
CLASS VAR z4 INIT "(z4)" SHARED
ENDCLASS
CREATE CLASS NVCLASS1
HIDDEN:
VAR a init "(a1)"
CLASS VAR b init "(b1)"
METHOD x
PROTECTED:
VAR c init "(c1)"
CLASS VAR d init "(d1)"
METHOD y
EXPORTED:
VAR e init "(e1)"
CLASS VAR f init "(f1)"
VAR v init "(ex1)"
METHOD z
METHOD m1
ENDCLASS
METHOD m1 CLASS NVCLASS1
RETURN "NVCLASS1:M1 " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v ) + "|" + ;
::x() + "|" + ;
::y() + "|" + ;
::z()
METHOD x CLASS NVCLASS1
RETURN "NVCLASS1:X " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
METHOD y CLASS NVCLASS1
RETURN "NVCLASS1:Y " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
METHOD z CLASS NVCLASS1
RETURN "NVCLASS1:Z " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
CREATE CLASS NVCLASS2
HIDDEN:
VAR a init "(a2)"
CLASS VAR b init "(b2)"
METHOD x
PROTECTED:
VAR c init "(c2)"
CLASS VAR d init "(d2)"
METHOD y
EXPORTED:
VAR e init "(e2)"
CLASS VAR f init "(f2)"
METHOD z
METHOD m2
ENDCLASS
METHOD m2 CLASS NVCLASS2
RETURN "NVCLASS2:M2 " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v ) + "|" + ;
::x() + "|" + ;
::y() + "|" + ;
::z()
METHOD x CLASS NVCLASS2
RETURN "NVCLASS2:X " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
METHOD y CLASS NVCLASS2
RETURN "NVCLASS2:Y " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
METHOD z CLASS NVCLASS2
RETURN "NVCLASS2:Z " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
CREATE CLASS NVCLASS3 INHERIT NVCLASS1, NVCLASS2
HIDDEN:
VAR a init "(a3)"
CLASS VAR b init "(b3)"
METHOD x
VAR v init "(HI3)"
PROTECTED:
VAR c init "(c3)"
CLASS VAR d init "(d3)"
METHOD y
EXPORTED:
VAR e init "(e3)"
CLASS VAR f init "(f3)"
METHOD z
METHOD m3
ENDCLASS
METHOD m3 CLASS NVCLASS3
RETURN "NVCLASS3:M3 " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v ) + "|" + ;
::x() + "|" + ;
::y() + "|" + ;
::z()
METHOD x CLASS NVCLASS3
RETURN "NVCLASS3:X " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
METHOD y CLASS NVCLASS3
RETURN "NVCLASS3:Y " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
METHOD z CLASS NVCLASS3
RETURN "NVCLASS3:Z " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v )
CREATE CLASS NVCLASS4 INHERIT NVCLASS3
METHOD m4
ENDCLASS
METHOD m4 CLASS NVCLASS4
RETURN "NVCLASS4:M4 " + ;
hb_CStr( ::a ) + " " + ;
hb_CStr( ::b ) + " " + ;
hb_CStr( ::c ) + " " + ;
hb_CStr( ::d ) + " " + ;
hb_CStr( ::e ) + " " + ;
hb_CStr( ::f ) + " " + ;
hb_CStr( ::v ) + "|" + ;
::x() + "|" + ;
::y() + "|" + ;
::z()
#endif
/* Don't change the position of this #include. */
#include "rt_init.ch"