return n;
}
-static Agnode_t *agfindnode_by_name(Agraph_t * g, char *name)
+Agnode_t *agfindnode_by_name(Agraph_t * g, char *name)
{
unsigned long id;
return TRUE;
}
-static int node_in_subg(Agraph_t * g, Agnode_t * n)
+int node_in_subg(Agraph_t * g, Agnode_t * n)
{
Agraph_t *subg;
}
/* edge comparison. AGTYPE(e) == 0 means ID is a wildcard. */
-static int agedgeidcmpf(Dict_t * d, void *arg_e0, void *arg_e1, Dtdisc_t * disc)
+int agedgeidcmpf(Dict_t * d, void *arg_e0, void *arg_e1, Dtdisc_t * disc)
{
Agedge_t *e0, *e1;
}
/* edge comparison. for ordered traversal. */
-static int agedgeseqcmpf(Dict_t * d, void *arg_e0, void *arg_e1, Dtdisc_t * disc)
+int agedgeseqcmpf(Dict_t * d, void *arg_e0, void *arg_e1, Dtdisc_t * disc)
{
Agedge_t *e0, *e1;
return rv;
}
-static int agraphidcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
+int agraphidcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
{
ptrdiff_t v;
Agraph_t *sg0, *sg1;
static Agiodisc_t memIoDisc = {memiofread, 0, 0};
-static Agraph_t *agmemread0(Agraph_t *arg_g, const char *cp)
+Agraph_t *agmemread0(Agraph_t *arg_g, const char *cp)
{
Agraph_t* g;
rdr_t rdr;
return sn ? sn->node : NILnode;
}
-static Agnode_t *agfindnode_by_name(Agraph_t * g, char *name)
+Agnode_t *agfindnode_by_name(Agraph_t * g, char *name)
{
IDTYPE id;
return n;
}
-static int agsubnodeidcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
+int agsubnodeidcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
{
Agsubnode_t *sn0, *sn1;
return 0;
}
-static int agsubnodeseqcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
+int agsubnodeseqcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
{
Agsubnode_t *sn0, *sn1;
NIL(Dtevent_f)
};
-static void agnodesetfinger(Agraph_t * g, Agnode_t * n, void *ignored)
+void agnodesetfinger(Agraph_t * g, Agnode_t * n, void *ignored)
{
static Agsubnode_t template;
template.node = n;
NOTUSED(ignored);
}
-static void agnoderenew(Agraph_t * g, Agnode_t * n, void *ignored)
+void agnoderenew(Agraph_t * g, Agnode_t * n, void *ignored)
{
dtrenew(g->n_seq, dtfinger(g->n_seq));
NOTUSED(n);
return TRUE;
}
-static int node_in_subg(Agraph_t * g, Agnode_t * n)
+int node_in_subg(Agraph_t * g, Agnode_t * n)
{
Agraph_t *subg;
* Each component has its blocks as subgraphs.
* FIX: Check that blocks are disjoint.
*/
-static Agraph_t **circomps(Agraph_t * g, int *cnt)
+Agraph_t **circomps(Agraph_t * g, int *cnt)
{
int c_cnt;
Agraph_t **ccs;
free(t);
}
-static void free_html_img(htmlimg_t * ip)
+void free_html_img(htmlimg_t * ip)
{
free(ip->src);
free(ip);
* A cell spanning columns contributes proportionately to each column
* it is in.
*/
-static void sizeLinearArray(htmltbl_t * tbl)
+void sizeLinearArray(htmltbl_t * tbl)
{
htmlcell_t *cp;
htmlcell_t **cells;
/* nToName:
* Convert int to its decimal string representation.
*/
-static char *nToName(int c)
+char *nToName(int c)
{
static char name[100];
* Ditto for rows.
*
*/
-static void makeGraphs(htmltbl_t * tbl, graph_t * rowg, graph_t * colg)
+void makeGraphs(htmltbl_t * tbl, graph_t * rowg, graph_t * colg)
{
htmlcell_t *cp;
htmlcell_t **cells;
* give the coordinate, so to get the width/height, we have
* to subtract the previous value.
*/
-static void setSizes(htmltbl_t * tbl, graph_t * rowg, graph_t * colg)
+void setSizes(htmltbl_t * tbl, graph_t * rowg, graph_t * colg)
{
int i;
node_t *n;
* a dag on a chain. We then run network simplex, using
* LR_balance.
*/
-static void sizeArray(htmltbl_t * tbl)
+void sizeArray(htmltbl_t * tbl)
{
graph_t *rowg;
graph_t *colg;
size_t _capelems;
} vec;
-static vec* vec_new(void)
+static vec* vec_new()
{
vec* pvec = (vec*)malloc(sizeof(vec));
pvec->_capelems = 10;
* attach and install edges between clusters.
* essentially, class2() for interclust edges.
*/
-static void interclexp(graph_t * subg)
+void interclexp(graph_t * subg)
{
graph_t *g;
node_t *n;
GD_nlist(g) = ND_next(n);
}
-static node_t *named_virtual_node(graph_t * g, char *s)
+node_t *named_virtual_node(graph_t * g, char *s)
{
node_t *n;
GlobalMaxRank = GD_maxrank(g);
}
-static void flat_rev(Agraph_t * g, Agedge_t * e)
+void flat_rev(Agraph_t * g, Agedge_t * e)
{
int j;
Agedge_t *rev;
return sqrt(d);
}
-static real point_line_distance(real *p, real *q, real *r){
+real point_line_distance(real *p, real *q, real *r){
/* distance between point p and line q--r */
enum {dim = 2};
real t = 0, b = 0;
* break string into possibly empty fields and store in array
* return number of fields
*/
-static Extype_t
+Extype_t
exsplit(Expr_t * ex, register Exnode_t * expr, void *env)
{
Extype_t v;
* tokenize string and store in array
* return number of tokens
*/
-static Extype_t
+Extype_t
extokens(Expr_t * ex, register Exnode_t * expr, void *env)
{
Extype_t v;
/* exsub:
* return string after pattern substitution
*/
-static Extype_t
+Extype_t
exsub(Expr_t * ex, register Exnode_t * expr, void *env, int global)
{
char *str;
* push character back onto stream;
* if newline, reduce lineno.
*/
-static void unreadc(Sfio_t * str, int c)
+void unreadc(Sfio_t * str, int c)
{
sfungetc(str, c);
if (c == '\n')
* determine the order(depth) of the hilbert sfc so that we satisfy the
* precondition of hd_hil_s_from_xy()
*/
-static unsigned int xlhorder(XLabels_t * xlp)
+unsigned int xlhorder(XLabels_t * xlp)
{
double maxx = xlp->params->bb.UR.x, maxy = xlp->params->bb.UR.y;
return floorLog2(maxx > maxy ? maxx : maxy) + 1;
#include <ortho.h>
#endif
+extern void printvis(vconfig_t * cp);
extern int in_poly(Ppoly_t argpoly, Ppoint_t q);
}
-static void NodeDest(void* a) {
+void NodeDest(void* a) {
/* free((int*)a);*/
}
-static int NodeComp(const void* a,const void* b) {
+int NodeComp(const void* a,const void* b) {
return comp_scan_points(a,b);
}
-static void NodePrint(const void* a) {
+void NodePrint(const void* a) {
scan_point *aa;
aa = (scan_point *) a;
}
-static void InfoPrint(void* a) {
+void InfoPrint(void* a) {
;
}
-static void InfoDest(void *a){
+void InfoDest(void *a){
;
}
#include <stdlib.h>
-static float calculate_stress(float *pos, term_sgd *terms, int n_terms) {
+float calculate_stress(float *pos, term_sgd *terms, int n_terms) {
float stress = 0;
int ij;
for (ij=0; ij<n_terms; ij++) {
}
// graph_sgd data structure exists only to make dijkstras faster
-static graph_sgd * extract_adjacency(graph_t *G, int model) {
+graph_sgd * extract_adjacency(graph_t *G, int model) {
node_t *np;
edge_t *ep;
int n_nodes = 0, n_edges = 0;
}
return graph;
}
-static void free_adjacency(graph_sgd *graph) {
+void free_adjacency(graph_sgd *graph) {
free(graph->sources);
free(graph->pinneds);
free(graph->targets);
MaxIter, agnameof(G));
}
-static void update_arrays(graph_t * G, int nG, int i)
+void update_arrays(graph_t * G, int nG, int i)
{
int j, k;
double del[MAXDIM], dist, old;
* with both endpoints in g.
* Returns the number of edges added.
*/
-static int node_induce(Agraph_t * g, Agraph_t* eg)
+int node_induce(Agraph_t * g, Agraph_t* eg)
{
Agnode_t *n;
Agedge_t *e;
* Mark cells crossed by line from cell p to cell q.
* Bresenham's algorithm, from Graphics Gems I, pp. 99-100.
*/
-static void fillLine(pointf p, pointf q, PointSet * ps)
+/* static */
+void fillLine(pointf p, pointf q, PointSet * ps)
{
int x1 = ROUND(p.x);
int y1 = ROUND(p.y);
* This implementation only uses the lower left triangle of the
* adjacency matrix, i.e., the values a[i][j] where i >= j.
*/
-static int *shortestPath(int root, int target, int V, array2 wadj)
+int *shortestPath(int root, int target, int V, array2 wadj)
{
int *dad;
COORD *vl;
/* inBetween:
* Return true if c is in (a,b), assuming a,b,c are collinear.
*/
-static int inBetween(Ppoint_t a, Ppoint_t b, Ppoint_t c)
+int inBetween(Ppoint_t a, Ppoint_t b, Ppoint_t c)
{
if (a.x != b.x) /* not vertical */
return (((a.x < c.x) && (c.x < b.x))
/* accordingly. */
/***********************************************************************/
-static void LeftRotate(rb_red_blk_tree* tree, rb_red_blk_node* x) {
+void LeftRotate(rb_red_blk_tree* tree, rb_red_blk_node* x) {
rb_red_blk_node* y;
rb_red_blk_node* nil=tree->nil;
/* accordingly. */
/***********************************************************************/
-static void RightRotate(rb_red_blk_tree* tree, rb_red_blk_node* y) {
+void RightRotate(rb_red_blk_tree* tree, rb_red_blk_node* y) {
rb_red_blk_node* x;
rb_red_blk_node* nil=tree->nil;
/* by the RBTreeInsert function and not by the user */
/***********************************************************************/
-static void TreeInsertHelp(rb_red_blk_tree* tree, rb_red_blk_node* z) {
+void TreeInsertHelp(rb_red_blk_tree* tree, rb_red_blk_node* z) {
/* This function should only be called by InsertRBTree (see above) */
rb_red_blk_node* x;
rb_red_blk_node* y;
/* Note: This function should only be called from RBTreePrint */
/***********************************************************************/
-static void InorderTreePrint(rb_red_blk_tree* tree, rb_red_blk_node* x) {
+void InorderTreePrint(rb_red_blk_tree* tree, rb_red_blk_node* x) {
rb_red_blk_node* nil=tree->nil;
rb_red_blk_node* root=tree->root;
if (x != tree->nil) {
/* Note: This function should only be called by RBTreeDestroy */
/***********************************************************************/
-static void TreeDestHelper(rb_red_blk_tree* tree, rb_red_blk_node* x) {
+void TreeDestHelper(rb_red_blk_tree* tree, rb_red_blk_node* x) {
rb_red_blk_node* nil=tree->nil;
if (x != nil) {
TreeDestHelper(tree,x->left);
/* The algorithm from this function is from _Introduction_To_Algorithms_ */
/***********************************************************************/
-static void RBDeleteFixUp(rb_red_blk_tree* tree, rb_red_blk_node* x) {
+void RBDeleteFixUp(rb_red_blk_tree* tree, rb_red_blk_node* x) {
rb_red_blk_node* root=tree->root->left;
rb_red_blk_node* w;
printf("%i",*(int*)a);
}
-static void InfoPrint(void* a) {
+void InfoPrint(void* a) {
;
}
-static void InfoDest(void *a){
+void InfoDest(void *a){
;
}
}
}
-static SparseMatrix DistanceMatrix_restrict_cluster(int ncluster, int *clusterp, int *cluster, SparseMatrix P, SparseMatrix R, SparseMatrix D){
+SparseMatrix DistanceMatrix_restrict_cluster(int ncluster, int *clusterp, int *cluster, SparseMatrix P, SparseMatrix R, SparseMatrix D){
#if 0
/* this construct a distance matrix of a coarse graph, for a coarsen give by merging all nodes in each cluster */
SparseMatrix cD = NULL;
return NULL;
}
-static SparseMatrix DistanceMatrix_restrict_matching(int *matching, SparseMatrix D){
+SparseMatrix DistanceMatrix_restrict_matching(int *matching, SparseMatrix D){
if (!D) return NULL;
assert(0);/* not yet implemented! */
return NULL;
}
-static SparseMatrix DistanceMatrix_restrict_filtering(int *mask, int is_C, int is_F, SparseMatrix D){
+SparseMatrix DistanceMatrix_restrict_filtering(int *mask, int is_C, int is_F, SparseMatrix D){
/* max independent vtx set based coarsening. Coarsen nodes has mask >= is_C. Fine nodes == is_F. */
if (!D) return NULL;
assert(0);/* not yet implemented! */
#endif
-static SparseMatrix ideal_distance_matrix(SparseMatrix A, int dim, real *x){
+SparseMatrix ideal_distance_matrix(SparseMatrix A, int dim, real *x){
/* find the ideal distance between edges, either 1, or |N[i] \Union N[j]| - |N[i] \Intersection N[j]|
*/
SparseMatrix D;
FREE(o->data);
}
-static real *Operator_uniform_stress_matmul_apply(Operator o, real *x, real *y){
+real *Operator_uniform_stress_matmul_apply(Operator o, real *x, real *y){
struct uniform_stress_matmul_data *d = (struct uniform_stress_matmul_data*) (o->data);
SparseMatrix A = d->A;
real alpha = d->alpha;
}
-static real *Operator_matmul_apply(Operator o, real *x, real *y){
+real *Operator_matmul_apply(Operator o, real *x, real *y){
SparseMatrix A = (SparseMatrix) o->data;
SparseMatrix_multiply_vector(A, x, &y, FALSE);
return y;
}
-static Operator Operator_matmul_new(SparseMatrix A){
+Operator Operator_matmul_new(SparseMatrix A){
Operator o;
o = GNEW(struct Operator_struct);
}
-static void Operator_matmul_delete(Operator o){
+void Operator_matmul_delete(Operator o){
if (o) FREE(o);
}
-static real* Operator_diag_precon_apply(Operator o, real *x, real *y){
+real* Operator_diag_precon_apply(Operator o, real *x, real *y){
int i, m;
real *diag = (real*) o->data;
m = (int) diag[0];
}
-static Operator Operator_diag_precon_new(SparseMatrix A){
+Operator Operator_diag_precon_new(SparseMatrix A){
Operator o;
real *diag;
int i, j, m = A->m, *ia = A->ia, *ja = A->ja;
return o;
}
-static void Operator_diag_precon_delete(Operator o){
+void Operator_diag_precon_delete(Operator o){
if (o->data) FREE(o->data);
if (o) FREE(o);
}
}
-static real* jacobi(SparseMatrix A, int dim, real *x0, real *rhs, int maxit, int *flag){
+real* jacobi(SparseMatrix A, int dim, real *x0, real *rhs, int maxit, int *flag){
/* maxit iteration of jacobi */
real *x, *y, *b, sum, diag, *a;
int k, i, j, n = A->n, *ia, *ja, iter;
#define node_degree(i) (ia[(i)+1] - ia[(i)])
-static void check_real_array_size(real **a, int len, int *lenmax){
+void check_real_array_size(real **a, int len, int *lenmax){
if (len >= *lenmax){
*lenmax = len + MAX((int) 0.2*len, 10);
*a = REALLOC(*a, sizeof(real)*(*lenmax));
}
}
-static void check_int_array_size(int **a, int len, int *lenmax){
+void check_int_array_size(int **a, int len, int *lenmax){
if (len >= *lenmax){
*lenmax = len + MAX((int) 0.2*len, 10);
*a = REALLOC(*a, sizeof(int)*(*lenmax));
}
-static real get_angle(real *x, int dim, int i, int j){
+real get_angle(real *x, int dim, int i, int j){
/* between [0, 2Pi)*/
int k;
real y[2], res;
return res;
}
-static int comp_real(const void *x, const void *y){
+int comp_real(const void *x, const void *y){
real *xx = (real*) x;
real *yy = (real*) y;
}
-static void spring_electrical_embedding_slow(int dim, SparseMatrix A0, spring_electrical_control ctrl, real *node_weights, real *x, int *flag){
+void spring_electrical_embedding_slow(int dim, SparseMatrix A0, spring_electrical_control ctrl, real *node_weights, real *x, int *flag){
/* a version that does vertex moves in one go, instead of one at a time, use for debugging the fast version. Quadtree is not used. */
/* x is a point to a 1D array, x[i*dim+j] gives the coordinate of the i-th node at dimension j. */
SparseMatrix A = A0;
return dmean/((real) id[n]);
}
-static void spring_maxent_embedding(int dim, SparseMatrix A0, SparseMatrix D, spring_electrical_control ctrl, real *node_weights, real *x, real rho, int *flag){
+void spring_maxent_embedding(int dim, SparseMatrix A0, SparseMatrix D, spring_electrical_control ctrl, real *node_weights, real *x, real rho, int *flag){
/* x is a point to a 1D array, x[i*dim+j] gives the coordinate of the i-th node at dimension j.
Minimize \Sum_{(i,j)\in E} w_ij (||x_i-x_j||-d_ij)^2 - \rho \Sum_{(i,j)\NotIn E} Log ||x_i-x_j||
#include "post_process.h"
#include "stress_model.h"
-static void stress_model_core(int dim, SparseMatrix B, real **x, int edge_len_weighted, int maxit_sm, real tol, int *flag){
+void stress_model_core(int dim, SparseMatrix B, real **x, int edge_len_weighted, int maxit_sm, real tol, int *flag){
int m;
SparseStressMajorizationSmoother sm;
real lambda = 0;
}
-static real UniformStressSmoother_smooth(UniformStressSmoother sm, int dim, real *x, int maxit_sm) {
+real UniformStressSmoother_smooth(UniformStressSmoother sm, int dim, real *x, int maxit_sm) {
return StressMajorizationSmoother_smooth(sm, dim, x, maxit_sm, 0.001);
}
-static SparseMatrix get_distance_matrix(SparseMatrix A, real scaling){
+SparseMatrix get_distance_matrix(SparseMatrix A, real scaling){
/* get a distance matrix from a graph, at the moment we just symmetrize the matrix. At the moment if the matrix is not real,
we just assume distance of 1 among edges. Then we apply scaling to the entire matrix */
SparseMatrix B;
return s;
}
-static char *cat_string3(char *s1, char *s2, char *s3, int id){
+char *cat_string3(char *s1, char *s2, char *s3, int id){
char *s;
char sid[1000];
sprintf(sid,"%d",id);
return nd;
}
-static void node_data_delete(void *d){
+void node_data_delete(void *d){
node_data nd = (node_data) d;
FREE(nd->coord);
/*delete outside if (nd->data) FREE(nd->data);*/
FREE(nd);
}
-static real node_data_get_weight(void *d){
+real node_data_get_weight(void *d){
node_data nd = (node_data) d;
return nd->node_weight;
}
-static real* node_data_get_coord(void *d){
+real* node_data_get_coord(void *d){
node_data nd = (node_data) d;
return nd->coord;
}
-static int node_data_get_id(void *d){
+int node_data_get_id(void *d){
node_data nd = (node_data) d;
return nd->id;
}
#define node_data_get_data(d) (((node_data) (d))->data)
-static void check_or_realloc_arrays(int dim, int *nsuper, int *nsupermax, real **center, real **supernode_wgts, real **distances){
+void check_or_realloc_arrays(int dim, int *nsuper, int *nsupermax, real **center, real **supernode_wgts, real **distances){
if (*nsuper >= *nsupermax) {
*nsupermax = *nsuper + MAX(10, (int) 0.2*(*nsuper));
}
}
-static void QuadTree_get_supernodes_internal(QuadTree qt, real bh, real *point, int nodeid, int *nsuper, int *nsupermax, real **center, real **supernode_wgts, real **distances, real *counts, int *flag){
+void QuadTree_get_supernodes_internal(QuadTree qt, real bh, real *point, int nodeid, int *nsuper, int *nsupermax, real **center, real **supernode_wgts, real **distances, real *counts, int *flag){
SingleLinkedList l;
real *coord, dist;
int dim, i;
if (A->a) FREE(A->a);
FREE(A);
}
-static void SparseMatrix_print_csr(char *c, SparseMatrix A){
+void SparseMatrix_print_csr(char *c, SparseMatrix A){
int *ia, *ja;
real *a;
int *ai;
-static void SparseMatrix_print_coord(char *c, SparseMatrix A){
+void SparseMatrix_print_coord(char *c, SparseMatrix A){
int *ia, *ja;
real *a;
int *ai;
return FALSE;
}
-static void SparseMatrix_level_sets_internal(int khops, SparseMatrix A, int root, int *nlevel, int **levelset_ptr, int **levelset, int **mask, int reinitialize_mask){
+void SparseMatrix_level_sets_internal(int khops, SparseMatrix A, int root, int *nlevel, int **levelset_ptr, int **levelset, int **mask, int reinitialize_mask){
/* mask is assumed to be initialized to negative if provided.
. On exit, mask = levels for visited nodes (1 for root, 2 for its neighbors, etc),
. unless reinitialize_mask = TRUE, in which case mask = -1.
}
}
-static real Hue2RGB(real v1, real v2, real H) {
+real Hue2RGB(real v1, real v2, real H) {
if(H < 0.0) H += 1.0;
if(H > 1.0) H -= 1.0;
if((6.0*H) < 1.0) return (v1 + (v2 - v1) * 6.0 * H);
}
-static int comp_ascend(const void *s1, const void *s2){
+int comp_ascend(const void *s1, const void *s2){
real *ss1, *ss2;
ss1 = (real*) s1;
ss2 = (real*) s2;
return 0;
}
-static int comp_descend(const void *s1, const void *s2){
+int comp_descend(const void *s1, const void *s2){
real *ss1, *ss2;
ss1 = (real*) s1;
ss2 = (real*) s2;
}
return 0;
}
-static int comp_descend_int(const void *s1, const void *s2){
+int comp_descend_int(const void *s1, const void *s2){
int *ss1, *ss2;
ss1 = (int*) s1;
ss2 = (int*) s2;
return 0;
}
-static int comp_ascend_int(const void *s1, const void *s2){
+int comp_ascend_int(const void *s1, const void *s2){
int *ss1, *ss2;
ss1 = (int*) s1;
ss2 = (int*) s2;
}
}
-static Multilevel_MQ_Clustering Multilevel_MQ_Clustering_init(SparseMatrix A, int level){
+Multilevel_MQ_Clustering Multilevel_MQ_Clustering_init(SparseMatrix A, int level){
Multilevel_MQ_Clustering grid;
int n = A->n, i;
int *matching;
return grid;
}
-static void Multilevel_MQ_Clustering_delete(Multilevel_MQ_Clustering grid){
+void Multilevel_MQ_Clustering_delete(Multilevel_MQ_Clustering grid){
if (!grid) return;
if (grid->A){
if (grid->level == 0) {
FREE(grid);
}
-static Multilevel_MQ_Clustering Multilevel_MQ_Clustering_establish(Multilevel_MQ_Clustering grid, int maxcluster){
+Multilevel_MQ_Clustering Multilevel_MQ_Clustering_establish(Multilevel_MQ_Clustering grid, int maxcluster){
int *matching = grid->matching;
SparseMatrix A = grid->A;
int n = grid->n, level = grid->level, nc = 0, nclusters = n;
return grid;
}
-static Multilevel_MQ_Clustering Multilevel_MQ_Clustering_new(SparseMatrix A0, int maxcluster){
+Multilevel_MQ_Clustering Multilevel_MQ_Clustering_new(SparseMatrix A0, int maxcluster){
/* maxcluster is used to specify the maximum number of cluster desired, e.g., maxcluster=10 means that a maximum of 10 clusters
is desired. this may not always be realized, and mq may be low when this is specified. Default: maxcluster = 0 */
Multilevel_MQ_Clustering grid;
return v;
}
-static Vector Vector_assign(Vector v, void *stuff, int i){
+Vector Vector_assign(Vector v, void *stuff, int i){
memcpy(((char*) v->v)+(v->size_of_elem)*i/sizeof(char), stuff, v->size_of_elem);
return v;
}
/*---------------- integer vector --------------- */
-static void intdealloactor(void *v){
+void intdealloactor(void *v){
}
Vector IntegerVector_new(int len){
/*---------------- string vector --------------- */
-static void nulldealloactor(void *v){
+void nulldealloactor(void *v){
return;
}
-static void strdealloactor(void *v){
+void strdealloactor(void *v){
char **s;
s = (char**) v;
free(*s);
us->name, (b.UR.x + b.LL.x) / 2, (b.UR.y + b.LL.y) / 2);
}
-static void core_loadimage_null(GVJ_t *gvc, usershape_t *us, boxf b, boolean filled)
+void core_loadimage_null(GVJ_t *gvc, usershape_t *us, boxf b, boolean filled)
{
/* null function - basically suppress the missing loader message */
}