* source/pp/ppcore.c
+ Added new kind of Result Marker - OMMIT, singinfied as <-Identifier->
/* This allows for custom code based on existance of optional clause, when the value of the clause itself is not needed */
* include/hbclass.ch
* Took advantage of new Ommit Result Marker, changed [<.ctor.> AS CLASS _CLASS_NAME_] to [<-ctor-> AS CLASS _CLASS_NAME_]
* source/compiler/harbour.y
- Removed rules for DummyTrue, used in _HB_MEMBER (no longer needed)
* hb_slex.bc
* Synchronized with makefile.bc
* include/hbclass.ch
+ Added: [AS <type>] optional clause to all Methods/Messages syntax.
+ Added directives to generate class declaration from same class creation code.
* include/hbcomp.h
* source/compiler/harbour.c
+ Added: char hb_comp_cDataListType;
* source/compiler/harbour.l
+ Added support for new _HB_CLASS and _HB_MEMBER alternate class declaration syntax.
* source/macro/macro.slx
! Moved .T., .Y., .F., and, .N. from self contained words to words.
* source/compiler/harbour.slx
! Moved .T., .Y., .F., and, .N. from self contained words to words.
+ Added support for new _HB_CLASS and _HB_MEMBER alternate class declaration syntax.
* source/compiler/harbour.y
! Improved definition of formal and optional paramter lists.
+ Added support for alternate class declaration syntax:
_HB_CLASS ClassName
_HB_MEMBER { [AS ...] Var1, VarN }
_HB_MEMBER MethodName( [ [OPTIONAL] [@]FormalParam [AS ...] | @FunPointer() ] ) [ AS ... ]
/* This syntax allows the class declaration to be on multiple seperated lines (needed to allow utilization of class creation code.)
Tokens _HB_CLASS & _HB_MEMBER are not final, until some discussion with Ryszard. */
* source/compiler/hbpcode.c
* Completed classes strong type support for adaptive type variable.
* source/rtl/tlabel.prg
* source/rtl/treport.prg
! Corrected typos: AS {} -> INIT {} AS ARRAY, AS .T. -> INIT .T. AS LOGICAL etc..
* tests/testdecl.prg
* Changed to demonstrate class creation used as declaration.
* utils/hbtest/hbtest.prg
* Changed DBFNTX -> DBFCDX (was not working because DBFNTX is disabled.
* source/compiler/harbour.c
* source/compiler/harbour.y
+ Added support for DECLARE FunName(...) AS CLASS ClassName
+ Added support for DECLARE FunName( ... @SomeFun() ... ) - Function Pointer declared parameter.
* source/compiler/simplex.c
* Corrected some compiler warnings.
* source/compiler/harbour.slx
* Reenabled support for ID_ON_HOLD.
* include/hberror.h
+ Added: #define HB_COMP_WARN_RETURN_SUSPECT 28
* source/compiler/hbgenerr.c
+ Added: "4Suspecious return type: \'%s\' expected: \'%s\'"
* source/compiler/hbpcode.c
+ Completed support for Strong Typed variables as declared classes, as well as Adaptive Typed usage with declared classes.
* Few other corrections and enhancements.
* include/hbclass.ch
+ Added TClass declaration:
DECLARE TClass ;
New( cName AS STRING, OPTIONAL SuperParams ) AS CLASS TClass ;
Create() AS OBJECT;
Instance() AS OBJECT ;
AddClsMthds( cName AS STRING, @Method(), nScope AS NUMERIC, n2 AS NUMERIC, n3 AS NUMERIC );
AddMultiClsData( cType AS STRING, uVal, nScope AS NUMERIC, aDatas AS ARRAY OF STRING );
AddMultiData( cType AS STRING, uVal, nScope AS NUMERIC, aDatas AS ARRAY OF STRING );
AddMethod( cName AS STRING, @Method(), nScope AS NUMERIC );
AddInLine( cName AS STRING, bBlock AS CODEBLOCK, nScope AS NUMERIC );
AddVirtual( cName AS STRING )
+ Added declaration to s_oClass AS CLASS TClass
* tests/testdecl.prg
* Minor refinement.
* include/hberrors.h
* Changed #define HB_PP_ERR_INCLUDE_SELF to HB_PP_ERR_INCLUDE_CYCLIC
* source/pp/ppcore.c
* Changed "Can\'t #include self \'%s\'" to "Cyclic #include not allowed: \'%s\'"
* Changed self refernce #include detection, to detect any #include of an already opened file.
* include/hbcomp.h
+ Added: external BOOL hb_comp_bSimpLex
* source/compiler/harbour.c
+ Added: BOOL hb_comp_bSimpLex
+ Added: if( hb_comp_bSimpLex ) tests before releasing name strings of vars, and symbols.
+ Added: call to hb_compReleaseStrings(), if hb_comp_SimpLes is TRUE, after code generation.
* source/compiler/harbour.slx
+ Added: logic to resuse same allocated strings when string for identifier was perviously allocated.
+ Added: INIT_ACTION macro to set hb_comp_bSimpLex to TRUE.
+ Added: Function hb_compReleaseStrings()
* source/compiler/harbour.l
+ Added: empty Function hb_compReleaseStrings() to avoid link error.
* source/compiler/hbslex.c
* source/compiler/simplex.c
* Moved standard #includes from simplex to hbslex.