Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00025 #include "ne_dyn.h"
00026 #include <gsl/gsl_rng.h>
00027 #include <string.h>
00028
00029
00030
00031 extern gsl_rng* neRng;
00032
00034 ne_dyn_node_lib_t *neNodeDynLib = NULL;
00035
00037 ne_dyn_edge_lib_t *neEdgeDynLib = NULL;
00038
00039
00040 void ne_dyn_finalise (void)
00041 {
00042 ne_dyn_node_lib_t *curNodePtr;
00043 ne_dyn_edge_lib_t *curEdgePtr;
00044
00045 curNodePtr = neNodeDynLib;
00046 curEdgePtr = neEdgeDynLib;
00047
00048
00049 while (curNodePtr != NULL) {
00050 neNodeDynLib = curNodePtr->next;
00051 free(curNodePtr);
00052 curNodePtr = neNodeDynLib;
00053 }
00054
00055
00056 while (curEdgePtr != NULL) {
00057 neEdgeDynLib = curEdgePtr->next;
00058 free(curEdgePtr);
00059 curEdgePtr = neEdgeDynLib;
00060 }
00061 }
00062
00063
00064 ne_err_code_t ne_dyn_add_node_dyn (ne_dyn_node_t *nodeDyn)
00065 {
00066 ne_dyn_node_lib_t *newDyn, *oldStart;
00067
00068
00069 newDyn = (ne_dyn_node_lib_t *)malloc(sizeof(ne_dyn_node_lib_t));
00070
00071
00072 oldStart = neNodeDynLib;
00073
00074
00075 newDyn->nodeDyn = nodeDyn;
00076 newDyn->next = oldStart;
00077
00078
00079 neNodeDynLib = newDyn;
00080
00081 return NE_SUCCESS;
00082 }
00083
00084
00085 ne_err_code_t ne_dyn_add_edge_dyn (ne_dyn_edge_t *edgeDyn)
00086 {
00087 ne_dyn_edge_lib_t *newDyn, *oldStart;
00088
00089
00090 newDyn = (ne_dyn_edge_lib_t *)malloc(sizeof(ne_dyn_edge_lib_t));
00091
00092
00093 oldStart = neEdgeDynLib;
00094
00095
00096 newDyn->edgeDyn = edgeDyn;
00097 newDyn->next = oldStart;
00098
00099
00100 neEdgeDynLib = newDyn;
00101
00102 return NE_SUCCESS;
00103 }
00104
00105
00106 ne_err_code_t ne_dyn_remove_node_dyn (const char *name)
00107 {
00108 ne_dyn_node_lib_t *curPtr, *prevPtr;
00109
00110
00111 if (neNodeDynLib == NULL) {
00112 return NE_FAILURE;
00113 }
00114
00115
00116 curPtr = neNodeDynLib;
00117 prevPtr = NULL;
00118
00119 do {
00120
00121
00122 if (strcmp(name, curPtr->nodeDyn->name) == 0) {
00123
00124
00125 if (prevPtr == NULL) {
00126 neNodeDynLib = curPtr->next;
00127 }
00128 else {
00129 prevPtr->next = curPtr->next;
00130 }
00131
00132
00133 free(curPtr->nodeDyn);
00134 free(curPtr);
00135
00136 return NE_SUCCESS;
00137 }
00138
00139
00140 prevPtr = curPtr;
00141 curPtr = curPtr->next;
00142
00143 } while (curPtr != NULL);
00144
00145
00146 return NE_FAILURE;
00147 }
00148
00149
00150 ne_err_code_t ne_dyn_remove_edge_dyn (const char *name)
00151 {
00152 ne_dyn_edge_lib_t *curPtr, *prevPtr;
00153
00154
00155 if (neEdgeDynLib == NULL) {
00156 return NE_FAILURE;
00157 }
00158
00159
00160 curPtr = neEdgeDynLib;
00161 prevPtr = NULL;
00162
00163 do {
00164
00165
00166 if (strcmp(name, curPtr->edgeDyn->name) == 0) {
00167
00168
00169 if (prevPtr == NULL) {
00170 neEdgeDynLib = curPtr->next;
00171 }
00172 else {
00173 prevPtr->next = curPtr->next;
00174 }
00175
00176
00177 free(curPtr->edgeDyn);
00178 free(curPtr);
00179
00180 return NE_SUCCESS;
00181 }
00182
00183
00184 prevPtr = curPtr;
00185 curPtr = curPtr->next;
00186
00187 } while (curPtr != NULL);
00188
00189
00190 return NE_FAILURE;
00191 }
00192
00193
00194 ne_dyn_node_t * ne_dyn_find_node_dyn (const char *name)
00195 {
00196 ne_dyn_node_lib_t *curPtr;
00197
00198
00199 curPtr = neNodeDynLib;
00200
00201
00202 while (curPtr != NULL) {
00203
00204
00205 if (strcmp(name, curPtr->nodeDyn->name) == 0) {
00206
00207 return curPtr->nodeDyn;
00208 }
00209
00210
00211 curPtr = curPtr->next;
00212 }
00213
00214
00215 return NULL;
00216 }
00217
00218
00219 ne_dyn_edge_t * ne_dyn_find_edge_dyn (const char *name)
00220 {
00221 ne_dyn_edge_lib_t *curPtr;
00222
00223
00224 curPtr = neEdgeDynLib;
00225
00226
00227 while (curPtr != NULL) {
00228
00229
00230 if (strcmp(name, curPtr->edgeDyn->name) == 0) {
00231
00232
00233 return curPtr->edgeDyn;
00234 }
00235
00236
00237 curPtr = curPtr->next;
00238 }
00239
00240
00241 return NULL;
00242 }
00243