public static BucketOrder create(string order)
        {
            bool flip = false;

            if (order.StartsWith("inverse") || order.StartsWith("invert") || order.StartsWith("reverse"))
            {
                string[] tokens = order.Split(StringConsts.Whitespace, StringSplitOptions.RemoveEmptyEntries);//"\\s+");
                if (tokens.Length == 2)
                {
                    order = tokens[1];
                    flip  = true;
                }
            }
            BucketOrder o = null;

            if (order == "row")
            {
                o = new RowBucketOrder();
            }
            else if (order == "column")
            {
                o = new ColumnBucketOrder();
            }
            else if (order == "diagonal")
            {
                o = new DiagonalBucketOrder();
            }
            else if (order == "spiral")
            {
                o = new SpiralBucketOrder();
            }
            else if (order == "hilbert")
            {
                o = new HilbertBucketOrder();
            }
            else if (order == "random")
            {
                o = new RandomBucketOrder();
            }
            if (o == null)
            {
                UI.printWarning(UI.Module.BCKT, "Unrecognized bucket ordering: \"%s\" - using hilbert", order);
                return(new HilbertBucketOrder());
            }
            else
            {
                if (flip)
                {
                    o = new InvertedBucketOrder(o);
                }
                return(o);
            }
        }
 public static BucketOrder create(string order)
 {
     bool flip = false;
     if (order.StartsWith("inverse") || order.StartsWith("invert") || order.StartsWith("reverse"))
     {
         string[] tokens = order.Split(StringConsts.Whitespace, StringSplitOptions.RemoveEmptyEntries);//"\\s+");
         if (tokens.Length == 2)
         {
             order = tokens[1];
             flip = true;
         }
     }
     BucketOrder o = null;
     if (order == "row")
         o = new RowBucketOrder();
     else if (order == "column")
         o = new ColumnBucketOrder();
     else if (order == "diagonal")
         o = new DiagonalBucketOrder();
     else if (order == "spiral")
         o = new SpiralBucketOrder();
     else if (order == "hilbert")
         o = new HilbertBucketOrder();
     else if (order == "random")
         o = new RandomBucketOrder();
     if (o == null)
     {
         UI.printWarning(UI.Module.BCKT, "Unrecognized bucket ordering: \"%s\" - using hilbert", order);
         return new HilbertBucketOrder();
     }
     else
     {
         if (flip)
             o = new InvertedBucketOrder(o);
         return o;
     }
 }