refactoring
[rrq/rrqmisc.git] / vector / TupleSchema.c
index 5616b2dd5a6bf722b5c762095c997d05669c6c45..5a92b64db32d52239fcb83304c0bfcd40e2a2c9f 100644 (file)
@@ -26,7 +26,7 @@ static unsigned long TupleSchema_hashcode(void *this,void *key) {
     Tuple *kp = (Tuple*) key;
     int i = 0;
     unsigned long value = 5381;
-    for ( ; i < def->arity; i++ ) {
+    for ( ; i < def->columns->size; i++ ) {
        if ( columns[i] ) {
            value <<= 3;
            if ( kp->elements[i] ) {
@@ -48,7 +48,7 @@ static int TupleSchema_haskey(void *this,void *item,void *key) {
     Tuple *kp = (Tuple*) key;
     Tuple *tp = (Tuple*) item;
     int i = 0;
-    for ( ; i < def->arity; i++ ) {
+    for ( ; i < def->columns->size; i++ ) {
        if ( columns[i] && kp->elements[i] ) {
            if ( columns[i]->haskey(
                     columns[i], tp->elements[i], kp->elements[i] ) == 0 ) {
@@ -68,9 +68,9 @@ static void *TupleSchema_itemkey(void *this,void *item) {
     TupleSchema *def = (TupleSchema *) this;
     ItemKeyFun **columns = (ItemKeyFun**) def->columns->elements;
     Tuple *tp = (Tuple*) item;
-    Tuple *key = Tuple_clone( def->arity, tp );
+    Tuple *key = Tuple_clone( tp );
     int i;
-    for ( i = 0; i < def->arity; i++ ) {
+    for ( i = 0; i < def->columns->size; i++ ) {
        if ( columns[i] ) {
            key->elements[i] = columns[i]->itemkey(
                columns[i], tp->elements[i] );
@@ -90,7 +90,7 @@ static void TupleSchema_releasekey(void *this,void *key) {
     ItemKeyFun **columns = (ItemKeyFun**) def->columns->elements;
     Tuple *kp = (Tuple*) key;
     int i;
-    for ( i = 0; i < def->arity; i++ ) {
+    for ( i = 0; i < def->columns->size; i++ ) {
        if ( columns[i] ) {
            columns[i]->releasekey( columns[i], kp->elements[i] );
        }
@@ -110,7 +110,7 @@ static int TupleSchema_tostring(void *this,void *item,char *buffer,int limit) {
     Tuple *t = (Tuple*) item;
     char *x = "<";
     int a, i;
-    for ( i = 0; i < def->arity; i++ ) {
+    for ( i = 0; i < def->columns->size; i++ ) {
        OUT( snprintf( buffer, limit, x ) );
        x = ",";
        OUT( columns[i]->tostring(
@@ -128,11 +128,10 @@ ItemKeyFun TupleSchema_callbacks = {
     .tostring = TupleSchema_tostring
 };
 
-TupleSchema *TupleSchema_create(int arity,Tuple *columns) {
+TupleSchema *TupleSchema_create(Tuple *columns) {
     TupleSchema *ts = (TupleSchema*) malloc( sizeof( TupleSchema ) );
     (*ts) = (TupleSchema) {
        .base = TupleSchema_callbacks,
-       .arity = arity,
        .columns = columns
     };
     return ts;
@@ -144,13 +143,13 @@ TupleSchema *TupleSchema_create(int arity,Tuple *columns) {
 // Duplicate a TupleSchema with optionally some columns reset.
 TupleSchema *TupleSchema_mask(TupleSchema *schema,...) {
     TupleSchema *masked = COPY(TupleSchema,schema);
-    masked->columns = Tuple_clone( schema->arity, schema->columns );
+    masked->columns = Tuple_clone( schema->columns );
     va_list ap;
     int i;
     va_start( ap, schema );
     for ( ;; ) {
        i = va_arg( ap, int );
-       if ( i < 0 || i >= schema->arity ) {
+       if ( i < 0 || i >= schema->columns->size ) {
            break;
        }
        masked->columns->elements[i] = 0;