Example #1
0
 public TableColumn(string name, TDH_IN_TYPE type, bool isPrimaryKey, bool isAutoIncrement)
 {
     this.Name = name;
     this.Type = type;
     this.IsPrimaryKey = isPrimaryKey;
     this.IsAutoIncrement = isAutoIncrement;
 }
 internal PropertyMetadata(TDH_IN_TYPE inType, TDH_OUT_TYPE outType, string name, bool isMapValue, bool isStruct, int childrenCount, MapInformation map)
 {
     this.InType        = inType;
     this.OutType       = outType;
     this.Name          = name;
     this.IsMapValue    = isMapValue;
     this.IsStruct      = isStruct;
     this.ChildrenCount = childrenCount;
     this.Map           = map;
 }
 internal PropertyMetadata(TDH_IN_TYPE inType, TDH_OUT_TYPE outType, string name, bool isMapValue, bool isStruct, int childrenCount, MapInformation map)
 {
     this.InType = inType;
     this.OutType = outType;
     this.Name = name;
     this.IsMapValue = isMapValue;
     this.IsStruct = isStruct;
     this.ChildrenCount = childrenCount;
     this.Map = map;
 }
Example #4
0
        public static Expression SizeOF(this TDH_IN_TYPE tdhType)
        {
            switch (tdhType)
            {
            case TDH_IN_TYPE.TDH_INTYPE_UNICODESTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_ANSISTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_INT8:
                return(Expression.Constant(sizeof(sbyte)));

            case TDH_IN_TYPE.TDH_INTYPE_UINT8:
                return(Expression.Constant(sizeof(byte)));

            case TDH_IN_TYPE.TDH_INTYPE_INT16:
                return(Expression.Constant(sizeof(short)));

            case TDH_IN_TYPE.TDH_INTYPE_UINT16:
                return(Expression.Constant(sizeof(ushort)));

            case TDH_IN_TYPE.TDH_INTYPE_INT32:
                return(Expression.Constant(sizeof(int)));

            case TDH_IN_TYPE.TDH_INTYPE_UINT32:
                return(Expression.Constant(sizeof(uint)));

            case TDH_IN_TYPE.TDH_INTYPE_INT64:
                return(Expression.Constant(sizeof(long)));

            case TDH_IN_TYPE.TDH_INTYPE_UINT64:
                return(Expression.Constant(sizeof(ulong)));

            case TDH_IN_TYPE.TDH_INTYPE_FLOAT:
                return(Expression.Constant(sizeof(float)));

            case TDH_IN_TYPE.TDH_INTYPE_DOUBLE:
                return(Expression.Constant(sizeof(double)));

            case TDH_IN_TYPE.TDH_INTYPE_BOOLEAN:
                return(Expression.Constant(4));    // this is because in Windows we have bools as ints

            case TDH_IN_TYPE.TDH_INTYPE_BINARY:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_GUID:
                return(Expression.Constant(16));    // otherwise requires unsafe

            case TDH_IN_TYPE.TDH_INTYPE_POINTER:
                return(Expression.Constant(4));    // TODO: FIXME with conditional

            case TDH_IN_TYPE.TDH_INTYPE_FILETIME:
                return(Expression.Constant(16));    // Windows

            case TDH_IN_TYPE.TDH_INTYPE_SYSTEMTIME:
                return(Expression.Constant(16));    // Windows

            case TDH_IN_TYPE.TDH_INTYPE_SID:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT32:
                return(Expression.Constant(sizeof(int)));

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT64:
                return(Expression.Constant(sizeof(long)));

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDSTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDANSISTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDSTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDANSISTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDSTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDANSISTRING:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_UNICODECHAR:
                return(Expression.Constant(sizeof(char)));

            case TDH_IN_TYPE.TDH_INTYPE_ANSICHAR:
                return(Expression.Constant(sizeof(byte)));

            case TDH_IN_TYPE.TDH_INTYPE_SIZET:
                return(Expression.Constant(4));    // TODO: FIXME with conditional

            case TDH_IN_TYPE.TDH_INTYPE_HEXDUMP:
                return(Expression.Constant(0));    // size check happens inside his reader

            case TDH_IN_TYPE.TDH_INTYPE_WBEMSID:
                return(Expression.Constant(0));    // size check happens inside his reader

            default:
                throw new Exception("Unreachable");
            }
        }
