0
私が...ここに例があり、「デフォルト」生成されたラッパーの周りに私自身のラッパーを使用するようにSWIGを強制しよう カスタムラッパーが
I以下の「インターフェース」のコードがあります。template<typename T>
class Expected
{
public:
T Value();
};
%template(Expected_Int) Expected<int>;
%template(Expected_Bool) Expected<bool>;
%template(Expected_Void) Expected<void>;
を
そして、私自身のC#実装(私自身のラッパー)他のクラスで
public class Expected
{
public Expected(Expected_Void private) {...}
}
は、私はこのように、期待収益値を使用し、「期待setHandle(IViewHandle *ハンドル)」とSWIGはこのコードを生成します:
public override Expected_Void setHandle(IViewHandle handle) {
Expected_Void ret = new Expected_Void(luciadsdkPINVOKE.ViewContext_setHandle(swigCPtr, IViewHandle.getCPtr(handle)), true);
if (luciadsdkPINVOKE.SWIGPendingException.Pending) throw luciadsdkPINVOKE.SWIGPendingException.Retrieve();
return ret;
}
さて、私は
public override Expected setHandle(IViewHandle handle) {
Expected_Void ret = new Expected_Void(luciadsdkPINVOKE.ViewContext_setHandle(swigCPtr, IViewHandle.getCPtr(handle)), true);
if (luciadsdkPINVOKE.SWIGPendingException.Pending) throw luciadsdkPINVOKE.SWIGPendingException.Retrieve();
return Expected(ret);
}
(SWIGラッパーの周りに自分のラッパーを持っている)は、次のC#コードを生成したいが、それは可能ですか?
おかげ
%typemap(csout,excode=SWIGEXCODE) Expected<void> {
IExpected ret = new IExpected($imcall, true);$excode
return ret;
}
%typemap(cstype) Expected<void> "IExpected"
おかげで、 私はポストに私の解決策を追加します。あなたはそれほど私の解決策ではありません;-) – CDZ
あなたの解決策を見ています。この問題を修正するだけでIExpectedを作成しなかった場合は、明らかに最適です。 とにかく、私は私の答えに間違いを感じました。 –
別のヒントは、このtypemapが期待して返すすべてのメソッドに対して機能することに気をつけてください。 1つのメソッドに集中するには、メソッド名を指定する必要があります。 –