[Laszlo-dev] Mixins in swf9

Donald Anderson dda at ddanderson.com
Sat Apr 19 07:50:32 PDT 2008


That seems like a natural extension to
the mechanism.   Can you file a JIRA enhancement
for this, please?  Any thoughts, Tucker?

On Apr 19, 2008, at 10:04 AM, André Bargull wrote:

> But only (public) functions from mixins will be taken for the AS3  
> interface declaration.
> The Flex3 Language Reference says:
>> Unlike ActionScript 2.0, ActionScript 3.0 allows the use of getter  
>> and setter methods in interface definitions.
> So, it'd be supercool if normal var declarations in a mixin will be  
> transformed into getter/setter declarations in the AS3-interface.
> Currently this will trigger an error in the flex compiler, because  
> "nodeType" is unknown for the LzDataNodeMixin interface:
> ---
> var node:LzDataNodeMixin = ...
> Debug.write(node.nodeType);
> ---
>
> If we had getters/setters, this wouldn't be a problem. Or did I miss  
> something?
>
> As an example:
> This Laszlo-Mixin declaration:
> ---
> mixin LzDataNodeMixin {
> public var nodeType:int;
> }
> ---
>
> will be transformed to the following AS3 interface declaration:
> ---
> interface LzDataNodeMixin {
> public function get nodeType() :int;
> public function set nodeType(nodeType:int) :void;
> }
> ---
>
> and an actual implementation would look like this:
> ---
> class $lzsc$mixin$LzDataNodeMixin$LzMiniNode extends LzMiniNode  
> implements LzDataNodeMixin {
> public var nodeType:int = 0;
>
> /* auto generated getter/setter for nodeType */
> public function get nodeType() :int {
>   return this.nodeType;
> }
> public function set nodeType(nodeType:int) :void {
>   this.nodeType = nodeType;
> }
> }
> ---
>
> On 4/19/2008 3:34 PM, André Bargull wrote:
>> Oh, I see. Thank you!
>>
>>
>> On 4/19/2008 2:21 PM, Donald Anderson wrote:
>>> Hi Andre.
>>>
>>> It was implemented for SWF9, and I have examples that work.
>>> The functions appearing in the interface must be declared 'public',
>>> and that is not the case here.
>>>
>>> - Don
>>>
>>> On Apr 19, 2008, at 7:02 AM, André Bargull wrote:
>>>
>>>> Mixins produce only an empty interface declaration for swf9? The  
>>>> description of LPP-5266 says:
>>>>> 1) It should output an `interface`, that consists of the  
>>>>> signature of the mixin, i.e., all the method declarations. This  
>>>>> will make it so `instanceof` can work on mixins.
>>>>
>>>> So (1) wasn't implemented? For example LzDataElementMixin will be  
>>>> transformed to:
>>>>> package {
>>>>> interface LzDataElementMixin {
>>>>> }
>>>>> }
>>>>
>>>> But I've expected:
>>>>> package {
>>>>> interface LzDataElementMixin {
>>>>> function insertBefore (newChild, refChild);
>>>>> function replaceChild (newChild, oldChild);
>>>>> function removeChild (oldChild);
>>>>> [...]
>>>>> }
>>>>> }
>>>>
>>>
>>>
>>> -- 
>>>
>>> Don Anderson
>>> Java/C/C++, Berkeley DB, systems consultant
>>>
>>> voice: 617-547-7881
>>> email: dda at ddanderson.com
>>> www: http://www.ddanderson.com
>>>
>>>
>>>
>>>
>>>
>>


--

Don Anderson
Java/C/C++, Berkeley DB, systems consultant

voice: 617-547-7881
email: dda at ddanderson.com
www: http://www.ddanderson.com







More information about the Laszlo-dev mailing list