Commit Graph

71 Commits

Author SHA1 Message Date
Ray Greenwell 4a34d6d2fd Have the actionscript-generating stuff understand TypedArray.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4751 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-07-11 01:20:36 +00:00
Dave Hoover 1bfa35515d Actually do keyword substitution on those freshly headered files.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4736 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-06-14 18:19:38 +00:00
Charlie Groves d9eaa65c23 add @Override to getReceiverCode and dispatchNotification so running genreceiver doesn't step all over Dave's auto @Override adder
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4708 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-11 18:54:25 +00:00
Michael Bayne cf949410ce We don't need to read and write wrap straight up calls to readObject() and
writeObject() as that handles nulls for us (and of course because that's how
it's done when streaming using reflection).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4704 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-09 01:15:28 +00:00
Michael Bayne ef43b9d41a Re-revamp. I may re-re-revamp later to eliminate the reflection based streaming
altogether as that also solves the "Class.getDeclaredFields() is not required
to return fields in declaration order" problem which has been looming. However,
this should work for now.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4701 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-09 00:20:35 +00:00
Michael Bayne 9e0babe2e1 We need the fully qualified class name.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4697 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-07 19:50:05 +00:00
Michael Bayne 2afd7b2e29 Let's actually use them fancy little methods.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4695 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-07 19:19:33 +00:00
Michael Bayne 47273749c8 New plan! We now post-process our class files and add individual public reader
and writer methods for private and protected fields. This will allow us to
preserve the current read and write ordering and in the future when we "fix"
read and write ordering, we won't be fucked by a bunch of generated methods
that force the ordering. (Someone is using Presents on the CLR which turns out
to take advantage of the loose specification of Class.getDeclaredFields() and
not return them in declaration order, yay!).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4692 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-07 18:59:42 +00:00
Michael Bayne ea8bf25c0a Some fiddling to handle classes that extend SimpleStreamableObject.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4688 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-04 22:17:24 +00:00
Michael Bayne 1ec22804da Oops, we need to do things a little differently.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4687 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-04 22:08:04 +00:00
Michael Bayne 410d85d49d A task to generate readObject() and writeObject() for Streamable classes (for
use in non-sandboxed environments). Unfortunately we have to do this for all
Streamable classes, not just the ones that have protected/private members
because we need to be able to call super.readObject() and have that exist even
if our superclass contains only public members.

Doing magic streaming with combinations of classes that do and don't have
readObject() would start to get extremely complicated, particularly if the base
class had readObject() an intermediate class had none, then a later class had
one again. Madness. Doing things with compiled methods will be faster anyway...


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4686 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-04 22:04:50 +00:00
Michael Bayne 77fef0c22e Factored management of "generated fields" and "generated methods" blocks into a
utility class.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4685 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-04 22:02:31 +00:00
Michael Bayne beace3839b Nth time's the charm.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4672 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 16:40:57 +00:00
Michael Bayne 184b621ee9 Let's fix toWriteObject() as well since we are aiming for correctness.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4671 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 16:39:19 +00:00
Michael Bayne 86aae8809a ByteArray must be read with readField().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4670 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 16:35:28 +00:00
Michael Bayne 8f59462972 Handle // @Override // blah comments more robustly.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4669 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 16:35:05 +00:00
Michael Bayne ad8acdbd1d Comment fiddling.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4668 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 02:47:16 +00:00
Michael Bayne 1060f0d160 More jockeying:
- handle // @Override // blah style comments
- deal with fields that are assigned to anonymous inner classes (actually
anything with braces, which would also include array literals).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4667 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 02:38:16 +00:00
Michael Bayne 17b9162881 Widened, honor @ActionScript(omit=true) on classes and constructors, sort of
handle inner class declarations, emphasis on sort of.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4666 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 01:28:10 +00:00
Michael Bayne 94cdf6f2dc Some of this got moved into samskivert.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4628 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-16 20:51:18 +00:00
Michael Bayne 09f0bee0f3 Yet more header patrol.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4602 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-24 00:39:27 +00:00
Ray Greenwell c661845ece We're not going to use this after all.
Not removing, keeping around for reference.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4595 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-22 19:16:16 +00:00
Ray Greenwell 0e6988bdf8 Committed for posterity.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4594 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-22 19:14:11 +00:00
Ray Greenwell b9e9a43fe0 An ant task to generate our own custom resource bundles for actionscript.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4593 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-22 06:05:04 +00:00
Ray Greenwell 54d23f0247 The args from invocation responses will be unwrapped for us automatically.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4570 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 21:50:24 +00:00
Michael Bayne af7e3ca5ae Further improvements to the Java to ActionScript converter.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4499 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-01-06 03:31:31 +00:00
Ray Greenwell 2ad124322d Made actionscript code generation ByteArray-aware.
(ByteArray is a special class for dealing with bytes. It does not extend
the normal Array).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4452 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-15 02:53:12 +00:00
Michael Bayne 499f86715a The class in question here is not an instance of ActionScript.java but rather
an arbitrary Java class which we are converting to ActionScript (the language,
not the class). Hopefully this will appease the compiler.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4419 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-09 19:28:35 +00:00
Par Winzell 8a935f1203 This didn't compile for me without the Generics.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4418 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-09 15:36:52 +00:00
Michael Bayne 7c6cff471b InvocationService.InvocationListener is a special case and can't even go in the
raw imports. Whee!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4417 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-06 01:48:54 +00:00
Michael Bayne 8673055be4 More proper field conversion.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4416 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-06 00:34:03 +00:00
Michael Bayne e532378ce4 We need InvocationService inner-listeners in our raw imports because those
aren't magically in scope for ActionScript, we have to generate import
statements for them.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4414 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 20:38:11 +00:00
Michael Bayne 63c4e10d3c Improved Java to ActionScript field type conversion.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4413 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 20:30:30 +00:00
Michael Bayne c7dd56f845 More juicy auto-generating goodness.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4412 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 02:01:34 +00:00
Michael Bayne e292e04e65 More fiddling and improvements to code generation.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4411 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 01:33:25 +00:00
Michael Bayne 4c2e242261 More jiggery pokery to create blank TypedArray instances of the proper type
when we encounter the pattern "new SomeClass[0]". Le whee!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4410 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 00:30:32 +00:00
Michael Bayne e4438e4070 We need to notice and observe the @ActionScript(name="foo") annotations when
slurping comments from Java source files.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4408 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 00:18:06 +00:00
Michael Bayne 4a9fde7830 Now we have a cool @ActionScript annotation that allows us to specify different
field/method names for the ActionScript version of a class (or to omit
something entirely). This removes the need for special case hackery for
toStringBuilder().

In order for annotations to work, however, we have to require that the
GenActionScriptTask be loaded from the same classloader that loads the classes
to be reflected upon. Before we only reflected on the target classes, never
instantiated them. Annotations are actually instantiated, so we have to be able
to create an instance of the ActionScript.class that is compiled into our
target classes and assign it to a reference that is compiled into
GenActionScriptTask. Beware the complexities of dealing with multiple class
loaders.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4405 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 23:35:41 +00:00
Michael Bayne ed51df0807 Add Hashable for classes that override hashCode(); strip out *Codes interfaces
because we can't do that in ActionScript; properly handle static var and
non-static const.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4404 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 21:25:16 +00:00
Michael Bayne 874d8eaa8f When generating ActionScript streamable classes, use TypedArray for fields but
Array for static constants and method arguments.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4403 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 21:08:12 +00:00
Michael Bayne f4a25e9521 Use TypedArray for array fields when converting a Streamable into ActionScript.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4402 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 21:03:05 +00:00
Michael Bayne ad7ac5aa3e Let's wrapp everything in parens.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4400 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 19:00:23 +00:00
Michael Bayne 9da0e7a4f3 OMG, it like handles the annoying ActionScript not-so-inner classes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4399 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:53:36 +00:00
Michael Bayne d25d5e53f1 We're getting very close to having generated ActionScript Service and Listener
interfaces, and Marshallers for same. The remaining snag has to do with the
annoyance of ActionScript not supporting inner classes, which means that
ChatService.TellListener for example has to become ChatService_TellListener.

The code for generating the Java marshaller knows to add an import for
ChatService if some random invocation service interface happens to reference
ChatService.TellListener, but now it needs to be made to know to add an import
for ChatService_TellListener in ActionScript land and it has to do it in a way
that doesn't fuck up the Java code generation. Whee!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4397 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:12:56 +00:00
Michael Bayne 8015764c61 Don't look now kids, but it's automatic generation of ActionScript code from
Java. Of course this is a very limited translation facility that is mainly
focused on auto-generating Streamable ActionScript classes from their Java
originals, and it doesn't actually convert method bodies, just field and method
declarations, initial values, and such.

Most of our Streamable classes don't have much in the way of real methods, and
the autogenerator will stick new methods in when they show up on the Java side
so at least we'll *know* that they need to be implemented. And the main thing:
readObject and writeObject are in fact implemented by the code generator so at
least we won't be plagued by annoying streaming errors when we change something
on the Java side and forget to change the ActionScript side.

Next up, auto-generating InvocationService interfaces and InvocationMarshaller
implementations in ActionScript and ActionScript versions of DObjects.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4394 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 02:05:15 +00:00
Michael Bayne d7bf98354e Match abstract classes as well.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4393 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 02:01:00 +00:00
Michael Bayne afad7dd444 Added support for streaming List and ArrayList natively. A List will be
unmarshalled into an ArrayList on the receiver. Along the way, I improved
support for generic types as arguments to invocation services (which required
one unfortunate "sweeping" warning suppression, but since this is in generated
code, I think we can be sure it won't be doing anything untoward).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4375 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-19 00:31:50 +00:00
Andrzej Kapolka 9607d33093 Suppress warnings in generated code.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4330 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-17 23:39:21 +00:00
Michael Bayne 8afd0316ec I decided to go hog wild and clean up all the type use in Presents which
required some serious bending and folding of the generic type system, but for
the most part we managed to avoid any mutilating. The gendobj task now
generates properly typed "addToXXX" and "updateXXX" DSet methods based on the
parameterized type of the DSet. This might cause unrecompiled code to break,
but I don't think there are many cases in the base toolkit where people call
DSet adders or updaters. We'll see and I'll add backwards compatibility
versions for cases where we need them to support GG games (everything else we
can just recompile).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4245 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-05 00:55:05 +00:00
Michael Bayne 9e0eac5944 Handle non-Joonix file paths properly.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4197 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-17 05:07:26 +00:00