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

Re: gEDA-dev: New diagram (attempt at UML)



Yes you could probably do it this way to.

struct st_object {
  char obj_type;  // defined in o_types.h

  int reference_count;

  BOOL selected;            // object selected flag
  BOOL visible;
  BOOL locked;
 
  BOOL hierarchy_is_disabled;

  // attributes from symbol files
  GList *sym_attribs;

  // attributes from schematic files
  GList *sch_attribs;
};


struct st_pin {
  OBJECT *base_obj;

  LINE       *line;

  POINT      *contact_location;

  PIN_TYPE   type;

  GString    *hierachy_path;

  VOID     *parent;
};



Peter Clifton wrote:
> On Wed, 2007-03-21 at 20:20 -0800, Steve Meier wrote:
>   
>> This is a non-object oriented version, c straight no ice.
>>
>> struct st_object {
>>   char obj_type;  // defined in o_types.h
>>
>>   int reference_count;
>>
>>   union {
>>     ARC           *arc;
>>     BOX           *box;
>>     BUSRIPPER     *busripper;
>>     CIRCLE        *circle;
>>     COMPLEX       *complex;
>>     CONN          *connector;
>>     GEDA_VERSION  *version;
>>     LINE          *line;
>>     PLACEHOLDER   *placeholder;
>>     PICTURE       *picture;
>>     PIN           *pin;
>>     SEGMENT       *segment;
>>     TEXT          *text;
>>   } data;
>>
>>
>>   BOOL selected;            // object selected flag
>>   BOOL visible;
>>   BOOL locked;
>>  
>>   BOOL hierarchy_is_disabled;
>>
>>   // attributes from symbol files
>>   GList *sym_attribs;
>>
>>   // attributes from schematic files
>>   GList *sch_attribs;
>> };
>>     
>
> I'd probably not embed the objects as a union - although I'm not sure.
> It is certainly better than the current way which has one of every
> structure just in case.
>
> I'd imagine going the gobject way, and start the "subclass" structure
> with the parent's structure. C guarantees that this first element is
> first in the struct's allocated memory, so you can type-cast say an ARC
> object into the generic object. (OBJECT*)my_arc->object_property.
>
> gobject also does some other things, like maintaining fields in the
> gobject structure which it can verify your casting at run-time, and has
> similarly inherited class structures for methods (it is fully object
> oriented).
>
> gobject isn't favoured for libgeda, but this way of inheriting
> structures could be used (carefully).
>
> Regards,
>
>   



_______________________________________________
geda-dev mailing list
geda-dev@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev