Exemplo n.º 1
0
 public void AddArgument(bool isField, out NamedArgumentTypeEncoder typeEncoder, out NameEncoder name, out LiteralEncoder literal)
 {
     Builder.WriteByte(isField ? (byte)0x53 : (byte)0x54);
     typeEncoder = new NamedArgumentTypeEncoder(Builder);
     name        = new NameEncoder(Builder);
     literal     = new LiteralEncoder(Builder);
 }
Exemplo n.º 2
0
        public void NamedArgumentTypeEncoder_SZArray()
        {
            var b = new BlobBuilder();
            var e = new NamedArgumentTypeEncoder(b);

            Assert.Same(b, e.Builder);

            e.SZArray();
            AssertEx.Equal(new byte[0], b.ToArray());
            b.Clear();
        }
Exemplo n.º 3
0
 static void EncodeType(NamedArgumentTypeEncoder typeEnc, Type type)
 {
     if (type == typeof(Type))
     {
         typeEnc.ScalarType().SystemType();
     }
     else if (type.IsArray)
     {
         EncodeType(typeEnc.SZArray().ElementType(), type.GetElementType());
     }
     else
     {
         // Work out the primitive type code
         var primTypeCode = PrimitiveTypeCodeFromSystemTypeCode(type);
         typeEnc.ScalarType().PrimitiveType(primTypeCode);
     }
 }
Exemplo n.º 4
0
        public static void NamedArgumentType(this NamedArgumentTypeEncoder encoder, INamedTypeSymbol attributeType, string field)
        {
            var fieldMembers = attributeType.GetMembers(field);
            var fieldSymbol  = fieldMembers.First() as IFieldSymbol;

            if (fieldSymbol.Type.SpecialType == SpecialType.System_Object)
            {
                encoder.Object();
            }
            else if (fieldSymbol.Type.SpecialType == SpecialType.System_Array)
            {
                // TODO array type encoder
                encoder.SZArray();
            }
            else if (fieldSymbol.Type.TypeKind == TypeKind.Enum)
            {
                encoder.ScalarType().Enum(fieldSymbol.Type.ToString());
            }
            else
            {
                encoder.ScalarType().CustomElementType(fieldSymbol);
            }
        }
Exemplo n.º 5
0
 public void AddArgument(bool isField, out NamedArgumentTypeEncoder typeEncoder, out NameEncoder name, out LiteralEncoder literal)
 {
     Builder.WriteByte(isField ? (byte)0x53 : (byte)0x54);
     typeEncoder = new NamedArgumentTypeEncoder(Builder);
     name = new NameEncoder(Builder);
     literal = new LiteralEncoder(Builder);
 }
Exemplo n.º 6
0
        public void NamedArgumentTypeEncoder_SZArray()
        {
            var b = new BlobBuilder();
            var e = new NamedArgumentTypeEncoder(b);
            Assert.Same(b, e.Builder);

            e.SZArray();
            AssertEx.Equal(new byte[0], b.ToArray());
            b.Clear();
        }