2016-11-04 6 views
2

@MemberGetter@ValueGetterの注釈の違いはJavaCPPですか?JavaCPP ValueGetterとMemberGetter

どのようなユースケースですか?

私は2つの定数

static const int TRANSPOSE = 0; 
static const int NO_TRANSPOSE = 1; 

Java側でその値を取得するprefferred方法は何である

とCのヘッダファイルがありますか?


UPDATE:私は、JavaCPPジェネレータソースcode読んで行われ、いくつかの実験をし、両方の方法でこれをやってしまったとの両方が機能しているしまし

。ここにJavaサンプルがあります(詳細はgithub projectをご覧ください)。

private static native @MemberGetter @Const int TRANSPOSE(); 
private static native @ValueGetter @Const int NO_TRANSPOSE(); 

しかし、私はまだ違いは何か分かりません。どちらのアノテーションも同じC++コードを生成しました。

JNIEXPORT jint JNICALL Java_com_rtbhouse_model_natives_NeuralNetworkNativeOps_TRANSPOSE(JNIEnv* env, jclass cls) { 
    jint rarg = 0; 
    const int rvalue = (const int)TRANSPOSE; 
    rarg = (jint)rvalue; 
    return rarg; 
} 

JNIEXPORT jint JNICALL Java_com_rtbhouse_model_natives_NeuralNetworkNativeOps_NO_1TRANSPOSE(JNIEnv* env, jclass cls) { 
    jint rarg = 0; 
    const int rvalue = (const int)NO_TRANSPOSE; 
    rarg = (jint)rvalue; 
    return rarg; 
} 

答えて

1

グローバル変数とマクロについては、大きな違いはありません。クラスの場合、ネイティブのget()put()のメソッドのペアは、通常、ゲッターとセッターの値に設定され、ポインタの[]演算子にマッピングされます。通常、配列の要素にアクセスするために使用されます。他のゲッターとセッターのペアは、フィールドにアクセスするためのものです。native int n(); native void n(int n)は、デフォルトでメンバー変数int nのメンバーゲッターとセッターです。 @ValueGetter@ValueSetter@MemberGetter@MemberSetter、および@Function注釈を使用して、デフォルトの動作を変更したり、メソッドに他の名前を使用したりすることができます。

0

これは比較的小さなオープンソースプロジェクトのようです。私は、あなたがそのようなものについてここで質問するときに多くのフィードバックを得ることを期待しません。このように、あなたの疑問を解決するための答えがある:別の研究戦略を使用します。すべての

  1. まず、それがオープンソースです。 githubにアクセスして、そのリポジトリをクローンして使い始めるだけです。ソースコードを読み、それらの注釈を検索し、それらの用途を見つけることができる場合は試してみてください。
  2. その製品のコミュニティに問い合わせるだけです。最も単純な方法です... JavaCPPのメインcontributorに電子メールを書き込んでください。

短いストーリー:答えは、あなたの答えを得るためにはもっと "元気に"する必要があります。

+0

@SamuelAudetからいくつかの回答がありました。たとえば、このクールな投稿です。http://stackoverflow.com/a/10809123/3805131 私は彼がこの質問にも答えることを願っています。そうでなければ、私はさらに行くつもりです:)ありがとう。 – tworec

関連する問題