[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lightweight C++] lwc 0.6 is out

From: Xanthakis Stelios
Subject: [Lightweight C++] lwc 0.6 is out
Date: Sun, 17 Aug 2003 13:15:50 +0300 (EET DST)

Version 0.6 is out and it has some very important bugfixes and a 
couple of new features. It can be downloaded from


The CHANGES are:

- [CRITICAL] Bugfix. Downcast data which was position dependent
  was completely broken therefore.

- [CRITICAL] expressions in { initializers } were not rewritten!

- [BUGFIX] segfaulting in default argument list declarations.

- [BUGFIX] automatic casting in "return expression;" was not working properly
  in inheritance.

- [BUGFIX] It used to be impossible to call redeclared virtual functions
  in multiple virtual inheritance from a base object which was
  not a pointer! (whatever that means)

- [FIXED] Fixed the case where a virtual call must be done for structures
  passed by reference. These are actually pointers and not objects
  so we go through the virtual table and call the pointer to function.

- [FIXED] automatic casting to common base class is also done for relational
  operators (used to be in ?: only)

- [REWRITE] Major rewrite of the hierarchy module. Now everything is
  simpler, easier to understand and more efficient. (simple is the enemy of

- [REWRITE] The code for naming all the arguments of function prototypes
  has been rewritten, significantly improved and simplified.

- [IMPROVED] "virtual tables done right".
  The virtual tables are now declared with lots of nested unions so that
  the order of declaration does not matter.  Virtual tables are also

- [IMPROVED] in virtual inheritance,
  compile-time polymorhism is detected to generate constant paths.
  Internal construction functions are smaller && faster.

- [RIGHT-THING] if a virtual base class has no data members (only a virtual
  table) then virtual inheritance is much more efficient. The derrived
  class has a direct pointer to the virtual table instead of a pointer to
  the base class instance. g++ appears to be doing something like that too.

- [RIGHT-THING] Now the virtual table declarations and the structure 
  are mixed in the same section. This is required because of virtual
  variables: A virtual variable may be a structure and thus, virtual
  table declarations can no longer be *before* the structure declarations.

- [CHANGED] The generated names of member functions where changed. Now it is:
  <function-name>_<structure-name>_mEmBeR which is more descriptive.

- [NEW] _lwc_config_ {} command to pass options to the lwc compiler.
   Interesting options : turn off structure-by-reference,
   inline virtual tables by default, and other.

- [NEW] virtual tables can be constant and into read-only memory.
  also constness applied to some internal  functions.
  it's possible to declare 'const *this' for member functions.

- [NEW] const class members

- [NEW] abstract template class macros.

- [NEW] access of virtual variables without an instance.

- [NEW] introduced "static class" to export the virtual table definition.

- [NEW] overloaded operator ~

- [NEW] anonymous object call constructor thing.

- [NEW] Virtual inheritance declarations.
  Solve the dynamic_cast problem

reply via email to

[Prev in Thread] Current Thread [Next in Thread]