// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
namespace ArduinoCsCompiler
{
[Flags]
public enum VariableKind : byte
{
Void = 0, // The slot contains no data
Uint32 = 1, // The slot contains unsigned integer data
Int32 = 2, // The slot contains signed integer data
Boolean = 3, // The slot contains true or false
Object = 4, // The slot contains an object reference
Method = 5,
ValueArray = 6, // The slot contains a reference to an array of value types (inline)
ReferenceArray = 7, // The slot contains a reference to an array of reference types
Float = 8,
LargeValueType = 9, // The slot contains a large value type
// 8 byte types have bit 4 set
Int64 = 16 + 1,
Uint64 = 16 + 2,
Double = 16 + 4,
Reference = 32, // Address of a variable
RuntimeFieldHandle = 33, // So far this is a pointer to a constant initializer
RuntimeTypeHandle = 34, // A type handle. The value is a type token
AddressOfVariable = 35, // An address pointing to a variable slot on another method's stack or arglist
FunctionPointer = 36, // A function pointer
NativeHandle = 37, // A native handle (or pointer to one)
ThreadSpecific = 64, // The variable is thread local or thread static
StaticMember = 128, // The field is static
TypeFilter = 0b0011_1111,
}
}