Exemplo n.º 1
0
        /// <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)));
        }
Exemplo n.º 2
0
        /// <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)));
        }
Exemplo n.º 3
0
        /// <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)));
        }