예제 #1
0
        private void DefineItem(CodeWriter writer)
        {
            if (Info?.Value == null)
            {
                return;
            }
            switch (Info.Value)
            {
            case double v:
                writer.NewLine();
                if ((int)v == v)
                {
                    writer.Write($"const int {Name}({v});");
                }
                else if ((long)v == v)
                {
                    writer.Write($"const int64_t {Name}({v});");
                }
                else
                {
                    writer.Write($"const double {Name}({v});");
                }
                break;

            case bool v:
                writer.NewLine();
                writer.Write($"const bool {Name}(" + (v ? "true" : "false") + ");");
                break;

            case string v:
                writer.NewLine();
                writer.Write($"inline e::system::string {Name}()");
                using (writer.NewBlock())
                {
                    writer.NewLine();
                    writer.Write("return ");
                    writer.WriteLiteral(v);
                    writer.Write(";");
                }
                break;

            case DateTime v:
                writer.NewLine();
                writer.Write($"const e::system::datetime {Name}({v.ToOADate()}/*{v.ToString("yyyyMMddTHHmmss")}*/);");
                break;

            case byte[] v:
                writer.NewLine();
                writer.Write($"e::system::bin {Name}();");
                break;

            default:
                throw new Exception();
            }
        }