Ejemplo n.º 1
0
        /// <summary>
        /// Generates a bit string type
        /// </summary>
        /// <param name="emitter">The emitter to write to</param>
        /// <param name="typeName">The name of the type</param>
        /// <param name="def">The bitstring definition</param>
        private void _generateBitString(CSharpEmitter emitter, string typeName, string fieldName, BitStringDefinition def)
        {
            typeName = _getDefinitionName(typeName, fieldName, def);
            using (var s = emitter.Struct(typeName))
            {
                using (var bits = emitter.Enum("Bits", "byte"))
                {
                    for (int i = 0; i < def.Bits.Length; i++)
                    {
                        var bit = def.Bits[i];
                        bits.EnumValue(_transformFieldName(bit.Name), bit.Index, i == def.Bits.Length - 1);
                    }
                }

                s.WriteLine();
                s.WriteLine("private BitString56 _bitstring;");

                s.WriteLine();
                s.WriteLineRaw("public byte Length { get { return _bitstring.Length; } }");

                s.WriteLine();
                s.WriteLine("public bool this[Bits bit] {{ get {{ return _bitstring[(int)bit]; }} }}");

                s.WriteLine();
                using (var cons = s.Constructor(typeName, new Parameter[] { new Parameter("BitString56", "bitstring") }))
                {
                    cons.WriteLine("this._bitstring = bitstring;");
                }

                s.WriteLine();
                s.WriteLine("public {0} WithLength(byte length) {{ return new {0}(_bitstring.WithLength(length)); }}", typeName);

                s.WriteLine();
                s.WriteLine("public {0} WithBit(Bits bit, bool set = true) {{ return new {0}(_bitstring.WithBit((int)bit, set)); }}", typeName);

                s.WriteLine();
                s.StaticReadonlyField("Schema", "ISchema", "PrimitiveSchema.BitString56Schema");

                s.WriteLine();
                using (var load = s.StaticMethod("Load", typeName, new Parameter[] { new Parameter("IValueStream", "stream") }))
                {
                    load.WriteLine("var temp = Value<BitString56>.Load(stream);");
                    load.WriteLine("return new {0}(temp);", typeName);
                }

                s.WriteLine();
                using (var save = s.StaticMethod("Save", "void", new Parameter[] { new Parameter("IValueSink", "sink"), new Parameter(typeName, "value") }))
                {
                    save.WriteLine("Value<BitString56>.Save(sink, value._bitstring);");
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Generates the tags enumeration for a choice
 /// </summary>
 /// <param name="emitter">The emitter to write to</param>
 /// <param name="def">The choice definition</param>
 private void _generateChoiceTags(CSharpEmitter emitter, ChoiceDefinition def)
 {
     emitter.WriteLine();
     using (var tagEmitter = emitter.Enum("Tags", "byte"))
     {
         for (int i = 0; i < def.Fields.Length; i++)
         {
             var field      = def.Fields[i];
             var fieldName2 = _transformFieldName(field.Name);
             tagEmitter.EnumValue(fieldName2, i, i == def.Fields.Length - 1);
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Generates an enumeration type
 /// </summary>
 /// <param name="emitter">The emitter to write to</param>
 /// <param name="typeName">The name of the type</param>
 /// <param name="def">The enumeration definition</param>
 private void _generateEnumeration(CSharpEmitter emitter, string typeName, string fieldName, EnumerationDefinition def)
 {
     typeName = _getDefinitionName(typeName, fieldName, def);
     using (var e = emitter.Enum(typeName))
     {
         for (int i = 0; i < def.Options.Length; i++)
         {
             var opt     = def.Options[i];
             var optName = _transformFieldName(opt.Name);
             e.EnumValue(optName, opt.Value, i == def.Options.Length - 1);
         }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Generates an enumeration type
 /// </summary>
 /// <param name="emitter">The emitter to write to</param>
 /// <param name="typeName">The name of the type</param>
 /// <param name="def">The enumeration definition</param>
 private void _generateEnumeration(CSharpEmitter emitter, string typeName, string fieldName, EnumerationDefinition def)
 {
     typeName = _getDefinitionName(typeName, fieldName, def);
     using(var e = emitter.Enum(typeName))
     {
         for(int i = 0; i < def.Options.Length; i++)
         {
             var opt = def.Options[i];
             var optName = _transformFieldName(opt.Name);
             e.EnumValue(optName, opt.Value, i == def.Options.Length - 1);
         }
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Generates the tags enumeration for a choice
 /// </summary>
 /// <param name="emitter">The emitter to write to</param>
 /// <param name="def">The choice definition</param>
 private void _generateChoiceTags(CSharpEmitter emitter, ChoiceDefinition def)
 {
     emitter.WriteLine();
     using (var tagEmitter = emitter.Enum("Tags", "byte"))
     {
         for (int i = 0; i < def.Fields.Length; i++)
         {
             var field = def.Fields[i];
             var fieldName2 = _transformFieldName(field.Name);
             tagEmitter.EnumValue(fieldName2, i, i == def.Fields.Length - 1);
         }
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Generates a bit string type
        /// </summary>
        /// <param name="emitter">The emitter to write to</param>
        /// <param name="typeName">The name of the type</param>
        /// <param name="def">The bitstring definition</param>
        private void _generateBitString(CSharpEmitter emitter, string typeName, string fieldName, BitStringDefinition def)
        {
            typeName = _getDefinitionName(typeName, fieldName, def);
            using (var s = emitter.Struct(typeName))
            {
                using (var bits = emitter.Enum("Bits", "byte"))
                {
                    for (int i = 0; i < def.Bits.Length; i++)
                    {
                        var bit = def.Bits[i];
                        bits.EnumValue(_transformFieldName(bit.Name), bit.Index, i == def.Bits.Length - 1);
                    }
                }

                s.WriteLine();
                s.WriteLine("private BitString56 _bitstring;");

                s.WriteLine();
                s.WriteLineRaw("public byte Length { get { return _bitstring.Length; } }");

                s.WriteLine();
                s.WriteLine("public bool this[Bits bit] {{ get {{ return _bitstring[(int)bit]; }} }}");

                s.WriteLine();
                using (var cons = s.Constructor(typeName, new Parameter[] { new Parameter("BitString56", "bitstring") }))
                {
                    cons.WriteLine("this._bitstring = bitstring;");
                }

                s.WriteLine();
                s.WriteLine("public {0} WithLength(byte length) {{ return new {0}(_bitstring.WithLength(length)); }}", typeName);

                s.WriteLine();
                s.WriteLine("public {0} WithBit(Bits bit, bool set = true) {{ return new {0}(_bitstring.WithBit((int)bit, set)); }}", typeName);

                s.WriteLine();
                s.StaticReadonlyField("Schema", "ISchema", "PrimitiveSchema.BitString56Schema");

                s.WriteLine();
                using (var load = s.StaticMethod("Load", typeName, new Parameter[] { new Parameter("IValueStream", "stream") }))
                {
                    load.WriteLine("var temp = Value<BitString56>.Load(stream);");
                    load.WriteLine("return new {0}(temp);", typeName);
                }

                s.WriteLine();
                using (var save = s.StaticMethod("Save", "void", new Parameter[] { new Parameter("IValueSink", "sink"), new Parameter(typeName, "value") }))
                {
                    save.WriteLine("Value<BitString56>.Save(sink, value._bitstring);");
                }
            }
        }