<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Even with breaking the methods up into a method per object, we are exceeding code limits.   We have to find some way to break up the large arrays.  I am afraid we won’t get too many more files compiled (15? Not sure yet).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I have created a new Java Serializer which outputs one method per object.  Testing now!  This appears to be a half declarative/half imperative style which may be easier to debug.  Not sure yet.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Sent: </b>Friday, March 24, 2017 11:37 PM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: X3DJSAIL: Exceeding Java String limits on setValue? What do wedo?</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Interesting.  Some excerpts:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>===========================================</p><p class=MsoNormal>.addFieldValue(new fieldValueObject()</p><p class=MsoNormal>                .setName("code")</p><p class=MsoNormal>                .setValue("82310 3 0 0 0 6 0 6 0 0 6 0 5 0 6 0 0 6 0 0 6 0 0 6 0 0 6 0 5 0 0 0 6 0 6 0 0 6 0 0</p><p class=MsoNormal>===========================================</p><p class=MsoNormal>.addFieldValue(new fieldValueObject()</p><p class=MsoNormal>                .setName("texCoord")</p><p class=MsoNormal>                addChild(new TextureCoordinateObject()</p><p class=MsoNormal>                                .setPoint(new float[] {0f,0f,0f,0f,0f,0f,0f,0f,0f,0f,0f,0f,0f,0f,0f,-1f,0f,0f,0f,0f,0f,0f,0f,0f,0f,0f,-2f,-1f,0f,0f,0f,0f,0f,0f,0f,0f,-1f,0f,0f,0f,0f,0f,-1f,0f,0f,0f,0f,0f,0f,0f,0f,0f,-1f,0f,0f,0f,0f,0f,</p><p class=MsoNormal>===========================================</p><p class=MsoNormal>.addFieldValue(new fieldValueObject()</p><p class=MsoNormal>                .setName("coord")</p><p class=MsoNormal>                .addChild(new CoordinateObject()</p><p class=MsoNormal>                .setPoint(new float[] {-8f,-9f,4f,-7f,-7f,5f,-3f,0f,5f,8f,7f,-5f,9f,8f,-6f,5f,-2f,</p><p class=MsoNormal>===========================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Some utility methods might help a little here.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>a. for fieldObject and fieldValueObject, setValue methods that accepted a variety of different types beyond strings.  perhaps corresponding getValue methods as well.  This would allow</p><p class=MsoNormal>-  more efficient processing of inputs/outputs, and also</p><p class=MsoNormal>- more efficient storage of initial value arrays in the compiled Java program</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Something like</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                setValueSFInt32</p><p class=MsoNormal>                setValueMFFloat</p><p class=MsoNormal>                setValueMFVec3f</p><p class=MsoNormal>and</p><p class=MsoNormal>                getValueSFVec3f</p><p class=MsoNormal>                getValueMFRotation</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>etc. etc.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Of course, this becomes much more valuable if the code set methods can avoid turning typed arrays into strings before the get methods access them.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>More thought required on this approach.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>b. for floating point arrays, perhaps overloaded methods for double arrays when a float array is expected, avoiding the need for "f" after each value.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>however this could bloat the API quite a lot, also be more confusing.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>so, type conversion of individual complex-type values like that might be best accomplished in a deliberate fashion, so it might be better to concentrate such type-conversion methods in the SF/MF field object classes.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>For example, MFDouble.  existing methods can be found at</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/MFDoubleObject.html#method.summary</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                void       setValue(double newValue)</p><p class=MsoNormal>                                Assign a single double as new array value.</p><p class=MsoNormal>                void       setValue(double[] newValue)</p><p class=MsoNormal>                                Assign a new double[] value to this field.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>perhaps some additional set methods like</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                void       setValue(int newValue)</p><p class=MsoNormal>                                Assign a single int as new array value.</p><p class=MsoNormal>                void       setValue(int[] newValue)</p><p class=MsoNormal>                                Assign a new int[] value to this field.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                void       setValue(float newValue)</p><p class=MsoNormal>                                Assign a single float as new array value.</p><p class=MsoNormal>                void       setValue(float[] newValue)</p><p class=MsoNormal>                                Assign a new float[] value to this field.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The Java compiler must worry about the general case and thus can be pretty picky about type coercion, often requiring the programmer to coerce types explicitly so that no unintended loss of numerical fidelity occurs.  In terms of X3D scene graph, however, the typed precision of each value is strictly defined in the abstract specification, so there is no ambiguity about what the end-state is.  So there might be legitimate room for additions here while avoiding the creation of trapdoors for programmers to fall into.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>comments welcome.  i'll start by looking at setValue utility methods on objects like MFDoubleObject etc.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 3/24/2017 8:25 AM, yottzumm@gmail.com wrote:</p><p class=MsoNormal>> There’s one with floating point numbers which is even bigger.  At least the previous message one is scrollable.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> John</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> *From: *yottzumm@gmail.com <mailto:yottzumm@gmail.com></p><p class=MsoNormal>> *Sent: *Friday, March 24, 2017 11:20 AM</p><p class=MsoNormal>> *To: *Don Brutzman <mailto:brutzman@nps.edu></p><p class=MsoNormal>> *Cc: *X3D Graphics public mailing list <mailto:x3d-public@web3d.org></p><p class=MsoNormal>> *Subject: *RE: X3DJSAIL: Exceeding Java String limits on setValue? What do wedo?</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Attached.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> John</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> *From: *Don Brutzman <mailto:brutzman@nps.edu></p><p class=MsoNormal>> *Sent: *Friday, March 24, 2017 11:17 AM</p><p class=MsoNormal>> *To: *yottzumm@gmail.com <mailto:yottzumm@gmail.com></p><p class=MsoNormal>> *Cc: *X3D Graphics public mailing list <mailto:x3d-public@web3d.org></p><p class=MsoNormal>> *Subject: *Re: X3DJSAIL: Exceeding Java String limits on setValue? What do wedo?</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> On 3/24/2017 5:33 AM, yottzumm@gmail.com wrote:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>> There are a couple of files where setValue exceeds Java string limits.  What should we do?  Would passing an array help?</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> - please share example</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> - ("splitting strings" + " is easy enough" + " for passed parameters")</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> - arrays are definitely more efficient and more compact for compilation and storage</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> - better understanding will likely lead to even further options</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>