/// <summary>
        /// Initializes a new instance of the <see cref="StringValue"/> class.
        /// </summary>
        /// <param name="theBytes">The bytes.</param>
        /// <param name="theStringDefinition">The string definition.</param>
        /// <param name="parent">The parent.</param>
        public StringValue(ByteStore theBytes, StringDefinition theStringDefinition, Value parent)
            : base(theStringDefinition, parent)
        {
            List<Byte> stringBytes = new List<byte>();

            // Read bytes until they run out or we hit null terminator
            Byte theByte = 0xff;
            while (theBytes.ReadPosition < theBytes.PayloadLength && theByte != '\0')
            {
                theByte = theBytes.GetByte();
                stringBytes.Add(theByte);
            }

            m_Value = Encoding.ASCII.GetString(stringBytes.ToArray());
        }
        /// <summary>
        /// Initializes static members of the <see cref="DictionaryManager"/> class.
        /// </summary>
        static DictionaryManager()
        {
            s_ObjectNamesToTypes["struct"] = TypeId.StructType;
            s_ObjectNamesToTypes["union"] = TypeId.UnionType;
            s_ObjectNamesToTypes["typedef"] = TypeId.TypeDefType;
            s_ObjectNamesToTypes["enum"] = TypeId.EnumType;
            s_ObjectNamesToTypes["basetype"] = TypeId.BaseType;
            s_ObjectNamesToTypes["switch"] = TypeId.SwitchType;

            s_TypeIdsToXmlTags[TypeId.StructType] = "Struct";
            s_TypeIdsToXmlTags[TypeId.UnionType] = "Union";
            s_TypeIdsToXmlTags[TypeId.TypeDefType] = "TypeDef";
            s_TypeIdsToXmlTags[TypeId.EnumType] = "Enum";
            s_TypeIdsToXmlTags[TypeId.BaseType] = "BaseType";
            s_TypeIdsToXmlTags[TypeId.SwitchType] = "Switch";

            StringDefinition stringDefinition = new StringDefinition ();
            s_BuiltInTypes[stringDefinition.Name] = stringDefinition;
        }
        /// <summary>
        /// Initializes a new instance of the DictionaryManager class
        /// </summary>
        public DictionaryManager()
        {
            IsLoaded = false;

            m_TypeDefinitionsByName = new MultiDictionary<string, TypeDefinition>(false);

            // Add special built-in type 'String'
            StringDefinition theStringDefinition = new StringDefinition();
            m_TypeDefinitionsByName.Add(theStringDefinition.Name, theStringDefinition);
        }