Bio.IO.BAM.BAMFormatter.GetOptionalFieldValueSize C# (CSharp) Method

GetOptionalFieldValueSize() private static method

private static GetOptionalFieldValueSize ( Bio.IO.SAM.SAMOptionalField optionalField ) : int
optionalField Bio.IO.SAM.SAMOptionalField
return int
        private static int GetOptionalFieldValueSize(SAMOptionalField optionalField)
        {
            switch (optionalField.VType)
            {
                case "A":  //  Printable character
                case "c": //signed 8-bit integer
                    return -1;
                case "C": //unsigned 8-bit integer
                    return 1;
                case "s": // signed 16 bit integer
                case "S"://unsinged 16 bit integer
                case "i": // signed 32 bit integer
                case "I": // unsigned 32 bit integer
                    return GetOptionalFieldIntValueSize(optionalField.Value);
                case "f": // float
                    return 4;
                case "Z": // printable string 
                case "H": // HexString
                    return optionalField.Value.Length + 1;
                case "B"://integer or numeric array
                    char type = optionalField.Value[0];
                    int arrayTypeSize = GetSizeOfArrayType(type);
                    int numberofelements = optionalField.Value.Split(DelimComma, StringSplitOptions.RemoveEmptyEntries).Length - 1;
                    int elementsSize = arrayTypeSize * numberofelements;
                    int arraylen = elementsSize + 1 + 4;  // 1 to store array type and 4 to store number of values in array.
                    return arraylen;
                default:
                    throw new Exception(Properties.Resource.BAM_InvalidOptValType);
            }
        }