- add memxxx function into macro

- add memxxx function into macro

error: pathspec 'apparat-ersatz/src/main/as3/apparat/memory/MemoryMacro.as' did not match any file(s) known to git

--- apparat-ersatz/src/main/as3/apparat/memory/MemoryMacro.as
+++ apparat-ersatz/src/main/as3/apparat/memory/MemoryMacro.as
@@ -0,0 +1,455 @@
+/*
+ * This file is part of Apparat.
+ *
+ * Apparat is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Apparat is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Apparat. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) 2009 Joa Ebert
+ * http://www.joa-ebert.com/
+ *
+ * Author : Patrick Le Clec'h
+ */
+
+package apparat.memory {
+	import apparat.asm.AddInt;
+	import apparat.asm.BitOr;
+	import apparat.asm.DecLocalInt;
+	import apparat.asm.Dup;
+	import apparat.asm.GetByte;
+	import apparat.asm.GetInt;
+	import apparat.asm.GetShort;
+	import apparat.asm.IfEqual;
+	import apparat.asm.IncLocalInt;
+	import apparat.asm.IncrementInt;
+	import apparat.asm.Jump;
+	import apparat.asm.LookupSwitch;
+	import apparat.asm.SetByte;
+	import apparat.asm.SetInt;
+	import apparat.asm.SetLocal;
+	import apparat.asm.SetShort;
+	import apparat.asm.ShiftLeft;
+	import apparat.asm.__as3;
+	import apparat.asm.__asm;
+	import apparat.inline.Macro;
+
+	public class MemoryMacro extends Macro {
+		/**
+		 * The memset function sets a given memory interval to a given value.
+		 *
+		 * @param dst The address in memory where to start.
+		 * @param value The byte value to store.
+		 * @param size The number of bytes to write.
+		 */
+		public static function memset(dst:int, value:int, size:int):void
+		{
+			var rest:int = size & 7;
+			size = size >> 3;
+			__asm(
+					__as3(value),
+					__as3(value),
+					__as3(8),
+					ShiftLeft,
+					BitOr,
+					Dup,
+					__as3(16),
+					ShiftLeft,
+					BitOr,
+					SetLocal(value),
+					"loop:",
+					__as3(size),
+					__as3(0),
+					IfEqual("copyRest"),
+					__as3(value),
+					__as3(dst),
+					SetInt,
+					__as3(dst),
+					__as3(4),
+					AddInt,
+					SetLocal(dst),
+					__as3(value),
+					__as3(dst),
+					SetInt,
+					__as3(dst),
+					__as3(4),
+					AddInt,
+					SetLocal(dst),
+					DecLocalInt(size),
+					Jump("loop"),
+					"copyRest:",
+					__as3(rest),
+					LookupSwitch("0", "0", "1", "2", "3", "4", "5", "6", "7"),
+					"7:",
+					__as3(value),
+					__as3(dst),
+					SetByte,
+					__as3(value),
+					IncLocalInt(dst),
+					__as3(dst),
+					SetShort,
+					__as3(value),
+					__as3(dst),
+					IncrementInt,
+					IncrementInt,
+					SetInt,
+					Jump("0"),
+					"6:",
+					__as3(value),
+					__as3(dst),
+					SetShort,
+					__as3(value),
+					__as3(dst),
+					IncrementInt,
+					IncrementInt,
+					SetInt,
+					Jump("0"),
+					"5:",
+					__as3(value),
+					__as3(dst),
+					SetByte,
+					__as3(value),
+					__as3(dst),
+					IncrementInt,
+					SetInt,
+					Jump("0"),
+					"4:",
+					__as3(value),
+					__as3(dst),
+					SetInt,
+					Jump("0"),
+					"3:",
+					__as3(value),
+					__as3(dst),
+					SetByte,
+					__as3(value),
+					__as3(dst),
+					IncrementInt,
+					SetShort,
+					Jump("0"),
+					"2:",
+					__as3(value),
+					__as3(dst),
+					SetShort,
+					Jump("0"),
+					"1:",
+					__as3(value),
+					__as3(dst),
+					SetByte,
+					"0:"
+					);
+		}
+
+		/**
+		 * Swaps two memory regions.
+		 *
+		 * @param pS1 The address of the first region.
+		 * @param pS2 The address of the second region.
+		 * @param size The number of bytes to swap.
+		 */
+		public static function memswap(pS1:int, pS2:int, size:int):void
+		{
+			var rest:int = size & 7;
+			size = size >> 3;
+			__asm(
+					"loop:",
+					__as3(size),
+					__as3(0),
+					IfEqual("copyRest"),
+					__as3(pS1),
+					GetInt,
+					__as3(pS2),
+					GetInt,
+					__as3(pS1),
+					SetInt,
+					__as3(pS2),
+					SetInt,
+					__as3(pS1),
+					__as3(4),
+					AddInt,
+					SetLocal(pS1),
+					__as3(pS2),
+					__as3(4),
+					AddInt,
+					SetLocal(pS2),
+					__as3(pS1),
+					GetInt,
+					__as3(pS2),
+					GetInt,
+					__as3(pS1),
+					SetInt,
+					__as3(pS2),
+					SetInt,
+					__as3(pS1),
+					__as3(4),
+					AddInt,
+					SetLocal(pS1),
+					__as3(pS2),
+					__as3(4),
+					AddInt,
+					SetLocal(pS2),
+					DecLocalInt(size),
+					Jump("loop"),
+					"copyRest:",
+					__as3(rest),
+					LookupSwitch("0", "0", "1", "2", "3", "4", "5", "6", "7"),
+					"7:",
+					__as3(pS1),
+					GetByte,
+					__as3(pS2),
+					GetByte,
+					__as3(pS1),
+					SetByte,
+					__as3(pS2),
+					SetByte,
+					IncLocalInt(pS1),
+					IncLocalInt(pS2),
+					__as3(pS1),
+					GetShort,
+					__as3(pS2),
+					GetShort,
+					__as3(pS1),
+					SetShort,
+					__as3(pS2),
+					SetShort,
+					IncLocalInt(pS1),
+					IncLocalInt(pS1),
+					IncLocalInt(pS2),
+					IncLocalInt(pS2),
+					__as3(pS1),
+					GetInt,
+					__as3(pS2),
+					GetInt,
+					__as3(pS1),
+					SetInt,
+					__as3(pS2),
+					SetInt,
+					Jump("0"),
+					"6:",
+					__as3(pS1),
+					GetShort,
+					__as3(pS2),
+					GetShort,
+					__as3(pS1),
+					SetShort,
+					__as3(pS2),
+					SetShort,
+					IncLocalInt(pS1),
+					IncLocalInt(pS1),
+					IncLocalInt(pS2),
+					IncLocalInt(pS2),
+					__as3(pS1),
+					GetInt,
+					__as3(pS2),
+					GetInt,
+					__as3(pS1),
+					SetInt,
+					__as3(pS2),
+					SetInt,
+					Jump("0"),
+					"5:",
+					__as3(pS1),
+					GetByte,
+					__as3(pS2),
+					GetByte,
+					__as3(pS1),
+					SetByte,
+					__as3(pS2),
+					SetByte,
+					IncLocalInt(pS1),
+					IncLocalInt(pS2),
+					__as3(pS1),
+					GetInt,
+					__as3(pS2),
+					GetInt,
+					__as3(pS1),
+					SetInt,
+					__as3(pS2),
+					SetInt,
+					Jump("0"),
+					"4:",
+					__as3(pS1),
+					GetInt,
+					__as3(pS2),
+					GetInt,
+					__as3(pS1),
+					SetInt,
+					__as3(pS2),
+					SetInt,
+					Jump("0"),
+					"3:",
+					__as3(pS1),
+					GetByte,
+					__as3(pS2),
+					GetByte,
+					__as3(pS1),
+					SetByte,
+					__as3(pS2),
+					SetByte,
+					IncLocalInt(pS1),
+					IncLocalInt(pS2),
+					__as3(pS1),
+					GetShort,
+					__as3(pS2),
+					GetShort,
+					__as3(pS1),
+					SetShort,
+					__as3(pS2),
+					SetShort,
+					Jump("0"),
+					"2:",
+					__as3(pS1),
+					GetShort,
+					__as3(pS2),
+					GetShort,
+					__as3(pS1),
+					SetShort,
+					__as3(pS2),
+					SetShort,
+					Jump("0"),
+					"1:",
+					__as3(pS1),
+					GetByte,
+					__as3(pS2),
+					GetByte,
+					__as3(pS1),
+					SetByte,
+					__as3(pS2),
+					SetByte,
+					"0:"
+					);
+		}
+
+		/**
+		 * The memcpy function copies a source memory region to a given destination.
+		 *
+		 * @param dst The destination address.
+		 * @param src The source address.
+		 * @param size The number of bytes to copy.
+		 */
+		public static function memcpy(dst:int, src:int, size:int):void
+		{
+			var rest:int = size & 7;
+			size = size >> 3;
+			__asm(
+					"loop:",
+					__as3(size),
+					__as3(0),
+					IfEqual("copyRest"),
+					__as3(src),
+					GetInt,
+					__as3(dst),
+					SetInt,
+					__as3(src),
+					__as3(4),
+					AddInt,
+					SetLocal(src),
+					__as3(dst),
+					__as3(4),
+					AddInt,
+					SetLocal(dst),
+					__as3(src),
+					GetInt,
+					__as3(dst),
+					SetInt,
+					__as3(src),
+					__as3(4),
+					AddInt,
+					SetLocal(src),
+					__as3(dst),
+					__as3(4),
+					AddInt,
+					SetLocal(dst),
+					DecLocalInt(size),
+					Jump("loop"),
+					"copyRest:",
+					__as3(rest),
+					LookupSwitch("0", "0", "1", "2", "3", "4", "5", "6", "7"),
+					"7:",
+					__as3(src),
+					GetByte,
+					__as3(dst),
+					SetByte,
+					__as3(src),
+					IncrementInt,
+					GetShort,
+					__as3(dst),
+					IncrementInt,
+					SetShort,
+					__as3(src),
+					IncrementInt,
+					IncrementInt,
+					GetInt,
+					__as3(dst),
+					IncrementInt,
+					IncrementInt,
+					SetInt,
+					Jump("0"),
+					"6:",
+					__as3(src),
+					GetShort,
+					__as3(dst),
+					SetShort,
+					__as3(src),
+					IncrementInt,
+					IncrementInt,
+					GetInt,
+					__as3(dst),
+					IncrementInt,
+					IncrementInt,
+					SetInt,
+					Jump("0"),
+					"5:",
+					__as3(src),
+					GetByte,
+					__as3(dst),
+					SetByte,
+					__as3(src),
+					IncrementInt,
+					GetInt,
+					__as3(dst),
+					IncrementInt,
+					SetInt,
+					Jump("0"),
+					"4:",
+					__as3(src),
+					GetInt,
+					__as3(dst),
+					SetInt,
+					Jump("0"),
+					"3:",
+					__as3(src),
+					GetByte,
+					__as3(dst),
+					SetByte,
+					__as3(src),
+					IncrementInt,
+					GetShort,
+					__as3(dst),
+					IncrementInt,
+					SetShort,
+					Jump("0"),
+					"2:",
+					__as3(src),
+					GetShort,
+					__as3(dst),
+					SetShort,
+					Jump("0"),
+					"1:",
+					__as3(src),
+					GetByte,
+					__as3(dst),
+					SetByte,
+					"0:"
+					);
+		}
+	}
+}


