| 566 | } |
| 567 | |
| 568 | bool idl_mapping_java::gen_enum(UTL_ScopedName *name, |
| 569 | const std::vector<AST_EnumVal *> &contents, const char *repoid) |
| 570 | { |
| 571 | ostringstream oss; |
| 572 | |
| 573 | const char *enum_name = name->last_component()->get_string(); |
| 574 | oss << " private static " << enum_name << "[] __values = {\n"; |
| 575 | for (size_t i = 0; i < contents.size(); ++i) { |
| 576 | oss << " new " << enum_name << '(' << i << ')'; |
| 577 | |
| 578 | if (i < contents.size() - 1) oss << ','; |
| 579 | |
| 580 | oss << '\n'; |
| 581 | } |
| 582 | oss << " };\n\n"; |
| 583 | |
| 584 | for (size_t i = 0; i < contents.size(); ++i) { |
| 585 | const char *enumerator_name = contents[i]->local_name()->get_string(); |
| 586 | oss << |
| 587 | " public static final int _" << enumerator_name << " = " << i << ";\n" |
| 588 | " public static final " << enum_name << ' ' << enumerator_name << " = __values[" << i << "];\n" |
| 589 | "\n"; |
| 590 | } |
| 591 | |
| 592 | oss << |
| 593 | " public int value() { return _value; }\n" |
| 594 | "\n" |
| 595 | " private int _value;\n" |
| 596 | "\n" |
| 597 | " public static " << enum_name << " from_int(int value) {\n" |
| 598 | " if (value >= 0 && value < " << contents.size() << ") {\n" |
| 599 | " return __values[value];\n" |
| 600 | " } else {\n" |
| 601 | " return new " << enum_name << "(value);\n" |
| 602 | " }\n" |
| 603 | " }\n" |
| 604 | "\n" |
| 605 | " protected " << enum_name << "(int value) { _value = value; }\n" |
| 606 | "\n" |
| 607 | " public Object readResolve()\n" |
| 608 | " throws java.io.ObjectStreamException {\n" |
| 609 | " return from_int(value());\n" |
| 610 | " }\n" |
| 611 | "\n"; |
| 612 | |
| 613 | JavaName jn(name); |
| 614 | return java_class_gen(jn, JCLASS, |
| 615 | oss.str().c_str(), "", "java.io.Serializable") |
| 616 | && gen_helper(jn, repoid) && gen_holder(jn); |
| 617 | } |
| 618 | |
| 619 | bool idl_mapping_java::gen_struct(UTL_ScopedName *name, |
| 620 | const std::vector<AST_Field *> &fields, const char *repoid) |
nothing calls this directly
no test coverage detected