//
// Copyright (c) 2008, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 17 Nov 08 Brian Frank Creation
//
using compiler
**
** JavaSlot is the implementation of CSlot for a Java member.
**
abstract class JavaSlot : CSlot
{
override CNamespace ns() { return parent.ns }
override CType parent
override Str name
override once Str qname() { return parent.qname + "." + name }
override Int flags
override Bool isForeign() { return true }
** linked list of overloaded methods (first one
** may be field or method)
JavaMethod? next
}
**************************************************************************
** JavaField
**************************************************************************
**
** JavaField is the implementation of CField for a Java field.
**
class JavaField : JavaSlot, CField
{
override CType fieldType
override CMethod? getter
override CMethod? setter
override Str signature() { return "$fieldType $name" }
override CType inheritedReturnType() { return fieldType }
}
**************************************************************************
** JavaMethod
**************************************************************************
**
** JavaMethod is the implementation of CMethod for a Java method.
**
class JavaMethod : JavaSlot, CMethod
{
override CType parent
override CType returnType
override CParam[] params
override Bool isGeneric
override Str signature() { return "$returnType $name(" + params.join(",") + ")" }
override CType inheritedReturnType() { return returnType }
Void setParamTypes(CType[] types)
{
params = types.map |CType t, Int i->CParam|
{
return JavaParam("p$i", t)
}
}
}
**************************************************************************
** JavaParam
**************************************************************************
**
** JavaParam is the implementation of CParam for a Java method parameter.
**
class JavaParam : CParam
{
new make(Str n, CType t) { name = n; paramType = t }
override Str name
override Bool hasDefault
override CType paramType
override Str toStr() { return "$paramType $name" }
}