Re: macro problem, extra heirarchy?
- From: Rodrigo Moya <rodrigo linuxave net>
- To: Chris Wiegand <cdwiegand gmx de>
- Cc: gnome-db-list gnome org
- Subject: Re: macro problem, extra heirarchy?
- Date: Tue, 23 May 2000 16:50:11 +0200
Chris Wiegand wrote:
>
> Um...first off, while wrapping gda_field, I found this line:
>
> #define gda_field_single(f) ((f)->real_value->_u.v._u.f)
>
> It kept choking until I got my brain in gear and figured out why: f is
> being reused! I didn't want to change it, being as it's not my code, nor
> in my folder, and so someone familiar with the code should probably change
> the gda_field_single(f) and (f)-> into something like a g or somesuch...
>
done! It's on CVS
> Also, can someone explain why Gda_Field, Gda_Value, and Gda_FieldValue are
> all separate? I can't quite figure out why... (no offense intended, I
> assure you!)
>
This is because they are mapped directly from the CORBA interfaces, but
for the client part, you should just make C++ bindings for the stuff in
the .h files in the gda-clnt directory. Don't try to wrap the CORBA
stuff, as the gda-client lib gets the responsibility for that.
GDA_Field is the CORBA interface for the field with no further info
GDA_Value is the structure containing the value for a field
GDA_FieldValue is just a wrapper to know if there is a valid GDA_Value
for a given GDA_Field. If you look at the gda-field.h file, you'll see:
#define gda_field_isnull(f) (f->real_value ? (f)->real_value->_d
: 1)
'real_value' is a GDA_FieldValue struct, and the _d is a member
generated by orbit-idl from the IDL file:
union FieldValue switch (boolean) {
case FALSE:
Value v;
};
this 'FALSE' is a flag, if TRUE, the FieldValue is null and has no
GDA_Field associated, if FALSE, the FieldValue is not null, and has a
GDA_Field associated.
This is used in the Gda_Field struct (in gda-field.h) to have several
values for the Field:
struct _Gda_Field
{
GtkObject object;
GDA_FieldAttributes* attributes;
gint actual_length;
GDA_FieldValue* real_value;
GDA_FieldValue* shadow_value;
GDA_FieldValue* original_value;
};
Although all this is not yet supported by the client lib, so just wrap
the functions already available. Remember that all structures starting
by GDA_ are CORBA ones, so unless explicitly used in the client lib,
forget about them.
Cheers
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]