Repository: flex-asjs
Updated Branches:
  refs/heads/develop ac7b50537 -> c268a9080


Added support for endianness in BinaryData


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/c268a908
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/c268a908
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/c268a908

Branch: refs/heads/develop
Commit: c268a9080ce9a7ae00e74715b3a41d71952dac06
Parents: ac7b505
Author: Harbs <[email protected]>
Authored: Wed Jul 6 11:30:28 2016 +0300
Committer: Harbs <[email protected]>
Committed: Wed Jul 6 11:30:28 2016 +0300

----------------------------------------------------------------------
 .../flex/org/apache/flex/utils/BinaryData.as    | 121 +++++++++++++++----
 .../main/flex/org/apache/flex/utils/Endian.as   |  12 +-
 .../flex/org/apache/flex/net/URLBinaryLoader.as |   2 +-
 .../main/flex/org/apache/flex/net/URLLoader.as  |   1 -
 .../main/flex/org/apache/flex/net/URLStream.as  |   2 +-
 5 files changed, 111 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c268a908/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
index 373ee8e..573ada2 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
@@ -56,7 +56,37 @@ public class BinaryData
     {    
         ba = bytes ? bytes : new ArrayBuffer(0);
     }
+
+       private var _endian:String = Endian.DEFAULT;
+
+       /**
+        *  Indicates the byte order for the data.
+        *  The default is "default" which in Javascript is machine dependent.
+        *  To ensure portable bytes, set the endian to big or little as 
appropriate.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.7.0
+        */        
+       public function get endian():String
+       {
+               return _endian;
+       }
        
+       public function set endian(value:String):void
+       {
+               _endian = value;
+               
+               COMPILE::SWF
+               {
+                       if(value == Endian.DEFAULT)
+                               ba.endian = Endian.BIG_ENDIAN;
+                       else
+                               ba.endian = value;
+               }
+       }
+
     COMPILE::SWF
        private var ba:ByteArray;
        
@@ -125,9 +155,16 @@ public class BinaryData
             var view:Int16Array;
             
             growBuffer(2);
-            
-            view = new Int16Array(ba, _position, 1);
-            view[0] = short;
+                       if(_endian == Endian.DEFAULT)
+                       {
+                   view = new Int16Array(ba, _position, 1);
+               view[0] = short;
+                       }
+                       else
+                       {
+                               var dv:DataView = new DataView(ba);
+                               dv.setInt16(_position,short,_endian == 
Endian.LITTLE_ENDIAN);
+                       }
             _position += 2;
         }
        }
@@ -149,12 +186,19 @@ public class BinaryData
         COMPILE::JS
         {
             var view:Uint32Array;
-            
+                       
             growBuffer(4);
-            
-            view = new Uint32Array(ba, _position, 1);
-            view[0] = unsigned;
-            _position += 4;
+            if(_endian == Endian.DEFAULT)
+                       {
+                               view = new Uint32Array(ba, _position, 1);
+                               view[0] = unsigned;
+                       }
+                       else
+                       {
+                               var dv:DataView = new DataView(ba);
+                               dv.setUint32(_position,unsigned,_endian == 
Endian.LITTLE_ENDIAN);
+                       }
+                       _position += 4;
         }
        }
 
@@ -166,7 +210,7 @@ public class BinaryData
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-       public function writeInt(integer:uint):void
+       public function writeInt(integer:int):void
        {
         COMPILE::SWF
         {
@@ -175,11 +219,19 @@ public class BinaryData
         COMPILE::JS
         {
             var view:Int32Array;
-            
+                       
             growBuffer(4);
-            
-            view = new Int32Array(ba, _position, 1);
-            view[0] = integer;
+                       
+                       if(_endian == Endian.DEFAULT)
+                       {
+               view = new Int32Array(ba, _position, 1);
+               view[0] = integer;
+                       }
+                       else
+                       {
+                               var dv:DataView = new DataView(ba);
+                               dv.setInt32(_position,integer,_endian == 
Endian.LITTLE_ENDIAN);
+                       }
             _position += 4;
         }
        }
@@ -226,9 +278,17 @@ public class BinaryData
         {
             var view:Int16Array;
             
-            view = new Int16Array(ba, _position, 1);
-            _position += 2;
-            return view[0];
+                       if(_endian == Endian.DEFAULT)
+                       {
+                   view = new Int16Array(ba, _position, 1);
+               _position += 2;
+                               return view[0];
+                       }
+                       
+                       var dv:DataView = new DataView(ba);
+                       var i:int = dv.getInt16(_position,_endian == 
Endian.LITTLE_ENDIAN);
+                       _position += 2;
+                       return i;
         }
        }
        
@@ -250,9 +310,16 @@ public class BinaryData
         {
             var view:Uint32Array;
             
-            view = new Uint32Array(ba, _position, 1);
-            _position += 4;
-            return view[0];
+                       if(_endian == Endian.DEFAULT)
+                       {
+                               view = new Uint32Array(ba, _position, 1);
+                               _position += 4;
+                               return view[0];
+                       }
+                       var dv:DataView = new DataView(ba);
+                       var i:uint = dv.getUint32(_position,_endian == 
Endian.LITTLE_ENDIAN);
+                       _position += 4;
+                       return i;
         }
        }
        
@@ -273,10 +340,18 @@ public class BinaryData
         COMPILE::JS
         {
             var view:Int32Array;
-            
-            view = new Int32Array(ba, _position, 1);
-            _position += 4;
-            return view[0];
+                       
+                       if(_endian == Endian.DEFAULT)
+                       {
+                               view = new Int32Array(ba, _position, 1);
+                               _position += 4;
+                               return view[0];
+                       }
+                       var dv:DataView = new DataView(ba);
+                       var i:uint = dv.getInt32(_position,_endian == 
Endian.LITTLE_ENDIAN);
+                       _position += 4;
+                       return i;
+
         }
        }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c268a908/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/Endian.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/Endian.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/Endian.as
index 8950426..e33181c 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/Endian.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/Endian.as
@@ -47,6 +47,16 @@ package org.apache.flex.utils
                 *  @productversion FlexJS 0.7.0
                 */
                public static const LITTLE_ENDIAN:String = "littleEndian";
-               
+
+               /**
+                *  Uses the default endianness on the system.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.7.0
+                */
+               public static const DEFAULT:String = "default";
+
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c268a908/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as
 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as
index 34751db..f313b3a 100644
--- 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as
+++ 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as
@@ -65,7 +65,7 @@ package org.apache.flex.net
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.7.0
                 */        
-               public var endian:String = Endian.BIG_ENDIAN;
+               public var endian:String = Endian.DEFAULT;
                
 
         private var stream:URLStream;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c268a908/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as
index 102f525..29a804c 100644
--- a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as
+++ b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as
@@ -84,7 +84,6 @@ package org.apache.flex.net
        {
                public function URLLoader()
                {
-                       throw new Error("URLLoader should not be instantiated. 
Use a derived class instead.")
                }
                
                protected function cleanupCallbacks():void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c268a908/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as
index 397b336..b3754de 100644
--- a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as
+++ b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as
@@ -166,7 +166,7 @@ package org.apache.flex.net
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.7.0
                 */        
-               public var endian:String = Endian.LITTLE_ENDIAN;
+               public var endian:String = Endian.DEFAULT;
 
                private function cleanupCallbacks():void
                {

Reply via email to