{ "type": "interface",
  "qname": "org.apache.royale.collections.ISort",
    "description": "The <code>ISort</code> interface defines the interface for classes that provide the sorting information required to sort the data of a collection view.",
  "tags": [
  {  "tagName": "see",
         "values": ["mx.collections.ICollectionView", "mx.collections.ISortField"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10.2", "AIR 2.6"]},
      {  "tagName": "productversion",
         "values": ["Flex 4.5"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "accessor",
    "access": "read-write",
    "return": "Function",
    "qname": "compareFunction",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The method used to compare items when sorting. If you specify this property, Flex ignores any <code>compareFunction</code> properties that you specify in the <code>ISortField</code> objects that you use in this class.  <p>The compare function must have the following signature:</p>  <pre><code>\\n \\n function [name](a:Object, b:Object, fields:Array = null):int\\n \\n </code></pre>  <p>This function must return the following value: <ul> <li>-1, if the <code>Object a</code> should appear before the <code>Object b</code> in the sorted sequence</li> <li>0, if the <code>Object a</code> equals the <code>Object b</code></li> <li>1, if the <code>Object a</code> should appear after the <code>Object b</code> in the sorted sequence</li> </ul></p> <p>To return to the internal comparision function, set this value to <code>null</code>.</p> <p> The <code>fields</code> array specifies the object fields to compare. Typically the algorithm will compare properties until the field list is exhausted or a non-zero value can be returned. For example:</p>  <pre><code>\\n function myCompare(a:Object, b:Object, fields:Array = null):int\\n {\\n var result:int = 0;\\n var i:int = 0;\\n var propList:Array = fields ? fields : internalPropList;\\n var len:int = propList.length;\\n var propName:String;\\n while (result == 0 &amp;&amp; (i &lt; len))\\n {\\n propName = propList[i];\\n result = compareValues(a[propName], b[propName]);\\n i++;\\n }\\n return result;\\n }\\n \\n function compareValues(a:Object, b:Object):int\\n {\\n if (a == null &amp;&amp; b == null)\\n return 0;\\n \\n if (a == null)\\n return 1;\\n \\n if (b == null)\\n return -1;\\n \\n if (a &lt; b)\\n return -1;\\n \\n if (a &gt; b)\\n return 1;\\n \\n return 0;\\n }\\n </code></pre>  <p>The default value is an internal compare function that can perform a string, numeric, or date comparison in ascending or descending order. Specify your own function only if you need a need a custom comparison algorithm. This is normally only the case if a calculated field is used in a display.</p>  <p>Alternatively you can specify separate compare functions for each sort field by using the <code>ISortField</code> class <code>compareFunction</code> property; This way you can use the default comparison for some fields and a custom comparison for others.</p>",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10.2", "AIR 2.6"]},
        {  "tagName": "productversion",
           "values": ["Flex 4.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "accessor",
    "access": "read-write",
    "return": "Array",
    "qname": "fields",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "An <code>Array</code> of <code>ISortField</code> objects that specifies the fields to compare. The order of the ISortField objects in the array determines field priority order when sorting. The default sort comparator checks the sort fields in array order until it determinines a sort order for the two fields being compared.",
    "tags": [
    {  "tagName": "default",
           "values": ["null"]},
        {  "tagName": "see",
           "values": ["org.apache.royale.collections.ISortField"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10.2", "AIR 2.6"]},
        {  "tagName": "productversion",
           "values": ["Flex 4.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "accessor",
    "access": "read-only",
    "return": "Boolean",
    "qname": "unique",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Indicates if the sort should be unique. Unique sorts fail if any value or combined value specified by the fields listed in the fields property result in an indeterminate or non-unique sort order; that is, if two or more items have identical sort field values. An error is thrown if the sort is not unique. The sorting logic uses this <code>unique</code> property value only if sort field(s) are specified explicitly. If no sort fields are specified explicitly, no error is thrown even when there are identical value elements.",
    "tags": [
    {  "tagName": "default",
           "values": ["false"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10.2", "AIR 2.6"]},
        {  "tagName": "productversion",
           "values": ["Flex 4.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "findItem",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Finds the specified object within the specified array (or the insertion point if asked for), returning the index if found or -1 if not. The <code>ListCollectionView</code> class <code>find<i>xxx</i>()</code> methods use this method to find the requested item; as a general rule, it is easier to use these functions, and not <code>findItem()</code> to find data in <code>ListCollectionView</code>-based objects. You call the <code>findItem()</code> method directly when writing a class that supports sorting, such as a new <code>ICollectionView</code> implementation. The input items array need to be sorted before calling this function. Otherwise this function will not be able to find the specified value properly.  the object to search for, itself). The object must consist of field name/value pairs, where the field names are names of fields specified by the <code>fields</code> property, in the same order they are used in that property. You do not have to specify all of the fields from the <code>fields</code> property, but you cannot skip any in the order. Therefore, if the <code>fields</code> properity lists three fields, you can specify its first and second fields in this parameter, but you cannot specify  only the first and third fields. Valid values are: <table> <tr> <th>ANY_INDEX_MODE</th> <th>Return any position that is valid for the values.</th> </tr> <tr> <th>FIRST_INDEX_MODE</th> <th>Return the position where the first occurrance of the values is found.</th> </tr> <tr> <th>LAST_INDEX_MODE</th> <th>Return the position where the last ocurrance of the specified values is found. </th> </tr> </table> identified by the <code>values</code> parameter, and this parameter is <code>true</code> the <code>findItem()</code> method returns the insertion point for the values, that is the point in the sorted order where you should insert the item. If you do not specify this parameter or , or if you provide a <code>null</code> value, <code>findItem()</code> function uses the compare function determined by the <code>ISort</code> instance's <code>compareFunction</code> property, passing in the array of fields determined by the values object and the current <code>SortFields</code>.  If you provide a non-null value, <code>findItem()</code> function uses it as the compare function.  The signature of the function passed as <code>compareFunction</code> must be as follows: <code>function myCompareFunction(a:Object, b:Object):int</code>. Note that there is no third argument unlike the compare function for <code>ISort.compareFunction()</code> property. If the <code>returnInsertionIndex</code> parameter is <code>false</code> and the item is not found, returns -1. If the <code>returnInsertionIndex</code> parameter is <code>true</code> and the item is not found, returns the index of the point in the sorted array where the values would be inserted.  the find critieria is not compatible with the sort or the comparator function for the sort can not be determined.",
    "tags": [
    {  "tagName": "param",
           "values": ["items the Array within which to search.", "values Object containing the properties to look for (or", "mode String containing the type of find to perform.", "returnInsertionIndex If the method does not find an item", "compareFunction a comparator function to use to find the item."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10.2", "AIR 2.6"]},
        {  "tagName": "productversion",
           "values": ["Flex 4.5"]},
        {  "tagName": "throws",
           "values": ["SortError If there are any parameter errors,"]},
        {  "tagName": "return",
           "values": ["int The index in the array of the found item."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "int",
      "params": [{ "name": "items", "type": "Array"},
    { "name": "values", "type": "Object"},
    { "name": "mode", "type": "String"},
    { "name": "returnInsertionIndex", "type": "Boolean"},
    { "name": "compareFunction", "type": "Function"}]}
  ,
  { "type": "method",
    "qname": "propertyAffectsSort",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Return whether the specified property is used to control the sort. The function cannot determine a definitive answer if the sort uses a custom comparator; it always returns <code>true</code> in this case.  If the sort uses the default compareFunction, returns <code>true</code> if the <code>property</code> parameter specifies a sort field. If the sort or any <code>ISortField</code> uses a custom comparator, there's no way to know, so return <code>true</code>.",
    "tags": [
    {  "tagName": "param",
           "values": ["property The name of the field to test."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10.2", "AIR 2.6"]},
        {  "tagName": "productversion",
           "values": ["Flex 4.5"]},
        {  "tagName": "return",
           "values": ["Whether the property value might affect the sort outcome."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": [{ "name": "property", "type": "String"}]}
  ,
  { "type": "method",
    "qname": "reverse",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Goes through the <code>fields</code> array and calls <code>reverse()</code> on each of the <code>ISortField</code> objects in the array. If the field was descending now it is ascending, and vice versa.  <p>Note: an <code>ICollectionView</code> does not automatically update when the objects in the <code>fields</code> array are modified; call its <code>refresh()</code> method to update the view.</p>  <p>Note: a future release of Apache Flex SDK will change the signature of this function to return a reversed clone of this Sort instance. See FLEX-34853.</p>",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10.2", "AIR 2.6"]},
        {  "tagName": "productversion",
           "values": ["Flex 4.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": []}
  ,
  { "type": "method",
    "qname": "sort",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Apply the current sort to the specified array (not a copy). To prevent the array from being modified, create a copy use the copy in the <code>items</code> parameter.  <p>Flex <code>ICollectionView</code> implementations call the <code>sort</code> method automatically and ensure that the sort is performed on a copy of the underlying data.</p>",
    "tags": [
    {  "tagName": "param",
           "values": ["items Array of items to sort."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10.2", "AIR 2.6"]},
        {  "tagName": "productversion",
           "values": ["Flex 4.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "items", "type": "Array"}]}
  ]
  }
