//* Initializes a new connection node for the MYDDAS list*/ static MYDDAS_UTIL_CONNECTION myddas_util_initialize_connection(void *,void *, MYDDAS_UTIL_CONNECTION); /* Initializes a new predicate node for the MYDDAS list */ static MYDDAS_UTIL_PREDICATE myddas_util_initialize_predicate(char *, int,char *, MYDDAS_UTIL_PREDICATE); MYDDAS_GLOBAL myddas_util_initialize_myddas(){ MYDDAS_GLOBAL global = NULL; global = (MYDDAS_GLOBAL) malloc (sizeof(struct myddas_global)); global->myddas_top_connections = NULL; #ifdef MYDDAS_TOP_LEVEL global->myddas_top_level_connection = NULL; #endif #ifdef MYDDAS_STATS global->myddas_statistics = (MYDDAS_GLOBAL_STATS) malloc (sizeof(struct myddas_global_stats)); MYDDAS_STATS_INITIALIZE_TIME_STRUCT(global->myddas_statistics->total_db_row,time_final); #endif return global; } /* Inserts the new node on the front of the list */ static MYDDAS_UTIL_CONNECTION myddas_util_initialize_connection(void *conn,void *enviromment, MYDDAS_UTIL_CONNECTION next){ MYDDAS_UTIL_CONNECTION new = malloc (sizeof(struct myddas_list_connection)); if (new == NULL) { return NULL; } new->predicates=NULL; new->connection=conn; new->odbc_enviromment=enviromment; /* It saves n queries, doing at once n+1 queries */ new->total_number_queries=0; //Default new->actual_number_queries=0; new->queries = NULL; /* List integrity */ new->next=next; new->previous=NULL; /* If there's already at least one node on the list */ if (next != NULL) next->previous=new; #ifdef MYDDAS_STATS new->totalNumberOfRows=0; MYDDAS_STATS_INITIALIZE_TIME_STRUCT(new->totalTimeofDBServer,time_final); MYDDAS_STATS_INITIALIZE_TIME_STRUCT(new->lastTimeofDBServer,time_final); MYDDAS_STATS_INITIALIZE_TIME_STRUCT(new->totalFromDBServer,time_final); MYDDAS_STATS_INITIALIZE_TIME_STRUCT(new->lastFromDBServer,time_final); new->lastBytesTransfered=0; new->totalBytesTransfered=0; MYDDAS_STATS_INITIALIZE_TIME_STRUCT(new->total_db_row,time_final); new->total_querys_made=0; #endif return new; } static MYDDAS_UTIL_PREDICATE myddas_util_initialize_predicate(char *pred_name, int pred_arity, char *pred_module, MYDDAS_UTIL_PREDICATE next){ MYDDAS_UTIL_PREDICATE new = malloc (sizeof(struct myddas_list_preds)); if (new == NULL) { return NULL; } new->pred_name=pred_name; new->pred_arity=pred_arity; new->pred_module=pred_module; /* List integrity */ new->next=next; new->previous=NULL; /* If there's already at least one node on the list */ if (next != NULL) next->previous=new; return new; }