fun with tuples/argument conversion function

Robert Fraser fraserofthenight at gmail.com
Fri May 11 14:36:13 PDT 2007


Heh; nice thinking there! Thanks!

BCS Wrote:

> Reply to Robert,
> 
> > Hi all,
> > 
> > Right now I'm trying to write a function that, given an arbitrary
> > number of arguments as D types concerts them into intermediate types
> > that will be pasrd to the JNI. For example, given a char[], it will
> > use the JNI to construct the relevant java.lang.string, and pass back
> > the jobject.
> > 
> > The problem is that I can't define two tuples in the function
> > template. For example, I can't write a function:
> > 
> > void dTypesToJavaTypes(InTypes..., OutTypes...)(InTypes inVars, out
> > OutTypes outVars)
> > 
> > The number of in parameters will always be the same as the number of
> > out parameters, and all the types should be known at compile-time, and
> > though I'd rather not force the caller to know the out types, there's
> > probably no way around that. Any suggestions? Maybe an out tuple and
> > in varargs?
> > 
> 
> alternate between inType and outType
> 
> void dTypesToJavaTypes(everything...)(everything stuff)
> {
>   foreach(i, thing, stuff)
>   {
>      static if(i & 0x01 == 0)
>      {
>         use stuff[i] and stuff[i+1]
>      }
>   }
> }
> 
> 
> nested templates:
> template dTypes(InType...)
> {
>    void ToJavaTypes(OutType...)(InTypes..., OutTypes...)(InTypes inVars, 
> out OutTypes outVars)
>    {
>       
>    }
> }
> 
> dTypes!(int).ToJavaTypes!(Jint)(i, ji);
> 
> 



More information about the Digitalmars-d-learn mailing list