亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為多個參數對定義一次 SWIG 類型映射

為多個參數對定義一次 SWIG 類型映射

慕娘9325324 2021-06-06 13:28:36
我已經使用%typemap特定于兩個參數的類型和名稱成功地將緩沖區指針/緩沖區長度對映射到 ByteBuffer 。對于同一方法中的多對參數,沒有類型映射的近乎冗余的副本,并且沒有僅按類型匹配,我該如何做同樣的事情?細節例如,使用這些類型映射:%typemap(jni) (void *outBuffer, int32_t bufferLen ) "jobject"%typemap(jtype) (void *outBuffer, int32_t bufferLen) "java.nio.ByteBuffer"%typemap(jstype) (void *outBuffer, int32_t bufferLen) "java.nio.ByteBuffer"%typemap(javain) (void *outBuffer, int32_t bufferLen) "$javainput"%typemap(javaout) (void *outBuffer, int32_t bufferLen) {    return $jnicall;}%typemap(in) (void *outBuffer, int32_t bufferLen) {    $1 = jenv->GetDirectBufferAddress($input);    $2 = (long)(jenv->GetDirectBufferCapacity($input));}我可以 SWIG 一個 C++ 方法,如:int32_t getArrayData( void * outBuffer, int32_t bufferLen );進入 Java 綁定,如:public int getArrayData( java.nio.ByteBuffer outBuffer ) { ...}但是現在我想 SWIG 一個 C++ 方法來接受兩個參數對:int32_t getArrayData( void * outBuffer, int32_t bufferLen,    void * outBuffer1, int32_t bufferLen1 );并進入 Java:public int getArrayData( java.nio.ByteBuffer outBuffer,   java.nio.ByteBuffer outBuffer1 ) { 沒有:復制%typemaps以上所有內容并在每個參數名稱的末尾添加一個“1”。通過從上面刪除所有參數名稱來匹配所有void*/int32_t參數對%typemaps。在 *.i 文件上運行預處理器。這在 SWIG 中可行嗎?
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

11.1.4 重用類型映射11.2.3 復制類型映射中的 SWIG 手冊中所述,您可以使用 輕松復制其他簽名或類型的現有(多參數)類型映射%apply。在你的情況下,你可能需要

%apply (void *outBuffer, int32_t bufferLen) { (void *outBuffer1, int32_t bufferLen1) };

復制所有存在于(void *outBuffer, int32_t bufferLen)to 的類型圖(void *outBuffer1, int32_t bufferLen1)


查看完整回答
反對 回復 2021-06-10
  • 1 回答
  • 0 關注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號