[Laszlo-dev] For Review: Change 20080320-ptw-4 Summary: Redefine LzCursor using 'modern O-O'
Donald Anderson
dda at ddanderson.com
Sat Mar 22 15:09:49 PDT 2008
Not approved.
1) Tried this in SWF9 doing some hand coding, and can't get around
this compile error:
/private/tmp/lzswf9/lzgen64824/SingletonClass.as(6): col: 37 Error:
Return value must be undefined.
return SingletonClass.singleton;
^
So it does appear that 'new' is behaving like C++ or Java - the object
is
created, and the value of the reference is determined before the
constructor is called.
Maybe use a pattern like this:
class SingletonClass {
private static var singleton:SingletonClass = new SingletonClass();
public static function instance():SingletonClass { return
singleton; }
function SingletonClass() { if (singleton != null) throw "Use
SingletonClass.instance() instead of new"}
}
usage: var s = SingletonClass.instance();
I added the throw because constructors cannot be marked private (at
least flex gives an error).
2) Here's how you would do a link to another page:
* @shortdesc Alias for <link
linkend="LzCursorService">LzCursorService.LzCursor</link>
<link> allows/requires you to craft your own link text, e.g.
LzCursorServer.LzCursor .
As an alternative, you may use simply <xref linked="LzCursorService" /
>, where the label
of the link is determined for you (in this case it would be
LzCursorService).
FWIW, I tried to also put such a link in the description of a variable:
/** The cursor service. Also available as the global <link
linked="LzCursor"/>LzCursor</link>.
* @type LzCursorService
*/
static var LzCursor:LzCursorService;
but it doesn't work, and appears to lose that whole javadoc.
Not sure what the difference is, but <link> apparently can be
used in the description of a class as well as its @shortdesc.
Haven't gotten a workaround for that one yet.
On Mar 20, 2008, at 4:42 PM, P T Withington wrote:
> [This is really an experiment to see how we might implement our
> singleton objects and whether the doc tools can do a better job with
> this pattern. The compiler/doc-tools need to be smartened to
> understand `interface` and `implements` to really do this right.]
>
> Change 20080320-ptw-4 by ptw at dueling-banjos.local on 2008-03-20
> 16:34:26 EDT
> in /Users/ptw/OpenLaszlo/ringding-clean/docs/src
> for http://svn.openlaszlo.org/openlaszlo/trunk/docs/src
>
> Summary: Redefine LzCursor using 'modern O-O'
>
> Bugs Fixed:
> LPP-5617 'LzCursor reference page problems' (partial)
>
> Technical Reviewer: dda (pending)
> Doc Reviewer: lou (pending)
>
> Details:
> Redefine LzCursor as a global alias for LzCursorService.LzCursor
> which is a singleton class implementing LzCursorInterface by
> trampolining to LzMouseKernel. This was all being done in a
> hand-crafted Object before, but the doc tools couldn't grok that
> at all.
>
> Tests:
> LzCursor still works. The documentation is different.
>
> Files:
> M WEB-INF/lps/lfc/services/LzCursor.lzs
>
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20080320-ptw-4.tar
--
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