I see what your are getting at, and it does seem like a good idea. My question is, will it work? Currently mixin state is replicated in intermediate classes as necessary. Is the compiler going to have to emit getter/setter and (anonymous) state to meet the interface spec? I would think the compiler would complain if you say you implement an interface with getter/setter and you try to implement it by a public var declaration.

On 2008-04-19, at 10:50 EDT, Donald Anderson wrote:
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: [EMAIL PROTECTED]
www: http://www.ddanderson.com








--

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

voice: 617-547-7881
email: [EMAIL PROTECTED]
www: http://www.ddanderson.com






Reply via email to