Example #1
0
        public static bool TryGetNativeNameKind(NativeSymbolKind symbolKind, out NativeNameKind nameKind)
        {
            switch (symbolKind)
            {
            case NativeSymbolKind.StructType:
                nameKind = NativeNameKind.Struct;
                return(true);

            case NativeSymbolKind.EnumType:
                nameKind = NativeNameKind.Enum;
                return(true);

            case NativeSymbolKind.UnionType:
                nameKind = NativeNameKind.Union;
                return(true);

            case NativeSymbolKind.TypeDefType:
                nameKind = NativeNameKind.TypeDef;
                return(true);

            case NativeSymbolKind.Procedure:
                nameKind = NativeNameKind.Procedure;
                return(true);

            case NativeSymbolKind.FunctionPointer:
                nameKind = NativeNameKind.FunctionPointer;
                return(true);

            case NativeSymbolKind.EnumNameValue:
                nameKind = NativeNameKind.EnumValue;
                return(true);

            case NativeSymbolKind.Constant:
                nameKind = NativeNameKind.Constant;
                return(true);

            case NativeSymbolKind.ArrayType:
            case NativeSymbolKind.PointerType:
            case NativeSymbolKind.BuiltinType:
            case NativeSymbolKind.BitVectorType:
            case NativeSymbolKind.NamedType:
            case NativeSymbolKind.ProcedureSignature:
            case NativeSymbolKind.Parameter:
            case NativeSymbolKind.Member:
            case NativeSymbolKind.SalEntry:
            case NativeSymbolKind.SalAttribute:
            case NativeSymbolKind.ValueExpression:
            case NativeSymbolKind.Value:
            case NativeSymbolKind.OpaqueType:
                nameKind = (NativeNameKind)0;
                return(false);

            default:
                Contract.ThrowInvalidEnumValue(symbolKind);
                nameKind = (NativeNameKind)0;
                return(false);
            }
        }
Example #2
0
        private NativeGlobalSymbol ImportStructOrUnion(NativeNameKind kind)
        {
            Contract.Requires(kind == NativeNameKind.Struct || kind == NativeNameKind.Union);
            var name = _reader.ReadString();
            var nt   = kind == NativeNameKind.Struct
                ? (NativeDefinedType) new NativeStruct(name)
                : new NativeUnion(name);

            var count = _reader.ReadInt32();

            for (var i = 0; i < count; i++)
            {
                var memberName = _reader.ReadString();
                var memberType = ImportTypeReference();
                nt.Members.Add(new NativeMember(memberName, memberType));
            }

            return(new NativeGlobalSymbol(nt));
        }
Example #3
0
        public static bool IsAnyType(NativeNameKind kind)
        {
            switch (kind)
            {
            case NativeNameKind.Struct:
            case NativeNameKind.Union:
            case NativeNameKind.FunctionPointer:
            case NativeNameKind.TypeDef:
                return(true);

            case NativeNameKind.Procedure:
            case NativeNameKind.Constant:
            case NativeNameKind.Enum:
            case NativeNameKind.EnumValue:
                return(false);

            default:
                Contract.ThrowInvalidEnumValue(kind);
                return(false);
            }
        }
Example #4
0
        public static NativeSymbolKind GetNativeSymbolKind(NativeNameKind kind)
        {
            switch (kind)
            {
            case NativeNameKind.Struct: return(NativeSymbolKind.StructType);

            case NativeNameKind.Union: return(NativeSymbolKind.UnionType);

            case NativeNameKind.FunctionPointer: return(NativeSymbolKind.FunctionPointer);

            case NativeNameKind.Procedure: return(NativeSymbolKind.Procedure);

            case NativeNameKind.TypeDef: return(NativeSymbolKind.TypeDefType);

            case NativeNameKind.Constant: return(NativeSymbolKind.Constant);

            case NativeNameKind.Enum: return(NativeSymbolKind.EnumType);

            case NativeNameKind.EnumValue: return(NativeSymbolKind.EnumNameValue);

            default: throw Contract.CreateInvalidEnumValueException(kind);
            }
        }
Example #5
0
 public static void WriteNameKind(this IBulkWriter writer, NativeNameKind kind) => writer.WriteInt32((int)kind);
Example #6
0
 public NativeName(string name, NativeNameKind kind)
 {
     Name = name;
     Kind = kind;
 }