/// <summary>Create a string id based on a index, string length and a id group</summary>
        /// <param name="index">String index</param>
        /// <param name="length">String length</param>
        /// <param name="set">The id group</param>
        internal StringId(StringIdDesc desc, int index, int length, int set)
        {
            //Contract.Requires(desc.ValidateIndex(index));
            //Contract.Requires(desc.ValidateLength(length));
            //Contract.Requires(desc.ValidateSet(set));

            mHandle = 0;             // satisfy the compiler, this must come first so we don't f**k up the values

            mDesc = desc;
            Initialize(index, length, set);
        }
 /// <summary>Create a string id based on a full handle</summary>
 /// <param name="handle"></param>
 internal StringId(StringIdDesc desc, uint handle)
 {
     mHandle = handle;
     mDesc   = desc;
 }
 /// <summary>Stream an string id from a buffer</summary>
 /// <param name="s"></param>
 //public void Read(IO.EndianReader s)	{ mHandle = s.ReadUInt32(); }
 public void Read(IO.EndianReader s, StringIdDesc desc)
 {
     mHandle = s.ReadUInt32();
     mDesc   = desc;
 }