- First implementation of Hdbqueue

- First implementation of new object model for SICS
This commit is contained in:
koennecke
2007-08-03 15:12:10 +00:00
parent 3170314457
commit 31a48d2155
21 changed files with 1035 additions and 101 deletions

View File

@@ -29,7 +29,7 @@ void DeleteCallbackChain(pHdbCallback root){
}
}
/*-----------------------------------------------------------------------*/
static void DeleteNodeData(pHdb node){
void DeleteNodeData(pHdb node){
pHdb tmp = NULL;
if(node == NULL){
@@ -57,7 +57,7 @@ static void DeleteNodeData(pHdb node){
free(node);
}
/*-------------------------------------------------------------------------*/
static int InvokeCallbackChain(pHdbCallback root, pHdb node,
int InvokeCallbackChain(pHdbCallback root, pHdb node,
void *callData, hdbValue v){
pHdbCallback current = root;
int status;
@@ -92,6 +92,17 @@ void RemoveHdbNodeFromParent(pHdb node, void *callData){
parent,callData,parent->value);
}
}
/*----------------------------------------------------------------------*/
int CountHdbChildren(pHdb node){
int count = 0;
pHdb current = NULL;
current = node->child;
while(current != NULL){
current = current->next;
count++;
}
return count;
}
/*-----------------------------------------------------------------------*/
static void RemoveCallbackNode(pHdbCallback victim){
if(victim->previous != NULL) {
@@ -347,6 +358,9 @@ hdbValue makeHdbData(int datatype, int length, void *data){
case HIPOBJ:
val.v.obj = data;
break;
case HIPFUNC:
val.v.obj = data;
break;
}
return val;
}
@@ -480,6 +494,7 @@ int compareHdbValue(hdbValue v1, hdbValue v2){
return 1;
break;
case HIPOBJ:
case HIPFUNC:
if(v2.v.obj == v1.v.obj) {
return 1;
} else {
@@ -523,6 +538,7 @@ int getHdbValueLength(hdbValue v){
length = strlen(v.v.text);
break;
case HIPOBJ:
case HIPFUNC:
length = sizeof(void *);
break;
}
@@ -913,6 +929,7 @@ int copyHdbValue(hdbValue *source, hdbValue *target){
}
break;
case HIPOBJ:
case HIPFUNC:
target->v.obj = source->v.obj;
break;
default:
@@ -943,6 +960,16 @@ int UpdateHipadabaPar(pHdb node, hdbValue v, void *callData){
return 1;
}
/*-----------------------------------------------------------------------------*/
int NotifyHipadabaPar(pHdb node,void *callData){
int status;
status = InvokeCallbackChain(node->updateCallbacks, node, callData, node->value);
if(status != 1 ){
return status;
}
return 1;
}
/*-----------------------------------------------------------------------------*/
int GetHipadabaPar(pHdb node, hdbValue *v, void *callData){
int status;