41 #define DPRINTF(...) do { if (DEBUG) printf(__VA_ARGS__); } while (0)
60 drill_list = gerbv_drill_stats_new_drill_list();
62 GERB_FATAL_ERROR(
"malloc drill_list failed in %s()", __FUNCTION__);
66 error_list = gerbv_drill_stats_new_error_list();
68 GERB_FATAL_ERROR(
"malloc error_list failed in %s()", __FUNCTION__);
81 tempError = nextError->next;
82 g_free (nextError->error_text);
84 nextError = tempError;
92 while (nextAperture) {
93 tempAperture = nextAperture->next;
94 g_free(nextAperture->drill_unit);
95 g_free (nextAperture);
96 nextAperture = tempAperture;
104 gerbv_drill_destroy_error_list (stats->error_list);
105 gerbv_drill_destroy_drill_list (stats->drill_list);
119 DPRINTF(
"---> Entering gerbv_drill_stats_add_layer ..... \n");
121 accum_stats->layer_count++;
123 accum_stats->comment += input_stats->comment;
126 accum_stats->G00 += input_stats->G00;
127 accum_stats->G01 += input_stats->G01;
128 accum_stats->G02 += input_stats->G02;
129 accum_stats->G03 += input_stats->G03;
130 accum_stats->G04 += input_stats->G04;
131 accum_stats->G05 += input_stats->G05;
132 accum_stats->G85 += input_stats->G85;
133 accum_stats->G87 += input_stats->G87;
134 accum_stats->G90 += input_stats->G90;
135 accum_stats->G91 += input_stats->G91;
136 accum_stats->G93 += input_stats->G93;
137 accum_stats->G_machine_only += input_stats->G_machine_only;
138 accum_stats->G_unknown += input_stats->G_unknown;
140 accum_stats->M00 += input_stats->M00;
141 accum_stats->M01 += input_stats->M01;
142 accum_stats->M02 += input_stats->M02;
143 accum_stats->M18 += input_stats->M18;
144 accum_stats->M25 += input_stats->M25;
145 accum_stats->M30 += input_stats->M30;
146 accum_stats->M31 += input_stats->M31;
147 accum_stats->M45 += input_stats->M45;
148 accum_stats->M47 += input_stats->M47;
149 accum_stats->M48 += input_stats->M48;
150 accum_stats->M70 += input_stats->M70;
151 accum_stats->M71 += input_stats->M71;
152 accum_stats->M72 += input_stats->M72;
153 accum_stats->M80 += input_stats->M80;
154 accum_stats->M90 += input_stats->M90;
155 accum_stats->M95 += input_stats->M95;
156 accum_stats->M97 += input_stats->M97;
157 accum_stats->M98 += input_stats->M98;
158 accum_stats->M_machine_only += input_stats->M_machine_only;
159 accum_stats->M_unknown += input_stats->M_unknown;
161 accum_stats->R += input_stats->R;
164 for (drill = input_stats->drill_list;
166 drill = drill->next) {
167 DPRINTF(
" In gerbv_drill_stats_add_layer, adding drill_num = %d to list\n",
171 drill_stats_add_to_drill_list(accum_stats->drill_list,
177 DPRINTF(
" adding count %d of drills for drill %d\n",
178 drill->drill_count, drill->drill_num);
179 drill_stats_add_to_drill_counter(accum_stats->drill_list,
182 accum_stats->total_count += drill->drill_count;
186 for (error = input_stats->error_list; error != NULL; error = error->next) {
187 if (error->error_text != NULL)
188 gerbv_stats_printf(accum_stats->error_list, error->type,
189 this_layer,
"%s", error->error_text);
195 if (input_stats->detect) {
196 tmps2 = g_strdup_printf (_(
"Broken tool detect %s (layer %d)"), input_stats->detect, this_layer);
198 if (accum_stats->detect) {
200 tmps = g_strdup_printf (
"%s\n%s", accum_stats->detect, tmps2);
201 g_free (accum_stats->detect);
202 accum_stats->detect = NULL;
206 tmps = g_strdup_printf (
"%s", tmps2);
213 accum_stats->detect = tmps;
216 for (error = input_stats->error_list;
218 error = error->next) {
219 if (error->error_text != NULL) {
220 gerbv_stats_printf(accum_stats->error_list, error->type,
221 this_layer,
"%s", error->error_text);
226 DPRINTF(
"<--- .... Leaving gerbv_drill_stats_add_layer.\n");
237 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
238 if (drill_num_in == drill->drill_num) {
248 gerbv_drill_stats_new_drill_list() {
268 int drill_num_in,
double drill_size_in,
269 char *drill_unit_in) {
275 DPRINTF(
"%s(%p, %d, %g, \"%s\")\n", __FUNCTION__, drill_list_in, drill_num_in,
276 drill_size_in, drill_unit_in);
278 DPRINTF(
" ---> Entering drill_stats_add_to_drill_list, first drill_num in list = %d ...\n",
279 drill_list_in->drill_num);
282 if (drill_list_in->drill_num == -1) {
283 DPRINTF(
" .... In drill_stats_add_to_drill_list, adding first drill, no %d\n",
285 drill_list_in->drill_num = drill_num_in;
286 drill_list_in->drill_size = drill_size_in;
287 drill_list_in->drill_count = 0;
288 drill_list_in->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
289 drill_list_in->next = NULL;
293 for(drill = drill_list_in;
296 DPRINTF(
"checking this drill_num %d against that in list %d.\n",
297 drill_num_in, drill->drill_num);
298 if (drill_num_in == drill->drill_num) {
299 DPRINTF(
" .... In drill_stats_add_to_drill_list, drill no %d already in list\n",
308 GERB_FATAL_ERROR(
"malloc format failed in %s()", __FUNCTION__);
312 DPRINTF(
" .... In drill_stats_add_to_drill_list, adding new drill, no %d\n",
314 drill_list_new->drill_num = drill_num_in;
315 drill_list_new->drill_size = drill_size_in;
316 drill_list_new->drill_count = 0;
317 drill_list_new->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
318 drill_list_new->next = NULL;
319 drill_last->next = drill_list_new;
321 DPRINTF(
" <---- ... leaving drill_stats_add_to_drill_list.\n");
328 int drill_num_in,
double drill_size_in,
329 char *drill_unit_in) {
333 DPRINTF(
" ---> Entering drill_stats_modify_drill_list, first drill_num in list = %d ...\n",
334 drill_list_in->drill_num);
337 for(drill = drill_list_in;
340 DPRINTF(
"checking this drill_num %d against that in list %d.\n",
341 drill_num_in, drill->drill_num);
342 if (drill_num_in == drill->drill_num) {
343 DPRINTF(
" .... Found it, now update it ....\n");
344 drill->drill_size = drill_size_in;
345 if (drill->drill_unit)
346 g_free(drill->drill_unit);
347 drill->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
348 DPRINTF(
" <---- ... Modified drill. leaving drill_stats_modify_drill_list.\n");
352 DPRINTF(
" <---- ... Did not find drill. leaving drill_stats_modify_drill_list.\n");
361 DPRINTF(
" ----> Entering drill_stats_increment_drill_counter......\n");
364 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
365 if (drill_num_in == drill->drill_num) {
366 drill->drill_count++;
367 DPRINTF(
" .... incrementing drill count. drill_num = %d, drill_count = %d.\n",
368 drill_list_in->drill_num, drill->drill_count);
369 DPRINTF(
" <---- .... Leaving drill_stats_increment_drill_counter after incrementing counter.\n");
373 DPRINTF(
" <---- .... Leaving drill_stats_increment_drill_counter without incrementing any counter.\n");
384 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
385 if (drill_num_in == drill->drill_num) {
386 DPRINTF(
" In drill_stats_add_to_drill_counter, adding increment = %d drills to drill list\n", increment);
387 drill->drill_count += increment;
396 gerbv_drill_stats_new_error_list() {
415 int layer,
const char *error_text,
418 gerbv_stats_add_error(error_list_in, layer, error_text, type);
void gerbv_drill_stats_destroy(gerbv_drill_stats_t *stats)
void gerbv_drill_stats_add_layer(gerbv_drill_stats_t *accum_stats, gerbv_drill_stats_t *input_stats, int this_layer)
void drill_stats_add_error(gerbv_error_list_t *error_list_in, int layer, const char *error_text, gerbv_message_type_t type)
Add statistic message for drill layer.
gerbv_drill_stats_t * gerbv_drill_stats_new(void)
Allocates a new drill_stats structure.
Header info to the statistics generating functions for Excellon drill files.
Header info for the statistics generating functions for RS274X files.
The main header file for the libgerbv library.