Index: drc.h =================================================================== --- drc.h (revision 21137) +++ drc.h (revision 21138) @@ -29,8 +29,10 @@ #ifndef PCB_DRC_H #define PCB_DRC_H +#include #include "unit.h" +typedef struct drc_violation_s pcb_drc_violation_t; struct drc_violation_s { char *title; char *explanation; @@ -42,8 +44,25 @@ int object_count; long int *object_id_list; int *object_type_list; + + gdl_elem_t link; /* always part of a list */ }; -typedef struct drc_violation_s pcb_drc_violation_t; +void pcb_drc_list_free_fields(pcb_drc_violation_t *drc); +void pcb_drc_list_free(pcb_drc_violation_t *drc); +/* List of drc violations */ +#define TDL(x) pcb_drc_list_ ## x +#define TDL_LIST_T pcb_drc_list_t +#define TDL_ITEM_T pcb_drc_violation_t +#define TDL_FIELD link +#define TDL_SIZE_T size_t +#define TDL_FUNC + +#define pcb_drc_list_foreach(list, iterator, loop_elem) \ + gdl_foreach_((&((list)->lst)), (iterator), (loop_elem)) + +#include +#include + #endif