java - JNA: how to deal with unkown structs? -


if i'm not mistaken, jna structure builds struct relying on public fields of corresponding java class, should extend structure. problem need pass struct declaration not known beforehand (let's it's known @ runtime). have list of objects, c library expects (reference a) struct. can still use structure class or must build memory object hand, dealing sizes, alignments/packing myself?

for example:

 /* native code */  typedef struct mystruct {      int x;      float y;  }  mystruct;   void dosomething(mystruct * s) {      s->y += s->x;  } 

and in java:

 ...  callfunctionwithst("dosomething",      new object[]{integer.valueof(2),float.valueof(3.0)});  ...   void callfunctionwithst(string funcname, object[] structvals) {      nativelibrary nl = ...      pointer arg = ...  // or memory ... or structure      // build structure      (object objjava  : structvals) {          valjna = convertfromjavatojnaobject(objjava);          // fill structure      }      f.invoke(arg);  }   object convertfromjavatojnaobject(object) {      // assume know how  } 

if don't know content of struct, referred "opaque".

for opaque struct *, can use com.sun.jna.pointer represent structure address.


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -