2016-03-08 3 views
3

Я собираю код C++ с помощью SWIG для генерации Java-кода. У меня есть этот ЬурейеЕСгенерированные имена SWIG слишком длинны

typedef void (*create_cb_t)(const rib_handle_t rib, 
      const cdap_rib::con_handle_t &con, 
      const std::string& fqn, 
      const std::string& class_, 
      const cdap_rib::filt_info_t &filt, 
      const int invoke_id, 
      const ser_obj_t &obj_req, 
      ser_obj_t &obj_reply, 
      cdap_rib::res_info_t& res); 

Который позже используется в функции члена

 void addCreateCallbackSchema(const cdap_rib::vers_info_t& version, 
           const std::string& class_, 
           const std::string& fqn_, 
           create_cb_t cb); 

Когда SWIG генерирует тип имя файла слишком долго, и это дает ошибку при использовании его

Unable to open file ../../../java/eu/irati/librina/SWIGTYPE_p_f_q_const__long_long_r_q_const__rina__cdap_rib__connection_handler_r_q_const__std__string_r_q_const__std__string_r_q_const__rina__cdap_rib__filtering_info_q_const__int_r_q_const__rina__ser_obj_r_rina__ser_obj_r_rina__cdap_rib__result_info__void.java: File name too long 

Как я могу заменить (допустим, переименовать) typedef с именем, которое позволяет избежать этой проблемы?

Благодаря

ответ

0

Решение этой проблемы заключается в создании конкретной ЬурейеЕ в файле интерфейса (уважать пространство имен):

namespace rina { 
namespace rib{ 
    typedef void (*create_cb_t)(const rib_handle_t rib, 
    const cdap_rib::con_handle_t &con, 
    const std::string& fqn, 
    const std::string& class_, 
    const cdap_rib::filt_info_t &filt, 
    const int invoke_id, 
    const ser_obj_t &obj_req, 
    ser_obj_t &obj_reply, 
    cdap_rib::res_info_t& res); 
}} 

, а затем игнорировать ЬурейеЕ в .h

#ifndef SWIG 
typedef void (*create_cb_t)(const rib_handle_t rib, 
      const cdap_rib::con_handle_t &con, 
      const std::string& fqn, 
      const std::string& class_, 
      const cdap_rib::filt_info_t &filt, 
      const int invoke_id, 
      const ser_obj_t &obj_req, 
      ser_obj_t &obj_reply, 
      cdap_rib::res_info_t& res); 
#endif