Пример #1
0
 public TypeTable(DataTypeID type, int itemSize, List <DataType> dataTable, Version version)
 {
     Type        = type;
     ItemSize    = itemSize;
     ItemAddress = 0;
     DataTable   = dataTable;
     return;
 }
        public override int GetHashCode()
        {
            unchecked
            {
                int hashCode = DataTypeID != null?DataTypeID.GetHashCode() : 0;

                hashCode = (hashCode * 397) ^ (Name != null ? Name.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (Fields != null ? Fields.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (int)Type;
                return(hashCode);
            }
        }
Пример #3
0
        internal override void Read(BinaryReader reader)
        {
            Type     = (DataTypeID)reader.ReadInt32();
            ItemSize = reader.ReadInt32();
            int dataCount = reader.ReadInt32();

            ItemAddress = reader.ReadInt32();
            DataTable   = new List <DataType>();

            long currentPos = reader.FTell();

            reader.FSeek(ItemAddress);
            for (int i = 0; i < dataCount; i++)
            {
                DataType Entry = TypeFactory.CreateDataType(Type, reader, Version, ItemSize);
                DataTable.Add(Entry);
            }
            reader.FSeek(currentPos);
        }
Пример #4
0
        public static Type GetDataType(DataTypeID type, FormatVersion version)
        {
            Type dataType = type switch
            {
                DataTypeID.CutInfo => typeof(CutInfo),
                DataTypeID.Name => typeof(Name),
                DataTypeID.Frame => typeof(Frame),
                DataTypeID.Message => typeof(Message),
                _ => typeof(Unknown)
            };

            if (dataType.HasInterface(typeof(IVersioningHandler)))
            {
                MethodInfo method = dataType.GetMethod("GetTypeFromVersion", BindingFlags.Static | BindingFlags.Public);
                object[]   args   = { version };
                dataType = (Type)method.Invoke(null, args);
            }
            return(dataType);
        }
    }
Пример #5
0
        public static DataType CreateDataType(DataTypeID type, BinaryReader reader, FormatVersion version, int size = 0)
        {
            Type dataType = GetDataType(type, version);

            if (dataType.HasInterface(typeof(IVariableSize)))
            {
                if (dataType == typeof(Unknown))
                {
                    return((DataType)Activator.CreateInstance(dataType, reader, size, type));
                }
                return((DataType)Activator.CreateInstance(dataType, reader, size));
            }
            else if (dataType.HasInterface(typeof(IVersioning)))
            {
                return((DataType)Activator.CreateInstance(dataType, reader, version));
            }
            else
            {
                return((DataType)Activator.CreateInstance(dataType, reader));
            }
        }
        public void Encode(Stream outputStream)
        {
            if (outputStream == null || !outputStream.CanWrite)
            {
                return;
            }
            DataTypeID.Encode(outputStream);
            Name.Encode(outputStream);
            int fieldLength = -1;

            if (Fields != null)
            {
                fieldLength = Fields.Count;
            }
            BaseType.WriteToStream(outputStream, BitConverter.GetBytes(fieldLength));
            for (int i = 0; i < fieldLength; i++)
            {
                // ReSharper disable once PossibleNullReferenceException
                Fields[i]
                .Encode(outputStream);
            }
            outputStream.WriteByte((byte)Type);
        }
Пример #7
0
 public void SetType(DataTypeID type)
 {
     _typeID = type;
 }
Пример #8
0
 public Unknown(BinaryReader reader, int size, DataTypeID type)
 {
     DataSize = size; Open(reader); _typeID = type;
 }
Пример #9
0
 public Unknown(Stream stream, int size, DataTypeID type, bool leaveOpen = false)
 {
     DataSize = size; Open(stream, leaveOpen); _typeID = type;
 }
Пример #10
0
 public Unknown(string path, int size, DataTypeID type)
 {
     DataSize = size; Open(path); _typeID = type;
 }
Пример #11
0
 public Unknown(DataTypeID type)
 {
     _typeID = type;
 }
Пример #12
0
 /// <summary>
 /// Determines whether the channel represents an array of numbers.
 /// </summary>
 public static bool IsNumericArray(this Cnl cnl)
 {
     return(cnl.DataLen > 1 && DataTypeID.IsNumeric(cnl.DataTypeID));
 }
Пример #13
0
 /// <summary>
 /// Determines whether the channel data type is string.
 /// </summary>
 public static bool IsString(this Cnl cnl)
 {
     return(DataTypeID.IsString(cnl.DataTypeID));
 }
Пример #14
0
 /// <summary>
 /// Determines whether the channel data type is numeric.
 /// </summary>
 public static bool IsNumeric(this Cnl cnl)
 {
     return(DataTypeID.IsNumeric(cnl.DataTypeID));
 }
Пример #15
0
        public bool HaveColumn(string columnName, string columnValue, out bool retValueMatched)
        {
            bool ret          = false;
            bool valueMatched = false;

            if (columnName == "DataTypeID")
            {
                ret = true;
                if (DataTypeID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataTypeGUID")
            {
                ret = true;
                if (DataTypeGUID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "RevisionNo")
            {
                ret = true;
                if (RevisionNo.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataType")
            {
                ret = true;
                if (DataType.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "IsDefault")
            {
                ret = true;
                if (IsDefault.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "IsSystem")
            {
                ret = true;
                if (IsSystem.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "IsActive")
            {
                ret = true;
                if (IsActive.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "Sequence")
            {
                ret = true;
                if (Sequence.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            retValueMatched = valueMatched;
            return(ret);
        }
Пример #16
0
        public bool HaveColumn(string columnName, string columnValue, out bool retValueMatched)
        {
            bool ret          = false;
            bool valueMatched = false;

            if (columnName == "DataID")
            {
                ret = true;
                if (DataID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataGUID")
            {
                ret = true;
                if (DataGUID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "RevisionNo")
            {
                ret = true;
                if (RevisionNo.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "UserID")
            {
                ret = true;
                if (UserID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "UserGUID")
            {
                ret = true;
                if (UserGUID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "CreatedDate")
            {
                ret = true;
                if (CreatedDate.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "LastUpdateDate")
            {
                ret = true;
                if (LastUpdateDate.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "ParentDataID")
            {
                ret = true;
                if (ParentDataID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "ParentDataGUID")
            {
                ret = true;
                if (ParentDataGUID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataTypeID")
            {
                ret = true;
                if (DataTypeID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataTypeGUID")
            {
                ret = true;
                if (DataTypeGUID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataValue")
            {
                ret = true;
                if (DataValue.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataRefTypeID")
            {
                ret = true;
                if (DataRefTypeID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataRefTypeGUID")
            {
                ret = true;
                if (DataRefTypeGUID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "DataRefID")
            {
                ret = true;
                if (DataRefID.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "IsActive")
            {
                ret = true;
                if (IsActive.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "IsDeleted")
            {
                ret = true;
                if (IsDeleted.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            if (columnName == "Sequence")
            {
                ret = true;
                if (Sequence.ToString() == columnValue)
                {
                    valueMatched = true;
                }
            }
            retValueMatched = valueMatched;
            return(ret);
        }
Пример #17
0
        public static DataType CreateDataType(DataTypeID type, FormatVersion version)
        {
            Type dataType = GetDataType(type, version);

            return((DataType)Activator.CreateInstance(dataType));
        }