[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