EO: insert/extract 'list()' and '$+1' is now handled 21/14121/3
Clément DAVID [Tue, 25 Mar 2014 10:57:54 +0000 (11:57 +0100)]
/!\ This break API for PIMS and others

Change-Id: I24d04f55e16563e120710363b925cd7f33e525de

14 files changed:
scilab/.gitignore
scilab/modules/external_objects/includes/ScilabAbstractEnvironmentWrapper.hxx
scilab/modules/external_objects/sci_gateway/c/gw_external_objects.c
scilab/modules/external_objects/sci_gateway/external_objects_gateway.xml
scilab/modules/external_objects/src/cpp/ScilabObjects.cpp
scilab/modules/external_objects_java/src/cpp/ScilabJavaEnvironmentWrapper.cpp
scilab/modules/external_objects_java/src/cpp/ScilabJavaEnvironmentWrapper.hxx
scilab/modules/external_objects_java/src/java/org/scilab/modules/external_objects_java/ScilabJavaObject.java
scilab/modules/external_objects_java/src/jni/ScilabJavaObject.cpp
scilab/modules/external_objects_java/src/jni/ScilabJavaObject.hxx
scilab/modules/external_objects_java/src/jni/ScilabObjects.giws.xml
scilab/modules/external_objects_java/tests/nonreg_tests/bug_13047.dia.ref
scilab/modules/external_objects_java/tests/unit_tests/dollar.dia.ref [new file with mode: 0644]
scilab/modules/external_objects_java/tests/unit_tests/dollar.tst [new file with mode: 0644]

index 6345781..9ab1d56 100644 (file)
@@ -106,6 +106,7 @@ workspace/
 .classpath
 .project
 .cproject
+.settings/
 
 # MacOS files
 .DS_Store
index 3e64807..e98f0da 100644 (file)
@@ -130,6 +130,10 @@ public:
 
     virtual int wrapBool(int * x, int xSize, int xSizeCol, const bool isRef) const = 0;
 
