代码拉取完成,页面将自动刷新
unit DotNetTypes;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
resourcestring
rsDNTEnd = 'END';
rsDNTVoid = 'void';
rsDNTBool = 'bool';
rsDNTChar = 'char';
rsDNTByteSigned = 'Byte (Signed)';
rsDNTByte = 'Byte';
rsDNT2ByteSigned = '2 Byte (Signed)';
rsDNT2Byte = '2 Byte';
rsDNT4ByteSigned = '4 Byte (Signed)';
rsDNT4Byte = '4 Byte';
rsDNT8ByteSigned = '8 Byte (Signed)';
rsDNT8Byte = '8 Byte';
rsDNTFloat = 'Float';
rsDNTDouble = 'Double';
rsDNTString = 'String';
rsDNTPointer = 'Pointer';
rsDNTReference = 'Reference';
rsDNTValueType = 'ValueType';
rsDNTClass = 'Class';
rsDNTVar = 'Var';
rsDNTArray = 'Array';
rsDNTGenericInst = 'GenericInst';
rsDNTTypedByRef = 'Typed By Ref';
rsDNTSigned = 'Signed';
rsDNTUnsigned = 'Unsigned';
rsDNTFunctionPointer = 'Function Pointer';
rsDNTObject = 'Object';
rsDNTSZArray = 'SZ Array';
rsDNTMVar = 'MVar';
rsDNTCMOD_REQD = 'CMOD_REQD';
rsDNTCMOD_OPT = 'CMOD_OPT';
rsDNTInternal = 'Internal';
rsDNTMAX = 'MAX';
rsDNTModifier = 'Modifier';
rsDNTSentinel = 'Sentinel';
rsDNTPinned = 'Pinned';
const
ELEMENT_TYPE_END = $00;
ELEMENT_TYPE_VOID = $01;
ELEMENT_TYPE_BOOLEAN = $02;
ELEMENT_TYPE_CHAR = $03;
ELEMENT_TYPE_I1 = $04;
ELEMENT_TYPE_U1 = $05;
ELEMENT_TYPE_I2 = $06;
ELEMENT_TYPE_U2 = $07;
ELEMENT_TYPE_I4 = $08;
ELEMENT_TYPE_U4 = $09;
ELEMENT_TYPE_I8 = $0a;
ELEMENT_TYPE_U8 = $0b;
ELEMENT_TYPE_R4 = $0c;
ELEMENT_TYPE_R8 = $0d;
ELEMENT_TYPE_STRING = $0e;
// every type above PTR will be simple type
ELEMENT_TYPE_PTR = $0f; // PTR <type>
ELEMENT_TYPE_BYREF = $10; // BYREF <type>
// Please use ELEMENT_TYPE_VALUETYPE. ELEMENT_TYPE_VALUECLASS is deprecated.
ELEMENT_TYPE_VALUETYPE = $11; // VALUETYPE <class Token>
ELEMENT_TYPE_CLASS = $12; // CLASS <class Token>
ELEMENT_TYPE_VAR = $13; // a class type variable VAR <number>
ELEMENT_TYPE_ARRAY = $14; // MDARRAY <type> <rank> <bcount> <bound1> ... <lbcount> <lb1> ...
ELEMENT_TYPE_GENERICINST = $15; // GENERICINST <generic type> <argCnt> <arg1> ... <argn>
ELEMENT_TYPE_TYPEDBYREF = $16; // TYPEDREF (it takes no args) a typed referece to some other type
ELEMENT_TYPE_I = $18; // native integer size
ELEMENT_TYPE_U = $19; // native unsigned integer size
ELEMENT_TYPE_FNPTR = $1b; // FNPTR <complete sig for the function including calling convention>
ELEMENT_TYPE_OBJECT = $1c; // Shortcut for System.Object
ELEMENT_TYPE_SZARRAY = $1d; // Shortcut for single dimension zero lower bound array
// SZARRAY <type>
ELEMENT_TYPE_MVAR = $1e; // a method type variable MVAR <number>
// This is only for binding
ELEMENT_TYPE_CMOD_REQD = $1f; // required C modifier : E_T_CMOD_REQD <mdTypeRef/mdTypeDef>
ELEMENT_TYPE_CMOD_OPT = $20; // optional C modifier : E_T_CMOD_OPT <mdTypeRef/mdTypeDef>
// This is for signatures generated internally (which will not be persisted in any way).
ELEMENT_TYPE_INTERNAL = $21; // INTERNAL <typehandle>
// Note that this is the max of base type excluding modifiers
ELEMENT_TYPE_MAX = $22; // first invalid element type
ELEMENT_TYPE_MODIFIER = $40;
ELEMENT_TYPE_SENTINEL = $41;
ELEMENT_TYPE_PINNED = $45;
function DotNetTypeToString(dntype: dword):string;
implementation
function DotNetTypeToString(dntype: dword):string;
begin
result:=rsDNTPointer;
case dntype of
ELEMENT_TYPE_END : result:=rsDNTEnd;
ELEMENT_TYPE_VOID : result:=rsDNTVoid;
ELEMENT_TYPE_BOOLEAN : result:=rsDNTBool;
ELEMENT_TYPE_CHAR : result:=rsDNTChar;
ELEMENT_TYPE_I1 : result:=rsDNTByteSigned;
ELEMENT_TYPE_U1 : result:=rsDNTByte;
ELEMENT_TYPE_I2 : result:=rsDNT2ByteSigned;
ELEMENT_TYPE_U2 : result:=rsDNT2Byte;
ELEMENT_TYPE_I4 : result:=rsDNT4ByteSigned;
ELEMENT_TYPE_U4 : result:=rsDNT4Byte;
ELEMENT_TYPE_I8 : result:=rsDNT8ByteSigned;
ELEMENT_TYPE_U8 : result:=rsDNT8Byte;
ELEMENT_TYPE_R4 : result:=rsDNTFloat;
ELEMENT_TYPE_R8 : result:=rsDNTDouble;
ELEMENT_TYPE_STRING : result:=rsDNTString;
ELEMENT_TYPE_PTR : result:=rsDNTPointer;
ELEMENT_TYPE_BYREF : result:=rsDNTReference;
ELEMENT_TYPE_VALUETYPE : result:=rsDNTValueType;
ELEMENT_TYPE_CLASS : result:=rsDNTClass;
ELEMENT_TYPE_VAR : result:=rsDNTVar;
ELEMENT_TYPE_ARRAY : result:=rsDNTArray;
ELEMENT_TYPE_GENERICINST : result:=rsDNTGenericInst;
ELEMENT_TYPE_TYPEDBYREF : result:=rsDNTTypedByRef;
ELEMENT_TYPE_I : result:=rsDNTSigned;
ELEMENT_TYPE_U : result:=rsDNTUnsigned;
ELEMENT_TYPE_FNPTR : result:=rsDNTFunctionPointer;
ELEMENT_TYPE_OBJECT : result:=rsDNTObject;
ELEMENT_TYPE_SZARRAY : result:=rsDNTSZArray;
ELEMENT_TYPE_MVAR : result:=rsDNTMVar;
ELEMENT_TYPE_CMOD_REQD : result:=rsDNTCMOD_REQD;
ELEMENT_TYPE_CMOD_OPT : result:=rsDNTCMOD_OPT;
ELEMENT_TYPE_INTERNAL : result:=rsDNTInternal;
ELEMENT_TYPE_MAX : result:=rsDNTMAX;
ELEMENT_TYPE_MODIFIER : result:=rsDNTModifier;
ELEMENT_TYPE_SENTINEL : result:=rsDNTSentinel;
ELEMENT_TYPE_PINNED : result:=rsDNTPinned;
end;
end;
end.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。