- First implementation of Hdbqueue
- First implementation of new object model for SICS
This commit is contained in:
31
hipadaba.c
31
hipadaba.c
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user