Function types versus arrays

Howard Lovatt howard.lovatt at iee.org
Thu Feb 18 01:44:53 PST 2010


Hi Neal,

On 17 February 2010 16:26, Neal Gafter <neal at gafter.com> wrote:
> Howard-
>
> Can you please show the implementation of
> _Array_From_void_throws_ChangedCharSetException_SAXParseException_UnkownHostException__To_void_throws_AWTException_IOException_SAXException.instance?

Sure:

  public final static class
_Array_From_void_throws_ChangedCharSetException_UnknownHostException__To_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException
{
    public static
_Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException[]
instance(final _Callable_void_throws_ChangedCharSetException_UnknownHostException[]
from) {
      if (from == null) { return null; }
      final _Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException[]
to = new _Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException[from.length];
      for (int i = 0; i < from.length; i++) { to[i] =
_From_void_throws_ChangedCharSetException_UnkownHostException__To_void_throws_ChangedCharSetException_SAXParseException_UnkownHostException.instance(from[i]);
}
      return to;
    }
  }

  public final static class
_From_void_throws_ChangedCharSetException_UnkownHostException__To_void_throws_ChangedCharSetException_SAXParseException_UnkownHostException
              extends
_Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException
implements Wrapper {
    private final
_Callable_void_throws_ChangedCharSetException_UnknownHostException f;
    private _From_void_throws_ChangedCharSetException_UnkownHostException__To_void_throws_ChangedCharSetException_SAXParseException_UnkownHostException(final
_Callable_void_throws_ChangedCharSetException_UnknownHostException f)
{ this.f = f; }
    public static
_From_void_throws_ChangedCharSetException_UnkownHostException__To_void_throws_ChangedCharSetException_SAXParseException_UnkownHostException
instance(final _Callable_void_throws_ChangedCharSetException_UnknownHostException
from) {
      if (from == null) { return null; }
      final _Callable_void_throws_ChangedCharSetException_UnknownHostException
f = (_Callable_void_throws_ChangedCharSetException_UnknownHostException)Wrappers.unWrap(from);
      return new
_From_void_throws_ChangedCharSetException_UnkownHostException__To_void_throws_ChangedCharSetException_SAXParseException_UnkownHostException(f);
    }
    @Override public void callPrimitive() throws
ChangedCharSetException, SAXParseException, UnknownHostException {
f.callPrimitive(); }
    @Override public Object getWrappee() { return f; }
    @Override public int hashCode() { return f.hashCode(); }
  }

 public final static class
_Array_From_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException__To_void_throws_AWTException_IOException_SAXException
{
    public static
_Callable_void_throws_AWTException_IOException_SAXException[]
instance(final _Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException[]
from) {
      if (from == null) { return null; }
      final _Callable_void_throws_AWTException_IOException_SAXException[]
to = new _Callable_void_throws_AWTException_IOException_SAXException[from.length];
      for (int i = 0; i < from.length; i++) { to[i] =
_From_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException__To_void_throws_AWTException_IOException_SAXException.instance(from[i]);
}
      return to;
    }
  }

  public final static class
_From_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException__To_void_throws_AWTException_IOException_SAXException
              extends
_Callable_void_throws_AWTException_IOException_SAXException implements
Wrapper {
    private final
_Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException
f;
    private _From_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException__To_void_throws_AWTException_IOException_SAXException(final
_Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException
f) { this.f = f; }
    public static
_From_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException__To_void_throws_AWTException_IOException_SAXException
instance(final _Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException
from) {
      if (from == null) { return null; }
      final _Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException
f = (_Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException)Wrappers.unWrap(from);
      return new
_From_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException__To_void_throws_AWTException_IOException_SAXException(f);
    }
    @Override public void callPrimitive() throws AWTException,
IOException, SAXException { f.callPrimitive(); }
    @Override public Object getWrappee() { return f; }
    @Override public int hashCode() { return f.hashCode(); }
  }

  // #void()(throws IOException, AWTException, SAXException)
  abstract static class
_Callable_void_throws_AWTException_IOException_SAXException
          implements _Callable_0_throws_1<Void, Exception> {
   public Void call() throws AWTException, IOException, SAXException {
     callPrimitive();
     return null;
   }
   public abstract void callPrimitive() throws AWTException,
IOException, SAXException;
  }

  // #void()(throws ChangedCharSetException, UnknownHostException,
SAXParseException)
  abstract static class
_Callable_void_throws_ChangedCharSetException_SAXParseException_UnknownHostException
          implements _Callable_0_throws_1<Void, Exception> {
    public Void call() throws ChangedCharSetException,
SAXParseException, UnknownHostException {
      callPrimitive();
      return null;
    }
    public abstract void callPrimitive() throws
ChangedCharSetException, SAXParseException, UnknownHostException;
  }

  // #void()(throws ChangedCharSetException, UnknownHostException)
  abstract static class
_Callable_void_throws_ChangedCharSetException_UnknownHostException
          implements _Callable_0_throws_1<Void, IOException> {
    public Void call() throws ChangedCharSetException, UnknownHostException {
      callPrimitive();
      return null;
    }
    public abstract void callPrimitive() throws
ChangedCharSetException, UnknownHostException;
  }

  // Generics can't declare an arbitrary number of exceptions (incl.
0), therefore use
  // _Callable_0_throws_1<Void, IOException> which throws IOException
  public interface _Callable_0_throws_1<R, E extends Exception> { R
call() throws E; }


Cheers,

 -- Howard.

>
> Cheers,
> Neal
>
> On Tue, Feb 16, 2010 at 8:58 PM, Howard Lovatt <howard.lovatt at iee.org> wrote:
>> (the above translation is an extension of sections 5.2.2, 5.4, and 4.4) and:
>>
>>>   #void()(throws IOException, AWTException, SAXException)[] array2 = array1;
>>
>> becomes:
>>
>> _Callable_void_throws_AWTException_IOException_SAXException[] array2 =
>> _Array_From_void_throws_ChangedCharSetException_SAXParseException_UnkownHostException__To_void_throws_AWTException_IOException_SAXException.instance(
>> array1 );
>
> ______________________________________________________________________
> This email has been scanned by the MessageLabs Email Security System.
> For more information please visit http://www.messagelabs.com/email
> ______________________________________________________________________
>



-- 
  -- Howard.


More information about the lambda-dev mailing list