[x3d-public] X3DJSAIL: Desired chaining methods. Modify return value orprovide new method.
yottzumm at gmail.com
yottzumm at gmail.com
Wed Mar 15 10:20:35 PDT 2017
Once append* is deployed, let me know.
Thanks,
john
Sent from Mail for Windows 10
From: Don Brutzman
Sent: Tuesday, March 14, 2017 1:16 PM
To: yottzumm at gmail.com
Cc: Roy Walmsley; X3D Graphics public mailing list
Subject: Re: X3DJSAIL: Desired chaining methods. Modify return value orprovide new method.
This turns out to be trickier than first suspected. The conflicting issue is that the legacy SAI methods use a pattern that returns void (i.e. no value) instead of a copy of the object for subsequent method pipelining.
So instead of modifying the existing methods, I added "append" methods that take a single child for appending to the subject array.
http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/HAnim/HAnimHumanoidObject.html#method.summary
HAnimHumanoidObject appendJoints(HAnimJoint newValue)
Append single child joints node to array of existing nodes (if any).
HAnimHumanoidObject appendSegments(HAnimSegment newValue)
Append single child segments node to array of existing nodes (if any).
HAnimHumanoidObject appendSites(HAnimSite newValue)
Append single child sites node to array of existing nodes (if any).
HAnimHumanoidObject appendSkeleton(X3DNode newValue)
Append single child skeleton node to array of existing nodes (if any).
HAnimHumanoidObject appendSkin(X3DChildNode newValue)
Append single child skin node to array of existing nodes (if any).
HAnimHumanoidObject appendViewpoints(HAnimSite newValue)
Append single child viewpoints node to array of existing nodes (if any).
Similar methods appear elsewhere for appending a single node to an MFNode array field.
For clarity and to have a consistent pattern (which helps code generators like yours)
we should probably change utility methods like "addChild" to "appendChild" throughout.
What do you think?
Specification considerations noted as follows:
X3dJavaSpecificationChangesAndIssues.txt 14 March 2017
http://www.web3d.org/x3d/stylesheets/java/X3dJavaSpecificationChangesAndIssues.txt
============================================================
3. SFNode/MFNode return types void
Numerous interface return types are void, preventing a method from returning the
current object from returning a copy of itself to permit method pipelining.
Various utility methods have been added (typically named append* instead of add*)
in order to circumvent this restriction.
Need to consider changing SFNode/MFNode return signatures to support pipelining.
Of note is that a method returning a null value is essentially the same as a
void return, so no loss of functionality seems involved with this approach.
============================================================
On 3/10/2017 1:14 PM, yottzumm at gmail.com wrote:
> Maybe all these methods of HAnimHumanoiObject should return an HAnimHumanoidObject for chaining:
>
>
>
> public void addJoints(HAnimJoint newValue)
>
> public void addJoints(X3DNode[] newValue)
>
> public void addSegments(HAnimSegment newValue)
>
> public void addSegments(X3DNode[] newValue)
>
> public void addSites(HAnimSite newValue)
>
> public void addSites(X3DNode[] newValue)
>
> public void addSkeleton(X3DNode newValue)
>
> public void addSkeleton(X3DNode[] newValue)
>
> public void addSkin(X3DChildNode newValue)
>
> public void addSkin(X3DNode[] newValue)
>
> public void addViewpoints(HAnimSite newValue)
>
> public void addViewpoints(X3DNode[] newValue)
>
> John
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu
Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20170315/02faa966/attachment-0001.html>
More information about the x3d-public
mailing list