/// <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()); }
/// <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()); }
/// <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)); } }
/// <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()); }
/// <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"); }