00001 /*=========================================================================== 00002 NetEvo Foundation Library 00003 Copyright (C) 2009, 2010 Thomas E. Gorochowski <tgorochowski@me.com> 00004 Bristol Centre for Complexity Sciences, University of Bristol, Bristol, UK 00005 ---------------------------------------------------------------------------- 00006 NetEvo is a computing framework designed to allow researchers to investigate 00007 evolutionary aspects of dynamical complex networks. By providing tools to 00008 easily integrate each of these factors in a coherent way, it is hoped a 00009 greater understanding can be gained of key attributes and features displayed 00010 by complex systems. 00011 00012 NetEvo is open-source software released under the Open Source Initiative 00013 (OSI) approved Non-Profit Open Software License ("Non-Profit OSL") 3.0. 00014 Detailed information about this licence can be found in the COPYING file 00015 included as part of the source distribution. 00016 00017 This library is distributed in the hope that it will be useful, but 00018 WITHOUT ANY WARRANTY; without even the implied warranty of 00019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 ============================================================================*/ 00029 #ifndef NE_EVO_H 00030 #define NE_EVO_H 00031 00032 00033 #include "ne_std.h" 00034 #include "ne_sys.h" 00035 00037 typedef enum { 00038 NE_STEP_PAUSE = 1, 00039 NE_STEP_DYN = 2, 00040 NE_STEP_EVO = 3 00041 } ne_evo_step_t; 00042 00043 00044 /* Function to output a stream for an initial topology - types are all 0 */ 00045 ne_err_code_t ne_evo_initial (ne_sys_t *sys, FILE *evoFile); 00046 00047 /* Update string to add node. */ 00048 ne_err_code_t ne_evo_add_node (char *str, ne_int_t type); 00049 /* Update string to delete a given node. */ 00050 ne_err_code_t ne_evo_del_node (char *str, ne_int_t node); 00051 /* Update string to add edge. */ 00052 ne_err_code_t ne_evo_add_edge (char *str, ne_int_t startNode, ne_int_t endNode, ne_int_t type); 00053 /* Update string to delete a given edge. */ 00054 ne_err_code_t ne_evo_del_edge (char *str, ne_int_t startNode, ne_int_t endNode); 00055 /* Update string to set node type. */ 00056 ne_err_code_t ne_evo_set_node_type (char *str, ne_int_t node, ne_int_t type); 00057 /* Update string to set edge type. */ 00058 ne_err_code_t ne_evo_set_edge_type (char *str, ne_int_t startNode, ne_int_t endNode, ne_int_t type); 00059 /* Get string to for a type of step. See enum ne_evo_step_t for full list.*/ 00060 char * ne_evo_step (ne_evo_step_t type); 00061 00062 00063 #endif /* NE_EVO_H */