00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _GNN_NODE_VECTOR_H_
00026 #define _GNN_NODE_VECTOR_H_
00027
00028
00029
00030
00031
00032 typedef struct _gnn_node_vector gnn_node_vector;
00033
00034 struct _gnn_node_vector
00035 {
00036 size_t size;
00037 size_t stride;
00038 size_t blocksize;
00039 gnn_node **data;
00040 int owner;
00041 };
00042
00043 typedef struct _gnn_node_vector_view gnn_node_vector_view;
00044
00045 struct _gnn_node_vector_view
00046 {
00047 gnn_node_vector vector;
00048 };
00049
00050
00051
00052
00053
00054
00055
00056 gnn_node_vector *
00057 gnn_node_vector_new (size_t size);
00058
00059 void
00060 gnn_node_vector_free (gnn_node_vector *v);
00061
00062 void
00063 gnn_node_vector_destroy_all (gnn_node_vector *v);
00064
00065 gnn_node *
00066 gnn_node_vector_get (gnn_node_vector *v, size_t i);
00067
00068 int
00069 gnn_node_vector_set (gnn_node_vector *v, size_t i, gnn_node *n);
00070
00071 int
00072 gnn_node_vector_isnull (gnn_node_vector *v);
00073
00074 size_t
00075 gnn_node_vector_count_nodes (gnn_node_vector *v);
00076
00077 int
00078 gnn_node_vector_swap (gnn_node_vector *v, gnn_node_vector *w);
00079
00080 int
00081 gnn_node_vector_swap_elements (gnn_node_vector *v, size_t i, size_t j);
00082
00083 int
00084 gnn_node_vector_reverse (gnn_node_vector *v);
00085
00086 gnn_node_vector *
00087 gnn_node_vector_dup (gnn_node_vector *v);
00088
00089 int
00090 gnn_node_vector_copy (gnn_node_vector *v, const gnn_node_vector *w);
00091
00092
00093
00094
00095
00096 gnn_node_vector_view
00097 gnn_node_vector_subvector (gnn_node_vector *v, size_t i, size_t n);
00098
00099 gnn_node_vector_view
00100 gnn_node_vector_subvector_with_stride (gnn_node_vector *v,
00101 size_t i,
00102 size_t stride,
00103 size_t n);
00104
00105
00106 #endif
00107