MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / gen_enum

Method gen_enum

java/idl2jni/codegen/im_java.cpp:568–617  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

566}
567
568bool 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
619bool idl_mapping_java::gen_struct(UTL_ScopedName *name,
620 const std::vector<AST_Field *> &fields, const char *repoid)

Callers

nothing calls this directly

Calls 6

java_class_genFunction · 0.85
gen_helperFunction · 0.85
gen_holderFunction · 0.85
get_stringMethod · 0.45
sizeMethod · 0.45
strMethod · 0.45

Tested by

no test coverage detected