$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Jason Shirk (jasonsh_at_[hidden])
Date: 2002-02-15 13:39:57
> -----Original Message-----
> From: Geurt Vos [mailto:G.Vos_at_[hidden]]
>
> It should work fine for at least GCC 2.95.3, Borland
> C++ 5.5.1 and Intel C++ 5.0. It simply can't be done
> for Visual C++ 6.0 & 7.0.
>
> Geurt
>
Famous last words: "can't be done". Loki was ported to VC6, so I'm sure
it's possible.
While I love the idea of a language only implementation of properties,
you really need compiler support for the complete solution.
First, I find it unacceptable to store a pointer to the self in the
property object. If I wanted all data members to have corresponding
properties, I have quite likely doubled the size of my object.
Second, it won't work with bitfields.
I would think you want to provide the ability to have a "virtual"
property not backed by any data member (perhaps the value is stored in a
dictionary.) You may already have that support, but I didn't see it.
Last, I'll point out VC6 and beyond has full compiler support for
properties. I don't like the syntax, but it looks like this:
struct S {
int __declspec(property(get=get_foo,put=put_foo)) foo;
int get_foo();
void put_foo(int value);
};
The compiler simply maps s.foo into the appropriate get or put function,
depending on the context.
Jason Shirk
VC++ Compiler Team