816 lines
26 KiB
Plaintext
816 lines
26 KiB
Plaintext
/*
|
||
* $Id$
|
||
*/
|
||
|
||
/*
|
||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||
* www - http://www.harbour-project.org
|
||
*
|
||
* Copyright 2000 Alejandro de G rate <alex_degarate@hotmail.com>
|
||
* Documentaci¢n en Espa¤ol de:
|
||
* __objHasData(), __objHasMethod(), __objGetMsgList(),
|
||
* __objGetMethodList(), __objGetValueList(),
|
||
* __ObjSetValueList(), __objAddMethod(),
|
||
* __objAddInline(), __objAddData(), __objModMethod(),
|
||
* __objModInline(), __objDelMethod(), __objDelInline(),
|
||
* __objDelData(), __objDerivedFrom()
|
||
*
|
||
* Copyright 1999-2000 Chen Kedem <niki@actcom.co.il>
|
||
* Documentaci¢n en Ingles de:
|
||
* __objHasData(), __objHasMethod(), __objGetMsgList(),
|
||
* __objGetMethodList(), __objGetValueList(),
|
||
* __ObjSetValueList(), __objAddMethod(),
|
||
* __objAddInline(), __objAddData(), __objModMethod(),
|
||
* __objModInline(), __objDelMethod(), __objDelInline(),
|
||
* __objDelData(), __objDerivedFrom()
|
||
*
|
||
* Vea doc/license.txt por los t‚rminos de la licencia.
|
||
*
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objHasData()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Determina cuando un s¡mbolo existe en un objeto como DATA
|
||
* $SYNTAX$
|
||
* __objHasData( <oObjeto>, <cSimbolo> ) --> lExiste
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto a inspeccionar
|
||
*
|
||
* <cSimbolo> es el nombre del s¡mbolo a buscar
|
||
* $RETURNS$
|
||
* __objHasData() retorna .T. si el <cSimbolo> dado existe como DATA
|
||
* (variable de instancia) en el objeto <oObjeto), y .F. si este no
|
||
* existe.
|
||
* $DESCRIPTION$
|
||
* __objHasData() es una funci¢n de soporte de clases de bajo nivel
|
||
* que le permite a Ud. encontrar si un s¡mbolo es una variable de
|
||
* instancia en un objeto dado.
|
||
* $EXAMPLES$
|
||
* oB := TBrowseNew( 0, 0, 24, 79 )
|
||
* ? __objHasData( oB, "nLeft" ) // esto deberia retornar .T.
|
||
* ? __objHasData( oB, "lBugFree" ) // deberia ser .F.
|
||
* ? __objHasData( oB, "Left" ) // .F. porque este es un METHOD
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objHasData() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __ObjGetMethodList(),__objGetMsgList(),__objHasMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objHasMethod()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Determina cuando un s¡mbolo existe en un objeto como METHOD
|
||
* $SYNTAX$
|
||
* __objHasMethod( <oObjeto>, <cSimbolo> ) --> lExist
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto a inspeccionar
|
||
*
|
||
* <cSimbolo> es el nombre del s¡mbolo a buscar
|
||
* $RETURNS$
|
||
* __objHasMethod() retorna .T. si el <cSimbolo> dado existe como
|
||
* METHOD (funci¢n de clase) en el Objeto <oObjeto), o .F. si este
|
||
* no existe.
|
||
* $DESCRIPTION$
|
||
* __objHasMethod() es una funci¢n de soporte de clases de bajo nivel
|
||
* que le permite a Ud. encontrar si un s¡mbolo es una funci¢n de
|
||
* clase en un Objeto dado.
|
||
* $EXAMPLES$
|
||
* oB := TBrowseNew( 0, 0, 24, 79 )
|
||
* ? __objHasMethod( oB, "nLeft" ) // .F. porque esto es DATA
|
||
* ? __objHasMethod( oB, "FixBugs" ) // deberia ser .F.
|
||
* ? __objHasMethod( oB, "Left" ) // esto deberia retornar .T.
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objHasMethod() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __ObjGetMethodList(),__objGetMsgList(),__objHasData()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objGetMsgList()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Retorna los nombres de todos los DATA o METHOD para un Objeto dado
|
||
* $SYNTAX$
|
||
* __objGetMsgList( <oObjeto>, [<lData>], [nClassType] ) --> aNombres
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es un Objeto a inspeccionar
|
||
*
|
||
* <lData> es un valor l¢gico opcional que especifica la informaci¢n
|
||
* a retornar. Un valor .T. instruye a la funci¢n a devolver una lista
|
||
* todos los nombres DATA, un valor de .F. instruye a la funci¢n a
|
||
* devolver una lista de todos los nombres de METHODos.
|
||
* El valor por defecto es .T.
|
||
*
|
||
* <nClassType> es un c¢digo num‚rico opcional para seleccionar cual
|
||
* tipo de clase se va retornar.
|
||
* El valor por defecto es HB_MSGLISTALL, retornando la lista entera.
|
||
* $RETURNS$
|
||
* __objGetMsgList() devuelve un array de cadenas <aNombres> con los
|
||
* nombres de todos los DATA o todos los METHOD para un objeto dado.
|
||
* __objGetMsgList() podr¡a retornar un array vacio, {} si el objeto
|
||
* dado no contiene la informaci¢n solicitada.
|
||
* $DESCRIPTION$
|
||
* __objGetMsgList() es una funci¢n de soporte de clases de bajo nivel
|
||
* que le permite a Ud. encontrar todas las variables de instancia o
|
||
* los nombre de los metodos para un Objeto dado.
|
||
*
|
||
* Si es es especificada, la siguiente tabla muestra los valores para
|
||
* <nClassType> que le permiten a Ud. distinguir entre DATA y
|
||
* CLASSDATA:
|
||
*
|
||
* <table>
|
||
* hboo.ch Valor Significado
|
||
*
|
||
* HB_MSGLISTALL 0 Todos los tipos
|
||
* HB_MSGLISTCLASS 1 CLASSDATA solamente
|
||
* HB_MSGLISTPURE 2 DATA solamente
|
||
* </table>
|
||
*
|
||
* DATA son variables de instancia usables dentro de cada objeto desde
|
||
* una clase, donde cada Objeto tiene sus propios DATAs.
|
||
*
|
||
* Las CLASSDATA son compartidas por todos los objetos desde una Clase,
|
||
* asi el valor cambiado dentro del Objeto1 sera reflejado cuando se
|
||
* acceda la CLASSDATA desde el Objeto2.
|
||
* $EXAMPLES$
|
||
* // Muestra informaci¢n sobre la clase TBrowse
|
||
* oB := TBrowseNew( 0, 0, 24, 79 )
|
||
* aData := __objGetMsgList( oB, .T. )
|
||
* aClassData := __objGetMsgList( oB, .T., HB_MSGLISTCLASS )
|
||
* aMethod := __objGetMsgList( oB, .F. )
|
||
*
|
||
* FOR i = 1 to len ( aData )
|
||
* ? "nombre de DATA:", aData[ i ]
|
||
* NEXT
|
||
*
|
||
* FOR i = 1 to len ( aClassData )
|
||
* ? "nombre de CLASSDATA:", aClassData[ i ]
|
||
* NEXT
|
||
*
|
||
* FOR i = 1 to len ( aMethod )
|
||
* ? "nombre de METHOD:", aMethod[ i ]
|
||
* NEXT
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objGetMsgList() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* El archivo de cabecera es hboo.ch
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __ObjGetMethodList(),__ObjGetValueList(),__objHasData(),__objHasMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objGetMethodList()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Retorna un array con los nombres de todos los METHOD de un Objeto
|
||
* $SYNTAX$
|
||
* __objGetMethodList( <oObjeto> ) --> aNombreMetodos
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto a inspeccionar
|
||
* $RETURNS$
|
||
* __objGetMethodList() devuelve un array de cadenas <aNombreMetodos>
|
||
* con los nombres de todos los METHOD para un objeto dado.
|
||
* __objGetMethodList() podria retornar un array vacio, {} si el
|
||
* objeto dado no contiene ningun metodo.
|
||
* $DESCRIPTION$
|
||
* __objGetMethodList() es una funci¢n de soporte de clases de bajo
|
||
* nivel que le permite a Ud. encontrar todos los nombres de las
|
||
* funciones de clase para un Objeto dado.
|
||
* Es el equivalente a __objGetMsgList( oObjeto, .F. ).
|
||
* $EXAMPLES$
|
||
* // Muestra informaci¢n sobre la clase TBrowse
|
||
* oB := TBrowseNew( 0, 0, 24, 79 )
|
||
* aMethod := __objGetMethodList( oB )
|
||
*
|
||
* FOR i = 1 to len ( aMethod )
|
||
* ? "METHOD name:", aMethod[ i ]
|
||
* NEXT
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objGetMethodList() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objGetMsgList(),__ObjGetValueList(),__objHasData(),__objHasMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objGetValueList()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Retorna un array con los nombres de DATA y valores de un Objeto
|
||
* $SYNTAX$
|
||
* __objGetValueList( <oObjeto>, [<aExcept>] ) --> aData
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto a inspeccionar
|
||
*
|
||
* <aExcept> es un array opcional con los nombres de los DATA que Ud.
|
||
* desea excluir de la inspeccion.
|
||
* $RETURNS$
|
||
* __objGetValueList() retorna un array bidimensional que contiene
|
||
* pares de nombre del s¡mbolo DATA y el valor de DATA.
|
||
* __objGetValueList() podria retornar un array vacio, {} si el
|
||
* objeto dado no contiene la informaci¢n solicitada.
|
||
* $DESCRIPTION$
|
||
* __objGetValueList() es una funci¢n de soporte de clases de bajo
|
||
* nivel que retorna un array con los nombres de DATA y valores.
|
||
* Cada elemento del array es un par de:
|
||
* aData[ i, HB_OO_DATA_SYMBOL ] contiene nombre del s¡mbolo
|
||
* aData[ i, HB_OO_DATA_VALUE ] contiene el valor de DATA
|
||
* $EXAMPLES$
|
||
* // Muestra informaci¢n sobre la clase TBrowse
|
||
* oB := TBrowseNew( 0, 0, 24, 79 )
|
||
* aData := __objGetValueList( oB )
|
||
*
|
||
* FOR i = 1 to len ( aData )
|
||
* ? "Nombre de DATA:", aData[ i, HB_OO_DATA_SYMBOL ], ;
|
||
* " valor =", aData[ i, HB_OO_DATA_VALUE ]
|
||
* NEXT
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objGetValueList() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* El archivo de cabecera es hboo.ch
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objGetMethodList(),__objGetMsgList(),__objHasData(),__objHasMethod(),__ObjSetValueList()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __ObjSetValueList()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Establece un Objeto con un array de nombres de DATA y valores
|
||
* $SYNTAX$
|
||
* __ObjSetValueList( <oObjeto>, <aData> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto a establecer
|
||
*
|
||
* <aData> es un array bidimensional con un par de variables de
|
||
* instancia y valores para asignar a aquellas variables.
|
||
* $RETURNS$
|
||
* __ObjSetValueList() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __ObjSetValueList() es una funci¢n de soporte de clases de bajo
|
||
* nivel que le permite a Ud. establecer un grupo de variables de
|
||
* instancia con valores.
|
||
* Cada elemento del array en <aData> es un par de:
|
||
* aData[ i, HB_OO_DATA_SYMBOL ] contiene nombre de variable a setear
|
||
* aData[ i, HB_OO_DATA_VALUE ] contiene el nuevo valor de variable
|
||
* $EXAMPLES$
|
||
* // set some TBrowse instance variable
|
||
* oB := TBrowse():New()
|
||
* aData := array( 4, 2 )
|
||
* aData[ 1, HB_OO_DATA_SYMBOL ] = "nTop"
|
||
* aData[ 1, HB_OO_DATA_VALUE ] = 1
|
||
* aData[ 2, HB_OO_DATA_SYMBOL ] = "nLeft"
|
||
* aData[ 2, HB_OO_DATA_VALUE ] = 10
|
||
* aData[ 3, HB_OO_DATA_SYMBOL ] = "nBottom"
|
||
* aData[ 3, HB_OO_DATA_VALUE ] = 20
|
||
* aData[ 4, HB_OO_DATA_SYMBOL ] = "nRight"
|
||
* aData[ 4, HB_OO_DATA_VALUE ] = 70
|
||
* __ObjSetValueList( oB, aData )
|
||
* ? oB:nTop // 1
|
||
* ? oB:nLeft // 10
|
||
* ? oB:nBottom // 20
|
||
* ? oB:nRight // 70
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __ObjSetValueList() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* El archivo de cabecera es hboo.ch
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __ObjGetValueList()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objAddMethod()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Agrega un METHOD a una clase ya existente
|
||
* $SYNTAX$
|
||
* __objAddMethod( <oObjeto>, <cMethodName>, <nFuncPtr> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cMethodName> es el nombre del s¡mbolo del nuevo METHOD a agregar
|
||
*
|
||
* <nFuncPtr> es un puntero a la funci¢n a asociar con el m‚todo
|
||
* $RETURNS$
|
||
* __objAddMethod() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objAddMethod() es una funci¢n de soporte de clases de bajo
|
||
* nivel que agrega un nuevo METHOD a un Objeto.
|
||
*
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cMethodName> ya existe en <oObjeto>.
|
||
*
|
||
* Note que <nFuncPtr> es un especial puntero a una funci¢n que fue
|
||
* creado usando el operador @ , vea un ejemplo a continuacion.
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un m‚todo Smile
|
||
* oHappy := HBClass():New( "THappy" )
|
||
* __objAddMethod( oHappy, "Smile", @MySmile() )
|
||
* ? oHappy:Smile( 1 ) // :)
|
||
* ? oHappy:Smile( 2 ) // ;)
|
||
* ? oHappy:Smile( 3 ) // *SMILE*
|
||
*
|
||
* STATIC FUNCTION MySmile( nType )
|
||
* LOCAL cSmile
|
||
* DO CASE
|
||
* CASE nType == 1
|
||
* cSmile := ":)"
|
||
* CASE nType == 2
|
||
* cSmile := ";)"
|
||
* CASE nType == 3
|
||
* cSmile := "*SMILE*"
|
||
* ENDCASE
|
||
* RETURN cSmile
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objAddMethod() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddInline(),__objAddData(),__objDelMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod(),__objModMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objAddInline()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Agrega un INLINE a una clase ya existente
|
||
* $SYNTAX$
|
||
* __objAddInline( <oObjeto>, <cInlineName>, <bInline> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cInlineName> es el nombre del s¡mbolo del nuevo INLINE a agregar
|
||
*
|
||
* <bInline> es un codeblock a asociar con el m‚todo INLINE
|
||
* $RETURNS$
|
||
* __objAddInline() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objAddInline() es una funci¢n de soporte de clases de bajo
|
||
* nivel que agrega un nuevo m‚todo INLINE a un Objeto.
|
||
*
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cInlineName> ya existe en <oObjeto>.
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un m‚todo INLINE Smile
|
||
* oHappy := HBClass():New( "THappy" )
|
||
* bInline := { | nType | { ":)", ";)", "*SMILE*" }[ nType ] }
|
||
*
|
||
* __objAddInline( oHappy, "Smile", bInline )
|
||
*
|
||
* ? oHappy:Smile( 1 ) // :)
|
||
* ? oHappy:Smile( 2 ) // ;)
|
||
* ? oHappy:Smile( 3 ) // *SMILE*
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objAddInline() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddData(),__objAddMethod(),__objDelInline(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod() ,__objModInline()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objAddData()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Agrega un DATA a una clase ya existente
|
||
* $SYNTAX$
|
||
* __objAddData( <oObjeto>, <cDataName> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cDataName> es el nombre del s¡mbolo del nuevo DATA a agregar
|
||
* $RETURNS$
|
||
* __objAddData() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objAddData() es una funci¢n de soporte de clases de bajo
|
||
* nivel que agrega un nuevo DATA a un Objeto.
|
||
*
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cDataName> ya existe en <oObjeto>.
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un DATA lHappy
|
||
* oHappy := HBClass():New( "THappy" )
|
||
*
|
||
* __objAddData( oHappy, "lHappy" )
|
||
* oHappy:lHappy := .T.
|
||
*
|
||
* IF oHappy:lHappy
|
||
* ? "Happy, Happy, Joy, Joy !!!"
|
||
* ELSE
|
||
* ? ":(..."
|
||
* ENDIF
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objAddData() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddInline(),__objAddMethod(),__objDelData(),__objGetMsgList(),__ObjGetValueList(),__objHasData(),__ObjSetValueList()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objModMethod()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Modifica (reemplaza) un METHOD en una clase ya existente
|
||
* $SYNTAX$
|
||
* __objModMethod( <oObjeto>, <cMethodName>, <nFuncPtr> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cMethodName> es el nombre del s¡mbolo del METHOD a modificar
|
||
*
|
||
* <nFuncPtr> es un puntero a una nueva funci¢n a asociar con
|
||
* el metodo.
|
||
* $RETURNS$
|
||
* __objModMethod() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objModMethod() es una funci¢n de soporte de clases de bajo
|
||
* nivel que modifica un METHOD en un Objeto y lo reemplaza con
|
||
* una nueva funci¢n.
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cMethodName> ya existe en <oObjeto>.
|
||
* __objModMethod() es usado en el mecanismo de herencia.
|
||
*
|
||
* Note que <nFuncPtr> es un especial puntero a una funci¢n que fue
|
||
* creado usando el operador @ , vea un ejemplo a continuacion.
|
||
*
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un m‚todo Smile
|
||
* oHappy := HBClass():New( "THappy" )
|
||
* __objAddMethod( oHappy, "Smile", @MySmile() )
|
||
* ? oHappy:Smile( 1 ) // :)
|
||
* ? oHappy:Smile( 2 ) // ;)
|
||
*
|
||
* // reemplaza el m‚todo Smile con una nueva funci¢n
|
||
* __objAddMethod( oHappy, "Smile", @YourSmile() )
|
||
* ? oHappy:Smile( 1 ) // *SMILE*
|
||
* ? oHappy:Smile( 2 ) // *WINK*
|
||
*
|
||
* STATIC FUNCTION MySmile( nType )
|
||
* LOCAL cSmile
|
||
* DO CASE
|
||
* CASE nType == 1
|
||
* cSmile := ":)"
|
||
* CASE nType == 2
|
||
* cSmile := ";)"
|
||
* ENDCASE
|
||
* RETURN cSmile
|
||
*
|
||
* STATIC FUNCTION YourSmile( nType )
|
||
* LOCAL cSmile
|
||
* DO CASE
|
||
* CASE nType == 1
|
||
* cSmile := "*SMILE*"
|
||
* CASE nType == 2
|
||
* cSmile := "*WINK*"
|
||
* ENDCASE
|
||
* RETURN cSmile
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objModMethod() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddMethod(),__objDelMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objModInline()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Modifica (reemplaza) un m‚todo INLINE en una clase ya existente
|
||
* $SYNTAX$
|
||
* __objModInline( <oObjeto>, <cInlineName>, <bInline> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cInlineName> es el nombre del s¡mbolo del m‚todo INLINE a
|
||
* modificar.
|
||
*
|
||
* <bInline> es un nuevo codeblock a asociar con el m‚todo INLINE
|
||
* $RETURNS$
|
||
* __objModInline() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objModInline() es una funci¢n de soporte de clases de bajo
|
||
* nivel que modifica un m‚todo INLINE en un Objeto y lo reemplaza con
|
||
* una nuevo bloque de codigo.
|
||
*
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cInlineName> no existe en <oObjeto>.
|
||
*
|
||
* __objModInline() es usado en el mecanismo de herencia.
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un m‚todo INLINE Smile
|
||
* oHappy := HBClass():New( "THappy" )
|
||
* bMyInline := { | nType | { ":)", ";)" }[ nType ] }
|
||
* bYourInline := { | nType | { "*SMILE*", "*WINK*" }[ nType ] }
|
||
*
|
||
* __objAddInline( oHappy, "Smile", bMyInline )
|
||
* ? oHappy:Smile( 1 ) // :)
|
||
* ? oHappy:Smile( 2 ) // ;)
|
||
*
|
||
* // reemplaza el m‚todo INLINE Smile con un nuevo codeblock
|
||
* __objModInline( oHappy, "Smile", bYourInline )
|
||
* ? oHappy:Smile( 1 ) // *SMILE*
|
||
* ? oHappy:Smile( 2 ) // *WINK*
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objModInline() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddInline(),__objDelInline(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objDelMethod()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Borra un METHOD de una clase
|
||
* $SYNTAX$
|
||
* __objDelMethod( <oObjeto>, <cSimbolo> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cSimbolo> es el nombre del s¡mbolo del METHOD o del m‚todo
|
||
* INLINE a ser borrado (removido) del Objeto.
|
||
* $RETURNS$
|
||
* __objDelMethod() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objDelMethod() es una funci¢n de soporte de clases de bajo nivel
|
||
* que borra (remueve) un METHOD o un m‚todo INLINE de un Objeto.
|
||
*
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cSimbolo> no existe en <oObjeto>.
|
||
*
|
||
* __objDelInline() es exactamente la misma que __objDelMethod().
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un m‚todo Smile
|
||
* oHappy := HBClass():New( "THappy" )
|
||
*
|
||
* __objAddMethod( oHappy, "Smile", @MySmile() )
|
||
* ? __objHasMethod( oHappy, "Smile" ) // .T.
|
||
*
|
||
* // borra el m‚todo Smile
|
||
* __objDelMethod( oHappy, "Smile" )
|
||
* ? __objHasMethod( oHappy, "Smile" ) // .F.
|
||
*
|
||
* STATIC FUNCTION MySmile( nType )
|
||
* LOCAL cSmile
|
||
* DO CASE
|
||
* CASE nType == 1
|
||
* cSmile := ":)"
|
||
* CASE nType == 2
|
||
* cSmile := ";)"
|
||
* ENDCASE
|
||
* RETURN cSmile
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objDelMethod() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddInline(),__objAddMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod(),__objModInline(),__objModMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objDelInline()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Borra un METHOD INLINE de una clase
|
||
* $SYNTAX$
|
||
* __objDelInline( <oObjeto>, <cSimbolo> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cSimbolo> es el nombre del s¡mbolo del METHOD o del m‚todo
|
||
* INLINE a ser borrado (removido) del Objeto.
|
||
* $RETURNS$
|
||
* __objDelInMethod() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objDelInMethod() es una funci¢n de soporte de clases de bajo nivel
|
||
* que borra (remueve) un METHOD o un m‚todo INLINE de un Objeto.
|
||
*
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cSimbolo> no existe en <oObjeto>.
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un m‚todo Smile
|
||
* oHappy := HBClass():New( "THappy" )
|
||
* __objAddMethod( oHappy, "Smile", @MySmile() )
|
||
* ? __objHasMethod( oHappy, "Smile" ) // .T.
|
||
*
|
||
* // borra el m‚todo Smile
|
||
* __objDelInMethod( oHappy, "Smile" )
|
||
* ? __objHasMethod( oHappy, "Smile" ) // .F.
|
||
*
|
||
* STATIC FUNCTION MySmile( nType )
|
||
* LOCAL cSmile
|
||
* DO CASE
|
||
* CASE nType == 1
|
||
* cSmile := ":)"
|
||
* CASE nType == 2
|
||
* cSmile := ";)"
|
||
* ENDCASE
|
||
* RETURN cSmile
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objDelMethod() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddInline(),__objAddMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod(),__objModInline(),__objModMethod()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objDelData()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Borra un DATA (variable de instancia) de una clase
|
||
* $SYNTAX$
|
||
* __objDelMethod( <oObjeto>, <cDataName> ) --> oObjeto
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto con el cual se va a trabajar
|
||
*
|
||
* <cDataName> es el nombre del s¡mbolo DATA a ser borrado
|
||
* (removido) del Objeto.
|
||
* $RETURNS$
|
||
* __objDelData() retorna una referencia a <oObjeto>.
|
||
* $DESCRIPTION$
|
||
* __objDelData() es una funci¢n de soporte de clases de bajo nivel
|
||
* que borra (remueve) un DATA de un Objeto.
|
||
*
|
||
* El <oObjeto> permanece sin cambios si el s¡mbolo con el nombre
|
||
* <cDataName> no existe en <oObjeto>.
|
||
* $EXAMPLES$
|
||
* // crea un nueva clase THappy y le agrega un DATA lHappy
|
||
* oHappy := HBClass():New( "THappy" )
|
||
*
|
||
* __objAddData( oHappy, "lHappy" )
|
||
* ? __objHasData( oHappy, "lHappy" ) // .T.
|
||
*
|
||
* // borra el DATA, lHappy
|
||
* __objDelData( oHappy, "lHappy" )
|
||
* ? __objHasData( oHappy, "lHappy" ) // .F.
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objDelData() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objAddData(),__objGetMsgList(),__ObjGetValueList(),__objHasData(),__ObjSetValueList()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* __objDerivedFrom()
|
||
* $CATEGORY$
|
||
* Manejo de objetos
|
||
* $ONELINER$
|
||
* Determina cuando una clase es derivada de otra clase
|
||
* $SYNTAX$
|
||
* __objDerivedFrom( <oObjeto>, <xSuper> ) --> lIsParent
|
||
* $ARGUMENTS$
|
||
* <oObjeto> es el objeto a inspeccionar
|
||
*
|
||
* <xSuper> es el objeto que puede ser un padre. <xSuper> puede
|
||
* ser o bien un Objeto o una cadena de caracteres con el
|
||
* nombre de la clase.
|
||
* $RETURNS$
|
||
* __objDerivedFrom() retorna un valor logico TRUE (.T.) si el
|
||
* <oObjeto> es derivado de <xSuper>.
|
||
* $DESCRIPTION$
|
||
* __objDerivedFrom() es una funci¢n de soporte de clases de bajo
|
||
* nivel que chequea si una clase es una Superclase de la otra, o en
|
||
* otras palabras si la clase <oObjeto> es una clase hija o
|
||
* descendiente de <xSuper>.
|
||
* $EXAMPLES$
|
||
* // Crea tres clases y chequea sus relaciones
|
||
*
|
||
* #include "hbclass.ch"
|
||
* FUNCTION main()
|
||
* LOCAL oSuper, oObjeto, oDress
|
||
* oSuper := TMood():New()
|
||
* oObjeto := THappy():New()
|
||
* oDress := TShirt():New()
|
||
* ? __objDerivedFrom( oObjeto, oSuper ) // .T.
|
||
* ? __objDerivedFrom( oSuper, oObjeto ) // .F.
|
||
* ? __objDerivedFrom( oObjeto, oDress ) // .F.
|
||
* RETURN NIL
|
||
*
|
||
* CLASS TMood
|
||
* METHOD New() INLINE Self
|
||
* ENDCLASS
|
||
*
|
||
* CLASS THappy FROM TMood
|
||
* METHOD Smile() INLINE qout( "*smile*" )
|
||
* ENDCLASS
|
||
*
|
||
* CLASS TShirt
|
||
* DATA Color
|
||
* DATA Size
|
||
* METHOD New() INLINE Self
|
||
* ENDCLASS
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* __objDerivedFrom() es una extensi¢n de Harbour.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* __objHasData(),__ObjHasMethod()
|
||
* $END$
|
||
*/
|
||
|
||
|