代码生成器原理(二)

首先说一下,对于上一篇的原理个人觉得。。。。。反正就是重点不突出吧!对于上一篇的不足,我会尽量在后面补全!

现在开始今天的话题吧

今天讲的就是代码生成器的第二点:.使用模版,动态替换

首先,我们需要设计一个模版解析的规则,目前我设计的规则是这样的

 //替换规则
        //_time_        注:系统时间
        //_TableName_    注:替换为表的名称
        //_ModelName_    注:替换为模型名称
        //_PID_ 主键
        //_columnName_    注:替换为当前的列的名称
        //_i_    注:替换为当前的列的序号
        //<#foreach[parm]case格式#>    注:遍历 parm:遍历的对象,主要有table(表不带主键),table0(表带主键)
        //case格式:case[Type1,Type2,...]:[replace1,replace2,...](x)   注:替换的格式(Type若为0则不分类型) (x为列的分割符,一般为符号如:,;:,若换行则为n,T为缩进,p为空格)
        //<#PIDcase[Type1,Type2,...]:[replace1,replace2,...]#> 注:主键类型需要判断
        //

不知道大家能不能理解,我大致说明一下,首先,我根据数据库底层的特点,设计了三个主要字段,分别是: 表的名称 Model 的名称以及 主键

这三个是容易在代码中单独出现的,而下面的当前列的名称则只会在循环解析的时候出现。

下面说一说我设计的两个函数,

一个是foreach循环主要用于对表的列作循环,同时直接受两个参数,一个代表不带主键循环,一个带主键循环

还有一个是case函数,主要用于对不同类型的字段做不同的替换处理

至于下面的PIDcase。。。大家可以认为是多余的,主要是为了防止主键不是int类型时设计的。。。

跟上面的case是一样的

然后剩下的就是解析我自己设计的模版函数方法实现了,代码我就不贴了,可以到我的开源项目中去下载,地址:点击打开链接

里面有详细的解析和代码注释,欢迎交流,可能我的设计缺陷重重,欢迎指正!

然后就是模版的写法了,我这里用的是我上一个项目的代码做的模版(上个项目在苹果系统下面开发的,所以见谅)

模版的写法可以自己定义,不一定需要使用我们提供的,而且其中应该会有错误的!呵呵(不能做伸手党啊)!欢迎大家提供更加优质的模版

贴一个模版写法的例子:

//
//  _ModelName_Model.h
//
//  Created by 桂皮 on _time_.
//
//

#ifndef __ModelName_Model_h
#define __ModelName_Model_h

class _ModelName_
{
public:
	<#foreach[table0]case[INTEGER,REAL,TEXT]:[int _columnName_;float _columnName_;std::string _columnName_](;nT)#>;
};
#endif

上次发出去才发现,模版里面的名字没有改。。。。。

最后,希望有更多的人来一起修改我们的模版

模版所在项目的文件夹CodeBuilder\CodeBuilder\bin\Debug\TempFile

下一篇我应该会讲文件的写入操作,那都是皮毛,这篇才是我的核心。。。。。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值