From: Rolf V. <rol...@he...> - 2001-12-04 14:18:05
|
Hi, all. I'm watching this list as YAML is (should be) one of the config formats for a future Linux distribution. (http://helidelinux.sf.net) In the search for an object that could hold an in-memory representation of a document, whether it is XML or YAML, I came up with this one: typedef struct Graph { char *name; char *value; char *type; int size; struct Graph **nodes; } Graph; I post it here as an idea, one that, at least for me, works very well, also in its Java version. To support Unicode, wchar_t * instead of char * would be necessary. Ok, just ignore if not useful. Kind regards. Rolf. |
From: Clark C . E. <cc...@cl...> - 2001-12-04 15:00:39
|
Hello Rolf. | typedef struct Graph { | char *name; | char *value; | char *type; | int size; | struct Graph **nodes; | } Graph; The above model will work for XML, but I won't for YAML since node's don't have names. Here is a data structure that would work; but I'd implement it as an interface of functions rather than as a data structure. Data structures are too limiting. typedef struct { enum { YAML_COLLECTION, YAML_SCALAR } kind; char *type; } Node; typedef struct { Node base; char *value; } Scalar; typedef struct { Node *key; Node *value; } Arrow; typedef struct { Node base; int arrow_count; Arrow* arrow_array; } Collection; |
From: Rolf V. <rol...@he...> - 2001-12-04 16:31:21
|
Clark C . Evans wrote: > Hello Rolf. > > | typedef struct Graph { > | char *name; > | char *value; > | char *type; > | int size; > | struct Graph **nodes; > | } Graph; > > The above model will work for XML, but I won't for > YAML since node's don't have names. Here is a data > structure that would work; but I'd implement it as > an interface of functions rather than as a data > structure. Data structures are too limiting. My proposed data structure is in fact hidden by an API, that's ok. I need to fit YAML into this Graph object because it is a central container in a larger application. But even so, experimenting with maps and secuences, all went ok. I was able to load them into a Graph, using the keys as names of the node. My main need is to access the nodes thru a path of the form 'name(.name)*'. (any YPATH doc available?). I've only a squeletic YAML parser, waiting for the spec to be stable, so I'm for sure overlooking many aspects. King regards. Rolf |
From: Clark C . E. <cc...@cl...> - 2001-12-04 16:51:04
|
| I need to fit YAML into this Graph object because | it is a central container in a larger application. Ok. You can use this structure if you use a limited YAML without structured keys and without aliases. --- one: &001 node two: *001 --- ? [one,two] : node In these two cases it's clear that "node" doesn't in fact have a name. In the first case, it has two names, and in the second case, the node has a list for a name. ;) Clark |