예제 #1
0
        public static int GetLength(BinaryValueType valueType)
        {
            switch (valueType)
            {
            case BinaryValueType.BYTE:
            case BinaryValueType.BOOL:
                return(1);

            case BinaryValueType.SHORT:
            case BinaryValueType.USHORT:
                return(2);

            case BinaryValueType.INT:
            case BinaryValueType.UINT:
            case BinaryValueType.FLOAT:
                return(4);

            case BinaryValueType.LONG:
            case BinaryValueType.ULONG:
            case BinaryValueType.DOUBLE:
                return(8);

            default:
                throw new ArgumentException("invalid value type");
            }
        }
예제 #2
0
        /// <summary>
        /// Parses template data for binary value from given XML
        /// </summary>
        /// <param name="element">XElement containing template data for binary value</param>
        /// <param name="partsList">current list of binary parts</param>
        private void ParseValue(XElement element, ObservableCollection <BinaryPart> partsList)
        {
            long   id                      = long.Parse(element.Attribute(Constants.TemplateXML_ID).Value);
            string name                    = element.Attribute(Constants.TemplateXML_Name).Value;
            string type                    = element.Attribute(Constants.TemplateXML_Type).Value.ToLower();
            string converterName           = element.Attribute(Constants.TemplateXML_Converter)?.Value ?? "";
            IntToStringConverter converter = !string.IsNullOrWhiteSpace(converterName) ? converters.Where(x => x.Name == converterName).FirstOrDefault() : null;

            BinaryValueType valueType   = (BinaryValueType)Enum.Parse(typeof(BinaryValueType), type, true);
            BinaryValue     binaryValue = new BinaryValue(id, name, valueType, converter);

            partsList.Add(binaryValue);
        }