Files
harbour-core/harbour/doc/es/objfunc.txt
2003-07-13 18:08:15 +00:00

816 lines
26 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.
/*
* $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 trminos 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 numrico 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 mtodo
* $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 mtodo 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 mtodo 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 mtodo 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 mtodo 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 mtodo Smile
* oHappy := HBClass():New( "THappy" )
* __objAddMethod( oHappy, "Smile", @MySmile() )
* ? oHappy:Smile( 1 ) // :)
* ? oHappy:Smile( 2 ) // ;)
*
* // reemplaza el mtodo 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 mtodo 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 mtodo INLINE a
* modificar.
*
* <bInline> es un nuevo codeblock a asociar con el mtodo INLINE
* $RETURNS$
* __objModInline() retorna una referencia a <oObjeto>.
* $DESCRIPTION$
* __objModInline() es una funci¢n de soporte de clases de bajo
* nivel que modifica un mtodo 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 mtodo 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 mtodo 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 mtodo
* 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 mtodo 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 mtodo Smile
* oHappy := HBClass():New( "THappy" )
*
* __objAddMethod( oHappy, "Smile", @MySmile() )
* ? __objHasMethod( oHappy, "Smile" ) // .T.
*
* // borra el mtodo 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 mtodo
* 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 mtodo 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 mtodo Smile
* oHappy := HBClass():New( "THappy" )
* __objAddMethod( oHappy, "Smile", @MySmile() )
* ? __objHasMethod( oHappy, "Smile" ) // .T.
*
* // borra el mtodo 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$
*/