Lines Matching refs:p
7 static __isl_give isl_printer *file_start_line(__isl_take isl_printer *p) in file_start_line() argument
9 fprintf(p->file, "%s%*s%s", p->indent_prefix ? p->indent_prefix : "", in file_start_line()
10 p->indent, "", p->prefix ? p->prefix : ""); in file_start_line()
11 return p; in file_start_line()
14 static __isl_give isl_printer *file_end_line(__isl_take isl_printer *p) in file_end_line() argument
16 fprintf(p->file, "%s\n", p->suffix ? p->suffix : ""); in file_end_line()
17 return p; in file_end_line()
20 static __isl_give isl_printer *file_flush(__isl_take isl_printer *p) in file_flush() argument
22 fflush(p->file); in file_flush()
23 return p; in file_flush()
26 static __isl_give isl_printer *file_print_str(__isl_take isl_printer *p, in file_print_str() argument
29 fprintf(p->file, "%s", s); in file_print_str()
30 return p; in file_print_str()
33 static __isl_give isl_printer *file_print_double(__isl_take isl_printer *p, in file_print_double() argument
36 fprintf(p->file, "%g", d); in file_print_double()
37 return p; in file_print_double()
40 static __isl_give isl_printer *file_print_int(__isl_take isl_printer *p, int i) in file_print_int() argument
42 fprintf(p->file, "%d", i); in file_print_int()
43 return p; in file_print_int()
46 static __isl_give isl_printer *file_print_isl_int(__isl_take isl_printer *p, isl_int i) in file_print_isl_int() argument
48 isl_int_print(p->file, i, p->width); in file_print_isl_int()
49 return p; in file_print_isl_int()
52 static int grow_buf(__isl_keep isl_printer *p, int extra) in grow_buf() argument
57 if (p->buf_size == 0) in grow_buf()
60 new_size = ((p->buf_n + extra + 1) * 3) / 2; in grow_buf()
61 new_buf = isl_realloc_array(p->ctx, p->buf, char, new_size); in grow_buf()
63 p->buf_size = 0; in grow_buf()
66 p->buf = new_buf; in grow_buf()
67 p->buf_size = new_size; in grow_buf()
72 static __isl_give isl_printer *str_print(__isl_take isl_printer *p, in str_print() argument
75 if (p->buf_n + len + 1 >= p->buf_size && grow_buf(p, len)) in str_print()
77 memcpy(p->buf + p->buf_n, s, len); in str_print()
78 p->buf_n += len; in str_print()
80 p->buf[p->buf_n] = '\0'; in str_print()
81 return p; in str_print()
83 isl_printer_free(p); in str_print()
87 static __isl_give isl_printer *str_print_indent(__isl_take isl_printer *p, in str_print_indent() argument
92 if (p->buf_n + indent + 1 >= p->buf_size && grow_buf(p, indent)) in str_print_indent()
95 p->buf[p->buf_n++] = ' '; in str_print_indent()
96 p->buf[p->buf_n] = '\0'; in str_print_indent()
97 return p; in str_print_indent()
99 isl_printer_free(p); in str_print_indent()
103 static __isl_give isl_printer *str_start_line(__isl_take isl_printer *p) in str_start_line() argument
105 if (p->indent_prefix) in str_start_line()
106 p = str_print(p, p->indent_prefix, strlen(p->indent_prefix)); in str_start_line()
107 p = str_print_indent(p, p->indent); in str_start_line()
108 if (p->prefix) in str_start_line()
109 p = str_print(p, p->prefix, strlen(p->prefix)); in str_start_line()
110 return p; in str_start_line()
113 static __isl_give isl_printer *str_end_line(__isl_take isl_printer *p) in str_end_line() argument
115 if (p->suffix) in str_end_line()
116 p = str_print(p, p->suffix, strlen(p->suffix)); in str_end_line()
117 p = str_print(p, "\n", strlen("\n")); in str_end_line()
118 return p; in str_end_line()
121 static __isl_give isl_printer *str_flush(__isl_take isl_printer *p) in str_flush() argument
123 p->buf_n = 0; in str_flush()
124 p->buf[p->buf_n] = '\0'; in str_flush()
125 return p; in str_flush()
128 static __isl_give isl_printer *str_print_str(__isl_take isl_printer *p, in str_print_str() argument
131 return str_print(p, s, strlen(s)); in str_print_str()
134 static __isl_give isl_printer *str_print_double(__isl_take isl_printer *p, in str_print_double() argument
137 int left = p->buf_size - p->buf_n; in str_print_double()
138 int need = snprintf(p->buf + p->buf_n, left, "%g", d); in str_print_double()
140 if (grow_buf(p, need)) in str_print_double()
142 left = p->buf_size - p->buf_n; in str_print_double()
143 need = snprintf(p->buf + p->buf_n, left, "%g", d); in str_print_double()
145 p->buf_n += need; in str_print_double()
146 return p; in str_print_double()
148 isl_printer_free(p); in str_print_double()
152 static __isl_give isl_printer *str_print_int(__isl_take isl_printer *p, int i) in str_print_int() argument
154 int left = p->buf_size - p->buf_n; in str_print_int()
155 int need = snprintf(p->buf + p->buf_n, left, "%d", i); in str_print_int()
157 if (grow_buf(p, need)) in str_print_int()
159 left = p->buf_size - p->buf_n; in str_print_int()
160 need = snprintf(p->buf + p->buf_n, left, "%d", i); in str_print_int()
162 p->buf_n += need; in str_print_int()
163 return p; in str_print_int()
165 isl_printer_free(p); in str_print_int()
169 static __isl_give isl_printer *str_print_isl_int(__isl_take isl_printer *p, in str_print_isl_int() argument
177 if (len < p->width) in str_print_isl_int()
178 p = str_print_indent(p, p->width - len); in str_print_isl_int()
179 p = str_print(p, s, len); in str_print_isl_int()
181 return p; in str_print_isl_int()
185 __isl_give isl_printer *(*start_line)(__isl_take isl_printer *p);
186 __isl_give isl_printer *(*end_line)(__isl_take isl_printer *p);
187 __isl_give isl_printer *(*print_double)(__isl_take isl_printer *p,
189 __isl_give isl_printer *(*print_int)(__isl_take isl_printer *p, int i);
190 __isl_give isl_printer *(*print_isl_int)(__isl_take isl_printer *p,
192 __isl_give isl_printer *(*print_str)(__isl_take isl_printer *p,
194 __isl_give isl_printer *(*flush)(__isl_take isl_printer *p);
219 struct isl_printer *p = isl_calloc_type(ctx, struct isl_printer); in isl_printer_to_file() local
220 if (!p) in isl_printer_to_file()
222 p->ctx = ctx; in isl_printer_to_file()
223 isl_ctx_ref(p->ctx); in isl_printer_to_file()
224 p->ops = &file_ops; in isl_printer_to_file()
225 p->file = file; in isl_printer_to_file()
226 p->buf = NULL; in isl_printer_to_file()
227 p->buf_n = 0; in isl_printer_to_file()
228 p->buf_size = 0; in isl_printer_to_file()
229 p->indent = 0; in isl_printer_to_file()
230 p->output_format = ISL_FORMAT_ISL; in isl_printer_to_file()
231 p->indent_prefix = NULL; in isl_printer_to_file()
232 p->prefix = NULL; in isl_printer_to_file()
233 p->suffix = NULL; in isl_printer_to_file()
234 p->width = 0; in isl_printer_to_file()
235 p->yaml_style = ISL_YAML_STYLE_FLOW; in isl_printer_to_file()
237 return p; in isl_printer_to_file()
242 struct isl_printer *p = isl_calloc_type(ctx, struct isl_printer); in isl_printer_to_str() local
243 if (!p) in isl_printer_to_str()
245 p->ctx = ctx; in isl_printer_to_str()
246 isl_ctx_ref(p->ctx); in isl_printer_to_str()
247 p->ops = &str_ops; in isl_printer_to_str()
248 p->file = NULL; in isl_printer_to_str()
249 p->buf = isl_alloc_array(ctx, char, 256); in isl_printer_to_str()
250 if (!p->buf) in isl_printer_to_str()
252 p->buf_n = 0; in isl_printer_to_str()
253 p->buf[0] = '\0'; in isl_printer_to_str()
254 p->buf_size = 256; in isl_printer_to_str()
255 p->indent = 0; in isl_printer_to_str()
256 p->output_format = ISL_FORMAT_ISL; in isl_printer_to_str()
257 p->indent_prefix = NULL; in isl_printer_to_str()
258 p->prefix = NULL; in isl_printer_to_str()
259 p->suffix = NULL; in isl_printer_to_str()
260 p->width = 0; in isl_printer_to_str()
261 p->yaml_style = ISL_YAML_STYLE_FLOW; in isl_printer_to_str()
263 return p; in isl_printer_to_str()
265 isl_printer_free(p); in isl_printer_to_str()
269 __isl_null isl_printer *isl_printer_free(__isl_take isl_printer *p) in isl_printer_free() argument
271 if (!p) in isl_printer_free()
273 free(p->buf); in isl_printer_free()
274 free(p->indent_prefix); in isl_printer_free()
275 free(p->prefix); in isl_printer_free()
276 free(p->suffix); in isl_printer_free()
277 free(p->yaml_state); in isl_printer_free()
278 isl_id_to_id_free(p->notes); in isl_printer_free()
279 isl_ctx_deref(p->ctx); in isl_printer_free()
280 free(p); in isl_printer_free()
300 __isl_give isl_printer *isl_printer_set_isl_int_width(__isl_take isl_printer *p, in isl_printer_set_isl_int_width() argument
303 if (!p) in isl_printer_set_isl_int_width()
306 p->width = width; in isl_printer_set_isl_int_width()
308 return p; in isl_printer_set_isl_int_width()
311 __isl_give isl_printer *isl_printer_set_indent(__isl_take isl_printer *p, in isl_printer_set_indent() argument
314 if (!p) in isl_printer_set_indent()
317 p->indent = indent; in isl_printer_set_indent()
319 return p; in isl_printer_set_indent()
322 __isl_give isl_printer *isl_printer_indent(__isl_take isl_printer *p, in isl_printer_indent() argument
325 if (!p) in isl_printer_indent()
328 p->indent += indent; in isl_printer_indent()
329 if (p->indent < 0) in isl_printer_indent()
330 p->indent = 0; in isl_printer_indent()
332 return p; in isl_printer_indent()
337 __isl_give isl_printer *isl_printer_set_indent_prefix(__isl_take isl_printer *p, in isl_printer_set_indent_prefix() argument
340 if (!p) in isl_printer_set_indent_prefix()
343 free(p->indent_prefix); in isl_printer_set_indent_prefix()
344 p->indent_prefix = prefix ? strdup(prefix) : NULL; in isl_printer_set_indent_prefix()
346 return p; in isl_printer_set_indent_prefix()
349 __isl_give isl_printer *isl_printer_set_prefix(__isl_take isl_printer *p, in isl_printer_set_prefix() argument
352 if (!p) in isl_printer_set_prefix()
355 free(p->prefix); in isl_printer_set_prefix()
356 p->prefix = prefix ? strdup(prefix) : NULL; in isl_printer_set_prefix()
358 return p; in isl_printer_set_prefix()
361 __isl_give isl_printer *isl_printer_set_suffix(__isl_take isl_printer *p, in isl_printer_set_suffix() argument
364 if (!p) in isl_printer_set_suffix()
367 free(p->suffix); in isl_printer_set_suffix()
368 p->suffix = suffix ? strdup(suffix) : NULL; in isl_printer_set_suffix()
370 return p; in isl_printer_set_suffix()
373 __isl_give isl_printer *isl_printer_set_output_format(__isl_take isl_printer *p, in isl_printer_set_output_format() argument
376 if (!p) in isl_printer_set_output_format()
379 p->output_format = output_format; in isl_printer_set_output_format()
381 return p; in isl_printer_set_output_format()
384 int isl_printer_get_output_format(__isl_keep isl_printer *p) in isl_printer_get_output_format() argument
386 if (!p) in isl_printer_get_output_format()
388 return p->output_format; in isl_printer_get_output_format()
393 isl_bool isl_printer_has_note(__isl_keep isl_printer *p, in isl_printer_has_note() argument
396 if (!p || !id) in isl_printer_has_note()
398 if (!p->notes) in isl_printer_has_note()
400 return isl_id_to_id_has(p->notes, id); in isl_printer_has_note()
406 __isl_give isl_id *isl_printer_get_note(__isl_keep isl_printer *p, in isl_printer_get_note() argument
411 has_note = isl_printer_has_note(p, id); in isl_printer_get_note()
415 isl_die(isl_printer_get_ctx(p), isl_error_invalid, in isl_printer_get_note()
418 return isl_id_to_id_get(p->notes, id); in isl_printer_get_note()
427 __isl_give isl_printer *isl_printer_set_note(__isl_take isl_printer *p, in isl_printer_set_note() argument
430 if (!p || !id || !note) in isl_printer_set_note()
432 if (!p->notes) { in isl_printer_set_note()
433 p->notes = isl_id_to_id_alloc(isl_printer_get_ctx(p), 1); in isl_printer_set_note()
434 if (!p->notes) in isl_printer_set_note()
437 p->notes = isl_id_to_id_set(p->notes, id, note); in isl_printer_set_note()
438 if (!p->notes) in isl_printer_set_note()
439 return isl_printer_free(p); in isl_printer_set_note()
440 return p; in isl_printer_set_note()
442 isl_printer_free(p); in isl_printer_set_note()
451 __isl_give isl_printer *isl_printer_set_dump(__isl_take isl_printer *p, in isl_printer_set_dump() argument
454 if (!p) in isl_printer_set_dump()
457 p->dump = dump; in isl_printer_set_dump()
459 return p; in isl_printer_set_dump()
464 __isl_give isl_printer *isl_printer_set_yaml_style(__isl_take isl_printer *p, in isl_printer_set_yaml_style() argument
467 if (!p) in isl_printer_set_yaml_style()
470 p->yaml_style = yaml_style; in isl_printer_set_yaml_style()
472 return p; in isl_printer_set_yaml_style()
477 int isl_printer_get_yaml_style(__isl_keep isl_printer *p) in isl_printer_get_yaml_style() argument
479 if (!p) in isl_printer_get_yaml_style()
481 return p->yaml_style; in isl_printer_get_yaml_style()
487 static __isl_give isl_printer *push_state(__isl_take isl_printer *p, in push_state() argument
490 if (!p) in push_state()
493 if (p->yaml_size < p->yaml_depth + 1) { in push_state()
495 state = isl_realloc_array(p->ctx, p->yaml_state, in push_state()
496 enum isl_yaml_state, p->yaml_depth + 1); in push_state()
498 return isl_printer_free(p); in push_state()
499 p->yaml_state = state; in push_state()
500 p->yaml_size = p->yaml_depth + 1; in push_state()
503 p->yaml_state[p->yaml_depth] = state; in push_state()
504 p->yaml_depth++; in push_state()
506 return p; in push_state()
512 static __isl_give isl_printer *pop_state(__isl_take isl_printer *p) in pop_state() argument
514 if (!p) in pop_state()
516 p->yaml_depth--; in pop_state()
517 return p; in pop_state()
523 static __isl_give isl_printer *update_state(__isl_take isl_printer *p, in update_state() argument
526 if (!p) in update_state()
528 if (p->yaml_depth < 1) in update_state()
529 isl_die(isl_printer_get_ctx(p), isl_error_invalid, in update_state()
530 "not in YAML construct", return isl_printer_free(p)); in update_state()
532 p->yaml_state[p->yaml_depth - 1] = state; in update_state()
534 return p; in update_state()
540 static enum isl_yaml_state current_state(__isl_keep isl_printer *p) in current_state() argument
542 if (!p) in current_state()
544 if (p->yaml_depth < 1) in current_state()
546 return p->yaml_state[p->yaml_depth - 1]; in current_state()
568 static __isl_give isl_printer *enter_state(__isl_take isl_printer *p, in enter_state() argument
573 if (!p) in enter_state()
576 state = current_state(p); in enter_state()
579 p = p->ops->print_str(p, ":"); in enter_state()
581 p = p->ops->print_str(p, ": "); in enter_state()
582 p = update_state(p, isl_yaml_mapping_val); in enter_state()
584 p = update_state(p, isl_yaml_mapping_key); in enter_state()
586 if (p->yaml_style == ISL_YAML_STYLE_FLOW) in enter_state()
587 p = p->ops->print_str(p, ", "); in enter_state()
589 p = p->ops->end_line(p); in enter_state()
590 p = p->ops->start_line(p); in enter_state()
592 p = update_state(p, isl_yaml_mapping_key); in enter_state()
594 if (p->yaml_style != ISL_YAML_STYLE_FLOW) { in enter_state()
595 p = p->ops->end_line(p); in enter_state()
596 p = p->ops->start_line(p); in enter_state()
597 p = p->ops->print_str(p, "- "); in enter_state()
598 p = isl_printer_indent(p, 2); in enter_state()
600 p = update_state(p, isl_yaml_sequence); in enter_state()
602 if (p->yaml_style == ISL_YAML_STYLE_FLOW) in enter_state()
603 p = p->ops->print_str(p, ", "); in enter_state()
605 p = p->ops->end_line(p); in enter_state()
606 p = isl_printer_indent(p, -2); in enter_state()
607 p = p->ops->start_line(p); in enter_state()
608 p = p->ops->print_str(p, "- "); in enter_state()
609 p = isl_printer_indent(p, 2); in enter_state()
611 p = update_state(p, isl_yaml_sequence); in enter_state()
614 return p; in enter_state()
617 __isl_give isl_printer *isl_printer_print_str(__isl_take isl_printer *p, in isl_printer_print_str() argument
620 if (!p) in isl_printer_print_str()
623 return isl_printer_free(p); in isl_printer_print_str()
624 p = enter_state(p, 0); in isl_printer_print_str()
625 if (!p) in isl_printer_print_str()
627 return p->ops->print_str(p, s); in isl_printer_print_str()
630 __isl_give isl_printer *isl_printer_print_double(__isl_take isl_printer *p, in isl_printer_print_double() argument
633 p = enter_state(p, 0); in isl_printer_print_double()
634 if (!p) in isl_printer_print_double()
637 return p->ops->print_double(p, d); in isl_printer_print_double()
640 __isl_give isl_printer *isl_printer_print_int(__isl_take isl_printer *p, int i) in isl_printer_print_int() argument
642 p = enter_state(p, 0); in isl_printer_print_int()
643 if (!p) in isl_printer_print_int()
646 return p->ops->print_int(p, i); in isl_printer_print_int()
649 __isl_give isl_printer *isl_printer_print_isl_int(__isl_take isl_printer *p, in isl_printer_print_isl_int() argument
652 p = enter_state(p, 0); in isl_printer_print_isl_int()
653 if (!p) in isl_printer_print_isl_int()
656 return p->ops->print_isl_int(p, i); in isl_printer_print_isl_int()
659 __isl_give isl_printer *isl_printer_start_line(__isl_take isl_printer *p) in isl_printer_start_line() argument
661 if (!p) in isl_printer_start_line()
664 return p->ops->start_line(p); in isl_printer_start_line()
667 __isl_give isl_printer *isl_printer_end_line(__isl_take isl_printer *p) in isl_printer_end_line() argument
669 if (!p) in isl_printer_end_line()
672 return p->ops->end_line(p); in isl_printer_end_line()
690 __isl_give isl_printer *isl_printer_flush(__isl_take isl_printer *p) in isl_printer_flush() argument
692 if (!p) in isl_printer_flush()
695 return p->ops->flush(p); in isl_printer_flush()
708 __isl_take isl_printer *p) in isl_printer_yaml_start_mapping() argument
712 if (!p) in isl_printer_yaml_start_mapping()
714 p = enter_state(p, p->yaml_style == ISL_YAML_STYLE_BLOCK); in isl_printer_yaml_start_mapping()
715 if (!p) in isl_printer_yaml_start_mapping()
717 state = current_state(p); in isl_printer_yaml_start_mapping()
718 if (p->yaml_style == ISL_YAML_STYLE_FLOW) in isl_printer_yaml_start_mapping()
719 p = p->ops->print_str(p, "{ "); in isl_printer_yaml_start_mapping()
721 p = p->ops->end_line(p); in isl_printer_yaml_start_mapping()
722 p = isl_printer_indent(p, 2); in isl_printer_yaml_start_mapping()
723 p = p->ops->start_line(p); in isl_printer_yaml_start_mapping()
725 p = push_state(p, isl_yaml_mapping_first_key_start); in isl_printer_yaml_start_mapping()
726 return p; in isl_printer_yaml_start_mapping()
741 __isl_take isl_printer *p) in isl_printer_yaml_end_mapping() argument
745 state = current_state(p); in isl_printer_yaml_end_mapping()
746 p = pop_state(p); in isl_printer_yaml_end_mapping()
747 if (!p) in isl_printer_yaml_end_mapping()
749 if (p->yaml_style == ISL_YAML_STYLE_FLOW) in isl_printer_yaml_end_mapping()
750 return p->ops->print_str(p, " }"); in isl_printer_yaml_end_mapping()
752 p = p->ops->print_str(p, "{}"); in isl_printer_yaml_end_mapping()
753 if (!p) in isl_printer_yaml_end_mapping()
755 state = current_state(p); in isl_printer_yaml_end_mapping()
757 p = isl_printer_indent(p, -2); in isl_printer_yaml_end_mapping()
759 p = p->ops->end_line(p); in isl_printer_yaml_end_mapping()
760 return p; in isl_printer_yaml_end_mapping()
769 __isl_take isl_printer *p) in isl_printer_yaml_start_sequence() argument
771 if (!p) in isl_printer_yaml_start_sequence()
773 p = enter_state(p, p->yaml_style == ISL_YAML_STYLE_BLOCK); in isl_printer_yaml_start_sequence()
774 p = push_state(p, isl_yaml_sequence_first_start); in isl_printer_yaml_start_sequence()
775 if (!p) in isl_printer_yaml_start_sequence()
777 if (p->yaml_style == ISL_YAML_STYLE_FLOW) in isl_printer_yaml_start_sequence()
778 p = p->ops->print_str(p, "[ "); in isl_printer_yaml_start_sequence()
779 return p; in isl_printer_yaml_start_sequence()
797 __isl_take isl_printer *p) in isl_printer_yaml_end_sequence() argument
801 state = current_state(p); in isl_printer_yaml_end_sequence()
802 p = pop_state(p); in isl_printer_yaml_end_sequence()
803 if (!p) in isl_printer_yaml_end_sequence()
805 if (p->yaml_style == ISL_YAML_STYLE_FLOW) in isl_printer_yaml_end_sequence()
806 return p->ops->print_str(p, " ]"); in isl_printer_yaml_end_sequence()
807 up = current_state(p); in isl_printer_yaml_end_sequence()
810 p = p->ops->print_str(p, " []"); in isl_printer_yaml_end_sequence()
812 p = p->ops->print_str(p, "[]"); in isl_printer_yaml_end_sequence()
814 p = isl_printer_indent(p, -2); in isl_printer_yaml_end_sequence()
816 if (!p) in isl_printer_yaml_end_sequence()
818 state = current_state(p); in isl_printer_yaml_end_sequence()
820 p = p->ops->end_line(p); in isl_printer_yaml_end_sequence()
821 return p; in isl_printer_yaml_end_sequence()
831 __isl_give isl_printer *isl_printer_yaml_next(__isl_take isl_printer *p) in isl_printer_yaml_next() argument
835 if (!p) in isl_printer_yaml_next()
837 if (p->yaml_depth < 1) in isl_printer_yaml_next()
838 isl_die(isl_printer_get_ctx(p), isl_error_invalid, in isl_printer_yaml_next()
839 "not in YAML construct", return isl_printer_free(p)); in isl_printer_yaml_next()
841 state = current_state(p); in isl_printer_yaml_next()
848 p = update_state(p, state); in isl_printer_yaml_next()
850 return p; in isl_printer_yaml_next()