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->G90 += input_stats->G90;
134 accum_stats->G91 += input_stats->G91;
135 accum_stats->G93 += input_stats->G93;
136 accum_stats->G_unknown += input_stats->G_unknown;
138 accum_stats->M00 += input_stats->M00;
139 accum_stats->M01 += input_stats->M01;
140 accum_stats->M18 += input_stats->M18;
141 accum_stats->M25 += input_stats->M25;
142 accum_stats->M30 += input_stats->M30;
143 accum_stats->M31 += input_stats->M31;
144 accum_stats->M45 += input_stats->M45;
145 accum_stats->M47 += input_stats->M47;
146 accum_stats->M48 += input_stats->M48;
147 accum_stats->M71 += input_stats->M71;
148 accum_stats->M72 += input_stats->M72;
149 accum_stats->M95 += input_stats->M95;
150 accum_stats->M97 += input_stats->M97;
151 accum_stats->M98 += input_stats->M98;
152 accum_stats->M_unknown += input_stats->M_unknown;
154 accum_stats->R += input_stats->R;
157 for (drill = input_stats->drill_list;
159 drill = drill->next) {
160 DPRINTF(
" In gerbv_drill_stats_add_layer, adding drill_num = %d to list\n",
164 drill_stats_add_to_drill_list(accum_stats->drill_list,
170 DPRINTF(
" adding count %d of drills for drill %d\n",
171 drill->drill_count, drill->drill_num);
172 drill_stats_add_to_drill_counter(accum_stats->drill_list,
175 accum_stats->total_count += drill->drill_count;
179 for (error = input_stats->error_list; error != NULL; error = error->next) {
180 if (error->error_text != NULL)
181 gerbv_stats_printf(accum_stats->error_list, error->type,
182 this_layer,
"%s", error->error_text);
188 if (input_stats->detect) {
189 tmps2 = g_strdup_printf (_(
"Broken tool detect %s (layer %d)"), input_stats->detect, this_layer);
191 if (accum_stats->detect) {
193 tmps = g_strdup_printf (
"%s\n%s", accum_stats->detect, tmps2);
194 g_free (accum_stats->detect);
195 accum_stats->detect = NULL;
199 tmps = g_strdup_printf (
"%s", tmps2);
206 accum_stats->detect = tmps;
209 for (error = input_stats->error_list;
211 error = error->next) {
212 if (error->error_text != NULL) {
213 gerbv_stats_printf(accum_stats->error_list, error->type,
214 this_layer,
"%s", error->error_text);
219 DPRINTF(
"<--- .... Leaving gerbv_drill_stats_add_layer.\n");
230 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
231 if (drill_num_in == drill->drill_num) {
241 gerbv_drill_stats_new_drill_list() {
261 int drill_num_in,
double drill_size_in,
262 char *drill_unit_in) {
268 DPRINTF(
"%s(%p, %d, %g, \"%s\")\n", __FUNCTION__, drill_list_in, drill_num_in,
269 drill_size_in, drill_unit_in);
271 DPRINTF(
" ---> Entering drill_stats_add_to_drill_list, first drill_num in list = %d ...\n",
272 drill_list_in->drill_num);
275 if (drill_list_in->drill_num == -1) {
276 DPRINTF(
" .... In drill_stats_add_to_drill_list, adding first drill, no %d\n",
278 drill_list_in->drill_num = drill_num_in;
279 drill_list_in->drill_size = drill_size_in;
280 drill_list_in->drill_count = 0;
281 drill_list_in->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
282 drill_list_in->next = NULL;
286 for(drill = drill_list_in;
289 DPRINTF(
"checking this drill_num %d against that in list %d.\n",
290 drill_num_in, drill->drill_num);
291 if (drill_num_in == drill->drill_num) {
292 DPRINTF(
" .... In drill_stats_add_to_drill_list, drill no %d already in list\n",
301 GERB_FATAL_ERROR(
"malloc format failed in %s()", __FUNCTION__);
305 DPRINTF(
" .... In drill_stats_add_to_drill_list, adding new drill, no %d\n",
307 drill_list_new->drill_num = drill_num_in;
308 drill_list_new->drill_size = drill_size_in;
309 drill_list_new->drill_count = 0;
310 drill_list_new->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
311 drill_list_new->next = NULL;
312 drill_last->next = drill_list_new;
314 DPRINTF(
" <---- ... leaving drill_stats_add_to_drill_list.\n");
321 int drill_num_in,
double drill_size_in,
322 char *drill_unit_in) {
326 DPRINTF(
" ---> Entering drill_stats_modify_drill_list, first drill_num in list = %d ...\n",
327 drill_list_in->drill_num);
330 for(drill = drill_list_in;
333 DPRINTF(
"checking this drill_num %d against that in list %d.\n",
334 drill_num_in, drill->drill_num);
335 if (drill_num_in == drill->drill_num) {
336 DPRINTF(
" .... Found it, now update it ....\n");
337 drill->drill_size = drill_size_in;
338 if (drill->drill_unit)
339 g_free(drill->drill_unit);
340 drill->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
341 DPRINTF(
" <---- ... Modified drill. leaving drill_stats_modify_drill_list.\n");
345 DPRINTF(
" <---- ... Did not find drill. leaving drill_stats_modify_drill_list.\n");
354 DPRINTF(
" ----> Entering drill_stats_increment_drill_counter......\n");
357 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
358 if (drill_num_in == drill->drill_num) {
359 drill->drill_count++;
360 DPRINTF(
" .... incrementing drill count. drill_num = %d, drill_count = %d.\n",
361 drill_list_in->drill_num, drill->drill_count);
362 DPRINTF(
" <---- .... Leaving drill_stats_increment_drill_counter after incrementing counter.\n");
366 DPRINTF(
" <---- .... Leaving drill_stats_increment_drill_counter without incrementing any counter.\n");
377 for(drill = drill_list_in; drill != NULL; drill = drill->next) {
378 if (drill_num_in == drill->drill_num) {
379 DPRINTF(
" In drill_stats_add_to_drill_counter, adding increment = %d drills to drill list\n", increment);
380 drill->drill_count += increment;
389 gerbv_drill_stats_new_error_list() {
408 int layer,
const char *error_text,
411 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.