/// <summary>
 /// Generates the serializers for the specified data Types.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <param name="dataTypes">The data types.</param>
 /// <returns>The source code as string</returns>
 public string Generate(IXerusModel model, List <IXerusDataType> dataTypes, string name)
 {
     this.AppendLine(@"/******************************************************");
     this.AppendLine(@" *  " + name + ".h");
     this.AppendLine(@" *-----------------------------------------------------");
     this.AppendLine(@" * ");
     this.AppendLine(@" * ");
     this.AppendLine(@" *------------------------------------------------------");
     this.AppendLine(@" *      Serializers for the used data types");
     this.AppendLine(@" *-------------------------------------------------------");
     this.AppendLine(@" *");
     this.AppendLine(@" *******************************************************/");
     this.AppendLine();
     this.AppendLine("#include <DataTypes.h>");
     this.AppendLine();
     this.AppendLine("#ifndef __" + name + "_h__");
     this.AppendLine("#define __" + name + "_h__");
     this.AppendLine();
     this.AppendLine("class " + name);
     this.AppendLine("{");
     this.PushIndent();
     this.AppendLine("public:");
     foreach (var xerusDataType in dataTypes)
     {
         this.AppendLine(GenerateSerializerSignature(xerusDataType as dynamic));
         this.AppendLine(GenerateDeserializerSignature(xerusDataType as dynamic));
     }
     this.PopIndent();
     this.AppendLine("};");
     this.AppendLine("#endif");
     return(this.ToString());
 }
Beispiel #2
0
        /// <summary>
        /// Generates the DataTypes.h file from the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public string Generate(IXerusModel model)
        {
            this.AppendLine(@"/******************************************************");
            this.AppendLine(@" *  DataTypes.h");
            this.AppendLine(@" *-----------------------------------------------------");
            this.AppendLine(@" * Generated data types");
            this.AppendLine(@" *-----------------------------------------------------");
            this.AppendLine(@" *");
            this.AppendLine(@" ******************************************************");
            this.AppendLine(@"*/");
            this.AppendLine();
            this.AppendLine(@"#ifndef __DataTypes_h__");
            this.AppendLine(@"#define __DataTypes_h__");
            this.AppendLine();
            this.AppendLine(@"typedef unsigned char       uint8;          //!< 8 bit unsigned integer");
            this.AppendLine(@"typedef unsigned short      uint16;         //!< 16 bit unsigned integer");
            this.AppendLine(@"typedef unsigned long       uint32;         //!< 32 bit unsigned integer");
            this.AppendLine();

            IEnumerable <IXerusDataType> sortedDataTypes = Sort(model.DataTypes);

            foreach (var dataType in sortedDataTypes)
            {
                this.Create(dataType);
                this.AppendLine();
            }
            this.AppendLine();
            this.AppendLine(@"#endif");
            return(this.ToString());
        }
Beispiel #3
0
 /// <summary>
 /// Generates the code for the specified model.
 /// </summary>
 /// <param name="model">The model.</param>
 public void Generate(IXerusModel model, string baseDirectory)
 {
     //GenerateSourcePart data types
     using (var streamWriter = File.CreateText(baseDirectory + "\\DataTypes.h"))
     {
         var dataTypesHeader = new DataTypesHeaderGenerator();
         streamWriter.Write(dataTypesHeader.Generate(model));
     }
 }
Beispiel #4
0
        /// <summary>
        ///     Generates the code for the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="baseDirectory">The base directory.</param>
        public void Generate(IXerusModel model, string baseDirectory, string name)
        {
            List <IXerusDataType> dataTypes = model.DataTypes.ToList();

            dataTypes.AddRange(IntrinsicTypes.GetTypes());


            //GenerateSourcePart serializer
            using (StreamWriter streamWriter = File.CreateText(baseDirectory + "\\" + name + ".h"))
            {
                var serializerHeader = new SerializerHeaderGenerator();
                streamWriter.Write(serializerHeader.Generate(model, dataTypes, name));
            }

            using (StreamWriter streamWriter = File.CreateText(baseDirectory + "\\" + name + ".cpp"))
            {
                var serializerSource = new SerializerSourceGenerator();
                streamWriter.Write(serializerSource.Generate(model, dataTypes, name));
            }
        }
        /// <summary>
        /// Generates the serializers for the specified data Types.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="dataTypes">The data types.</param>
        /// <returns>The source code as string</returns>
        public string Generate(IXerusModel model, IEnumerable <IXerusDataType> dataTypes, string name)
        {
            this.AppendLine(@"/******************************************************");
            this.AppendLine(@" *  " + name + ".cpp");
            this.AppendLine(@" *-----------------------------------------------------");
            this.AppendLine(@" * ");
            this.AppendLine(@" * ");
            this.AppendLine(@" *------------------------------------------------------");
            this.AppendLine(@" *      Serializers for the used data types");
            this.AppendLine(@" *-------------------------------------------------------");
            this.AppendLine(@" *");
            this.AppendLine(@" *******************************************************/");
            this.AppendLine();
            this.AppendLine("#include <" + name + ".h>");
            this.AppendLine();
            foreach (var xerusDataType in dataTypes)
            {
                this.AppendLine(GenerateSerializerDefinition(xerusDataType as dynamic, name));
                this.AppendLine(GenerateDeserializerDefinition(xerusDataType as dynamic, name));
            }

            return(this.ToString());
        }
Beispiel #6
0
 /// <summary>
 ///     Generates the code for the specified model.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <param name="baseDirectory">The base directory.</param>
 public void Generate(IXerusModel model, string baseDirectory)
 {
     Generate(model, baseDirectory, "Serializer");
 }