major reorganisation
[rrq/rrqmisc.git] / tests / example-relation.c
index f4cf08c1b2d58af4de25d693988fe7731ac17baf..a70714c12f420285a523f9233c088a0d8f89b153 100644 (file)
@@ -1,6 +1,6 @@
 #include <stdlib.h>
 #include <stdio.h>
-#include <relation.h>
+#include <Relation.h>
 #include <stringitem.h>
 
 char *val(void* t) {
@@ -16,78 +16,80 @@ char *val(void* t) {
     return "(null)";
 }
 
-void prtuple(char *pre, tuple *t) {
+void prtuple(char *pre, Tuple *t) {
     if ( t ) {
-       fprintf( stderr, "%s<%s, %s>\n", pre, val((*t)[0]), val((*t)[1]) );
+       fprintf( stderr, "%s<%s, %s>\n", pre,
+                val(t->elements[0]), val(t->elements[1]) );
     } else {
        // fprintf( stderr, "%s< >\n", pre );
     }
 }
 
-void prdropout(const vector_index index,const void *t) {
-    prtuple( ".. ", (tuple*)t );
+void prdropout(const VectorIndex index,const void *t) {
+    prtuple( ".. ", (Tuple*)t );
 }
 
-void add_relation(relation *r,char *p,char *c) {
-    tuple *t = tuple_create( 2, p, c);
+void add_Relation(Relation *r,char *p,char *c) {
+    Tuple *t = Tuple_create( 2, p, c);
     prtuple( "Adding: ", t );
-    vector *dropped = relation_add( r, t );
+    Vector *dropped = Relation_add( r, t );
     if ( dropped ) {
        fprintf( stderr, "Knockout %ld tuples\n", dropped->size );
-       vector_dump( dropped, prdropout );
-       vector_resize( dropped, 0, 0, 0 );
+       Vector_dump( dropped, prdropout );
+       Vector_resize( dropped, 0, 0, 0 );
        free( dropped );
     }
 }
 
 typedef union {
+    Tuple tup;
     struct {
+       void *type;
        void *c1;
        void *c2;
     } cols;
-    void *tup[2];
-} tuple2;
+} Tuple2;
 
 int main(int argc,char **argv) {
-    relation *rltn2 = relation_create(
-       tupleschema_create(
-           2, tuple_create( 2, (void*) &stringitem, (void*) &stringitem ) ) );
-    relation_add_constraint( rltn2, 0, 1 );
-    add_relation( rltn2, "benton", "holly" );
-    add_relation( rltn2, "benton", "molly");
-    add_relation( rltn2, "gully", "holly");
-    add_relation( rltn2, "gully", "vanitha");
-    vector_index index = 0;
-    tuple2 q1 = {{ "benton", 0 }};
-    tuple *t;
+    Relation *rltn2 = Relation_create(
+       TupleSchema_create(
+           Tuple_create( 2, (void*) &stringitem, (void*) &stringitem ) ) );
+    Relation_add_constraint( rltn2, 0, 1 );
+    add_Relation( rltn2, "benton", "holly" );
+    add_Relation( rltn2, "benton", "molly");
+    add_Relation( rltn2, "gully", "holly");
+    add_Relation( rltn2, "gully", "vanitha");
+    VectorIndex index = 0;
+    Tuple2 q1 = (Tuple2) { .cols = { 0, "benton", 0 }};
+    Tuple *t;
     prtuple( "Simple query: ", &q1.tup );
     for ( ; index < rltn2->content.table.size; index++ ) {
-       t = relation_next( rltn2, &index, &q1.tup );
+       t = Relation_next( rltn2, &index, &q1.tup );
        prtuple( ".. ", t );
     }
     // Test null query
     fprintf( stderr, "Null query: (null)\n" );
     for ( index = 0 ; index < rltn2->content.table.size; index++ ) {
-       t = relation_next( rltn2, &index, 0 );
+       t = Relation_next( rltn2, &index, 0 );
        prtuple( ".. ", t );
     }
     // Test Generic query
-    q1 = (tuple2) {{ 0, 0 }};
+    q1 = (Tuple2) { .cols = { 0, 0, 0 }};
     prtuple( "Generic query: ", &q1.tup );
     for ( index = 0 ; index < rltn2->content.table.size; index++ ) {
-       t = relation_next( rltn2, &index, &q1.tup );
+       t = Relation_next( rltn2, &index, &q1.tup );
        prtuple( ".. ", t );
     }
     // Test deletion
-    q1 = (tuple2) {{ "gully", 0 }};
+    q1 = (Tuple2) { .cols = { 0, "gully", 0 }};
     prtuple( "Deletion query: ", &q1.tup );
-    vector *deleted = relation_delete( rltn2, &q1.tup );
+    Vector *deleted = Relation_delete( rltn2, &q1.tup );
     for ( index = 0 ; index < rltn2->content.table.size; index++ ) {
-       t = relation_next( rltn2, &index, 0 );
+       t = Relation_next( rltn2, &index, 0 );
        prtuple( ".. ", t );
     }
     for ( index = 0 ; index < deleted->size; index++ ) {
-       tuple **p = (tuple**) vector_next_used( deleted, &index );
+       Tuple **p = (Tuple**) Vector_next_used( deleted, &index );
        prtuple( "** ", p? *p : 0 );
     }
     return 0;