添加遗漏的 ZigZag.as

添加遗漏的 ZigZag.as

error: pathspec 'as3/com/netease/protobuf/ZigZag.as' did not match any file(s) known to git

--- as3/com/netease/protobuf/ZigZag.as
+++ as3/com/netease/protobuf/ZigZag.as
@@ -0,0 +1,31 @@
+// vim: tabstop=4 shiftwidth=4
+
+// Copyright (c) 2010 , 杨博 (Yang Bo) All rights reserved.
+//
+//         pop.atry@gmail.com
+//
+// Use, modification and distribution are subject to the "New BSD License"
+// as listed at <url: http://www.opensource.org/licenses/bsd-license.php >.
+
+package com.netease.protobuf {
+	public final class ZigZag {
+		public static function encode32(n:int):int {
+			return (n << 1) ^ (n >> 31)
+		}
+		public static function decode32(n:int):int {
+			return (n >>> 1) ^ -(n & 1)
+		}
+		public static function encode64low(low:uint, high:int):uint {
+			return (low << 1) ^ (high >> 31)
+		}
+		public static function encode64high(low:uint, high:int):int {
+			return (low >>> 31) ^ (high << 1) ^ (high >> 31)
+		}
+		public static function decode64low(low:uint, high:int):uint {
+			return (high << 31) ^ (low >>> 1) ^ -(low & 1)
+		}
+		public static function decode64high(low:uint, high:int):int {
+			return (high >>> 1) ^ -(low & 1)
+		}
+	}
+}


FLEX-34852 Added another test class to test the basic functionality of sorting (using simple fields). That's because we have to make sure that we don't break existing functionality when adding the feature of sorting by complex fields. Currently all functions pass.

error: pathspec 'frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as' did not match any file(s) known to git

--- frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as
+++ frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as
@@ -0,0 +1,389 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package {
+    import mx.collections.ArrayList;
+    import mx.collections.IList;
+    import mx.collections.ListCollectionView;
+
+    import org.flexunit.asserts.assertEquals;
+
+    import mx.collections.Sort;
+    import mx.collections.SortField;
+
+    public class ListCollectionView_Sort_Tests {
+        private var _sut:ListCollectionView;
+
+        [Before]
+        public function setUp():void
+        {
+            _sut = new ListCollectionView(new ArrayList());
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            _sut = null;
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_simple_objects():void
+        {
+            //given
+            var from0To4:IList = generateNumbers(5);
+            _sut.addAll(from0To4); //values: 0, 1, 2, 3, 4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField(null, false, true, true)];
+            _sut.sort = sortByIndexDescending;
+
+            //when
+            _sut.refresh(); //should be: 4, 3, 2, 1, 0
+
+            //then
+            assertItemsAre([4, 3, 2, 1, 0]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_simple_objects_adds_new_object_in_right_place():void
+        {
+            //given
+            var from0To4:IList = generateNumbers(5);
+            _sut.addAll(from0To4); //values: 0, 1, 2, 3, 4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField(null, false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values: 4, 3, 2, 1, 0
+
+            //when
+            _sut.addItem(5); //should be: 5, 4, 3, 2, 1, 0
+
+            //then
+            assertItemsAre([5, 4, 3, 2, 1, 0]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_simple_objects_removes_object_correctly():void
+        {
+            //given
+            var from0To4:IList = generateNumbers(5);
+            _sut.addAll(from0To4); //values: 0, 1, 2, 3, 4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField(null, false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values: 4, 3, 2, 1, 0
+
+            //when
+            _sut.removeItem(3); //should be: 4, 2, 1, 0
+
+            //then
+            assertItemsAre([4, 2, 1, 0]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_simple_objects_removes_object_at_index_correctly():void
+        {
+            //given
+            var from0To4:IList = generateNumbers(5);
+            _sut.addAll(from0To4); //values: 0, 1, 2, 3, 4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField(null, false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values: 4, 3, 2, 1, 0
+
+            //when
+            _sut.removeItemAt(3); //should be: 4, 3, 2, 0
+
+            //then
+            assertItemsAre([4, 3, 2, 0]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_simple_objects_moves_replaced_object_in_right_place():void
+        {
+            //given
+            var from0To4:IList = generateNumbers(5);
+            _sut.addAll(from0To4); //values: 0, 1, 2, 3, 4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField(null, false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values: 4, 3, 2, 1, 0
+
+            //when
+            _sut.setItemAt(100, 3); //before re-sort: 4, 3, 2, 100, 0
+
+            //then
+            assertItemsAre([100, 4, 3, 2, 0]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_simple_objects_adds_new_identical_object_in_right_place():void
+        {
+            //given
+            var from0To4:IList = generateNumbers(5);
+            _sut.addAll(from0To4); //values: 0, 1, 2, 3, 4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField(null, false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values: 4, 3, 2, 1, 0
+
+            //when
+            _sut.addItem(3); //should be: 5, 4, 3, 2, 1, 0
+
+            //then
+            assertItemsAre([4, 3, 3, 2, 1, 0]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_simple_objects_adds_new_identical_object_in_right_place_even_with_addItemAt():void
+        {
+            //given
+            var from0To4:IList = generateNumbers(5);
+            _sut.addAll(from0To4); //values: 0, 1, 2, 3, 4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField(null, false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values: 4, 3, 2, 1, 0
+
+            //when
+            _sut.addItemAt(3, 0); //should be: 5, 4, 3, 2, 1, 0
+
+            //then
+            assertItemsAre([4, 3, 3, 2, 1, 0]);
+        }
+
+
+        [Test]
+        public function test_numeric_descending_sort_on_complex_objects():void
+        {
+            //given
+            var from0To4:IList = generateVOs(5);
+            _sut.addAll(from0To4); //values["name"]: Object0, Object1, Object2, Object3, Object4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField("index", false, true, true)];
+            _sut.sort = sortByIndexDescending;
+
+            //when
+            _sut.refresh(); //should be: Object4, Object3, Object2, Object1, Object0
+
+            //then
+            assertIndexesAre([4, 3, 2, 1, 0]);
+        }
+
+        [Test]
+        public function test_multiple_sort_fields_on_complex_objects():void
+        {
+            //given
+            var from0To4:IList = generateVOs(5);
+            _sut.addAll(from0To4); //values["name"]: Object0, Object1, Object2, Object3, Object4
+            _sut.addItem(generateOneObject(2, "ABC")); //values["name"]: Object0, Object1, Object2, Object3, Object4, ABC2
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField("index", false, true, true), new SortField("name", false, false, false)];
+            _sut.sort = sortByIndexDescending;
+
+            //when
+            _sut.refresh(); //should be: Object0, Object1, ABC2, Object2, Object3, Object4
+
+            //then
+            assertIndexesAre([4, 3, 2, 2, 1, 0]);
+            assertNamesAre(["Object4", "Object3", "ABC2", "Object2", "Object1", "Object0"]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_complex_objects_adds_new_objects_in_right_place():void
+        {
+            //given
+            var from0To4:IList = generateVOs(5);
+            _sut.addAll(from0To4); //values["name"]: Object0, Object1, Object2, Object3, Object4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField("index", false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values["name"]: Object4, Object3, Object2, Object1, Object0
+
+            //when
+            _sut.addItem(generateOneObject(6));
+            _sut.addItem(generateOneObject(3.5));
+
+            //then
+            assertIndexesAre([6, 4, 3.5, 3, 2, 1, 0]);
+        }
+
+        [Test]
+        public function test_numeric_descending_sort_on_complex_objects_moves_replaced_object_in_right_place():void
+        {
+            //given
+            var from0To4:IList = generateVOs(5);
+            _sut.addAll(from0To4); //values["name"]: Object0, Object1, Object2, Object3, Object4
+
+            const sortByIndexDescending:Sort = new Sort();
+            sortByIndexDescending.fields = [new SortField("index", false, true, true)];
+            _sut.sort = sortByIndexDescending;
+            _sut.refresh(); //values["name"]: Object4, Object3, Object2, Object1, Object0
+
+            //when
+            _sut.setItemAt(generateOneObject(6), 1);
+
+            //then
+            assertIndexesAre([6, 4, 2, 1, 0]);
+        }
+
+        [Test]
+        public function test_simple_numeric_ascending_sort_on_complex_objects():void
+        {
+            //given
+            var from4To0:IList = generateVOs(5, true);
+            _sut.addAll(from4To0); //values["name"]: Object4, Object3, Object2, Object1, Object0
+
+            const sortByIndexAscending:Sort = new Sort();
+            sortByIndexAscending.fields = [new SortField("index", false, false, true)];
+            _sut.sort = sortByIndexAscending;
+
+            //when
+            _sut.refresh(); //should be: Object0, Object1, Object2, Object3, Object4
+
+            //then
+            assertIndexesAre([0, 1, 2, 3, 4]);
+        }
+
+        [Test(description="Testing that changing the properties of the Sort doesn't impact the actual sort order")]
+        public function test_sort_fields_on_complex_objects_dont_change_unless_sort_reapplied():void
+        {
+            //given
+            var from4To0:IList = generateVOs(5, true);
+            _sut.addAll(from4To0); //values["name"]: Object4, Object3, Object2, Object1, Object0
+
+            const sortByIndexAscending:Sort = new Sort();
+            sortByIndexAscending.fields = [new SortField("index", false, false, true)];
+            _sut.sort = sortByIndexAscending;
+            _sut.refresh(); //should be: Object0, Object1, Object2, Object3, Object4
+
+            //when
+            sortByIndexAscending.fields = [new SortField("name", false, true, false)]; //should have no effect
+
+            //then
+            assertIndexesAre([0, 1, 2, 3, 4]);
+        }
+
+        private function assertIndexesAre(indexes:Array):void
+        {
+            assertFieldValuesAre("index", indexes);
+        }
+
+        private function assertNamesAre(names:Array):void
+        {
+            assertFieldValuesAre("name", names);
+        }
+
+        private function assertFieldValuesAre(field:String, values:Array):void
+        {
+            assertEquals(values.length, _sut.length);
+
+            for(var i:int = 0; i < _sut.length; i++)
+            {
+                assertEquals(ListCollectionView_Sort_VO(_sut.getItemAt(i))[field], values[i]);
+            }
+        }
+
+
+
+        private function assertItemsAre(indexes:Array):void
+        {
+            assertEquals(indexes.length, _sut.length);
+
+            for(var i:int = 0; i < _sut.length; i++)
+            {
+                assertEquals(indexes[i], _sut.getItemAt(i));
+            }
+        }
+
+
+        private static function generateVOs(no:int, reverse:Boolean = false):IList
+        {
+            return generateObjects(no, reverse, generateOneObject);
+        }
+
+        private static function generateNumbers(no:int, reverse:Boolean = false):IList
+        {
+            return generateObjects(no, reverse, generateOneNumber);
+        }
+
+        private static function generateObjects(no:int, reverse:Boolean = false, generator:Function = null):IList
+        {
+            var result:Array = [];
+            for(var i:int = 0; i < no; i++)
+            {
+                result.push(generator(i));
+            }
+
+            if(reverse)
+                result.reverse();
+
+            return new ArrayList(result);
+        }
+
+        private static function generateOneObject(index:Number, name:String = "Object"):ListCollectionView_Sort_VO
+        {
+            return new ListCollectionView_Sort_VO(index, name, "Street");
+        }
+
+        private static function generateOneNumber(value:Number):Number
+        {
+            return value;
+        }
+    }
+}
+
+class ListCollectionView_Sort_VO
+{
+    [Bindable]
+    public var name:String;
+
+    [Bindable]
+    public var address:ListCollectionView_Sort_AddressVO;
+
+    [Bindable]
+    public var index:Number;
+
+    public function ListCollectionView_Sort_VO(index:Number, namePrefix:String, streetPrefix:String)
+    {
+        this.index = index;
+        this.name = namePrefix + index;
+        this.address = new ListCollectionView_Sort_AddressVO(streetPrefix + index);
+    }
+}
+
+class ListCollectionView_Sort_AddressVO
+{
+    [Bindable]
+    public var street:String;
+
+    public function ListCollectionView_Sort_AddressVO(street:String)
+    {
+        this.street = street;
+    }
+}


Ref ticket:5, midlertidig endring resatt til opprinnelig løsning. Sikkerhet rundt sending av personnummer/kontonummer løses ved bruk av https på server ved kjøring av løsningen.

--- app/src/no/makingwaves/cust/dss/commands/getTravelInfoBaseCommand.as
+++ app/src/no/makingwaves/cust/dss/commands/getTravelInfoBaseCommand.as
@@ -57,13 +57,13 @@

 			var personalInfo:webservices.travelexpense.pdf.PersonalInfoVO = new webservices.travelexpense.pdf.PersonalInfoVO();
 			var modelInfo:no.makingwaves.cust.dss.vo.PersonalInfoVO = ModelLocator.getInstance().activePerson;
-			personalInfo.socialsecuritynumber = "";//(includeData) ? modelInfo.socialsecuritynumber : "";
+			personalInfo.socialsecuritynumber = (includeData) ? modelInfo.socialsecuritynumber : "";
 			personalInfo.firstname = (includeData) ? modelInfo.firstname : "";
 			personalInfo.lastname = (includeData) ? modelInfo.lastname : "";
 			personalInfo.adress = (includeData) ? modelInfo.adress : "";
 			personalInfo.zip = (includeData) ? modelInfo.zip : "";
 			personalInfo.postoffice = (includeData) ? modelInfo.postoffice : "";
-			personalInfo.account = "";//(includeData) ? modelInfo.account : "";
+			personalInfo.account = (includeData) ? modelInfo.account : "";
 			personalInfo.workplace = (includeData) ? modelInfo.workplace : "";
 			personalInfo.department = (includeData) ? modelInfo.department : "";
 			personalInfo.jobtitle = (includeData) ? modelInfo.jobtitle : "";


This non-Flex, ActionScript class, corresponds to one in the Google Maps API library. An ActionScript version is necessary so that an external reference can be used when cross-compiling to JavaScript.

error: pathspec 'frameworks/as/projects/FlexJSUI/src/google/maps/MarkerOptions.as' did not match any file(s) known to git

--- frameworks/as/projects/FlexJSUI/src/google/maps/MarkerOptions.as
+++ frameworks/as/projects/FlexJSUI/src/google/maps/MarkerOptions.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package google.maps
+{
+	public class MarkerOptions
+	{
+		public function MarkerOptions()
+		{
+		}
+
+		public var opacity:Number;
+	}
+}


FLEX-33311 Adding unit test to reproduce the bug. Currently fails, as expected.

error: pathspec 'frameworks/projects/spark/tests/spark/layouts/ConstraintLayout_FLEX_33311_Tests.as' did not match any file(s) known to git

--- frameworks/projects/spark/tests/spark/layouts/ConstraintLayout_FLEX_33311_Tests.as
+++ frameworks/projects/spark/tests/spark/layouts/ConstraintLayout_FLEX_33311_Tests.as
@@ -0,0 +1,139 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.layouts {
+    import flash.events.Event;
+    import flash.events.EventDispatcher;
+
+    import mx.containers.utilityClasses.ConstraintColumn;
+    import mx.containers.utilityClasses.ConstraintRow;
+    import mx.effects.Resize;
+    import mx.states.SetProperty;
+    import mx.states.State;
+    import mx.states.Transition;
+
+    import org.flexunit.asserts.assertTrue;
+    import org.flexunit.async.Async;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    import spark.components.DropDownList;
+    import spark.components.Group;
+    import spark.events.DropDownEvent;
+
+    public class ConstraintLayout_FLEX_33311_Tests {
+        private static const NO_ENTER_FRAMES_TO_ALLOW:int = 3;
+        private static var noEnterFramesRemaining:int = NaN;
+        private static const _finishNotifier:EventDispatcher = new EventDispatcher();
+
+        private var _sut:ConstraintLayout;
+        private var _parentGroup:Group;
+        private var _childGroup1:Group;
+        private var _childGroup2:Group;
+        private var _dropDown:DropDownList;
+
+        [Before]
+        public function setUp():void
+        {
+            _sut =  new ConstraintLayout();
+            _sut.constraintColumns = new <ConstraintColumn>[new ConstraintColumn()];
+            var row:ConstraintRow = new ConstraintRow();
+            row.id = "row1";
+            _sut.constraintRows = new <ConstraintRow>[row];
+
+
+            _parentGroup = new Group();
+            _childGroup1 = new Group();
+            _childGroup2 = new Group();
+
+            _dropDown = new DropDownList();
+            _childGroup1.addElement(_dropDown);
+            _parentGroup.addElement(_childGroup1);
+            _parentGroup.addElement(_childGroup2);
+
+            _parentGroup.states = [
+                new State({name:"closed", overrides:[new SetProperty(_dropDown, "width", "200")]}),
+                new State({name:"open", overrides:[new SetProperty(_dropDown, "width", "400")]})];
+            _parentGroup.currentState = "closed";
+
+            var _transition:Transition = new Transition();
+            _transition.fromState = "*";
+            _transition.toState = "*";
+            _transition.effect = new Resize(_childGroup1);
+            _parentGroup.transitions = [_transition];
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            _sut = null;
+            _parentGroup = null;
+            _childGroup1 = null;
+            _childGroup2 = null;
+            _dropDown = null;
+        }
+
+        [Test(async, timeout=1000)]
+        public function reproduce_bug():void
+        {
+            function onDropDownOpen(event:DropDownEvent):void
+            {
+                _parentGroup.currentState = "open";
+            }
+
+            function onDropDownClose(event:DropDownEvent):void
+            {
+                _parentGroup.currentState = "closed";
+            }
+
+            //given
+            _childGroup1.baseline = "row1:0";
+            _childGroup2.baseline = "row1:0";
+            _dropDown.addEventListener(DropDownEvent.CLOSE, onDropDownClose);
+            _dropDown.addEventListener(DropDownEvent.OPEN, onDropDownOpen);
+
+            //when
+            _parentGroup.layout = _sut;
+            UIImpersonator.addElement(_parentGroup);
+            _dropDown.openDropDown();
+
+            //then - wait a few frames
+            noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_no_fatal_was_thrown, 800);
+        }
+
+        private static function then_no_fatal_was_thrown(event:Event, passThroughData:Object):void
+        {
+            assertTrue(true);
+        }
+
+        private function onEnterFrame(event:Event):void
+        {
+            if(!--noEnterFramesRemaining)
+            {
+                UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+                _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+            }
+            else if(NO_ENTER_FRAMES_TO_ALLOW - noEnterFramesRemaining == 2)
+            {
+                _dropDown.closeDropDown(true);
+            }
+        }
+    }
+}


Previous commit wont work if I don't include the new class

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/c0d3m0nk3y/Konata.git/'


adding getTimer to logger

adding getTimer to logger

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/rafaelcordoba/cocktail-demo.git/'


whoops - added Set.as to svn

whoops - added Set.as to svn

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4896 542714f4-19e9-0310-aa3c-eee0fc999fb1

error: pathspec 'src/as/com/threerings/util/Set.as' did not match any file(s) known to git

--- src/as/com/threerings/util/Set.as
+++ src/as/com/threerings/util/Set.as
@@ -0,0 +1,57 @@
+//
+// $Id: Set.as 4848 2007-10-18 23:55:26Z tim $
+//
+// Narya library - tools for developing networked games
+// Copyright (C) 2002-2007 Three Rings Design, Inc., All Rights Reserved
+// http://www.threerings.net/code/narya/
+//
+// This library is free software; you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as published
+// by the Free Software Foundation; either version 2.1 of the License, or
+// (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+package com.threerings.util {
+
+public interface Set
+{
+    /**
+     * Adds the specified element to the set if it's not already present.
+     * Returns true if the set did not already contain the specified element.
+     */
+    function add (o :Object) :Boolean;
+
+    /**
+     * Removes the specified element from this set if it is present.
+     * Returns true if the set contained the specified element.
+     */
+    function remove (o :Object) :Boolean;
+
+    /** Remove all elements from this set. */
+    function clear () :void;
+
+    /** Returns true if this set contains the specified element. */
+    function contains (o :Object) :Boolean;
+
+    /** Retuns the number of elements in this set. */
+    function size () :int; // @TSC - should this be uint?
+
+    /** Returns true if this set contains no elements. */
+    function isEmpty () :Boolean;
+
+    /**
+     * Returns all elements in the set in an Array.
+     * Modifying the returned Array will not modify the set.
+     */
+    function toArray () :Array;
+}
+
+}


renaming "die" calls to "once" calls

renaming "die" calls to "once" calls


Make preload boolean reflect string value

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/OnCircle/vpaid-wrapper.git/'


making "AppLayout" class extend "Layout" instead of "View"


adding test

adding test


Split initialize() back out of the constructor - it's an extension hook for framework and application devs.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/eric-stanley/robotlegs-framework.git/'


Extra mapValue from event instance to upcasting Event for polymorphism event type handle


added basic controller template.

added basic controller template.


refactoring flash packages

refactoring flash packages

error: pathspec 'src/milkshape/media/flash/src/cc/milkshape/issue/IssuePreview.as' did not match any file(s) known to git

--- src/milkshape/media/flash/src/cc/milkshape/issue/IssuePreview.as
+++ src/milkshape/media/flash/src/cc/milkshape/issue/IssuePreview.as
@@ -0,0 +1,46 @@
+package cc.milkshape.issues
+{
+	import cc.milkshape.preloader.PreloaderWiper;
+
+	import flash.events.MouseEvent;
+
+	public class IssuePreview extends IssuePreviewClp
+	{
+		private var _contentClp:IssuePreviewContentClp;
+
+		public function IssuePreview(issue:Object = null)
+		{
+			if(issue)
+			{
+				addEventListener(MouseEvent.ROLL_OVER, _overHandler);
+				addEventListener(MouseEvent.ROLL_OUT, _outHandler);
+				over.alpha = 0.7;
+				buttonMode = true;
+				_contentClp = new IssuePreviewContentClp();
+				_contentClp.pastilleClp.stop();
+				_contentClp.titleClp.descLabel.text = issue.desc;
+				_contentClp.titleClp.titleLabel.text = issue.title;
+				_contentClp.infoClp.creatorsLabel.text = issue.nbCreators + ' CREATORS';
+				_contentClp.infoClp.squaresLabel.text = issue.nbIssues + ' SQUARES';
+				_contentClp.scheduleClp.scheduleLabel.text = issue.schedule;
+				_contentClp.pastilleClp.textClp.label.text = '#' + issue.num;
+
+				var img:PreloaderWiper = new PreloaderWiper();
+				img.loadMedia(issue.url);
+
+				_contentClp.loaderClp.addChild(img);
+				content.addChild(_contentClp);
+			}
+		}
+
+		private function _overHandler(e:MouseEvent):void
+		{
+			over.alpha = 0;
+		}
+
+		private function _outHandler(e:MouseEvent):void
+		{
+			over.alpha = 0.7;
+		}
+	}
+}


adding parentheses trick to inline instantiation


added cleanObject function to recursively sanitize objects before passing to externalInterface.call


added error handling for non-encrypted data over encrypted channel

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/pubnub/flash.git/'


add Library file to build the SWC, this file replace ALL the classes defined in com.google.analytics.components.*

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jisobkim/gaforflash.git/'


Create e.as

Create e.as

i'm not sure if this'll actually work but e

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Aroltd/e.git/'


decrease security for javascript API access

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/dave-hansen/vpaidjs.git/'


changing return type to void

changing return type to void


Forgot to check this one in yesterday.

Forgot to check this one in yesterday.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@3928 542714f4-19e9-0310-aa3c-eee0fc999fb1

error: pathspec 'src/as/com/threerings/io/Translations.as' did not match any file(s) known to git

--- src/as/com/threerings/io/Translations.as
+++ src/as/com/threerings/io/Translations.as
@@ -0,0 +1,36 @@
+package com.threerings.io {
+
+import com.threerings.util.SimpleMap;
+
+/**
+ * Maintains a set of translations between actionscript class names
+ * and server (Java) class names.
+ */
+public class Translations
+{
+    public static function getToServer (asName :String) :String
+    {
+        var javaName :String = (_toServer.get(asName) as String);
+        return (javaName == null) ? asName : javaName;
+    }
+
+    public static function getFromServer (javaName :String) :String
+    {
+        var asName :String = (_fromServer.get(javaName) as String);
+        return (asName == null) ? javaName : asName;
+    }
+
+    public static function addTranslation (
+            asName :String, javaName :String) :void
+    {
+        _toServer.put(asName, javaName);
+        _fromServer.put(javaName, asName);
+    }
+
+    /** A mapping of actionscript names to java names. */
+    protected static var _toServer :SimpleMap = new SimpleMap();
+
+    /** A mapping of java names to actionscript names. */
+    protected static var _fromServer :SimpleMap = new SimpleMap();
+}
+}


removing traces;

removing traces;


APL-4997 resolve uppercase HTTPS

APL-4997 resolve uppercase HTTPS

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/vidible/vdb-flashls.git/'


re-factoring class

re-factoring class


removing namespace based class restrictions and authentication


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1262539 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/styles/ISimpleStyleClient.as
+++ frameworks/projects/framework/src/mx/styles/ISimpleStyleClient.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.styles
 {


Update About.as

Update About.as

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jerome-desmedt/daelysid.git/'


Bug 704069: add ToBoolean specific testing, ToBoolean(float4()) always returns false, no matter what the value is

error: pathspec 'test/acceptance/as3/Types/Float4/ToBoolean.as' did not match any file(s) known to git

--- test/acceptance/as3/Types/Float4/ToBoolean.as
+++ test/acceptance/as3/Types/Float4/ToBoolean.as
@@ -0,0 +1,68 @@
+/* -*- c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4 -*- */
+/* vi: set ts=4 sw=4 expandtab: (add to ~/.vimrc: set modeline modelines=5) */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is [Open Source Virtual Machine.].
+ *
+ * The Initial Developer of the Original Code is
+ * Adobe System Incorporated.
+ * Portions created by the Initial Developer are Copyright (C) 2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Adobe AS3 Team
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var SECTION = "8";
+var VERSION = "AS3";
+var TITLE   = "The operation ToBoolean";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var v:Boolean;
+
+v = float4(+0.0f);
+AddTestCase("ToBoolean(float4(+0.0f))", false, v);
+
+v = float4(-0.0f);
+AddTestCase("ToBoolean(flaot4(-0.0f))", false, v);
+
+v = float4(float.NaN);
+AddTestCase("ToBoolean(float4(float.NaN))", false, v);
+
+v = float4(1f);
+AddTestCase("ToBoolean(float4(1f))", false, v);
+
+v = float4(float(true));
+AddTestCase("ToBoolean(float4(float(true)))", false, v);
+
+v = float4(float(false));
+AddTestCase("ToBoolean(float4(float(false)))", false, v);
+
+test();
+


adding Embedder import

adding Embedder import


created DisablingButton, which extends SimpleButton and adds support for a disabledState

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@368 ed5b42cb-e716-0410-a449-f6a68f950b19

error: pathspec 'src/as/com/threerings/flash/DisablingButton.as' did not match any file(s) known to git

--- src/as/com/threerings/flash/DisablingButton.as
+++ src/as/com/threerings/flash/DisablingButton.as
@@ -0,0 +1,113 @@
+//
+// $Id$
+//
+// Nenya library - tools for developing networked games
+// Copyright (C) 2002-2007 Three Rings Design, Inc., All Rights Reserved
+// http://www.threerings.net/code/nenya/
+//
+// This library is free software; you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as published
+// by the Free Software Foundation; either version 2.1 of the License, or
+// (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+package com.threerings.flash
+{
+
+import flash.display.SimpleButton;
+import flash.display.DisplayObject;
+
+/**
+ * A SimpleButton subclass that includes a disabledState.
+ * DisablingButtons don't dispatch mouse events when disabled.
+ */
+public class DisablingButton extends SimpleButton
+{
+    public function DisablingButton (
+       upState :DisplayObject = null,
+       overState :DisplayObject = null,
+       downState :DisplayObject = null,
+       hitTestState :DisplayObject = null,
+       disabledState :DisplayObject = null)
+    {
+        super(null, overState, downState, hitTestState);
+
+        _disabledState = disabledState;
+        _upState = upState;
+
+        updateState();
+    }
+
+    /**
+     * Returns the DisplayObject that will be displayed when the button is disabled.
+     */
+    public function get disabledState () :DisplayObject
+    {
+        return _disabledState;
+    }
+
+    /**
+     * Sets the DisplayObject that will be displayed when the button is disabled.
+     */
+    public function set disabledState (newState :DisplayObject) :void
+    {
+        _disabledState = newState;
+        updateState();
+    }
+
+    // from SimpleButton
+    override public function set upState (newState :DisplayObject) :void
+    {
+        _upState = newState;
+        updateState();
+    }
+
+    // from SimpleButton
+    override public function get upState () :DisplayObject
+    {
+        return _upState;
+    }
+
+    // from SimpleButton
+    override public function set enabled (val :Boolean) :void
+    {
+        super.enabled = val;
+
+        updateState();
+    }
+
+    override public function get mouseEnabled() :Boolean
+    {
+        return _mouseEnabled;
+    }
+
+    override public function set mouseEnabled (enabled :Boolean) :void
+    {
+        _mouseEnabled = enabled;
+
+        updateState();
+    }
+
+    protected function updateState () :void
+    {
+        super.upState = ((null != _disabledState && !super.enabled) ? _disabledState : _upState);
+
+        // mouseEnabled is always false when the button is disabled
+        super.mouseEnabled = (!super.enabled ? _mouseEnabled : false);
+    }
+
+    protected var _showingDisabledState :Boolean;
+    protected var _disabledState :DisplayObject;
+    protected var _upState :DisplayObject;
+    protected var _mouseEnabled :Boolean = true;
+}
+
+}


add ghost slider helper class

add ghost slider helper class

error: pathspec 'src/flash/classes/ghost/helpers/Slider2D.as' did not match any file(s) known to git

--- src/flash/classes/ghost/helpers/Slider2D.as
+++ src/flash/classes/ghost/helpers/Slider2D.as
@@ -0,0 +1,270 @@
+/* ----------------------------------------------------------------------------
+		Ghost Comps is a set of controls to manipulate user interface objects.
+		Copyright (C) 2010 Jan Cássio
+	---------------------------------------------------------------------------
+
+		This library is free software; you can redistribute it and/or modify
+	it under the terms of the GNU Lesser General Public License as published
+	by the Free Software Foundation; either version 2.1 of the License, or
+	(at your option) any later version.
+
+		This library is distributed in the hope that it will be useful, but
+	WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+	or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+	License for more details.
+
+		You should have received a copy of the GNU Lesser General Public License
+	along with this library; if not, write to the Free Software Foundation,
+	Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+	Ghost Comps Project
+	http://github.com/jancassio/ghostcomps/
+
+	------------------------------------------------------------------------ */
+
+package ghost.helpers
+{
+	import ghost.events.SliderEvent;
+
+	import flash.events.EventDispatcher;
+	import flash.geom.Point;
+	import flash.geom.Rectangle;
+
+	[Event (name="sliderDrag", type="ghost.events.SliderEvent")]
+	[Event (name="sliderDrop", type="ghost.events.SliderEvent")]
+	[Event (name="sliderUpdate", type="ghost.events.SliderEvent")]
+
+	/**
+	 *  Helper to assist in slider based interactions/instructions.
+	 *
+	 *  @example
+	 *  <code>
+	 *
+	 *  var slider : Slider2D;
+	 *  var rect : Rectangle;
+	 *  var point : Point;
+	 *
+	 *  slider = new Slider;
+	 *  rect = new Rectangle(0, 0, 100, 100);
+	 *  point = new Point(50, 50);
+	 *
+	 *  slider.area = rect;
+	 *  slider.position = point;
+	 *
+	 *  trace("percentage x over area is: ", slider.percentageX); // .5;
+	 *  slider.percentageY = .2;
+	 *  trace("position Y over area is: ", slider.positionY); // 20;
+	 *  </code>
+	 *
+	 *  @author jancassio | janio@jancassio.com
+	 */
+	public class Slider2D extends EventDispatcher
+	{
+
+		/** lock x axis */
+		public static const HORIZONTAL	: String = "horizontal";
+
+		/** lock y axis */
+		public static const VERTICAL	: String = "vertical";
+
+
+		private var _pos 	: Point;
+		private var _area	: Rectangle;
+		private var _axis	: String;
+
+		/**
+		 *	Creates a new Slider2D instance.
+		 */
+		public function Slider2D (
+			area : Rectangle = null,
+			position : Point = null,
+			percentage : Point = null,
+			axis : String = null
+		)
+		{
+			conf(
+				area != null ? area.clone() : new Rectangle,
+				position != null ? position.clone() : new Point,
+				axis
+			);
+		}
+
+		protected function conf (area : Rectangle, point : Point, axis : String) : void
+		{
+			this._area	= area;
+			this._pos	= point;
+			this._axis	= axis;
+		}
+
+		/**
+		 *	The point x and y position.
+		 */
+		public function set position (value : Point):void
+		{
+			_pos.x = Math.max( _area.x, Math.min(_area.width + _area.x, value.x) );
+			_pos.y = Math.max( _area.y, Math.min(_area.height + _area.y, value.y) );
+
+			dispatch(SliderEvent.UPDATE);
+		}
+
+		/**
+		 *	The x axis position.
+		 */
+		public function set positionX (value : Number):void
+		{
+			position = new Point( value, positionY );
+		}
+
+		/**
+		 *	The y axis position.
+		 */
+		public function set positionY (value : Number) : void
+		{
+			position = new Point( positionX, value );
+		}
+
+		public function get position () : Point
+		{
+			return _pos.clone();
+		}
+
+		public function get positionX () : Number
+		{
+			return _pos.x;
+		}
+
+		public function get positionY () : Number
+		{
+			return _pos.y;
+		}
+
+		/**
+		 *	The point position percentage over area.
+		 */
+		public function set percentage (value : Point):void
+		{
+			position = new Point(
+			 	_area.x + (_area.width * value.x),
+				_area.y + (_area.height * value.y)
+			);
+			dispatch(SliderEvent.UPDATE);
+		}
+
+		/**
+		 *	The x axis slide percentage over area position.
+		 */
+		public function set percentageX (value : Number):void
+		{
+			percentage = new Point( value, percentageY );
+		}
+
+		/**
+		 *	The y axis slide percentage over area position.
+		 */
+		public function set percentageY (value : Number) : void
+		{
+			percentage = new Point( percentageX, value );
+		}
+
+		public function get percentage () : Point
+		{
+			var x : Number;
+			var y : Number;
+
+			x = (position.x - _area.x) / _area.width;
+			y = (position.y - _area.y) / _area.height;
+
+			x = isNaN(x) ? 1 : x;
+			y = isNaN(y) ? 1 : y;
+
+			return new Point( x, y );
+		}
+
+		public function get percentageX () : Number
+		{
+			return percentage.x;
+		}
+
+		public function get percentageY () : Number
+		{
+			return percentage.y;
+		}
+
+
+		/**
+		 *	Slider area.
+		 */
+		public function set area (rectangle : Rectangle) : void
+		{
+			var oldPct : Point;
+			oldPct = percentage.clone();
+			_area = rectangle.clone();
+
+			if(_axis != null)
+			{
+				if(_axis == HORIZONTAL) _area.height = 0;
+				if(_axis == VERTICAL) _area.width = 0;
+			}
+			percentage = oldPct;
+		}
+
+		public function get area () : Rectangle
+		{
+			return _area.clone();
+		}
+
+		/**
+		 *	Active axis on slider.
+		 */
+		public function set axis (value : String) : void
+		{
+			_axis = value;
+		}
+
+		public function get axis () : String
+		{
+			return _axis;
+		}
+
+		/**
+		 *	The x, y Point offset.
+		 */
+		public function get offset () : Point
+		{
+			var x : Number;
+			var y : Number;
+
+			x = (_pos.x - _area.x);
+			y = (_pos.y - _area.y);
+
+			return new Point( x, y );
+		}
+
+
+		/**
+		 *	Disposes object.
+		 */
+		public function dispose () : void
+		{
+			_pos = undefined;
+			_area = undefined;
+			_axis = undefined;
+		}
+
+
+		internal function dispatch(type : String):Boolean
+		{
+			var event : SliderEvent;
+
+			event				= new SliderEvent( type );
+			event.percentage	= percentage;
+			event.position		= position;
+			event.offset		= offset;
+			event.area			= area;
+
+			return dispatchEvent( event );
+		}
+
+	}
+}


updating variable declaration

updating variable declaration


File was missing before

File was missing before

error: pathspec 'protogeni/demo/shared/com/mattism/http/xmlrpc/MethodFault.as' did not match any file(s) known to git

--- protogeni/demo/shared/com/mattism/http/xmlrpc/MethodFault.as
+++ protogeni/demo/shared/com/mattism/http/xmlrpc/MethodFault.as
@@ -0,0 +1,77 @@
+/**
+* @author	Matt Shaw <xmlrpc@mattism.com>
+* @url		http://sf.net/projects/xmlrpcflash
+* 			http://www.osflash.org/doku.php?id=xmlrpcflash
+*
+* @author   Daniel Mclaren (http://danielmclaren.net)
+* @note     Updated to Actionscript 3.0
+*/
+
+package com.mattism.http.xmlrpc
+{
+	public interface MethodFault {
+
+		function getFaultCode():Number;
+		function getFaultString():String;
+		function getArgs():Array;
+		function setFaultObject( o:Object ):void;
+		function toString():String;
+	}
+}
+
+/*
+
+<?xml version='1.0'?>
+<methodResponse>
+	<fault>
+		<value>
+			<struct>
+				<member>
+					<name>faultCode</name>
+					<value><int>-2</int></value>
+				</member>
+				<member>
+					<name>args</name>
+					<value>
+						<array>
+							<data>
+							</data>
+						</array>
+					</value>
+				</member>
+				<member>
+					<name>faultString</name>
+					<value>
+						<string>Unexpected Zope error value: NotFound -
+							Site Error
+							An error was encountered while publishing this resource.
+
+							Debugging Notice
+
+							Zope has encountered a problem publishing your object.
+							The object at http://www.zope.org/Members/logik/objectIds has an empty or missing docstring. Objects must have a docstring to be published.
+
+
+							Troubleshooting Suggestions
+
+
+							The URL may be incorrect.
+							The parameters passed to this resource may be incorrect.
+							A resource that this resource relies on may be
+							encountering an error.
+
+
+							For more detailed information about the error, please
+							refer to the error log.
+
+
+							If the error persists please contact the site maintainer.
+							Thank you for your patience.
+						</string>
+					</value>
+				</member>
+			</struct>
+		</value>
+	</fault>
+</methodResponse>
+*/


adding auto_load param to load_uri method


Added DateUtils

Added DateUtils

error: pathspec 'WeaveData/src/weave/utils/DateUtils.as' did not match any file(s) known to git

--- WeaveData/src/weave/utils/DateUtils.as
+++ WeaveData/src/weave/utils/DateUtils.as
@@ -0,0 +1,154 @@
+package weave.utils
+{
+	import mx.formatters.DateFormatter;
+
+	public class DateUtils
+	{
+
+		private static var tempDate:Date;
+		public static function getCurrentDate():Date
+		{
+			tempDate = new Date();
+			var currentDate:Date = new Date();
+			tempDate.setDate(currentDate.getDate());
+			tempDate.setMonth(currentDate.getMonth());
+			tempDate.setFullYear(currentDate.getFullYear());
+
+			return tempDate;
+		}
+
+		private static var dateFormatter:DateFormatter;
+		public static function getCurrentDateInStringFormat(format:String='MM/DD/YYYY'):String
+		{
+			dateFormatter = new DateFormatter();
+			dateFormatter.formatString = format;
+
+			return dateFormatter.format(getCurrentDate());
+		}
+
+		public static function getDateInStringFormat(date:Date,format:String='MM/DD/YYYY'):String
+		{
+			dateFormatter = new DateFormatter();
+			dateFormatter.formatString = format;
+
+			return dateFormatter.format(date);
+		}
+
+		private static var validDateWords:Array = ['now','day','days','month','months'];
+		private static var validDateOperators:Array = ['+','-']
+
+		public static const millisecondsPerMinute:uint = 1000 * 60;
+		public static const millisecondsPerHour:uint = 1000 * 60 * 60;
+		public static const millisecondsPerDay:uint = 1000 * 60 * 60 * 24;
+		//assumes 31 days
+		public static const millisecondsPerMonth:uint = 1000 * 60 * 60 * 24 * 31;
+
+		/**
+		 * This function takes a string and converts it to a date object. This uses the Flex's
+		 * standard date formater if the string is in the standard date string format.
+		 * Else it assumes the string format uses the NOW keyword.
+		 * @param str The Date in String format
+		 *
+		 * @return The Date object.
+		 * */
+		public static function getDateFromString(str:String):Date
+		{
+			if(!str)
+				return null;
+
+			//if it does not start with now then use dateformatter to format the date
+			if(str.substr(0,3).toLowerCase() != 'now')
+				return DateFormatter.parseDateString(str);
+
+			if(str.toLowerCase() == 'now')
+				return getCurrentDate();
+
+
+			var currentDate:Date = getCurrentDate();
+
+			var operator:String = str.substr(3,1);
+
+			//checking for valid operator
+			if(validDateOperators.indexOf(operator) == -1)
+				return null;
+
+			var digit:Number = Number(str.substr(4,2));
+
+			if(isNaN(digit))
+				return null;
+
+			var modifier:String = str.substr(6);
+
+			//checking if valid date keyword is used
+			if(validDateWords.indexOf(modifier.toLowerCase()) == -1)
+				return null;
+
+			var dateInMS:Number = currentDate.getTime();
+
+			if(operator == '+')
+			{
+				dateInMS = dateInMS + digit * getDateKeywordInMS(modifier);
+			}else if (operator == '-')
+			{
+				dateInMS = dateInMS - digit * getDateKeywordInMS(modifier);
+			}
+
+			tempDate = new Date();
+			tempDate.setTime(dateInMS);
+
+			return tempDate;
+		}
+
+		/**
+		 * This function takes a date parameter and checks to see if it is within the range of the
+		 * start and end dates.
+		 * @param date The Date object we want to check
+		 * @param start The start date of the range
+		 * @param end The end date of the range
+		 *
+		 * @return Boolean value.
+		 * */
+		public static function isDateWithinRange(date:Date,start:Date,end:Date):Boolean
+		{
+			var dateInMS:Number = date.getTime();
+
+			var startInMS:Number = start.getTime();
+
+			var endInMS:Number = end.getTime();
+
+			if(startInMS <= dateInMS)
+				if(endInMS >= dateInMS)
+					return true;
+			return false;
+		}
+
+
+		/**
+		 * This function takes a date parameter in string format and checks to see if it is within the range of the
+		 * start and end dates.
+		 * @param date The date we want to check in String format
+		 * @param start The start date of the range in String format
+		 * @param end The end date of the range in String format
+		 *
+		 * @return Boolean value.
+		 * */
+		public static function isDateStringWithinRange(date:String,start:String,end:String):Boolean
+		{
+			var d:Date = getDateFromString(date);
+			var s:Date = getDateFromString(start);
+			var e:Date = getDateFromString(end);
+
+			return isDateWithinRange(d,s,e);
+		}
+
+		private static function getDateKeywordInMS(key:String):uint
+		{
+			if(key.toLowerCase() == 'day' || key.toLowerCase() == 'days')
+				return millisecondsPerDay;
+			if(key.toLowerCase() == 'month' || key.toLowerCase() == 'months')
+				return millisecondsPerMonth;
+
+			return null;
+		}
+	}
+}


Added an example file

Added an example file

error: pathspec 'unreal_angelscript/examples/Example_Actor.as' did not match any file(s) known to git

--- unreal_angelscript/examples/Example_Actor.as
+++ unreal_angelscript/examples/Example_Actor.as
@@ -0,0 +1,29 @@
+class AExampleActor : AActor
+{
+	UPROPERTY()
+	bool ExampleUPropertyBool = false;
+
+	UPROPERTY()
+	float ExampleUPropertyFloat = 10.0f;
+
+	FString ExampleString = "";
+
+	default SomeParentInt = 4;
+
+	UFUNCTION()
+	void ExampleUFunction()
+	{
+		Log("This can be called from blueprint");
+	}
+
+	void ExampleMethod()
+	{
+		Log("This can only be called from Angelscript (And C++ via reflection)");
+	}
+
+	UFUNCTION(BlueprintOverride)
+	void ExampleUFunctionOverride()
+	{
+		Log("You can override functions from parent classes and BlueprintImplementableEvents in C++");
+	}
+};


updating target extended class

updating target extended class

fatal: unable to access 'https://github.com/rafaelcordoba/cocktail-demo.git/': The requested URL returned error: 403


adds resourcely main class including resource listing logic

error: pathspec 'air/src/de/notfound/resourcely/Resourcely.as' did not match any file(s) known to git

--- air/src/de/notfound/resourcely/Resourcely.as
+++ air/src/de/notfound/resourcely/Resourcely.as
@@ -0,0 +1,88 @@
+package de.notfound.resourcely
+{
+	import de.notfound.resourcely.util.FileUtil;
+	import de.notfound.resourcely.image.Image;
+	import de.notfound.resourcely.config.ResourcelyConfig;
+	import de.notfound.resourcely.config.ResourcelyConfigBuilder;
+	import de.notfound.resourcely.model.Density;
+
+	import flash.filesystem.File;
+	import flash.utils.Dictionary;
+
+	public class Resourcely
+	{
+		private static var _instance : Resourcely;
+		private static var _allowInstance : Boolean = false;
+
+		private var _config : ResourcelyConfig;
+		private var _densities : Vector.<Density>;
+		private var _images : Dictionary;
+
+		public function Resourcely()
+		{
+			if (!_allowInstance)
+				throw new Error("Singleton class. Can't create new instance. Use getInstance() instead.");
+
+			_images = new Dictionary();
+			_densities = new Vector.<Density>();
+		}
+
+		public static function getInstance() : Resourcely
+		{
+			if (_instance == null)
+			{
+				_allowInstance = true;
+				_instance = new Resourcely();
+			}
+
+			return _instance;
+		}
+
+		public function init(config : ResourcelyConfig = null) : void
+		{
+			_config = config != null ? config : ResourcelyConfigBuilder.getDefault();
+
+			initDensities();
+			initImages();
+		}
+
+		private function initDensities() : void
+		{
+			_densities.push(new Density(Density.LDPI, Density.LDPI_QUALIFIER));
+			_densities.push(new Density(Density.MDPI, Density.MDPI_QUALIFIER));
+			_densities.push(new Density(Density.HDPI, Density.HDPI_QUALIFIER));
+			_densities.push(new Density(Density.XHDPI, Density.XHDPI_QUALIFIER));
+			_densities.push(new Density(Density.XXHDPI, Density.XXHDPI_QUALIFIER));
+			_densities.push(new Density(Density.XXXHDPI, Density.XXXHDPI_QUALIFIER));
+
+			_densities = _config.resourceLocationStrategy.getOrder(_densities);
+		}
+
+		private function initImages() : void
+		{
+			var resDir : File = _config.resourceDirectory;
+			if (resDir.exists)
+			{
+				for (var i : int = 0; i < _densities.length; i++)
+				{
+					var imageDir : File = resDir.resolvePath(_densities[i].qualifier);
+					if (imageDir.exists)
+					{
+						var imageDirContent : Array = imageDir.getDirectoryListing();
+						for each (var imageDirFile : File in imageDirContent)
+						{
+							if(FileUtil.isImageFile(imageDirFile.extension) && _images[imageDirFile.name] == null)
+							{
+								_images[imageDirFile.name] = new Image(this, imageDirFile);
+							}
+						}
+					}
+				}
+			}
+			else
+			{
+				throw new Error("Resource directory " + resDir.nativePath + " doesn't exist.");
+			}
+		}
+	}
+}


implementing "title" property

implementing "title" property

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/rafaelcordoba/cocktail-demo.git/'


Added sample SwiftSuspendersXMLConfigInjector XML usage to asdocs - there has to be a better way to put xml into asdocs

fatal: unable to access 'https://github.com/eric-stanley/robotlegs-framework.git/': The requested URL returned error: 403


typed container for storing two flash.geom.Point(s)

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4597 542714f4-19e9-0310-aa3c-eee0fc999fb1

error: pathspec 'src/as/com/threerings/util/Line.as' did not match any file(s) known to git

--- src/as/com/threerings/util/Line.as
+++ src/as/com/threerings/util/Line.as
@@ -0,0 +1,19 @@
+package com.threerings.util {
+
+import flash.geom.Point;
+
+/**
+ * Merely a typed container for two Points.
+ */
+public class Line
+{
+    public var start :Point;
+    public var stop :Point;
+
+    public function Line (start :Point, stop :Point)
+    {
+        this.start = start;
+        this.stop = stop;
+    }
+}
+}