aboutsummaryrefslogtreecommitdiffstats
path: root/spike
diff options
context:
space:
mode:
authorLaurent Ghigonis <laurent@p1sec.com>2012-12-05 15:58:42 +0100
committerLaurent Ghigonis <laurent@p1sec.com>2012-12-05 15:58:42 +0100
commitbf8fe467897ddfca392df8bf6ca9613c5a54d345 (patch)
treed2cabe69cbd8421fd9747187e046834469f35727 /spike
parentspike (diff)
downloadglouglou-bf8fe467897ddfca392df8bf6ca9613c5a54d345.tar.xz
glouglou-bf8fe467897ddfca392df8bf6ca9613c5a54d345.zip
add igraph spikes
Diffstat (limited to 'spike')
-rw-r--r--spike/Makefile6
-rw-r--r--spike/igraph_edges.c106
-rw-r--r--spike/igraph_graph.c87
3 files changed, 198 insertions, 1 deletions
diff --git a/spike/Makefile b/spike/Makefile
index 9d07a0a..4d2cebe 100644
--- a/spike/Makefile
+++ b/spike/Makefile
@@ -1,5 +1,9 @@
evdns:
$(CC) -o evdns evdns.c -levent
-
evdns_chrooted:
$(CC) -o evdns_chrooted evdns_chrooted.c -levent
+
+igraph_edges:
+ $(CC) -o igraph_edges igraph_edges.c -ligraph
+igraph_graph:
+ $(CC) -o igraph_graph igraph_graph.c -ligraph
diff --git a/spike/igraph_edges.c b/spike/igraph_edges.c
new file mode 100644
index 0000000..69ccedd
--- /dev/null
+++ b/spike/igraph_edges.c
@@ -0,0 +1,106 @@
+/* -*- mode: C -*- */
+/*
+ IGraph library.
+ Copyright (C) 2006-2012 Gabor Csardi <csardi.gabor@gmail.com>
+ 334 Harvard st, Cambridge MA, 02139 USA
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA
+
+*/
+
+#include <igraph/igraph.h>
+#include <math.h>
+
+
+void print_vector(igraph_vector_t *v, FILE *f) {
+ long int i;
+ for (i=0; i<igraph_vector_size(v); i++) {
+ fprintf(f, " %li", (long int) VECTOR(*v)[i]);
+ }
+ fprintf(f, "\n");
+}
+
+int main() {
+
+ igraph_t g;
+ igraph_matrix_t coords;
+ long int i, n;
+ igraph_vector_t v;
+ int ret;
+
+ /* Create graph */
+ igraph_vector_init(&v, 8);
+ VECTOR(v)[0]=0; VECTOR(v)[1]=1;
+ VECTOR(v)[2]=1; VECTOR(v)[3]=2;
+ VECTOR(v)[4]=2; VECTOR(v)[5]=3;
+ VECTOR(v)[6]=2; VECTOR(v)[7]=2;
+ igraph_create(&g, &v, 0, 1);
+
+ /* Add edges */
+ igraph_vector_resize(&v, 4);
+ VECTOR(v)[0]=2; VECTOR(v)[1]=1;
+ VECTOR(v)[2]=3; VECTOR(v)[3]=3;
+ igraph_add_edges(&g, &v, 0);
+
+ /* Check result */
+ igraph_get_edgelist(&g, &v, 0);
+ igraph_vector_sort(&v);
+ print_vector(&v, stdout);
+
+ /* Error, vector length */
+ igraph_set_error_handler(igraph_error_handler_ignore);
+ igraph_vector_resize(&v, 3);
+ VECTOR(v)[0]=0; VECTOR(v)[1]=1;
+ VECTOR(v)[2]=2;
+ ret=igraph_add_edges(&g, &v, 0);
+ if (ret != IGRAPH_EINVEVECTOR) {
+ return 1;
+ }
+
+ /* Check result */
+ igraph_get_edgelist(&g, &v, 0);
+ igraph_vector_sort(&v);
+ print_vector(&v, stdout);
+
+ /* Error, vector ids */
+ igraph_vector_resize(&v, 4);
+ VECTOR(v)[0]=0; VECTOR(v)[1]=1;
+ VECTOR(v)[2]=2; VECTOR(v)[3]=4;
+ ret=igraph_add_edges(&g, &v, 0);
+ if (ret != IGRAPH_EINVVID) {
+ return 2;
+ }
+
+ /* Check result */
+ igraph_get_edgelist(&g, &v, 0);
+ igraph_vector_sort(&v);
+ print_vector(&v, stdout);
+
+ //f=fopen("igraph_layout_reingold_tilford.in", "r");
+ //igraph_read_graph_edgelist(&g, f, 0, 1);
+ igraph_matrix_init(&coords, 0, 0);
+ igraph_layout_reingold_tilford(&g, &coords, IGRAPH_IN, 0, 0);
+
+ n=igraph_vcount(&g);
+ for (i=0; i<n; i++) {
+ printf("%6.3f %6.3f\n", MATRIX(coords, i, 0), MATRIX(coords, i, 1));
+ }
+
+ igraph_vector_destroy(&v);
+ igraph_matrix_destroy(&coords);
+ igraph_destroy(&g);
+ return 0;
+}
diff --git a/spike/igraph_graph.c b/spike/igraph_graph.c
new file mode 100644
index 0000000..bd76d93
--- /dev/null
+++ b/spike/igraph_graph.c
@@ -0,0 +1,87 @@
+/* -*- mode: C -*- */
+/*
+ IGraph library.
+ Copyright (C) 2006-2012 Gabor Csardi <csardi.gabor@gmail.com>
+ 334 Harvard st, Cambridge MA, 02139 USA
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA
+
+*/
+
+#include <igraph/igraph.h>
+#include <math.h>
+
+
+void print_vector(igraph_vector_t *v, FILE *f) {
+ long int i;
+ for (i=0; i<igraph_vector_size(v); i++) {
+ fprintf(f, " %li", (long int) VECTOR(*v)[i]);
+ }
+ fprintf(f, "\n");
+}
+
+int main() {
+
+ igraph_t g;
+ igraph_matrix_t coords;
+ long int i, n;
+ igraph_vector_t v;
+ int ret;
+
+ printf("[-] create graph\n");
+ /*igraph_vector_init(&v, 8);
+ VECTOR(v)[0]=0; VECTOR(v)[1]=1;
+ VECTOR(v)[2]=1; VECTOR(v)[3]=2;
+ VECTOR(v)[4]=2; VECTOR(v)[5]=3;
+ VECTOR(v)[6]=2; VECTOR(v)[7]=3;
+ igraph_create(&g, &v, 0, 0);*/ /* Creates a graph with the specified edges */
+ igraph_empty(&g, 30, 0);
+
+ printf("[-] add edges\n");
+ //igraph_add_vertices(&g, 2, 0);
+ igraph_add_edge(&g, 0, 1);
+
+ //printf("[-] check result\n");
+ //igraph_get_edgelist(&g, &v, 0);
+ //igraph_vector_sort(&v);
+ //print_vector(&v, stdout);
+
+ printf("[-] add edges\n");
+ igraph_add_edge(&g, 0, 3);
+
+ //printf("[-] check result\n");
+ //igraph_get_edgelist(&g, &v, 0);
+ //igraph_vector_sort(&v);
+ //print_vector(&v, stdout);
+
+ printf("[-] apply layout\n");
+ //f=fopen("igraph_layout_reingold_tilford.in", "r");
+ //igraph_read_graph_edgelist(&g, f, 0, 1);
+ igraph_matrix_init(&coords, 0, 0);
+ igraph_layout_reingold_tilford(&g, &coords, IGRAPH_IN, 0, 0);
+
+ printf("[-] show vertices\n");
+ n=igraph_vcount(&g);
+ for (i=0; i<n; i++) {
+ printf("%6.3f %6.3f\n", MATRIX(coords, i, 0), MATRIX(coords, i, 1));
+ }
+
+ printf("[*] destroying graph\n");
+ //igraph_vector_destroy(&v);
+ igraph_matrix_destroy(&coords);
+ igraph_destroy(&g);
+ return 0;
+}