You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2018/06/24 12:15:59 UTC

[royale-asjs] branch develop updated: Fixed BinaryData write methods

This is an automated email from the ASF dual-hosted git repository.

harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new fc9a15f  Fixed BinaryData write methods
fc9a15f is described below

commit fc9a15f1fbf59a02f0a7e45f34a133fbef5af0f8
Author: Harbs <ha...@in-tools.com>
AuthorDate: Sun Jun 24 15:15:51 2018 +0300

    Fixed BinaryData write methods
---
 .../royale/org/apache/royale/utils/BinaryData.as   | 53 ++++++++++++++--------
 1 file changed, 33 insertions(+), 20 deletions(-)

diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
index 6ff7aa7..6dba8d8 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
@@ -262,8 +262,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
             if (_position + 1 > _len) {
                 setBufferSize(_position + 1);
             }
-            new Uint8Array(ba, _position, 1)[0] = byte;
-            _position++;
+            getTypedArray()[_position++] = byte;
         }
     }
     /**
@@ -322,14 +321,18 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
         }
         COMPILE::JS
         {
-            if (!_sysEndian) {
-                short = (((short & 0xff00) >>> 8) | ((short & 0xff) <<8 ));
-            }
             if (_position + 2 > _len) {
                 setBufferSize(_position + 2);
             }
-            new Int16Array(ba, _position, 1)[0] = short;
-            _position += 2;
+            var arr:Uint8Array = getTypedArray();
+            if(endian == Endian.BIG_ENDIAN){
+                arr[_position++] = (short & 0x0000ff00) >> 8;
+                arr[_position++] = (short & 0x000000ff);
+            } else {
+                arr[_position++] = (short & 0x000000ff);
+                arr[_position++] = (short & 0x0000ff00) >> 8;
+            }
+
         }
     }
 
@@ -351,14 +354,15 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
         }
         COMPILE::JS
         {
-            if (!_sysEndian) {
-                val = ((val & 0xff000000) >>> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | (val << 24);
-            }
-            if (_position + 4 > _len) {
-                setBufferSize(_position + 4);
-            }
-            new Uint32Array(ba, _position, 1)[0] = val;
-            _position += 4;
+            writeInt(val);
+            // if (!_sysEndian) {
+            //     val = ((val & 0xff000000) >>> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | (val << 24);
+            // }
+            // if (_position + 4 > _len) {
+            //     setBufferSize(_position + 4);
+            // }
+            // new Uint32Array(ba, _position, 1)[0] = val;
+            // _position += 4;
         }
     }
 
@@ -380,14 +384,23 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
         }
         COMPILE::JS
         {
-            if (!_sysEndian) {
-                val = (((val & 0xff000000) >>> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | (val << 24)) >> 0;
-            }
             if (_position + 4 > _len) {
                 setBufferSize(_position + 4);
             }
-            new Int32Array(ba, _position, 1)[0] = val;
-            _position += 4;
+            var arr:Uint8Array = getTypedArray();
+            if(endian == Endian.BIG_ENDIAN){
+
+                arr[_position++] = (val & 0xff000000) >> 24;
+                arr[_position++] = (val & 0x00ff0000) >> 16;
+                arr[_position++] = (val & 0x0000ff00) >> 8;
+                arr[_position++] = (val & 0x000000ff);
+            } else {
+                arr[_position++] = (val & 0x000000ff);
+                arr[_position++] = (val & 0x0000ff00) >> 8;
+                arr[_position++] = (val & 0x00ff0000) >> 16;
+                arr[_position++] = (val & 0xff000000) >> 24;
+            }
+
         }
     }
 


Re: [royale-asjs] branch develop updated: Fixed BinaryData write methods

Posted by Harbs <ha...@gmail.com>.
I could not find a difference between writing signed and unsigned ints. Hence writeInt() and writeUnsignedInt() are identical code (one calls the other).

If I missed something, please let me know...

> On Jun 24, 2018, at 3:15 PM, harbs@apache.org wrote:
> 
> This is an automated email from the ASF dual-hosted git repository.
> 
> harbs pushed a commit to branch develop
> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
> 
> 
> The following commit(s) were added to refs/heads/develop by this push:
>     new fc9a15f  Fixed BinaryData write methods
> fc9a15f is described below
> 
> commit fc9a15f1fbf59a02f0a7e45f34a133fbef5af0f8
> Author: Harbs <ha...@in-tools.com>
> AuthorDate: Sun Jun 24 15:15:51 2018 +0300
> 
>    Fixed BinaryData write methods
> ---
> .../royale/org/apache/royale/utils/BinaryData.as   | 53 ++++++++++++++--------
> 1 file changed, 33 insertions(+), 20 deletions(-)
> 
> diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
> index 6ff7aa7..6dba8d8 100644
> --- a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
> +++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
> @@ -262,8 +262,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
>             if (_position + 1 > _len) {
>                 setBufferSize(_position + 1);
>             }
> -            new Uint8Array(ba, _position, 1)[0] = byte;
> -            _position++;
> +            getTypedArray()[_position++] = byte;
>         }
>     }
>     /**
> @@ -322,14 +321,18 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
>         }
>         COMPILE::JS
>         {
> -            if (!_sysEndian) {
> -                short = (((short & 0xff00) >>> 8) | ((short & 0xff) <<8 ));
> -            }
>             if (_position + 2 > _len) {
>                 setBufferSize(_position + 2);
>             }
> -            new Int16Array(ba, _position, 1)[0] = short;
> -            _position += 2;
> +            var arr:Uint8Array = getTypedArray();
> +            if(endian == Endian.BIG_ENDIAN){
> +                arr[_position++] = (short & 0x0000ff00) >> 8;
> +                arr[_position++] = (short & 0x000000ff);
> +            } else {
> +                arr[_position++] = (short & 0x000000ff);
> +                arr[_position++] = (short & 0x0000ff00) >> 8;
> +            }
> +
>         }
>     }
> 
> @@ -351,14 +354,15 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
>         }
>         COMPILE::JS
>         {
> -            if (!_sysEndian) {
> -                val = ((val & 0xff000000) >>> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | (val << 24);
> -            }
> -            if (_position + 4 > _len) {
> -                setBufferSize(_position + 4);
> -            }
> -            new Uint32Array(ba, _position, 1)[0] = val;
> -            _position += 4;
> +            writeInt(val);
> +            // if (!_sysEndian) {
> +            //     val = ((val & 0xff000000) >>> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | (val << 24);
> +            // }
> +            // if (_position + 4 > _len) {
> +            //     setBufferSize(_position + 4);
> +            // }
> +            // new Uint32Array(ba, _position, 1)[0] = val;
> +            // _position += 4;
>         }
>     }
> 
> @@ -380,14 +384,23 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
>         }
>         COMPILE::JS
>         {
> -            if (!_sysEndian) {
> -                val = (((val & 0xff000000) >>> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | (val << 24)) >> 0;
> -            }
>             if (_position + 4 > _len) {
>                 setBufferSize(_position + 4);
>             }
> -            new Int32Array(ba, _position, 1)[0] = val;
> -            _position += 4;
> +            var arr:Uint8Array = getTypedArray();
> +            if(endian == Endian.BIG_ENDIAN){
> +
> +                arr[_position++] = (val & 0xff000000) >> 24;
> +                arr[_position++] = (val & 0x00ff0000) >> 16;
> +                arr[_position++] = (val & 0x0000ff00) >> 8;
> +                arr[_position++] = (val & 0x000000ff);
> +            } else {
> +                arr[_position++] = (val & 0x000000ff);
> +                arr[_position++] = (val & 0x0000ff00) >> 8;
> +                arr[_position++] = (val & 0x00ff0000) >> 16;
> +                arr[_position++] = (val & 0xff000000) >> 24;
> +            }
> +
>         }
>     }
> 
>