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->G32 += input_stats->G32;
133 accum_stats->G33 += input_stats->G33;
134 accum_stats->G85 += input_stats->G85;
135 accum_stats->G87 += input_stats->G87;
136 accum_stats->G90 += input_stats->G90;
137 accum_stats->G91 += input_stats->G91;
138 accum_stats->G93 += input_stats->G93;
139 accum_stats->G_machine_only += input_stats->G_machine_only;
140 accum_stats->G_unknown += input_stats->G_unknown;
142 accum_stats->M00 += input_stats->M00;
143 accum_stats->M01 += input_stats->M01;
144 accum_stats->M02 += input_stats->M02;
145 accum_stats->M18 += input_stats->M18;
146 accum_stats->M25 += input_stats->M25;
147 accum_stats->M30 += input_stats->M30;
148 accum_stats->M31 += input_stats->M31;
149 accum_stats->M45 += input_stats->M45;
150 accum_stats->M47 += input_stats->M47;
151 accum_stats->M48 += input_stats->M48;
152 accum_stats->M70 += input_stats->M70;
153 accum_stats->M71 += input_stats->M71;
154 accum_stats->M72 += input_stats->M72;
155 accum_stats->M80 += input_stats->M80;
156 accum_stats->M90 += input_stats->M90;
157 accum_stats->M95 += input_stats->M95;
158 accum_stats->M97 += input_stats->M97;
159 accum_stats->M98 += input_stats->M98;
160 accum_stats->M_machine_only += input_stats->M_machine_only;
161 accum_stats->M_unknown += input_stats->M_unknown;
163 accum_stats->R += input_stats->R;
166 for (drill = input_stats->drill_list;
168 drill = drill->next) {
169 DPRINTF(
" In gerbv_drill_stats_add_layer, adding drill_num = %d to list\n",
173 drill_stats_add_to_drill_list(accum_stats->drill_list,
179 DPRINTF(
" adding count %d of drills for drill %d\n",
180 drill->drill_count, drill->drill_num);
181 drill_stats_add_to_drill_counter(accum_stats->drill_list,
184 accum_stats->total_count += drill->drill_count;
188 for (error = input_stats->error_list; error != NULL; error = error->next) {
189 if (error->error_text != NULL)
190 gerbv_stats_printf(accum_stats->error_list, error->type,
191 this_layer,
"%s", error->error_text);
197 if (input_stats->detect) {
198 tmps2 = g_strdup_printf (_(
"Broken tool detect %s (layer %d)"), input_stats->detect, this_layer);
200 if (accum_stats->detect) {
202 tmps = g_strdup_printf (
"%s\n%s", accum_stats->detect, tmps2);
203 g_free (accum_stats->detect);
204 accum_stats->detect = NULL;
208 tmps = g_strdup_printf (
"%s", tmps2);
215 accum_stats->detect = tmps;
218 for (error = input_stats->error_list;
220 error = error->next) {
221 if (error->error_text != NULL) {
222 gerbv_stats_printf(accum_stats->error_list, error->type,
223 this_layer,
"%s", error->error_text);
228 DPRINTF(
"<--- .... Leaving gerbv_drill_stats_add_layer.\n");
239 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
240 if (drill_num_in == drill->drill_num) {
250 gerbv_drill_stats_new_drill_list() {
270 int drill_num_in,
double drill_size_in,
271 char *drill_unit_in) {
277 DPRINTF(
"%s(%p, %d, %g, \"%s\")\n", __FUNCTION__, drill_list_in, drill_num_in,
278 drill_size_in, drill_unit_in);
280 DPRINTF(
" ---> Entering drill_stats_add_to_drill_list, first drill_num in list = %d ...\n",
281 drill_list_in->drill_num);
284 if (drill_list_in->drill_num == -1) {
285 DPRINTF(
" .... In drill_stats_add_to_drill_list, adding first drill, no %d\n",
287 drill_list_in->drill_num = drill_num_in;
288 drill_list_in->drill_size = drill_size_in;
289 drill_list_in->drill_count = 0;
290 drill_list_in->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
291 drill_list_in->next = NULL;
295 for(drill = drill_list_in;
298 DPRINTF(
"checking this drill_num %d against that in list %d.\n",
299 drill_num_in, drill->drill_num);
300 if (drill_num_in == drill->drill_num) {
301 DPRINTF(
" .... In drill_stats_add_to_drill_list, drill no %d already in list\n",
310 GERB_FATAL_ERROR(
"malloc format failed in %s()", __FUNCTION__);
314 DPRINTF(
" .... In drill_stats_add_to_drill_list, adding new drill, no %d\n",
316 drill_list_new->drill_num = drill_num_in;
317 drill_list_new->drill_size = drill_size_in;
318 drill_list_new->drill_count = 0;
319 drill_list_new->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
320 drill_list_new->next = NULL;
321 drill_last->next = drill_list_new;
323 DPRINTF(
" <---- ... leaving drill_stats_add_to_drill_list.\n");
330 int drill_num_in,
double drill_size_in,
331 char *drill_unit_in) {
335 DPRINTF(
" ---> Entering drill_stats_modify_drill_list, first drill_num in list = %d ...\n",
336 drill_list_in->drill_num);
339 for(drill = drill_list_in;
342 DPRINTF(
"checking this drill_num %d against that in list %d.\n",
343 drill_num_in, drill->drill_num);
344 if (drill_num_in == drill->drill_num) {
345 DPRINTF(
" .... Found it, now update it ....\n");
346 drill->drill_size = drill_size_in;
347 if (drill->drill_unit)
348 g_free(drill->drill_unit);
349 drill->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
350 DPRINTF(
" <---- ... Modified drill. leaving drill_stats_modify_drill_list.\n");
354 DPRINTF(
" <---- ... Did not find drill. leaving drill_stats_modify_drill_list.\n");
363 DPRINTF(
" ----> Entering drill_stats_increment_drill_counter......\n");
366 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
367 if (drill_num_in == drill->drill_num) {
368 drill->drill_count++;
369 DPRINTF(
" .... incrementing drill count. drill_num = %d, drill_count = %d.\n",
370 drill_list_in->drill_num, drill->drill_count);
371 DPRINTF(
" <---- .... Leaving drill_stats_increment_drill_counter after incrementing counter.\n");
375 DPRINTF(
" <---- .... Leaving drill_stats_increment_drill_counter without incrementing any counter.\n");
386 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
387 if (drill_num_in == drill->drill_num) {
388 DPRINTF(
" In drill_stats_add_to_drill_counter, adding increment = %d drills to drill list\n", increment);
389 drill->drill_count += increment;
398 gerbv_drill_stats_new_error_list() {
417 int layer,
const char *error_text,
420 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.