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

Function generate_common

dds/idl/ts_generator.cpp:644–706  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

642
643 template <typename T>
644 void generate_common(T* node) {
645 UTL_ScopedName* name = node->name();
646
647 if (!(idl_global->is_dcps_type(name) || be_global->is_topic_type(node))) {
648 return;
649 }
650
651 ACE_CString output_file = be_global->java_arg();
652 if (output_file.length()) {
653 be_global->impl_name_ = output_file;
654 }
655 be_global->add_include("idl2jni_jni.h", BE_GlobalData::STREAM_CPP);
656
657 std::string type = scoped(name);
658
659 std::string file, jniclass, jpackage;
660 for (UTL_ScopedName* sn = name; sn;
661 sn = static_cast<UTL_ScopedName*>(sn->tail())) {
662 std::string tmp = sn->head()->get_string();
663 if (!tmp.empty() && sn->tail()) {
664 jpackage += tmp;
665 file += tmp;
666 if (ACE_OS::mkdir(file.c_str()) != 0 && errno != EEXIST) {
667 ACE_ERROR((LM_ERROR, ACE_TEXT("ERROR: java_ts_generator::generate - ")
668 ACE_TEXT("unable to create specified directory: %C"), file.c_str()));
669 }
670 }
671 for (size_t i = tmp.find('_'); i < tmp.length();
672 i = tmp.find('_', i + 1)) {
673 tmp.insert(++i, 1, '1');
674 }
675 jniclass += tmp;
676 if (!jniclass.empty() && sn->tail()) {
677 jniclass += '_';
678 jpackage += '.';
679 file += '/';
680 }
681 }
682
683 if (jpackage.size() && jpackage[jpackage.size() - 1] == '.') {
684 jpackage.resize(jpackage.size() - 1);
685 }
686
687 std::string clazz = name->last_component()->get_string();
688 file += clazz + "TypeSupportImpl.java";
689
690 std::ofstream java(file.c_str());
691 java << (jpackage.size() ? "package " : "") << jpackage
692 << (jpackage.size() ? ";\n" :"") <<
693 "public class " << clazz << "TypeSupportImpl extends _" << clazz
694 << "TypeSupportTAOPeer {\n"
695 " public " << clazz << "TypeSupportImpl() {\n"
696 " super(_jni_init());\n"
697 " }\n"
698 " private static native long _jni_init();\n"
699 "}\n";
700 be_global->impl_ <<
701 "extern \"C\" JNIEXPORT jlong JNICALL\n"

Callers 1

generateFunction · 0.85

Calls 11

scopedFunction · 0.85
is_topic_typeMethod · 0.80
java_argMethod · 0.80
nameMethod · 0.45
lengthMethod · 0.45
add_includeMethod · 0.45
get_stringMethod · 0.45
emptyMethod · 0.45
findMethod · 0.45
insertMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected