On 27 Aug 2011, at 00:16, Sven Barth wrote:

> There is a class AVView, a class AVViewGroup and an interface AVViewManager. 
> AVViewGroup extends AVView and implements AVViewGroup. Also it defines a 
> nested class InnerLayoutParam.
> 
> So far all is ok, but now the problematic part:
> AVView and AViewManager both contain a parameter and/or result value of type 
> AVViewGroup.InnerLayoutParam.
> 
> Is there a way to solve this quite nasty circle?

Not in a clean way. The only way you can do it is by removing 
AVViewGroup.InnerLayoutParam from the AVViewGroup class and declare it as an 
empty class up front (empty because I don't think it will be handled correctly 
if you add methods etc to it and try to call those later):

  AVViewGroup_InnerLayoutParam = class external 
'Android.V_add_rest_of_package_name' name 'ViewGroup$Layoutparam' 
(parentclass,parentintf1,parentintf2, ...)
  end;

And then replace all references to AVViewGroup.InnerLayoutParam with references 
to AVViewGroup_InnerLayoutParam.

It's a limitation of the Pascal language compared to Java (no way to refer to 
inner classes before the parent class has been defined), and even if we would 
choose to lift it somehow (e.g. by allowing something like 
"AVViewGroup.InnerLayoutParam = class;" as a top level declaration) I'm not 
immediately sure how we to implement that efficiently in the compiler.


Jonas_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to