Files
harbour-core/harbour/samples/cccppc/meta.och
1999-11-09 01:37:27 +00:00

283 lines
13 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// META.och oszt ly implement ci¢.
// Gener lva: 1999.10.10, 14:31:52, OBJCCC v2.2.03
// Meta oszt ly defin¡ci¢: Van
#ifndef CA_BEHAVIOR_N
#ifdef _STRICT_PARENT_
#ifdef _CA_CM_ONLY_
#include "BEHAVIOR.och"
#else // _CA_CM_ONLY_
#define _CA_CM_ONLY_
#include "BEHAVIOR.och"
#undef _CA_CM_ONLY_
#endif // _CA_CM_ONLY_
#else
#include "BEHAVIOR.och"
#endif // _STRICT_PARENT_
#endif // CA_BEHAVIOR_N
#ifndef _CA_CM_ONLY_
#ifndef _META_OCH_
#define _META_OCH_
#xtranslate META.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
#xtranslate META.<obj>:name => <obj>\[CA_OBJECT_N+2\]
#xtranslate META.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
#xtranslate META.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
#xtranslate META.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
#xtranslate META.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
#xtranslate META.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
#xtranslate META.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
#xtranslate META.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
#xtranslate META.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
#xtranslate META.<obj>:oinit => (OBJGEN.(<obj>):(4))
#xtranslate META.<obj>:getclass => (OBJGEN.(<obj>):(5))
#xtranslate META.<obj>:isclass => (OBJGEN.(<obj>):(6))
#xtranslate META.<obj>:getattrib => (OBJGEN.(<obj>):(7))
#xtranslate META.<obj>:setattrib => (OBJGEN.(<obj>):(8))
#xtranslate META.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
#xtranslate META.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
#xtranslate META.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
#xtranslate META.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
#xtranslate META.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
#xtranslate META.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
#xtranslate META.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
#xtranslate META.<obj>:ofclass => <obj>\[CA_BEHAVIOR_N+1\]
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
// ™r”k”lve: ocreate()
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
// ™r”k”lve: ocreate()
#endif // _META_OCH_
#endif // _CA_CM_ONLY_
#ifndef CA_META_N
#define CA_META_N CA_BEHAVIOR_N+1
#define CM_META_N CM_BEHAVIOR_N+0
#xtranslate META.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
#endif // CA_META_N
#ifndef _CA_CM_ONLY_
#ifndef _METACLAS_OCH_
#define _METACLAS_OCH_
**********************************************************************
#xtranslate C.META:<m> => (METACLAS.clMETA():<m>)
#xtranslate C.META:self() => (clMETA())
#xtranslate METACLAS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
#xtranslate METACLAS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
#xtranslate METACLAS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
#xtranslate METACLAS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
#xtranslate METACLAS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
#xtranslate METACLAS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
#xtranslate METACLAS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
#xtranslate METACLAS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
#xtranslate METACLAS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
#xtranslate METACLAS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
#xtranslate METACLAS.<obj>:ofclass => <obj>\[CA_BEHAVIOR_N+1\]
#xtranslate METACLAS.<obj>:oinit => (OBJGEN.(<obj>):(4))
#xtranslate METACLAS.<obj>:getclass => (OBJGEN.(<obj>):(5))
#xtranslate METACLAS.<obj>:isclass => (OBJGEN.(<obj>):(6))
#xtranslate METACLAS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
#xtranslate METACLAS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
#xtranslate METACLAS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
#xtranslate METACLAS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
#xtranslate METACLAS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
#xtranslate METACLAS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
#xtranslate METACLAS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
#xtranslate METACLAS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
#xtranslate METACLAS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
#xtranslate METACLAS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
#endif // _METACLAS_OCH_
#endif // _CA_CM_ONLY_
#ifndef CA_METACLAS_N
#define CA_METACLAS_N CA_META_N+0
#define CM_METACLAS_N CM_META_N+0
#endif // CA_METACLAS_N
**********************************************************************
#ifdef _META_PRG_
#ifndef _META_PRG_OCH_
#define _META_PRG_OCH_
**********************************************************************
#xtranslate othis:<m> => META.(othis):<m>
#xtranslate thisclass:<m> => METACLAS.(this:getClass()):<m>
#define CTHIS META
**********************************************************************
#xtranslate this:<m> => META.(this):<m>
#xcommand implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
static function me_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
#xcommand implement onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
static function me_onew(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
#xcommand implement ocreate() => static function me_ocreate(this)
#ifdef _IMPLEMENT_EXPORT_
#xcommand implement export oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
function me_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
#xcommand implement export onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
function me_onew(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
#xcommand implement export ocreate() => function me_ocreate(this)
#endif // _IMPLEMENT_EXPORT_
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(4))
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(5))
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(6))
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(7))
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(8))
#xtranslate super:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+1))
#xtranslate super:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+2))
#xtranslate super:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+3))
#xtranslate super:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+4))
#xtranslate super:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+5))
#xtranslate super:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+6))
#xtranslate super:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+7))
#xtranslate super:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+8))
**********************************************************************
static function setCMethods(pOsztaly)
// Egy t”mb”t felt”lt az oszt ly mveleti blokkjaival.
pOsztaly[(4)]:={|this,parent,name,nAttribs,nMethods,amBlock,methodsBlock| me_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
pOsztaly[(CM_OBJECT_N+1)]:={|this,parent,name,nAttribs,nMethods,amBlock,methodsBlock| me_onew(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
pOsztaly[(CM_OBJECT_N+2)]:={|this| me_ocreate(this)}
return pOsztaly
**********************************************************************
static function setCams(ta,tm)
// Egy t”mb”t felt”lt az oszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
ta[CA_BEHAVIOR_N+1-CA_NIL_N] := {CA_BEHAVIOR_N+1,'ofclass',nil}
tm[(4)-CM_NIL_N] := {(4),'oinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'ocreate','',nil}
return nil
#ifndef _NO_CLMETA_
#ifdef _STRICT_PARENT_
#ifdef _CA_CM_ONLY_
#include "meta.och"
#else // _CA_CM_ONLY_
#define _CA_CM_ONLY_
#include "meta.och"
#undef _CA_CM_ONLY_
#endif // _CA_CM_ONLY_
#else
#include "meta.och"
#endif // _STRICT_PARENT_
**********************************************************************
function clMETA()
// El“szedi az oszt lyt. (class)
static osztaly
if (osztaly==nil)
osztaly:=META.clMETACLAS():onew(;
clBEHAVIOR(),;
"META",;
CA_META_N,;
CM_META_N,;
{|ta,tm|setCams(ta,tm)},;
{|t|setCMethods(t)})
endif
return osztaly
#endif // _NO_CLMETA_
#ifndef _NO_METACLAS_
**********************************************************************
#xtranslate class:<m> => METACLAS.(class):<m>
#ifdef _IMPLEMENT_EXPORT_
#endif // _IMPLEMENT_EXPORT_
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(4))
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(5))
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(6))
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(7))
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(8))
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+1))
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+2))
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+3))
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+4))
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+5))
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+6))
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+7))
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+8))
**********************************************************************
static function setMCMethods(pOsztaly)
// Egy t”mb”t felt”lt a metaoszt ly mveleti blokkjaival.
return pOsztaly
**********************************************************************
static function setMCams(ta,tm)
// Egy t”mb”t felt”lt a metaoszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
return nil
**********************************************************************
#ifndef _NO_MCMETACLAS_
#ifdef _STRICT_PARENT_
#ifdef _CA_CM_ONLY_
#include "meta.och" // "metaclas.och"
#else // _CA_CM_ONLY_
#define _CA_CM_ONLY_
#include "meta.och" // "metaclas.och"
#undef _CA_CM_ONLY_
#endif // _CA_CM_ONLY_
#else
#include "meta.och" // "metaclas.och"
#endif // _STRICT_PARENT_
function mcMETACLAS()
// El“szedi az oszt ly metaoszt ly t. (metaclass)
static metaOsztaly
if (metaOsztaly==nil)
metaOsztaly:=META.clMETA():onew(;
clMETA(),;
"METACLAS",;
CA_METACLAS_N,;
CM_METACLAS_N,;
{|ta,tm|setMCams(ta,tm)},;
{|t|setMCMethods(t)})
endif
return metaOsztaly
#endif // _NO_MCMETACLAS_
#endif // _NO_METACLAS_
**********************************************************************
#ifdef _IMPLEMENT_OINIT_
implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
super:oinit()
return this
#endif // _IMPLEMENT_OINIT_
**********************************************************************
**********************************************************************
#endif // _META_PRG_OCH_
#endif // _META_PRG_