File: edge.h

package info (click to toggle)
pcb-rnd 3.1.7b-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,108 kB
  • sloc: ansic: 213,400; yacc: 6,241; sh: 4,698; awk: 3,016; makefile: 2,254; lex: 1,166; python: 519; xml: 261; lisp: 154; tcl: 67; perl: 34; javascript: 6; ruby: 5
file content (72 lines) | stat: -rw-r--r-- 1,479 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef EDGE_H
#define EDGE_H

#include <stdlib.h>
#include <string.h>

#include "typedefs.h"

struct edge_s {
	point_t *endp[2];
	triangle_t *adj_t[2];

	int is_constrained;
	void *data;
};

typedef edge_t* edge_ptr_t;


/* List */
#define LST(x) edgelist_ ## x
#define LST_ITEM_T edge_ptr_t
#define LST_DONT_TYPEDEF_NODE

#include <libcdtr/list/list.h>

#ifndef LST_DONT_UNDEF
	#undef LST
	#undef LST_ITEM_T
	#undef LST_DONT_TYPEDEF_NODE
#endif

#define EDGELIST_FOREACH(_loop_item_, _list_) do { \
	edgelist_node_t *_node_ = _list_; \
	while (_node_ != NULL) { \
		edge_t *_loop_item_ = _node_->item;

#define EDGELIST_FOREACH_END() \
		_node_ = _node_->next; \
	} \
} while(0)


/* Vector */
#define GVT(x) vtedge_ ## x
#define GVT_ELEM_TYPE edge_ptr_t
#define GVT_SIZE_TYPE size_t
#define GVT_DOUBLING_THRS 4096
#define GVT_START_SIZE 32
#define GVT_FUNC
#define GVT_SET_NEW_BYTES_TO 0
#define GVT_ELEM_CONSTRUCTOR
#define GVT_ELEM_DESTRUCTOR
#define GVT_ELEM_COPY

#include <genvector/genvector_impl.h>
#define GVT_REALLOC(vect, ptr, size)  realloc(ptr, size)
#define GVT_FREE(vect, ptr)           free(ptr)
int GVT(constructor)(GVT(t) *vect, GVT_ELEM_TYPE *elem);
void GVT(destructor)(GVT(t) *vect, GVT_ELEM_TYPE *elem);
#include <genvector/genvector_undef.h>

#define VTEDGE_FOREACH(_loop_item_, _vt_) do { \
	int _i_; \
	for (_i_ = 0; _i_ < vtedge_len(_vt_); _i_++) { \
		edge_t *_loop_item_ = (_vt_)->array[_i_];

#define VTEDGE_FOREACH_END() \
	} \
} while(0)

#endif