]> granicus.if.org Git - graphviz/commitdiff
Add a discipline parameter to open function of id and mem disciplines.
authorEmden Gansner <erg@research.att.com>
Mon, 27 Feb 2012 19:40:27 +0000 (14:40 -0500)
committerEmden Gansner <erg@research.att.com>
Mon, 27 Feb 2012 19:40:27 +0000 (14:40 -0500)
lib/cgraph/cgraph.3
lib/cgraph/cgraph.h
lib/cgraph/graph.c
lib/cgraph/id.c
lib/cgraph/mem.c

index 7bb6a520e13e67940ec4fb0843dee4539d2d16b0..c0ebd9d583f91b5b8e325863ab80dd2cacf87254 100644 (file)
@@ -392,7 +392,7 @@ they are mapped to and from strings.
 
 .P0
 struct Agiddisc_s {             /* object ID allocator */
-       void *(*open) (Agraph_t * g);       /* associated with a graph */
+       void *(*open) (Agraph_t * g, Agdisc_t*);       /* associated with a graph */
        long (*map) (void *state, int objtype, char *str, unsigned long *id, int createflag);
        long (*alloc) (void *state, int objtype, unsigned long id);
        void (*free) (void *state, int objtype, unsigned long id);
@@ -457,7 +457,7 @@ struct Agiodisc_s {
 } ;
 
 struct Agmemdisc_s {   /* memory allocator */
-       void    *(*open)(void);         /* independent of other resources */
+       void    *(*open)(Agdisc_t*);            /* independent of other resources */
        void    *(*alloc)(void *state, size_t req);
        void    *(*resize)(void *state, void *ptr, size_t old, size_t req);
        void    (*free)(void *state, void *ptr);
index a815e8494bae267428a49d549d89c0fb05f99816..ee58898c12be752c437de967404e25ec9fd3d658 100644 (file)
@@ -148,7 +148,7 @@ struct Agdesc_s {           /* graph descriptor */
 /* disciplines for external resources needed by libgraph */
 
 struct Agmemdisc_s {           /* memory allocator */
-    void *(*open) (void);      /* independent of other resources */
+    void *(*open) (Agdisc_t*); /* independent of other resources */
     void *(*alloc) (void *state, size_t req);
     void *(*resize) (void *state, void *ptr, size_t old, size_t req);
     void (*free) (void *state, void *ptr);
@@ -156,7 +156,7 @@ struct Agmemdisc_s {                /* memory allocator */
 };
 
 struct Agiddisc_s {            /* object ID allocator */
-    void *(*open) (Agraph_t * g);      /* associated with a graph */
+    void *(*open) (Agraph_t * g, Agdisc_t*);   /* associated with a graph */
     long (*map) (void *state, int objtype, char *str, unsigned long *id,
                 int createflag);
     long (*alloc) (void *state, int objtype, unsigned long id);
index 8811b7d135af271cb9bb9d9e54135d5cf3248275..5a46ac2ab7ef01aaa8c23ccc77009fe7beca8d50 100644 (file)
@@ -28,7 +28,7 @@ static Agclos_t *agclos(Agdisc_t * proto)
 
     /* establish an allocation arena */
     memdisc = ((proto && proto->mem) ? proto->mem : &AgMemDisc);
-    memclosure = memdisc->open();
+    memclosure = memdisc->open(proto);
     rv = memdisc->alloc(memclosure, sizeof(Agclos_t));
     rv->disc.mem = memdisc;
     rv->state.mem = memclosure;
@@ -54,7 +54,7 @@ Agraph_t *agopen(char *name, Agdesc_t desc, Agdisc_t * arg_disc)
     g->desc = desc;
     g->desc.maingraph = TRUE;
     g->root = g;
-    g->clos->state.id = g->clos->disc.id->open(g);
+    g->clos->state.id = g->clos->disc.id->open(g, arg_disc);
     if (agmapnametoid(g, AGRAPH, name, &gid, TRUE))
        AGID(g) = gid;
     /* else AGID(g) = 0 because we have no alternatives */
index c2fd60d7b589dbd1cc273c6f8d1ae4bfe7f89a17..c4b5d71c8c7730d3aba943edc64454e4c3e1c725 100644 (file)
@@ -16,7 +16,7 @@
 
 /* a default ID allocator that works off the shared string lib */
 
-static void *idopen(Agraph_t * g)
+static void *idopen(Agraph_t * g, Agdisc_t* disc)
 {
     return g;
 }
index 14dd24128e6542559ac156afd0aaf328b065019f..391b3ac94822b10febfba6974a4210f42a2fc4ce 100644 (file)
@@ -62,7 +62,7 @@ Agmemdisc_t AgMemDisc =
 
        /* malloc based allocator */
 
-static void *memopen(void)
+static void *memopen(Agdisc_t* disc)
 {
     return NIL(void *);
 }