* Dumps docstrings to stdout * Only works for top-level definitions and the whole program doc * (i.e., not enum constants, struct fields, or functions. */
| 572 | * (i.e., not enum constants, struct fields, or functions. |
| 573 | */ |
| 574 | void dump_docstrings(t_program* program) { |
| 575 | string progdoc = program->get_doc(); |
| 576 | if (!progdoc.empty()) { |
| 577 | printf("Whole program doc:\n%s\n", progdoc.c_str()); |
| 578 | } |
| 579 | const vector<t_typedef*>& typedefs = program->get_typedefs(); |
| 580 | vector<t_typedef*>::const_iterator t_iter; |
| 581 | for (t_iter = typedefs.begin(); t_iter != typedefs.end(); ++t_iter) { |
| 582 | t_typedef* td = *t_iter; |
| 583 | if (td->has_doc()) { |
| 584 | printf("typedef %s:\n%s\n", td->get_name().c_str(), td->get_doc().c_str()); |
| 585 | } |
| 586 | } |
| 587 | const vector<t_enum*>& enums = program->get_enums(); |
| 588 | vector<t_enum*>::const_iterator e_iter; |
| 589 | for (e_iter = enums.begin(); e_iter != enums.end(); ++e_iter) { |
| 590 | t_enum* en = *e_iter; |
| 591 | if (en->has_doc()) { |
| 592 | printf("enum %s:\n%s\n", en->get_name().c_str(), en->get_doc().c_str()); |
| 593 | } |
| 594 | } |
| 595 | const vector<t_const*>& consts = program->get_consts(); |
| 596 | vector<t_const*>::const_iterator c_iter; |
| 597 | for (c_iter = consts.begin(); c_iter != consts.end(); ++c_iter) { |
| 598 | t_const* co = *c_iter; |
| 599 | if (co->has_doc()) { |
| 600 | printf("const %s:\n%s\n", co->get_name().c_str(), co->get_doc().c_str()); |
| 601 | } |
| 602 | } |
| 603 | const vector<t_struct*>& structs = program->get_structs(); |
| 604 | vector<t_struct*>::const_iterator s_iter; |
| 605 | for (s_iter = structs.begin(); s_iter != structs.end(); ++s_iter) { |
| 606 | t_struct* st = *s_iter; |
| 607 | if (st->has_doc()) { |
| 608 | printf("struct %s:\n%s\n", st->get_name().c_str(), st->get_doc().c_str()); |
| 609 | } |
| 610 | } |
| 611 | const vector<t_struct*>& xceptions = program->get_xceptions(); |
| 612 | vector<t_struct*>::const_iterator x_iter; |
| 613 | for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) { |
| 614 | t_struct* xn = *x_iter; |
| 615 | if (xn->has_doc()) { |
| 616 | printf("xception %s:\n%s\n", xn->get_name().c_str(), xn->get_doc().c_str()); |
| 617 | } |
| 618 | } |
| 619 | const vector<t_service*>& services = program->get_services(); |
| 620 | vector<t_service*>::const_iterator v_iter; |
| 621 | for (v_iter = services.begin(); v_iter != services.end(); ++v_iter) { |
| 622 | t_service* sv = *v_iter; |
| 623 | if (sv->has_doc()) { |
| 624 | printf("service %s:\n%s\n", sv->get_name().c_str(), sv->get_doc().c_str()); |
| 625 | } |
| 626 | } |
| 627 | } |
| 628 | |
| 629 | /** |
| 630 | * Emits a warning on list<byte>, binary type is typically a much better choice. |