svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 2826 1e5abecc3cde
parent 2822 9101a72a1da0
child 2828 be947a338760
--- a/svghmi/gen_index_xhtml.xslt	Tue Jan 14 11:04:18 2020 +0100
+++ b/svghmi/gen_index_xhtml.xslt	Tue Jan 14 11:09:26 2020 +0100
@@ -444,11 +444,27 @@
 </xsl:text>
     <xsl:text>const dvgetters = {
 </xsl:text>
-    <xsl:text>    INT: [DataView.prototype.getInt16, 2],
-</xsl:text>
-    <xsl:text>    BOOL: [DataView.prototype.getInt8, 1]
-</xsl:text>
-    <xsl:text>    /* TODO */
+    <xsl:text>    INT: (dv,offset) =&gt; [dv.getInt16(offset, true), 2],
+</xsl:text>
+    <xsl:text>    BOOL: (dv,offset) =&gt; [dv.getInt8(offset, true), 1],
+</xsl:text>
+    <xsl:text>    STRING: (dv, offset) =&gt; {
+</xsl:text>
+    <xsl:text>        size = dv.getInt8(offset);
+</xsl:text>
+    <xsl:text>        return [
+</xsl:text>
+    <xsl:text>            String.fromCharCode.apply(null, new Uint8Array(
+</xsl:text>
+    <xsl:text>                dv.buffer, /* original buffer */
+</xsl:text>
+    <xsl:text>                offset + 1, /* string starts after size*/
+</xsl:text>
+    <xsl:text>                size /* size of string */
+</xsl:text>
+    <xsl:text>            )), size + 1]; /* total increment */
+</xsl:text>
+    <xsl:text>    }
 </xsl:text>
     <xsl:text>};
 </xsl:text>
@@ -492,9 +508,9 @@
 </xsl:text>
     <xsl:text>            if(iectype != undefined){
 </xsl:text>
-    <xsl:text>                let [dvgetter, bytesize] = dvgetters[iectype];
-</xsl:text>
-    <xsl:text>                let value = dvgetter.call(dv,i,true);
+    <xsl:text>                let dvgetter = dvgetters[iectype];
+</xsl:text>
+    <xsl:text>                let [value, bytesize] = dvgetter(dv,i);
 </xsl:text>
     <xsl:text>                dispatch_value(index, value);
 </xsl:text>