+    virtual int wrapList(int len, const int * const ids) const = 0;
+
+    virtual int wrapPoly(int len, const double * const coefs) const = 0;
+
     /**
      * Unwrap the external object with the given id into a double
      * @param id the value to wrap
index 67afcc6..8d5db66 100644 (file)
@@ -29,6 +29,8 @@ static gw_generic_table Tab[] =
     {sci_percent_foo_i_EObj, "%s_i__EObj"},
     {sci_percent_foo_i_EObj, "%b_i__EObj"},
     {sci_percent_foo_i_EObj, "%i_i__EObj"},
+    {sci_percent_foo_i_EObj, "%l_i__EObj"},
+    {sci_percent_foo_i_EObj, "%_EObj_i__EObj"},
     {sci_percent_EObj_a_foo, "%_EObj_a_c"},
     {sci_percent_EObj_a_foo, "%_EObj_a_s"},
     {sci_percent_EObj_a_foo, "%_EObj_a_b"},
index 6dcda83..8639994 100644 (file)
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2012 - Scilab Enterprises - Calixte Denizet
- * 
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at    
- * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
- *
- -->
+<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
+<!--
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* 
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution.  The terms
+* are also available at    
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+-->
 <GATEWAY name="external_objects">
-    
     <!--
- Scilab
- Interface description. In this file, we define the list of the function which
- will be available into Scilab and the link to the "native" function.
+Scilab Interface description.
+In this file, we define the list of the function which will be available into Scilab and the link to the "native" function.
 
- gatewayId is the position in the hashtable 'Interfaces' defined in the
- file SCI/modules/core/src/c/callinterf.h
+gatewayId is the position in the hashtable 'Interfaces' defined in the file SCI/modules/core/src/c/callinterf.h
 
- primitiveId is the position in the hashtable '<module>Table Tab[]' defined
- in the file modules/<module>/sci_gateway/c/gw_<module>.c
+primitiveId is the position in the hashtable '<module>Table Tab[]' defined in the file modules/<module>/sci_gateway/c/gw_<module>.c
 
- primitiveName is the name of the Scilab function
+primitiveName is the name of the Scilab function
 
- Don't touch if you do not know what you are doing
+Don't touch if you do not know what you are doing
 
 -->
-    <PRIMITIVE gatewayId="71" primitiveId="1" primitiveName="%_EObj_e" />
-    <PRIMITIVE gatewayId="71" primitiveId="2" primitiveName="%_EObj_6" />
-    <PRIMITIVE gatewayId="71" primitiveId="3" primitiveName="%_EClass_6" />
-    <PRIMITIVE gatewayId="71" primitiveId="4" primitiveName="%_EObj_p" />
-    <PRIMITIVE gatewayId="71" primitiveId="5" primitiveName="%_EClass_e" />
-    <PRIMITIVE gatewayId="71" primitiveId="6" primitiveName="%_EClass_p" />
-    <PRIMITIVE gatewayId="71" primitiveId="7" primitiveName="%c_i__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="8" primitiveName="%s_i__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="9" primitiveName="%b_i__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="10" primitiveName="%i_i__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="11" primitiveName="%_EObj_a_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="12" primitiveName="%_EObj_a_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="13" primitiveName="%_EObj_a_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="14" primitiveName="%_EObj_a_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="15" primitiveName="%_EObj_a__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="16" primitiveName="%c_a__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="17" primitiveName="%s_a__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="18" primitiveName="%b_a__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="19" primitiveName="%i_a__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="20" primitiveName="%_EObj_d_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="21" primitiveName="%_EObj_d_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="22" primitiveName="%_EObj_d_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="23" primitiveName="%_EObj_d_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="24" primitiveName="%_EObj_d__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="25" primitiveName="%c_d__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="26" primitiveName="%s_d__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="27" primitiveName="%b_d__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="28" primitiveName="%i_d__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="29" primitiveName="%_EObj_g_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="30" primitiveName="%_EObj_g_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="31" primitiveName="%_EObj_g_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="32" primitiveName="%_EObj_g_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="33" primitiveName="%_EObj_g__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="34" primitiveName="%c_g__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="35" primitiveName="%s_g__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="36" primitiveName="%b_g__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="37" primitiveName="%i_g__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="38" primitiveName="%_EObj_h_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="39" primitiveName="%_EObj_h_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="40" primitiveName="%_EObj_h_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="41" primitiveName="%_EObj_h_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="42" primitiveName="%_EObj_h__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="43" primitiveName="%c_h__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="44" primitiveName="%s_h__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="45" primitiveName="%b_h__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="46" primitiveName="%i_h__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="47" primitiveName="%_EObj_j_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="48" primitiveName="%_EObj_j_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="49" primitiveName="%_EObj_j_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="50" primitiveName="%_EObj_j_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="51" primitiveName="%_EObj_j__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="52" primitiveName="%c_j__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="53" primitiveName="%s_j__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="54" primitiveName="%b_j__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="55" primitiveName="%i_j__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="56" primitiveName="%_EObj_k_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="57" primitiveName="%_EObj_k_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="58" primitiveName="%_EObj_k_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="59" primitiveName="%_EObj_k_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="60" primitiveName="%_EObj_k__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="61" primitiveName="%c_k__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="62" primitiveName="%s_k__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="63" primitiveName="%b_k__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="64" primitiveName="%i_k__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="65" primitiveName="%_EObj_l_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="66" primitiveName="%_EObj_l_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="67" primitiveName="%_EObj_l_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="68" primitiveName="%_EObj_l_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="69" primitiveName="%_EObj_l__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="70" primitiveName="%c_l__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="71" primitiveName="%s_l__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="72" primitiveName="%b_l__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="73" primitiveName="%i_l__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="74" primitiveName="%_EObj_m_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="75" primitiveName="%_EObj_m_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="76" primitiveName="%_EObj_m_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="77" primitiveName="%_EObj_m_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="78" primitiveName="%_EObj_m__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="79" primitiveName="%c_m__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="80" primitiveName="%s_m__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="81" primitiveName="%b_m__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="82" primitiveName="%i_m__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="83" primitiveName="%_EObj_n_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="84" primitiveName="%_EObj_n_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="85" primitiveName="%_EObj_n_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="86" primitiveName="%_EObj_n_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="87" primitiveName="%_EObj_n__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="88" primitiveName="%c_n__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="89" primitiveName="%s_n__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="90" primitiveName="%b_n__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="91" primitiveName="%i_n__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="92" primitiveName="%_EObj_o_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="93" primitiveName="%_EObj_o_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="94" primitiveName="%_EObj_o_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="95" primitiveName="%_EObj_o_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="96" primitiveName="%_EObj_o__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="97" primitiveName="%c_o__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="98" primitiveName="%s_o__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="99" primitiveName="%b_o__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="100" primitiveName="%i_o__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="101" primitiveName="%_EObj_p_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="102" primitiveName="%_EObj_p_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="103" primitiveName="%_EObj_p_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="104" primitiveName="%_EObj_p_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="105" primitiveName="%_EObj_p__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="106" primitiveName="%c_p__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="107" primitiveName="%s_p__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="108" primitiveName="%b_p__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="109" primitiveName="%i_p__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="110" primitiveName="%_EObj_q_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="111" primitiveName="%_EObj_q_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="112" primitiveName="%_EObj_q_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="113" primitiveName="%_EObj_q_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="114" primitiveName="%_EObj_q__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="115" primitiveName="%c_q__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="116" primitiveName="%s_q__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="117" primitiveName="%b_q__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="118" primitiveName="%i_q__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="119" primitiveName="%_EObj_r_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="120" primitiveName="%_EObj_r_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="121" primitiveName="%_EObj_r_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="122" primitiveName="%_EObj_r_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="123" primitiveName="%_EObj_r__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="124" primitiveName="%c_r__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="125" primitiveName="%s_r__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="126" primitiveName="%b_r__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="127" primitiveName="%i_r__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="128" primitiveName="%_EObj_s_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="129" primitiveName="%_EObj_s_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="130" primitiveName="%_EObj_s_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="131" primitiveName="%_EObj_s_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="132" primitiveName="%_EObj_s__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="133" primitiveName="%c_s__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="134" primitiveName="%s_s__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="135" primitiveName="%b_s__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="136" primitiveName="%i_s__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="137" primitiveName="%_EObj_x_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="138" primitiveName="%_EObj_x_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="139" primitiveName="%_EObj_x_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="140" primitiveName="%_EObj_x_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="141" primitiveName="%_EObj_x__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="142" primitiveName="%c_x__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="143" primitiveName="%s_x__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="144" primitiveName="%b_x__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="145" primitiveName="%i_x__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="146" primitiveName="%_EObj_y_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="147" primitiveName="%_EObj_y_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="148" primitiveName="%_EObj_y_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="149" primitiveName="%_EObj_y_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="150" primitiveName="%_EObj_y__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="151" primitiveName="%c_y__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="152" primitiveName="%s_y__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="153" primitiveName="%b_y__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="154" primitiveName="%i_y__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="155" primitiveName="%_EObj_z_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="156" primitiveName="%_EObj_z_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="157" primitiveName="%_EObj_z_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="158" primitiveName="%_EObj_z_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="159" primitiveName="%_EObj_z__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="160" primitiveName="%c_z__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="161" primitiveName="%s_z__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="162" primitiveName="%b_z__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="163" primitiveName="%i_z__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="164" primitiveName="%_EObj_1_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="165" primitiveName="%_EObj_1_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="166" primitiveName="%_EObj_1_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="167" primitiveName="%_EObj_1_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="168" primitiveName="%_EObj_1__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="169" primitiveName="%c_1__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="170" primitiveName="%s_1__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="171" primitiveName="%b_1__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="172" primitiveName="%i_1__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="173" primitiveName="%_EObj_2_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="174" primitiveName="%_EObj_2_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="175" primitiveName="%_EObj_2_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="176" primitiveName="%_EObj_2_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="177" primitiveName="%_EObj_2__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="178" primitiveName="%c_2__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="179" primitiveName="%s_2__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="180" primitiveName="%b_2__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="181" primitiveName="%i_2__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="182" primitiveName="%_EObj_3_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="183" primitiveName="%_EObj_3_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="184" primitiveName="%_EObj_3_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="185" primitiveName="%_EObj_3_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="186" primitiveName="%_EObj_3__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="187" primitiveName="%c_3__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="188" primitiveName="%s_3__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="189" primitiveName="%b_3__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="190" primitiveName="%i_3__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="191" primitiveName="%_EObj_4_c" />
-    <PRIMITIVE gatewayId="71" primitiveId="192" primitiveName="%_EObj_4_s" />
-    <PRIMITIVE gatewayId="71" primitiveId="193" primitiveName="%_EObj_4_b" />
-    <PRIMITIVE gatewayId="71" primitiveId="194" primitiveName="%_EObj_4_i" />
-    <PRIMITIVE gatewayId="71" primitiveId="195" primitiveName="%_EObj_4__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="196" primitiveName="%c_4__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="197" primitiveName="%s_4__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="198" primitiveName="%b_4__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="199" primitiveName="%i_4__EObj" />
-    <PRIMITIVE gatewayId="71" primitiveId="200" primitiveName="%_EObj_0" />
-    <PRIMITIVE gatewayId="71" primitiveId="201" primitiveName="%_EObj_5" />
-    <PRIMITIVE gatewayId="71" primitiveId="202" primitiveName="%_EObj_t" />
-    <PRIMITIVE gatewayId="71" primitiveId="203" primitiveName="invoke_lu" />
-    <PRIMITIVE gatewayId="71" primitiveId="204" primitiveName="!!_invoke_" />
-    <PRIMITIVE gatewayId="71" primitiveId="205" primitiveName="%_EObj_disp" />
+    <PRIMITIVE gatewayId="71" primitiveId="1" primitiveName="%_EObj_e"/>
+    <PRIMITIVE gatewayId="71" primitiveId="2" primitiveName="%_EObj_6"/>
+    <PRIMITIVE gatewayId="71" primitiveId="3" primitiveName="%_EClass_6"/>
+    <PRIMITIVE gatewayId="71" primitiveId="4" primitiveName="%_EObj_p"/>
+    <PRIMITIVE gatewayId="71" primitiveId="5" primitiveName="%_EClass_e"/>
+    <PRIMITIVE gatewayId="71" primitiveId="6" primitiveName="%_EClass_p"/>
+    <PRIMITIVE gatewayId="71" primitiveId="7" primitiveName="%c_i__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="8" primitiveName="%s_i__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="9" primitiveName="%b_i__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="10" primitiveName="%i_i__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="11" primitiveName="%l_i__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="12" primitiveName="%_EObj_i__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="13" primitiveName="%_EObj_a_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="14" primitiveName="%_EObj_a_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="15" primitiveName="%_EObj_a_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="16" primitiveName="%_EObj_a_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="17" primitiveName="%_EObj_a__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="18" primitiveName="%c_a__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="19" primitiveName="%s_a__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="20" primitiveName="%b_a__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="21" primitiveName="%i_a__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="22" primitiveName="%_EObj_d_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="23" primitiveName="%_EObj_d_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="24" primitiveName="%_EObj_d_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="25" primitiveName="%_EObj_d_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="26" primitiveName="%_EObj_d__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="27" primitiveName="%c_d__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="28" primitiveName="%s_d__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="29" primitiveName="%b_d__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="30" primitiveName="%i_d__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="31" primitiveName="%_EObj_g_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="32" primitiveName="%_EObj_g_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="33" primitiveName="%_EObj_g_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="34" primitiveName="%_EObj_g_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="35" primitiveName="%_EObj_g__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="36" primitiveName="%c_g__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="37" primitiveName="%s_g__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="38" primitiveName="%b_g__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="39" primitiveName="%i_g__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="40" primitiveName="%_EObj_h_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="41" primitiveName="%_EObj_h_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="42" primitiveName="%_EObj_h_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="43" primitiveName="%_EObj_h_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="44" primitiveName="%_EObj_h__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="45" primitiveName="%c_h__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="46" primitiveName="%s_h__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="47" primitiveName="%b_h__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="48" primitiveName="%i_h__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="49" primitiveName="%_EObj_j_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="50" primitiveName="%_EObj_j_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="51" primitiveName="%_EObj_j_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="52" primitiveName="%_EObj_j_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="53" primitiveName="%_EObj_j__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="54" primitiveName="%c_j__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="55" primitiveName="%s_j__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="56" primitiveName="%b_j__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="57" primitiveName="%i_j__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="58" primitiveName="%_EObj_k_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="59" primitiveName="%_EObj_k_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="60" primitiveName="%_EObj_k_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="61" primitiveName="%_EObj_k_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="62" primitiveName="%_EObj_k__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="63" primitiveName="%c_k__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="64" primitiveName="%s_k__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="65" primitiveName="%b_k__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="66" primitiveName="%i_k__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="67" primitiveName="%_EObj_l_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="68" primitiveName="%_EObj_l_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="69" primitiveName="%_EObj_l_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="70" primitiveName="%_EObj_l_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="71" primitiveName="%_EObj_l__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="72" primitiveName="%c_l__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="73" primitiveName="%s_l__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="74" primitiveName="%b_l__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="75" primitiveName="%i_l__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="76" primitiveName="%_EObj_m_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="77" primitiveName="%_EObj_m_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="78" primitiveName="%_EObj_m_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="79" primitiveName="%_EObj_m_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="80" primitiveName="%_EObj_m__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="81" primitiveName="%c_m__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="82" primitiveName="%s_m__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="83" primitiveName="%b_m__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="84" primitiveName="%i_m__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="85" primitiveName="%_EObj_n_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="86" primitiveName="%_EObj_n_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="87" primitiveName="%_EObj_n_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="88" primitiveName="%_EObj_n_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="89" primitiveName="%_EObj_n__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="90" primitiveName="%c_n__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="91" primitiveName="%s_n__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="92" primitiveName="%b_n__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="93" primitiveName="%i_n__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="94" primitiveName="%_EObj_o_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="95" primitiveName="%_EObj_o_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="96" primitiveName="%_EObj_o_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="97" primitiveName="%_EObj_o_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="98" primitiveName="%_EObj_o__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="99" primitiveName="%c_o__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="100" primitiveName="%s_o__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="101" primitiveName="%b_o__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="102" primitiveName="%i_o__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="103" primitiveName="%_EObj_p_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="104" primitiveName="%_EObj_p_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="105" primitiveName="%_EObj_p_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="106" primitiveName="%_EObj_p_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="107" primitiveName="%_EObj_p__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="108" primitiveName="%c_p__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="109" primitiveName="%s_p__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="110" primitiveName="%b_p__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="111" primitiveName="%i_p__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="112" primitiveName="%_EObj_q_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="113" primitiveName="%_EObj_q_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="114" primitiveName="%_EObj_q_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="115" primitiveName="%_EObj_q_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="116" primitiveName="%_EObj_q__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="117" primitiveName="%c_q__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="118" primitiveName="%s_q__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="119" primitiveName="%b_q__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="120" primitiveName="%i_q__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="121" primitiveName="%_EObj_r_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="122" primitiveName="%_EObj_r_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="123" primitiveName="%_EObj_r_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="124" primitiveName="%_EObj_r_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="125" primitiveName="%_EObj_r__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="126" primitiveName="%c_r__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="127" primitiveName="%s_r__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="128" primitiveName="%b_r__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="129" primitiveName="%i_r__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="130" primitiveName="%_EObj_s_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="131" primitiveName="%_EObj_s_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="132" primitiveName="%_EObj_s_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="133" primitiveName="%_EObj_s_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="134" primitiveName="%_EObj_s__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="135" primitiveName="%c_s__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="136" primitiveName="%s_s__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="137" primitiveName="%b_s__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="138" primitiveName="%i_s__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="139" primitiveName="%_EObj_x_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="140" primitiveName="%_EObj_x_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="141" primitiveName="%_EObj_x_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="142" primitiveName="%_EObj_x_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="143" primitiveName="%_EObj_x__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="144" primitiveName="%c_x__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="145" primitiveName="%s_x__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="146" primitiveName="%b_x__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="147" primitiveName="%i_x__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="148" primitiveName="%_EObj_y_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="149" primitiveName="%_EObj_y_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="150" primitiveName="%_EObj_y_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="151" primitiveName="%_EObj_y_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="152" primitiveName="%_EObj_y__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="153" primitiveName="%c_y__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="154" primitiveName="%s_y__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="155" primitiveName="%b_y__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="156" primitiveName="%i_y__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="157" primitiveName="%_EObj_z_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="158" primitiveName="%_EObj_z_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="159" primitiveName="%_EObj_z_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="160" primitiveName="%_EObj_z_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="161" primitiveName="%_EObj_z__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="162" primitiveName="%c_z__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="163" primitiveName="%s_z__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="164" primitiveName="%b_z__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="165" primitiveName="%i_z__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="166" primitiveName="%_EObj_1_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="167" primitiveName="%_EObj_1_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="168" primitiveName="%_EObj_1_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="169" primitiveName="%_EObj_1_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="170" primitiveName="%_EObj_1__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="171" primitiveName="%c_1__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="172" primitiveName="%s_1__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="173" primitiveName="%b_1__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="174" primitiveName="%i_1__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="175" primitiveName="%_EObj_2_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="176" primitiveName="%_EObj_2_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="177" primitiveName="%_EObj_2_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="178" primitiveName="%_EObj_2_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="179" primitiveName="%_EObj_2__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="180" primitiveName="%c_2__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="181" primitiveName="%s_2__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="182" primitiveName="%b_2__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="183" primitiveName="%i_2__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="184" primitiveName="%_EObj_3_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="185" primitiveName="%_EObj_3_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="186" primitiveName="%_EObj_3_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="187" primitiveName="%_EObj_3_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="188" primitiveName="%_EObj_3__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="189" primitiveName="%c_3__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="190" primitiveName="%s_3__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="191" primitiveName="%b_3__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="192" primitiveName="%i_3__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="193" primitiveName="%_EObj_4_c"/>
+    <PRIMITIVE gatewayId="71" primitiveId="194" primitiveName="%_EObj_4_s"/>
+    <PRIMITIVE gatewayId="71" primitiveId="195" primitiveName="%_EObj_4_b"/>
+    <PRIMITIVE gatewayId="71" primitiveId="196" primitiveName="%_EObj_4_i"/>
+    <PRIMITIVE gatewayId="71" primitiveId="197" primitiveName="%_EObj_4__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="198" primitiveName="%c_4__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="199" primitiveName="%s_4__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="200" primitiveName="%b_4__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="201" primitiveName="%i_4__EObj"/>
+    <PRIMITIVE gatewayId="71" primitiveId="202" primitiveName="%_EObj_0"/>
+    <PRIMITIVE gatewayId="71" primitiveId="203" primitiveName="%_EObj_5"/>
+    <PRIMITIVE gatewayId="71" primitiveId="204" primitiveName="%_EObj_t"/>
+    <PRIMITIVE gatewayId="71" primitiveId="205" primitiveName="invoke_lu"/>
+    <PRIMITIVE gatewayId="71" primitiveId="206" primitiveName="!!_invoke_"/>
+    <PRIMITIVE gatewayId="71" primitiveId="207" primitiveName="%_EObj_disp"/>
 </GATEWAY>
index 9e4a670..b38636d 100644 (file)
@@ -14,6 +14,7 @@
 #include <cstring>
 
 #include <cstdio>
+#include <vector>
 
 extern "C" {
     extern int C2F(varfunptr)(int *, int *, int *);
@@ -489,6 +490,61 @@ int ScilabObjects::getArgumentId(int * addr, int * tmpvars, const bool isRef, co
 
             return returnId;
         }
+        case sci_poly :
+        {
+            /* '$+1' should be handled to ease insertion/extraction */
+            int nameLen = 5;
+            char name[nameLen];
+
+            err = getPolyVariableName(pvApiCtx, addr, name, &nameLen);
+            if (err.iErr)
+            {
+                removeTemporaryVars(envId, tmpvars);
+                throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+            }
+
+            if (name[0] == '$' && nameLen == 1)
+            {
+                err = getMatrixOfPoly(pvApiCtx, addr, &row, &col, NULL, NULL);
+                if (err.iErr)
+                {
+                    removeTemporaryVars(envId, tmpvars);
+                    throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+                }
+
+                if (row * col != 1)
+                {
+                    removeTemporaryVars(envId, tmpvars);
+                    throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+                }
+
+                int coefs;
+                err = getMatrixOfPoly(pvApiCtx, addr, &row, &col, &coefs, NULL);
+                if (err.iErr)
+                {
+                    removeTemporaryVars(envId, tmpvars);
+                    throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+                }
+
+                // should be std::dynarray
+                std::vector<double> mat = std::vector<double>(row * col * coefs);
+                double* pMat = mat.data();
+                err = getMatrixOfPoly(pvApiCtx, addr, &row, &col, &coefs, &pMat);
+                if (err.iErr)
+                {
+                    removeTemporaryVars(envId, tmpvars);
+                    throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+                }
+
+                returnId = wrapper.wrapPoly(row * col * coefs, mat.data());
+            }
+            else
+            {
+                removeTemporaryVars(envId, tmpvars);
+                throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+            }
+            return returnId;
+        }
         case sci_ints :
         {
             int prec = 0;
@@ -595,6 +651,10 @@ int ScilabObjects::getArgumentId(int * addr, int * tmpvars, const bool isRef, co
                     return returnId;
 #endif
             }
+
+            // invalid int code : should never be called
+            removeTemporaryVars(envId, tmpvars);
+            throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
         }
         case sci_strings :
         {
@@ -627,6 +687,46 @@ int ScilabObjects::getArgumentId(int * addr, int * tmpvars, const bool isRef, co
 
             return returnId;
         }
+        case sci_list :
+        {
+            int length;
+
+            err = getListItemNumber(pvApiCtx, addr, &length);
+            if (err.iErr)
+            {
+                removeTemporaryVars(envId, tmpvars);
+                throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+            }
+
+            // empty list
+            if (length <= 0)
+            {
+                return 0;
+            }
+
+            // should be std::dynarray
+            std::vector<int> childrenIds = std::vector<int>(length + 1);
+
+            // loop all over the items
+            for (int i = 0; i < length; i++)
+            {
+                int* pvItem;
+
+                err = getListItemAddress(pvApiCtx, addr, i + 1, &pvItem);
+                if (err.iErr)
+                {
+                    removeTemporaryVars(envId, childrenIds.data());
+                    throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
+                }
+
+                getArgumentId(pvItem, childrenIds.data(), false, false, envId, pvApiCtx);
+            }
+
+            returnId = wrapper.wrapList(length, childrenIds.data());
+            tmpvars[++tmpvars[0]] = returnId;
+
+            return returnId;
+        }
         case sci_mlist :
         {
             int * id = 0;
index b73dfbd..8dfdf2d 100644 (file)
@@ -409,6 +409,18 @@ int ScilabJavaEnvironmentWrapper::wrapBool(int * x, int xSize, int xSizeCol, con
     return wrap<int, bool>(vm, x, xSize, xSizeCol);
 }
 
+int ScilabJavaEnvironmentWrapper::wrapList(int len, const int * const ids) const
+{
+    JavaVM * vm = getScilabJavaVM();
+    return ScilabJavaObject::wrapList(vm, ids, len);
+}
+
+int ScilabJavaEnvironmentWrapper::wrapPoly(int len, const double * const coefs) const
+{
+    JavaVM * vm = getScilabJavaVM();
+    return ScilabJavaObject::wrapPoly(vm, coefs, len);
+}
+
 int ScilabJavaEnvironmentWrapper::wrapFloat(double * x, const bool isRef) const
 {
     JavaVM * vm = getScilabJavaVM();
index 7c5c4a7..0a5c4eb 100644 (file)
@@ -240,6 +240,10 @@ public:
 
     int wrapBool(int * x, int xSize, int xSizeCol, const bool isRef) const;
 
+    int wrapList(int len, const int* const ids) const;
+
+    int wrapPoly(int len, const double * const coefs) const;
+
     /**
      * Unwrap a the external object with the given id into a double
      * @param id the value to wrap
index 2e31fa5..413c299 100644 (file)
@@ -34,6 +34,7 @@ import java.nio.FloatBuffer;
 import java.nio.IntBuffer;
 import java.nio.LongBuffer;
 import java.nio.ShortBuffer;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -69,6 +70,13 @@ public class ScilabJavaObject {
     protected static int currentCapacity = INITIALCAPACITY;
     protected static ScilabJavaObject[] arraySJO = new ScilabJavaObject[currentCapacity];
 
+    private static final class Poly {
+        private final double[] coefs;
+        public Poly(double[] coefs) {
+            this.coefs = coefs;
+        }
+    };
+
     static {
         primTypes.put(double.class, Double.class);
         primTypes.put(float.class, Float.class);
@@ -677,6 +685,10 @@ public class ScilabJavaObject {
                     throw new ScilabJavaException("Cannot read the field or property " + fieldName + " in object " + getClassName(id));
                 }
                 final Object retValue = method.invoke(arraySJO[id].object);
+                if (retValue == null) {
+                    return new ScilabJavaObject(retValue).id;
+                }
+
                 final Class cl = retValue.getClass();
                 if (cl == int.class) {
                     return new ScilabJavaObject(retValue, int.class).id;
@@ -881,6 +893,9 @@ public class ScilabJavaObject {
                             pos = ((Double) a).intValue() - 1;
                         } else if (a instanceof Integer) {
                             pos = ((Integer) a).intValue() - 1;
+                        } else if (a instanceof Poly) {
+                            /* this '$' polynomial coefs */
+                            pos = ((int) horner(l.size(), (Poly) a)) - 1;
                         } else {
                             pos = l.indexOf(a);
                         }
@@ -989,15 +1004,20 @@ public class ScilabJavaObject {
                         pos = ((Double) a).intValue() - 1;
                     } else if (a instanceof Integer) {
                         pos = ((Integer) a).intValue() - 1;
+                    } else if (a instanceof Poly) {
+                        /* this '$' polynomial coefs */
+                        pos = ((int) horner(l.size(), (Poly) a)) - 1;
                     } else {
                         pos = l.indexOf(a);
                     }
-                    if (pos >= 0 || pos < l.size()) {
+
+                    // the last element should be add-ed instead of set-ed
+                    if (pos >= 0 && pos < l.size()) {
                         l.set(pos, arraySJO[value].object);
                     } else if (pos < 0) {
                         l.add(0, arraySJO[value].object);
                     } else {
-                        l.add(arraySJO[value].object);
+                        l.add(pos, arraySJO[value].object);
                     }
                 } else if (o.getClass().isArray()) {
                     int pos = -1;
@@ -1021,6 +1041,21 @@ public class ScilabJavaObject {
     }
 
     /**
+     * Compute expected index using the coefs dans the actual size
+     *
+     * @param size the x value
+     * @param coefs the a_n values
+     * @see http://en.wikipedia.org/wiki/Horner's_method
+     */
+    private static final double horner(double size, Poly p) {
+        double result = 0;
+        for (int i = p.coefs.length - 1; i >= 0; i--) {
+            result = result * size + p.coefs[i];
+        }
+        return result;
+    }
+
+    /**
      * @param id the Java Object id
      * @param className the target class name
      * @return the id of the cast result
@@ -1404,6 +1439,36 @@ public class ScilabJavaObject {
     }
 
     /**
+     * Wrap the ids into a Java collection
+     *
+     * The implementation is a raw {@link java.util.ArrayList}.
+     *
+     * @param ids the java object to put into
+     * @return a collection id
+     */
+    public static final int wrapList(final int[] ids) {
+        final ArrayList<Object> list = new ArrayList<Object>(ids.length);
+        for (int i = 0; i < ids.length; i++) {
+            list.add(arraySJO[ids[i]]);
+        }
+
+        return new ScilabJavaObject(list, ArrayList.class).id;
+    }
+
+    /**
+     * Wrap the ids into a Java collection
+     *
+     * The implementation is a raw {@link java.util.ArrayList}.
+     *
+     * @param ids the java object to put into
+     * @return a collection id
+     */
+    public static final int wrapPoly(final double[] coefs) {
+        final Poly p = new Poly(coefs);
+        return new ScilabJavaObject(p, Poly.class).id;
+    }
+
+    /**
      * @param id the Java Object id
      * @return the resulting unwrapping
      */
index 6ef4ca5..8dc2176 100644 (file)
@@ -153,6 +153,8 @@ jintwrapjobjectArray__floatfloatID=NULL;
 jintwrapjlonglongID=NULL;
 jintwrapjlongArray_longlongID=NULL;
 jintwrapjobjectArray__longlongID=NULL;
+jintwrapListjintArray_intintID=NULL;
+jintwrapPolyjdoubleArray_doubledoubleID=NULL;
 jobjectArray_getAccessibleFieldsjintintID=NULL;
 jobjectArray_getAccessibleMethodsjintintID=NULL;
 jobjectArray_getCompletionjintintjobjectArray_java_lang_Stringjava_lang_StringID=NULL;
@@ -228,6 +230,8 @@ jintwrapjobjectArray__floatfloatID=NULL;
 jintwrapjlonglongID=NULL;
 jintwrapjlongArray_longlongID=NULL;
 jintwrapjobjectArray__longlongID=NULL;
+jintwrapListjintArray_intintID=NULL;
+jintwrapPolyjdoubleArray_doubledoubleID=NULL;
 jobjectArray_getAccessibleFieldsjintintID=NULL;
 jobjectArray_getAccessibleMethodsjintintID=NULL;
 jobjectArray_getCompletionjintintjobjectArray_java_lang_Stringjava_lang_StringID=NULL;
@@ -1839,6 +1843,74 @@ return res;
 
 }
 
+int ScilabJavaObject::wrapList (JavaVM * jvm_, int const* ids, int idsSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintwrapListjintArray_intintID = curEnv->GetStaticMethodID(cls, "wrapList", "([I)I" ) ;
+if (jintwrapListjintArray_intintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "wrapList");
+}
+
+jintArray ids_ = curEnv->NewIntArray( idsSize ) ;
+
+if (ids_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( ids_, 0, idsSize, (jint*)(ids) ) ;
+
+
+                        jint res =  static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintwrapListjintArray_intintID ,ids_));
+                        curEnv->DeleteLocalRef(ids_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int ScilabJavaObject::wrapPoly (JavaVM * jvm_, double const* coefs, int coefsSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintwrapPolyjdoubleArray_doubledoubleID = curEnv->GetStaticMethodID(cls, "wrapPoly", "([D)I" ) ;
+if (jintwrapPolyjdoubleArray_doubledoubleID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "wrapPoly");
+}
+
+jdoubleArray coefs_ = curEnv->NewDoubleArray( coefsSize ) ;
+
+if (coefs_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( coefs_, 0, coefsSize, (jdouble*)(coefs) ) ;
+
+
+                        jint res =  static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintwrapPolyjdoubleArray_doubledoubleID ,coefs_));
+                        curEnv->DeleteLocalRef(coefs_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
 char** ScilabJavaObject::getAccessibleFields (JavaVM * jvm_, int id, int *lenRow){
 
 JNIEnv * curEnv = NULL;
index 0b5fc1e..7d0cef9 100644 (file)
@@ -127,6 +127,8 @@ jmethodID jintwrapjobjectArray__floatfloatID; // cache method id
 jmethodID jintwrapjlonglongID; // cache method id
 jmethodID jintwrapjlongArray_longlongID; // cache method id
 jmethodID jintwrapjobjectArray__longlongID; // cache method id
+jmethodID jintwrapListjintArray_intintID; // cache method id
+jmethodID jintwrapPolyjdoubleArray_doubledoubleID; // cache method id
 jmethodID jobjectArray_getAccessibleFieldsjintintID; // cache method id
 jmethodID jobjectArray_getAccessibleMethodsjintintID; // cache method id
 jmethodID jobjectArray_getCompletionjintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
@@ -289,6 +291,10 @@ static int wrap(JavaVM * jvm_, long long const* x, int xSize);
 
 static int wrap(JavaVM * jvm_, long long const* const* x, int xSize, int xSizeCol);
 
+static int wrapList(JavaVM * jvm_, int const* ids, int idsSize);
+
+static int wrapPoly(JavaVM * jvm_, double const* coefs, int coefsSize);
+
 static char** getAccessibleFields(JavaVM * jvm_, int id, int *lenRow);
 
 static char** getAccessibleMethods(JavaVM * jvm_, int id, int *lenRow);
index a085aa6..d48dba5 100644 (file)
             <param type="long[][]" name="x" />
         </method>
         
+        <method name="wrapList" returnType="int" modifier="static">
+            <param type="int[]" name="ids" />
+        </method>
+        
+        <method name="wrapPoly" returnType="int" modifier="static">
+            <param type="double[]" name="coefs" />
+        </method>
+        
         <method name="getAccessibleFields" returnType="String[]" modifier="static">
             <param type="int" name="id" />
         </method>
index c3e221d..a5333d4 100644 (file)
 // http://bugzilla.scilab.org/13047
 //
 // <-- Short Description -->
-// jcompile did not allow class reloading 
+// jcompile did not allow class reloading
 //
 function r = myconvert(Text, method)
-        // Compiling the meta-methode
-        arrayConv = jcompile("arrayConv", ..
-        ["public class arrayConv {"
-         "public static String[] convInArray(String arr[]) {"
-         "    int nbelem = arr.length; "
-         "    String[] out = new String[nbelem];"
-         "    for (int i = 0; i < nbelem; i++)  "
-         "        out[i] = arr[i]."+method+"(); "
-         "    return out; "
-         "    } "
-         "} "
-         ])
-         r = matrix(arrayConv.convInArray(Text(:)'), size(Text))
-         // jremove arrayConv convInArray
+    // Compiling the meta-methode
+    arrayConv = jcompile("arrayConv", ..
+    ["public class arrayConv {"
+    "public static String[] convInArray(String arr[]) {"
+    "    int nbelem = arr.length; "
+    "    String[] out = new String[nbelem];"
+    "    for (int i = 0; i < nbelem; i++)  "
+    "        out[i] = arr[i]."+method+"(); "
+    "    return out; "
+    "    } "
+    "} "
+    ])
+    r = matrix(arrayConv.convInArray(Text(:)'), size(Text))
+    // jremove arrayConv convInArray
 endfunction
 strs = ["Scilab" "GDL" "Yorick" "Octave" "Scipy"];
 assert_checkequal(convstr(strs, "u"), myconvert(strs,"toUpperCase"));
diff --git a/scilab/modules/external_objects_java/tests/unit_tests/dollar.dia.ref b/scilab/modules/external_objects_java/tests/unit_tests/dollar.dia.ref
new file mode 100644 (file)
index 0000000..5f492e0
--- /dev/null
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Clement DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+jimport("java.util.ArrayList")
+l = ArrayList.new(jvoid);
+// insert
+l($+1) = 1;
+l($+1) = 2;
+l(2*$-1) = 3;
+l($+1) = 4;
+assert_checkequal(l.size(), int32(4));
+// extract
+assert_checkequal(l(2*$-6), 2);
diff --git a/scilab/modules/external_objects_java/tests/unit_tests/dollar.tst b/scilab/modules/external_objects_java/tests/unit_tests/dollar.tst
new file mode 100644 (file)
index 0000000..d18d534
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Clement DAVID
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+jimport("java.util.ArrayList")
+
+l = ArrayList.new(jvoid);
+
+// insert
+l($+1) = 1;
+l($+1) = 2;
+l(2*$-1) = 3;
+l($+1) = 4;
+
+assert_checkequal(l.size(), int32(4));
+
+// extract
+assert_checkequal(l(2*$-6), 2);
+