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);
96 nextAperture = tempAperture;
104 gerbv_drill_destroy_error_list(stats->error_list);
105 gerbv_drill_destroy_drill_list(stats->drill_list);
117 dprintf(
"---> Entering gerbv_drill_stats_add_layer ..... \n");
119 accum_stats->layer_count++;
121 accum_stats->comment += input_stats->comment;
124 accum_stats->G00 += input_stats->G00;
125 accum_stats->G01 += input_stats->G01;
126 accum_stats->G02 += input_stats->G02;
127 accum_stats->G03 += input_stats->G03;
128 accum_stats->G04 += input_stats->G04;
129 accum_stats->G05 += input_stats->G05;
130 accum_stats->G85 += input_stats->G85;
131 accum_stats->G90 += input_stats->G90;
132 accum_stats->G91 += input_stats->G91;
133 accum_stats->G93 += input_stats->G93;
134 accum_stats->G_unknown += input_stats->G_unknown;
136 accum_stats->M00 += input_stats->M00;
137 accum_stats->M01 += input_stats->M01;
138 accum_stats->M18 += input_stats->M18;
139 accum_stats->M25 += input_stats->M25;
140 accum_stats->M30 += input_stats->M30;
141 accum_stats->M31 += input_stats->M31;
142 accum_stats->M45 += input_stats->M45;
143 accum_stats->M47 += input_stats->M47;
144 accum_stats->M48 += input_stats->M48;
145 accum_stats->M71 += input_stats->M71;
146 accum_stats->M72 += input_stats->M72;
147 accum_stats->M95 += input_stats->M95;
148 accum_stats->M97 += input_stats->M97;
149 accum_stats->M98 += input_stats->M98;
150 accum_stats->M_unknown += input_stats->M_unknown;
152 accum_stats->R += input_stats->R;
155 for (drill = input_stats->drill_list; drill != NULL; drill = drill->next) {
156 dprintf(
" In gerbv_drill_stats_add_layer, adding drill_num = %d to list\n", drill->drill_num);
159 drill_stats_add_to_drill_list(accum_stats->drill_list, drill->drill_num, drill->drill_size, drill->drill_unit);
162 dprintf(
" adding count %d of drills for drill %d\n", drill->drill_count, drill->drill_num);
163 drill_stats_add_to_drill_counter(accum_stats->drill_list, drill->drill_num, drill->drill_count);
164 accum_stats->total_count += drill->drill_count;
168 for (error = input_stats->error_list; error != NULL; error = error->next) {
169 if (error->error_text != NULL)
170 gerbv_stats_printf(accum_stats->error_list, error->type, this_layer,
"%s", error->error_text);
176 if (input_stats->detect) {
177 tmps2 = g_strdup_printf(_(
"Broken tool detect %s (layer %d)"), input_stats->detect, this_layer);
179 if (accum_stats->detect) {
181 tmps = g_strdup_printf(
"%s\n%s", accum_stats->detect, tmps2);
182 g_free(accum_stats->detect);
183 accum_stats->detect = NULL;
187 tmps = g_strdup_printf(
"%s", tmps2);
194 accum_stats->detect = tmps;
197 for (error = input_stats->error_list; error != NULL; error = error->next) {
198 if (error->error_text != NULL) {
199 gerbv_stats_printf(accum_stats->error_list, error->type, this_layer,
"%s", error->error_text);
203 dprintf(
"<--- .... Leaving gerbv_drill_stats_add_layer.\n");
212 for (drill = drill_list_in; drill != NULL; drill = drill->next) {
213 if (drill_num_in == drill->drill_num) {
222 gerbv_drill_stats_new_drill_list() {
240 drill_stats_add_to_drill_list(
241 gerbv_drill_list_t* drill_list_in,
int drill_num_in,
double drill_size_in,
char* drill_unit_in
248 dprintf(
"%s(%p, %d, %g, \"%s\")\n", __FUNCTION__, drill_list_in, drill_num_in, drill_size_in, drill_unit_in);
251 " ---> Entering drill_stats_add_to_drill_list, first drill_num in list = %d ...\n", drill_list_in->drill_num
255 if (drill_list_in->drill_num == -1) {
256 dprintf(
" .... In drill_stats_add_to_drill_list, adding first drill, no %d\n", drill_num_in);
257 drill_list_in->drill_num = drill_num_in;
258 drill_list_in->drill_size = drill_size_in;
259 drill_list_in->drill_count = 0;
260 drill_list_in->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
261 drill_list_in->next = NULL;
265 for (drill = drill_list_in; drill != NULL; drill = (
gerbv_drill_list_t*)drill->next) {
266 dprintf(
"checking this drill_num %d against that in list %d.\n", drill_num_in, drill->drill_num);
267 if (drill_num_in == drill->drill_num) {
268 dprintf(
" .... In drill_stats_add_to_drill_list, drill no %d already in list\n", drill_num_in);
276 GERB_FATAL_ERROR(
"malloc format failed in %s()", __FUNCTION__);
280 dprintf(
" .... In drill_stats_add_to_drill_list, adding new drill, no %d\n", drill_num_in);
281 drill_list_new->drill_num = drill_num_in;
282 drill_list_new->drill_size = drill_size_in;
283 drill_list_new->drill_count = 0;
284 drill_list_new->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
285 drill_list_new->next = NULL;
286 drill_last->next = drill_list_new;
288 dprintf(
" <---- ... leaving drill_stats_add_to_drill_list.\n");
294 drill_stats_modify_drill_list(
295 gerbv_drill_list_t* drill_list_in,
int drill_num_in,
double drill_size_in,
char* drill_unit_in
301 " ---> Entering drill_stats_modify_drill_list, first drill_num in list = %d ...\n", drill_list_in->drill_num
305 for (drill = drill_list_in; drill != NULL; drill = (
gerbv_drill_list_t*)drill->next) {
306 dprintf(
"checking this drill_num %d against that in list %d.\n", drill_num_in, drill->drill_num);
307 if (drill_num_in == drill->drill_num) {
308 dprintf(
" .... Found it, now update it ....\n");
309 drill->drill_size = drill_size_in;
310 if (drill->drill_unit)
311 g_free(drill->drill_unit);
312 drill->drill_unit = g_strdup_printf(
"%s", drill_unit_in);
313 dprintf(
" <---- ... Modified drill. leaving drill_stats_modify_drill_list.\n");
317 dprintf(
" <---- ... Did not find drill. leaving drill_stats_modify_drill_list.\n");
323 drill_stats_increment_drill_counter(
gerbv_drill_list_t* drill_list_in,
int drill_num_in) {
325 dprintf(
" ----> Entering drill_stats_increment_drill_counter......\n");
328 for (drill = drill_list_in; drill != NULL; drill = drill->next) {
329 if (drill_num_in == drill->drill_num) {
330 drill->drill_count++;
332 " .... incrementing drill count. drill_num = %d, drill_count = %d.\n",
333 drill_list_in->drill_num, drill->drill_count
335 dprintf(
" <---- .... Leaving drill_stats_increment_drill_counter after incrementing counter.\n");
339 dprintf(
" <---- .... Leaving drill_stats_increment_drill_counter without incrementing any counter.\n");
344 drill_stats_add_to_drill_counter(
gerbv_drill_list_t* drill_list_in,
int drill_num_in,
int increment) {
347 for (drill = drill_list_in; drill != NULL; drill = drill->next) {
348 if (drill_num_in == drill->drill_num) {
349 dprintf(
" In drill_stats_add_to_drill_counter, adding increment = %d drills to drill list\n", increment);
350 drill->drill_count += increment;
358 gerbv_drill_stats_new_error_list() {
377 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.