/// <summary> /// Generate script for `C# struct` variant. /// </summary> /// <returns></returns> protected string genCSharpStruct() { Func <string, string, bool, string> left = delegate(string _indent, string _name, bool isNum) { if (isNum) { return(String.Format("{0}public static readonly System.Version {1}", _indent, _name)); } return(String.Format("{0}public const string {1}", _indent, _name)); }; Func <string, bool, string> right = delegate(string _name, bool isNum) { if (isNum) { return(String.Format(String.Format("= new System.Version({0});", PAT_FIELD_VALUE), _name)); } return(String.Format(String.Format("= \"{0}\";", PAT_FIELD_VALUE), _name)); }; TFieldsMap fld = fields(left, right, new String(' ', INDENT_SIZE * 2)); string fname = fld.Value; FMap fmap = new FMap() { map = fld.Key }; string sc = scVariables(Resource.ScriptMain); sc = sc.Replace("!Revision!", scRevision()); sc = scVersion(sc, fmap); sc = sc.Replace("!SCM!", scScm(fmap, ref fname)); string tpl = Resource.CSharpStructTpl .Replace("!Namespace!", req.StepStruct.namspace) .Replace("!StructName!", req.StepStruct.name); tpl = String.Format("{0}{1}{2}", Resource.Header, LINE_BREAK, tpl); return(sc.Replace("!Template!", tpl.Replace("!Items!", fname))); }
/// <summary> /// Generate script for `C++ macro definitions` variant. /// </summary> /// <returns></returns> protected string genCppDefinitions() { Func <string, string, bool, string> left = delegate(string _indent, string _name, bool isNum) { if (isNum) { return(String.Empty); } return(String.Format("{0}#define {1}", _indent, _name)); }; Func <string, bool, string> right = delegate(string _name, bool isNum) { if (isNum) { return(String.Empty); } return(String.Format(String.Format("L\"{0}\";", PAT_FIELD_VALUE), _name)); }; TFieldsMap fld = fields(left, right, String.Empty); string fname = fld.Value; FMap fmap = new FMap() { map = fld.Key }; string sc = scVariables(Resource.ScriptMain); sc = sc.Replace("!Revision!", scRevision()); sc = scVersion(sc, fmap); sc = sc.Replace("!SCM!", scScm(fmap, ref fname)); string tpl = Resource.CppDefineTpl; tpl = String.Format("{0}{1}{2}", Resource.Header, LINE_BREAK, tpl); return(sc.Replace("!Template!", tpl.Replace("!Items!", fname))); }
/// <summary> /// Generate script for `C++ struct` variant. /// </summary> /// <returns></returns> protected string genCppStruct() { Func <string, string, bool, string> leftRef = delegate(string _indent, string _name, bool isNum) { if (isNum) { return(String.Format("{0}static System::Version^ const {1}", _indent, _name)); } return(String.Format("{0}static System::String^ const {1}", _indent, _name)); }; Func <string, bool, string> rightRef = delegate(string _name, bool isNum) { if (isNum) { return(String.Format(String.Format("= gcnew System::Version({0});", PAT_FIELD_VALUE), _name)); } return(String.Format(String.Format("= \"{0}\";", PAT_FIELD_VALUE), _name)); }; Func <string, string, bool, string> left = delegate(string _indent, string _name, bool isNum) { if (isNum) { return(String.Format("{0}{1}{2}", _indent, Resource.CppStructNumTpl, LINE_BREAK) .Replace("!FieldName!", _name) .Replace("!VerNum!", String.Format(PAT_FIELD_VALUE, _name))); } return(String.Format("{0}const std::wstring {1}", _indent, _name)); }; Func <string, bool, string> right = delegate(string _name, bool isNum) { if (isNum) { return(String.Empty); } return(String.Format(String.Format("= L\"{0}\";", PAT_FIELD_VALUE), _name)); }; bool clr = (req.StepStruct.fnumber == StepStruct.NumberType.SystemVersion); TFieldsMap fld = fields( (clr)? leftRef : left, (clr)? rightRef : right, new String(' ', INDENT_SIZE * 2)); string fname = fld.Value; FMap fmap = new FMap() { map = fld.Key }; string sc = scVariables(Resource.ScriptMain); sc = sc.Replace("!Revision!", scRevision()); sc = scVersion(sc, fmap); sc = sc.Replace("!SCM!", scScm(fmap, ref fname)); string tpl = Resource.CppStructTpl .Replace("!Namespace!", req.StepStruct.namspace) .Replace("!StructName!", req.StepStruct.name); tpl = String.Format("{0}{1}{2}", Resource.Header, LINE_BREAK, tpl); if (clr) { tpl = tpl.Replace("!KWRef!", "ref ") .Replace("!DefVariable!", String.Empty) .Replace("!IncString!", String.Empty); } else { tpl = tpl.Replace("!KWRef!", String.Empty) .Replace("!DefVariable!", " " + req.StepStruct.name) .Replace("!IncString!", String.Format("{1}{0}{1}", "#include <string>", LINE_BREAK)); } return(sc.Replace("!Template!", tpl.Replace("!Items!", fname))); }