[GiNaC-list] hash tables and sets

Marko Riedel mriedel at lsi.upc.edu
Wed Oct 11 01:15:10 CEST 2006

Richard B. Kreckel writes:
 > Dear Marko,
 > You wrote:
 > >I have another very basic question. Suppose I have an ordinary C
 > >structure (I will use C in my example, rather than Objective C, to
 > >keep it simple) containing some fields e.g.
 > >
 > >typedef struct {
 > >    int a, b;
 > >    char *name;
 > >} mystruct;
 > >
 > >Now I want to add a field to it (at compile time, of course),
 > >containing a set of expressions, using std::set<ex, ex_is_less>, as
 > >you suggested. How would I declare this field? What headers do I need
 > >to import?
 > >  
 > >
 > #include <ginac/ginac.h>
 > typedef struct {
 > int a, b;
 > char *name;
 > std::set<GiNaC::ex, GiNaC::ex_is_less> expressionset;
 > } mystruct;
 > Nothing. As recommended in an earlier email, use the placement new 
 > istead: new(inst) mystruct. This way, the set ctor will have initialized 
 > expressionset properly. Note, that the compiler has automatically 
 > equipped mystruct with a set of default ctors.

Thank you for the reply and for your patience. I guess I'm not
explaining myself well. Consider the following problem:

Someone hands me a chunk of memory through a void pointer, like so:

    (void *)ptr.

I want the memory pointed to by "ptr" to hold a newly initialized set
of GiNaC expressions. How do I do this? How do I find out the number
of bytes I will need? At some point in the future, someone will hand
me that same pointer and I will want to free the set of expressions
that it holds. Again, how do I do this?


Best regards,

Marko Riedel

| Marko Riedel, EDV Neue Arbeit gGmbH, mriedel at lsi.upc.edu    |
| http://www.geocities.com/markoriedelde/index.html           |

More information about the GiNaC-list mailing list