]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
removed memory leak, some cleanup
authorhadaq <hadaq>
Wed, 12 May 2004 12:25:26 +0000 (12:25 +0000)
committerhadaq <hadaq>
Wed, 12 May 2004 12:25:26 +0000 (12:25 +0000)
allParam/rpc/pcache.c
allParam/rpc/pcache.h

index b684376c8ef1fb195ccf038183ca4a91351228e8..8cd0cd07e46566755f5d975076de0ed67f637085 100644 (file)
@@ -5,18 +5,18 @@
 
 #include "pcache.h"
 
-int PData_invariant(const PData *my) {
+static int PData_invariant(const PData *my) {
        int retVal;
 
        retVal = my != NULL
                && my->name != NULL
                && my->idx != NULL
-               && (my->type == PInt || my->type == PString || my->type == PIntArray || my->type == PStringArray);
+               && (my->type == PInt);
        
        return retVal;
 }
 
-PData *newPInt(const char *name, const char *idx, unsigned long int value) {
+static PData *newPInt(const char *name, const char *idx, unsigned long int value) {
        PData *my = malloc(sizeof(PData));
 
        my->name = malloc(strlen(name)+1);
@@ -32,7 +32,7 @@ PData *newPInt(const char *name, const char *idx, unsigned long int value) {
        return my;
 }
 
-void delPData(PData *my) {
+static void delPData(PData *my) {
        if (my != NULL) {
                switch (my->type) {
                case PInt:
@@ -44,62 +44,55 @@ void delPData(PData *my) {
        }
 }
 
-static int keyCompare(const PData *my, const PData *data) {
+static int compare(const PData *my, const char *name, const char *idx) {
        int retVal;
 
-       assert(PData_invariant(my));
-       assert(PData_invariant(data));
-
-       retVal = strcmp(my->name, data->name);
+       retVal = strcmp(my->idx, idx);
        if (retVal == 0) {
-               retVal = strcmp(my->idx, data->idx);
+               retVal = strcmp(my->name, name);
        }
 
        return retVal < 0 ? -1 : retVal > 0 ? 1 : 0;
 }
 
-PCache *insert(PCache *my, PData *data) {
-       assert(PData_invariant(data));
-
+static PCache *insert(PCache *my, const char *name, const char *idx, unsigned long int value) {
        if (my == NULL) {
                my = malloc(sizeof(PCache));
                my->r = NULL;
                my->l = NULL;
-               my->data = data;
+               my->data = newPInt(name, idx, value);
        } else {
-               switch (keyCompare(my->data, data)) {
+               switch (compare(my->data, name, idx)) {
                        case 0:
                                delPData(my->data);
-                               my->data = data;
+                               my->data = newPInt(name, idx, value);
                                break;
                        case -1:
-                               my->l = insert(my->l, data);
+                               my->l = insert(my->l, name, idx, value);
                                break;
                        case 1:
-                               my->r = insert(my->r, data);
+                               my->r = insert(my->r, name, idx, value);
                                break;
                }
        }
        return my;
 }
 
-PData *find(const PCache *my, const PData *data) {
+static PData *find(const PCache *my, const char *name, const char *idx) {
        PData *retVal;
 
-       assert(PData_invariant(data));
-
        if (my == NULL) {
                retVal = NULL;
        } else {
-               switch (keyCompare(my->data, data)) {
+               switch (compare(my->data, name, idx)) {
                        case 0:
                                retVal = my->data;
                                break;
                        case -1:
-                               retVal = find(my->l, data);
+                               retVal = find(my->l, name, idx);
                                break;
                        case 1:
-                               retVal = find(my->r, data);
+                               retVal = find(my->r, name, idx);
                                break;
                }
        }
@@ -108,7 +101,7 @@ PData *find(const PCache *my, const PData *data) {
 
 int PCache_storeInt(PCache **my, const char *name, const char *idx, unsigned long int value) {
 
-       *my = insert(*my, newPInt(name, idx, value));                   
+       *my = insert(*my, name, idx, value);                    
 
        return 0;
 }
@@ -117,7 +110,7 @@ int PCache_getInt(const PCache *my, const char *name, const char *idx, unsigned
        int retVal;
        const PData *data;
 
-       data = find(my, newPInt(name, idx, 0));
+       data = find(my, name, idx);
        if (data == NULL) {
                *value = 0;
                retVal = -1;
index 3f87f5b729495f95284e5743a2ec20247be0ae19..f977c027e8cb5a0428ae5f9fa4f756d03915ecfb 100644 (file)
@@ -1,7 +1,11 @@
 #ifndef PCHE_H
 #define PCHE_H
 
+enum PType { PInt };
+#if 0
 enum PType { PInt, PString, PIntArray, PStringArray };
+#endif
+
 struct PDataS {
        char *name;
        char *idx;