X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsn_network.c;h=da87f3760a0036d1a65d834fe3ce4b4e14b10f26;hb=276602723076553538821464b03b5ac515e5e3b5;hp=3a37bb2eeb684b6d56f54ddb2f13914134a1490e;hpb=3dd831f5d709112234fecf5694b065aa906fe4f8;p=sort-networks.git diff --git a/src/sn_network.c b/src/sn_network.c index 3a37bb2..da87f37 100644 --- a/src/sn_network.c +++ b/src/sn_network.c @@ -94,6 +94,38 @@ int sn_network_stage_remove (sn_network_t *n, int s_num) return (0); } /* int sn_network_stage_remove */ +sn_network_t *sn_network_clone (const sn_network_t *n) +{ + sn_network_t *n_copy; + int i; + + n_copy = sn_network_create (n->inputs_num); + if (n_copy == NULL) + return (NULL); + + for (i = 0; i < n->stages_num; i++) + { + sn_stage_t *s; + int status; + + s = sn_stage_clone (n->stages[i]); + if (s == NULL) + break; + + status = sn_network_stage_add (n_copy, s); + if (status != 0) + break; + } + + if (i < n->stages_num) + { + sn_network_destroy (n_copy); + return (NULL); + } + + return (n_copy); +} /* sn_network_t *sn_network_clone */ + int sn_network_show (sn_network_t *n) { int i;