Example #5
0
        public static MethodInfo WriteMethodInfo(this TDH_IN_TYPE tdhType, Type type, params Type[] parameterType)
        {
            switch (tdhType)
            {
            case TDH_IN_TYPE.TDH_INTYPE_UNICODESTRING:
                return(GetMethodInfo(type, "WriteUnicodeString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_ANSISTRING:
                return(GetMethodInfo(type, "WriteAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT8:
                return(GetMethodInfo(type, "WriteInt8", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT8:
                return(GetMethodInfo(type, "WriteUInt8", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT16:
                return(GetMethodInfo(type, "WriteInt16", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT16:
                return(GetMethodInfo(type, "WriteUInt16", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT32:
                return(GetMethodInfo(type, "WriteInt32", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT32:
                return(GetMethodInfo(type, "WriteUInt32", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT64:
                return(GetMethodInfo(type, "WriteInt64", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT64:
                return(GetMethodInfo(type, "WriteUInt64", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_FLOAT:
                return(GetMethodInfo(type, "WriteFloat", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_DOUBLE:
                return(GetMethodInfo(type, "WriteDouble", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_BOOLEAN:
                return(GetMethodInfo(type, "WriteBoolean", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_BINARY:
                return(GetMethodInfo(type, "WriteBinary", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_GUID:
                return(GetMethodInfo(type, "WriteGuid", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_POINTER:
                return(GetMethodInfo(type, "WritePointer", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_FILETIME:
                return(GetMethodInfo(type, "WriteFileTime", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_SYSTEMTIME:
                return(GetMethodInfo(type, "WriteSystemTime", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_SID:
                return(GetMethodInfo(type, "WriteSid", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT32:
                return(GetMethodInfo(type, "WriteInt32", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT64:
                return(GetMethodInfo(type, "WriteInt64", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDSTRING:
                return(GetMethodInfo(type, "WriteUnicodeString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDANSISTRING:
                return(GetMethodInfo(type, "WriteAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDSTRING:
                return(GetMethodInfo(type, "WriteUnicodeString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDANSISTRING:
                return(GetMethodInfo(type, "WriteAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDSTRING:
                return(GetMethodInfo(type, "WriteUnicodeString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDANSISTRING:
                return(GetMethodInfo(type, "WriteAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UNICODECHAR:
                return(GetMethodInfo(type, "WriteUnicodeChar", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_ANSICHAR:
                return(GetMethodInfo(type, "WriteAnsiChar", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_SIZET:
                return(GetMethodInfo(type, "WritePointer", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_HEXDUMP:
                return(GetMethodInfo(type, "WriteBinary", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_WBEMSID:
                return(GetMethodInfo(type, "WriteSid", parameterType));

            default:
                throw new Exception("Unreachable");
            }
        }
Example #6
0
        public static MethodInfo ReadMethodInfo(this TDH_IN_TYPE tdhType, Type type, params Type[] parameterType)
        {
            switch (tdhType)
            {
            case TDH_IN_TYPE.TDH_INTYPE_UNICODESTRING:
                return(GetMethodInfo(type, "ReadUnicodeString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_ANSISTRING:
                return(GetMethodInfo(type, "ReadAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT8:
                return(GetMethodInfo(type, "ReadInt8", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT8:
                return(GetMethodInfo(type, "ReadUInt8", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT16:
                return(GetMethodInfo(type, "ReadInt16", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT16:
                return(GetMethodInfo(type, "ReadUInt16", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT32:
                return(GetMethodInfo(type, "ReadInt32", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT32:
                return(GetMethodInfo(type, "ReadUInt32", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_INT64:
                return(GetMethodInfo(type, "ReadInt64", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UINT64:
                return(GetMethodInfo(type, "ReadUInt64", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_FLOAT:
                return(GetMethodInfo(type, "ReadFloat", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_DOUBLE:
                return(GetMethodInfo(type, "ReadDouble", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_BOOLEAN:
                return(GetMethodInfo(type, "ReadBoolean", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_BINARY:
                return(GetMethodInfo(type, "ReadBinary", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_GUID:
                return(GetMethodInfo(type, "ReadGuid", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_POINTER:
                return(GetMethodInfo(type, "ReadPointer", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_FILETIME:
                return(GetMethodInfo(type, "ReadFileTime", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_SYSTEMTIME:
                return(GetMethodInfo(type, "ReadSystemTime", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_SID:
                return(GetMethodInfo(type, "ReadSid", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT32:
                return(GetMethodInfo(type, "ReadInt32", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT64:
                return(GetMethodInfo(type, "ReadInt64", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDSTRING:
                return(GetMethodInfo(type, "ReadCountedString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDANSISTRING:
                return(GetMethodInfo(type, "ReadCountedAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDSTRING:
                return(GetMethodInfo(type, "ReadReversedCountedString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDANSISTRING:
                return(GetMethodInfo(type, "ReadReversedCountedAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDSTRING:
                return(GetMethodInfo(type, "ReadNonNullTerminatedString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDANSISTRING:
                return(GetMethodInfo(type, "ReadNonNullTerminatedAnsiString", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_UNICODECHAR:
                return(GetMethodInfo(type, "ReadUnicodeChar", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_ANSICHAR:
                return(GetMethodInfo(type, "ReadAnsiChar", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_SIZET:
                return(GetMethodInfo(type, "ReadPointer", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_HEXDUMP:
                return(GetMethodInfo(type, "ReadHexDump", parameterType));

            case TDH_IN_TYPE.TDH_INTYPE_WBEMSID:
                return(GetMethodInfo(type, "ReadWbemSid", parameterType));

            default:
                throw new Exception("Unreachable");
            }
        }
Example #7
0
        public static Type CSharpType(this TDH_IN_TYPE tdhType)
        {
            switch (tdhType)
            {
            case TDH_IN_TYPE.TDH_INTYPE_UNICODESTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_ANSISTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_INT8:
                return(typeof(sbyte));

            case TDH_IN_TYPE.TDH_INTYPE_UINT8:
                return(typeof(byte));

            case TDH_IN_TYPE.TDH_INTYPE_INT16:
                return(typeof(short));

            case TDH_IN_TYPE.TDH_INTYPE_UINT16:
                return(typeof(ushort));

            case TDH_IN_TYPE.TDH_INTYPE_INT32:
                return(typeof(int));

            case TDH_IN_TYPE.TDH_INTYPE_UINT32:
                return(typeof(uint));

            case TDH_IN_TYPE.TDH_INTYPE_INT64:
                return(typeof(long));

            case TDH_IN_TYPE.TDH_INTYPE_UINT64:
                return(typeof(ulong));

            case TDH_IN_TYPE.TDH_INTYPE_FLOAT:
                return(typeof(float));

            case TDH_IN_TYPE.TDH_INTYPE_DOUBLE:
                return(typeof(double));

            case TDH_IN_TYPE.TDH_INTYPE_BOOLEAN:
                return(typeof(bool));

            case TDH_IN_TYPE.TDH_INTYPE_BINARY:
                return(typeof(byte[]));

            case TDH_IN_TYPE.TDH_INTYPE_GUID:
                return(typeof(Guid));

            case TDH_IN_TYPE.TDH_INTYPE_POINTER:
                return(typeof(ulong));

            case TDH_IN_TYPE.TDH_INTYPE_FILETIME:
                return(typeof(DateTime));

            case TDH_IN_TYPE.TDH_INTYPE_SYSTEMTIME:
                return(typeof(DateTime));

            case TDH_IN_TYPE.TDH_INTYPE_SID:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT32:
                return(typeof(int));

            case TDH_IN_TYPE.TDH_INTYPE_HEXINT64:
                return(typeof(long));

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDSTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_COUNTEDANSISTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDSTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_REVERSEDCOUNTEDANSISTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDSTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_NONNULLTERMINATEDANSISTRING:
                return(typeof(string));

            case TDH_IN_TYPE.TDH_INTYPE_UNICODECHAR:
                return(typeof(char));

            case TDH_IN_TYPE.TDH_INTYPE_ANSICHAR:
                return(typeof(char));

            case TDH_IN_TYPE.TDH_INTYPE_SIZET:
                return(typeof(ulong));

            case TDH_IN_TYPE.TDH_INTYPE_HEXDUMP:
                return(typeof(byte[]));

            case TDH_IN_TYPE.TDH_INTYPE_WBEMSID:
                return(typeof(string));

            default:
                throw new Exception("Unreachable");
            }
        }