saadimran

GSWrappedObject

Apr 2nd, 2012
41
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     public class GSWrappedObject
  2.     {
  3.         public object Data
  4.         {
  5.             get;
  6.             private set;
  7.         }
  8.  
  9.         public GSDataType Type
  10.         {
  11.             get;
  12.             private set;
  13.         }
  14.  
  15.         public GSWrappedObject()
  16.         {
  17.             this.Data = null;
  18.             this.Type = GSDataType.Null;
  19.         }
  20.  
  21.         /// <summary>
  22.         /// Returns this object in the GS binary format.
  23.         /// </summary>
  24.         /// <returns></returns>
  25.         public byte[] ToGSBinary()
  26.         {
  27.             List<byte> bytes = new List<byte>();
  28.  
  29.             switch (Type)
  30.             {
  31.                 case GSDataType.Null:
  32.                     bytes.Add((byte)GSDataType.Null);
  33.                     break;
  34.                 case GSDataType.Bool:
  35.                     bytes.Add((byte)GSDataType.Bool);
  36.                     bytes.AddRange(AsBool().ToGSBinary());
  37.                     break;
  38.                 case GSDataType.BoolArray:
  39.                     bytes.Add((byte)GSDataType.ByteArray);
  40.                     bytes.AddRange(AsByteArray().ToGSBinary());
  41.                     break;
  42.                 case GSDataType.Byte:
  43.                     bytes.Add((byte)GSDataType.Byte);
  44.                     bytes.Add(AsByte());
  45.                     break;
  46.                 case GSDataType.ByteArray:
  47.                     bytes.Add((byte)GSDataType.ByteArray);
  48.                     bytes.AddRange(AsByteArray().ToGSBinary());
  49.                     break;
  50.                 case GSDataType.Short:
  51.                     bytes.Add((byte)GSDataType.Short);
  52.                     bytes.AddRange(AsShort().ToGSBinary());
  53.                     break;
  54.                 case GSDataType.ShortArray:
  55.                     bytes.Add((byte)GSDataType.ShortArray);
  56.                     bytes.AddRange(AsShortArray().ToGSBinary());
  57.                     break;
  58.                 case GSDataType.Int:
  59.                     bytes.Add((byte)GSDataType.Int);
  60.                     bytes.AddRange(AsInt().ToGSBinary());
  61.                     break;
  62.                 case GSDataType.IntArray:
  63.                     bytes.Add((byte)GSDataType.IntArray);
  64.                     bytes.AddRange(AsIntArray().ToGSBinary());
  65.                     break;
  66.                 case GSDataType.Long:
  67.                     bytes.Add((byte)GSDataType.Long);
  68.                     bytes.AddRange(AsLong().ToGSBinary());
  69.                     break;
  70.                 case GSDataType.LongArray:
  71.                     bytes.Add((byte)GSDataType.LongArray);
  72.                     bytes.AddRange(AsLongArray().ToGSBinary());
  73.                     break;
  74.                 case GSDataType.Float:
  75.                     bytes.Add((byte)GSDataType.Float);
  76.                     bytes.AddRange(AsFloat().ToGSBinary());
  77.                     break;
  78.                 case GSDataType.FloatArray:
  79.                     bytes.Add((byte)GSDataType.FloatArray);
  80.                     bytes.AddRange(AsFloatArray().ToGSBinary());
  81.                     break;
  82.                 case GSDataType.Double:
  83.                     bytes.Add((byte)GSDataType.Double);
  84.                     bytes.AddRange(AsDouble().ToGSBinary());
  85.                     break;
  86.                 case GSDataType.DoubleArray:
  87.                     bytes.Add((byte)GSDataType.DoubleArray);
  88.                     bytes.AddRange(AsDoubleArray().ToGSBinary());
  89.                     break;
  90.                 case GSDataType.String:
  91.                     bytes.Add((byte)GSDataType.String);
  92.                     bytes.AddRange(AsString().ToGSBinary());
  93.                     break;
  94.                 case GSDataType.StringArray:
  95.                     bytes.Add((byte)GSDataType.StringArray);
  96.                     bytes.AddRange(AsStringArray().ToGSBinary());
  97.                     break;
  98.                 case GSDataType.GSArray:
  99.                     bytes.Add((byte)GSDataType.GSArray);
  100.                     bytes.AddRange(AsGSArray().ToGSBinary());
  101.                     break;
  102.                 case GSDataType.GSObject:
  103.                     bytes.Add((byte)GSDataType.GSObject);
  104.                     bytes.AddRange(AsGSObject().ToGSBinary());
  105.                     break;
  106.             }
  107.  
  108.             return bytes.ToArray();
  109.         }
  110.  
  111.         public static implicit operator GSWrappedObject(bool value)
  112.         {
  113.             return new GSWrappedObject() { Data = value, Type = GSDataType.Bool };
  114.         }
  115.  
  116.         public static implicit operator GSWrappedObject(byte value)
  117.         {
  118.             return new GSWrappedObject() { Data = value, Type = GSDataType.Byte };
  119.         }
  120.  
  121.         public static implicit operator GSWrappedObject(short value)
  122.         {
  123.             return new GSWrappedObject() { Data = value, Type = GSDataType.Short };
  124.         }
  125.  
  126.         public static implicit operator GSWrappedObject(int value)
  127.         {
  128.             return new GSWrappedObject() { Data = value, Type = GSDataType.Int };
  129.         }
  130.  
  131.         public static implicit operator GSWrappedObject(long value)
  132.         {
  133.             return new GSWrappedObject() { Data = value, Type = GSDataType.Long };
  134.         }
  135.  
  136.         public static implicit operator GSWrappedObject(float value)
  137.         {
  138.             return new GSWrappedObject() { Data = value, Type = GSDataType.Float };
  139.         }
  140.  
  141.         public static implicit operator GSWrappedObject(double value)
  142.         {
  143.             return new GSWrappedObject() { Data = value, Type = GSDataType.Double };
  144.         }
  145.  
  146.         public static implicit operator GSWrappedObject(string value)
  147.         {
  148.             return new GSWrappedObject() { Data = value, Type = GSDataType.String };
  149.         }
  150.  
  151.         public static implicit operator GSWrappedObject(bool[] value)
  152.         {
  153.             return new GSWrappedObject() { Data = value, Type = GSDataType.BoolArray };
  154.         }
  155.  
  156.         public static implicit operator GSWrappedObject(byte[] value)
  157.         {
  158.             return new GSWrappedObject() { Data = value, Type = GSDataType.ByteArray };
  159.         }
  160.  
  161.         public static implicit operator GSWrappedObject(short[] value)
  162.         {
  163.             return new GSWrappedObject() { Data = value, Type = GSDataType.ShortArray };
  164.         }
  165.  
  166.         public static implicit operator GSWrappedObject(int[] value)
  167.         {
  168.             return new GSWrappedObject() { Data = value, Type = GSDataType.IntArray };
  169.         }
  170.  
  171.         public static implicit operator GSWrappedObject(long[] value)
  172.         {
  173.             return new GSWrappedObject() { Data = value, Type = GSDataType.LongArray };
  174.         }
  175.  
  176.         public static implicit operator GSWrappedObject(float[] value)
  177.         {
  178.             return new GSWrappedObject() { Data = value, Type = GSDataType.FloatArray };
  179.         }
  180.  
  181.         public static implicit operator GSWrappedObject(double[] value)
  182.         {
  183.             return new GSWrappedObject() { Data = value, Type = GSDataType.DoubleArray };
  184.         }
  185.  
  186.         public static implicit operator GSWrappedObject(string[] value)
  187.         {
  188.             return new GSWrappedObject() { Data = value, Type = GSDataType.StringArray };
  189.         }
  190.  
  191.         public static implicit operator GSWrappedObject(GSArray value)
  192.         {
  193.             return new GSWrappedObject() { Data = value, Type = GSDataType.GSArray };
  194.         }
  195.  
  196.         public static implicit operator GSWrappedObject(GSObject value)
  197.         {
  198.             return new GSWrappedObject() { Data = value, Type = GSDataType.GSObject };
  199.         }
  200.  
  201.         /// <summary>
  202.         /// Determines whether the wrapped data is null.
  203.         /// </summary>
  204.         /// <returns></returns>
  205.         public bool IsNull()
  206.         {
  207.             return Type == GSDataType.Null || Data == null;
  208.         }
  209.  
  210.         #region Bool, BoolArray
  211.         /// <summary>
  212.         /// Gets the wrapped data as a boolean.
  213.         /// </summary>
  214.         /// <returns></returns>
  215.         public bool AsBool()
  216.         {
  217.             return (bool)Data;
  218.         }
  219.  
  220.         /// <summary>
  221.         /// Gets the wrapped data as an array of booleans.
  222.         /// </summary>
  223.         /// <returns></returns>
  224.         public bool[] AsBoolArray()
  225.         {
  226.             return (bool[])Data;
  227.         }
  228.         #endregion
  229.  
  230.         #region Byte, ByteArray
  231.         /// <summary>
  232.         /// Gets the wrapped data as an 8-bit integer.
  233.         /// </summary>
  234.         /// <returns></returns>
  235.         public byte AsByte()
  236.         {
  237.             return (byte)Data;
  238.         }
  239.  
  240.         /// <summary>
  241.         /// Gets the wrapped data as an array of 8-bit integers.
  242.         /// </summary>
  243.         /// <returns></returns>
  244.         public byte[] AsByteArray()
  245.         {
  246.             return (byte[])Data;
  247.         }
  248.         #endregion
  249.  
  250.         #region Short, ShortArray
  251.         /// <summary>
  252.         /// Gets the wrapped data as a 16-bit integer.
  253.         /// </summary>
  254.         /// <returns></returns>
  255.         public short AsShort()
  256.         {
  257.             return (short)Data;
  258.         }
  259.  
  260.         /// <summary>
  261.         /// Gets the wrapped data as an array of 16-bit integers.
  262.         /// </summary>
  263.         /// <returns></returns>
  264.         public short[] AsShortArray()
  265.         {
  266.             return (short[])Data;
  267.         }
  268.         #endregion
  269.  
  270.         #region Int, IntArray
  271.         /// <summary>
  272.         /// Gets the wrapped data as a 32-bit integer.
  273.         /// </summary>
  274.         /// <returns></returns>
  275.         public int AsInt()
  276.         {
  277.             return (int)Data;
  278.         }
  279.  
  280.         /// <summary>
  281.         /// Gets the wrapped data as an array of 16-bit integers.
  282.         /// </summary>
  283.         /// <returns></returns>
  284.         public int[] AsIntArray()
  285.         {
  286.             return (int[])Data;
  287.         }
  288.         #endregion
  289.  
  290.         #region Long, LongArray
  291.         /// <summary>
  292.         /// Gets the wrapped data as a 64-bit integer.
  293.         /// </summary>
  294.         /// <returns></returns>
  295.         public long AsLong()
  296.         {
  297.             return (long)Data;
  298.         }
  299.  
  300.         /// <summary>
  301.         /// Gets the wrapped data as an array of 64-bit integers.
  302.         /// </summary>
  303.         /// <returns></returns>
  304.         public long[] AsLongArray()
  305.         {
  306.             return (long[])Data;
  307.         }
  308.         #endregion
  309.  
  310.         #region Float, FloatArray
  311.         /// <summary>
  312.         /// Gets the wrapped data as a 32-bit floating point number.
  313.         /// </summary>
  314.         /// <returns></returns>
  315.         public float AsFloat()
  316.         {
  317.             return (float)Data;
  318.         }
  319.  
  320.         /// <summary>
  321.         /// Gets the wrapped data as an array of 32-bit floating point numbers.
  322.         /// </summary>
  323.         /// <returns></returns>
  324.         public float[] AsFloatArray()
  325.         {
  326.             return (float[])Data;
  327.         }
  328.         #endregion
  329.  
  330.         #region Double, DoubleArray
  331.         /// <summary>
  332.         /// Gets the wrapped data as a 64-bit floating point number.
  333.         /// </summary>
  334.         /// <returns></returns>
  335.         public double AsDouble()
  336.         {
  337.             return (double)Data;
  338.         }
  339.  
  340.         /// <summary>
  341.         /// Gets the wrapped data as an array of 64-bit floating point numbers.
  342.         /// </summary>
  343.         /// <returns></returns>
  344.         public double[] AsDoubleArray()
  345.         {
  346.             return (double[])Data;
  347.         }
  348.         #endregion
  349.  
  350.         #region String, StringArray
  351.         /// <summary>
  352.         /// Gets the wrapped data as a string.
  353.         /// </summary>
  354.         /// <returns></returns>
  355.         public string AsString()
  356.         {
  357.             return (string)Data;
  358.         }
  359.  
  360.         /// <summary>
  361.         /// Gets the wrapped data as an array of strings.
  362.         /// </summary>
  363.         /// <returns></returns>
  364.         public string[] AsStringArray()
  365.         {
  366.             return (string[])Data;
  367.         }
  368.         #endregion
  369.  
  370.         #region GSArray, GSObject
  371.         /// <summary>
  372.         /// Gets the wrapped data as a GSArray.
  373.         /// </summary>
  374.         /// <returns></returns>
  375.         public IGSArray AsGSArray()
  376.         {
  377.             return (GSArray)Data;
  378.         }
  379.  
  380.         /// <summary>
  381.         /// Gets the wrapped data as an array of GSObject.
  382.         /// </summary>
  383.         /// <returns></returns>
  384.         public IGSObject AsGSObject()
  385.         {
  386.             return (GSObject)Data;
  387.         }
  388.         #endregion
  389.     }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×