[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
http://students.ceid.upatras.gr/~sxanth/lwc
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
complex)
- [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
smaller.
- [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
declarations
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Lightweight C++] lwc 0.6 is out,
Xanthakis Stelios <=