
[ ] add the wstring type:
    - auto-convert literal strings to w- or z- on assignments, depending on the l-hand
      side type
    - fix the !!!FIXME!!!'s and write the !!!WRITEME!!!'s in the rtlib

[ ] PtrChk will duplicate the tree, causing side effects if functions are been called
    (it will be called twice)
    - the same will happen with ArrayBoundsCheck if a function is used in the index
      expression

[ ] swap of zstring's and var-len string's is not working?? or that's the behaviour..

[ ] @static_array(const) won't become an OFFSET, not allowing initializations..

[ ] passing a temporary string to a zstring ptr should not make yet-another temporary
    assignment in hStrParamToPtrArg(), just a pointer copy that later should be
    strDelete()'d

[ ] SCOPE..END SCOPE:
    - vars should be reused (that's is, the stack "rewinded") because it's only
      assured that the vars will be initialized to 0 when the scope block is
      entered by the first time, so reusing would be more efficient - that will
      screw up var-len strings, the descriptor MUST be zeroed or an assignment
      will fail, same care must be taken with object instances, but then the
      constructor will be called, it would be way easier if STRING was actually
      a class.. nm..
    - error handlers should be restored too (or not allowed at all)


*** *** *** *** ***
[ ] add support for functions returning references (reuse "BYREF"), so those can
    be automatically dereferenced - but *NOT* deleted, only non-local data can
    be returned by reference in C++

[ ] add fix-len and zstring * support to array args passed by descriptor

[ ] named field initializers: ( "foo" => bar, "udt" => ( 1, { 2, 3 }, 4 ) )
    - all fields initialized must be named as a special parser routine will have to be used,
      that will keep track of what wasn't initialized to fill 'em with 0's - static only,
      locals are already cleared

[ ] full debug support
    - add dynamic arrays - couldn't get GDB to use Fortran-like arrays
    - each overloaded function will show the locals of *ALL* functions

[ ] AndAlso and OrElse, short-circuit versions of And and Or
    - pay attention to register spills if functions or complex expressions are
      used in left or right sides

[ ] inline functions
    - better than macros as they can be "turned off" when debugged
    - too hard to be added now due the register spills, IR must handle inter blocks and
      keep track of live vregs

[ ] classes
    - *MUST* follow the GCC 3.x ABI to make it easier to reuse C++ libs compiled by GCC
    - Java/Php5-ish syntax: CLASS INTERFACE EXTENDS IMPLEMENTS THROWS ABSTRACT
    - single inheritance, plus interfaces
    - exceptions - with unwind support
    - operator overloading
    - properties
    - pure virtual methods
    - down casting
    - name space
    - static constructors and destructors
    - some support for RTTI

