深入理解Summit: 数据结构及用法-通用

先看一段源码压压惊. 所有的源码都是来自于SUMMIT 帮助文档. 并且很多都是闭源的. 我们在猜测的过程中重构这些函数。

为了更直观的展示给各位看官,去除了盎余的代码.
 
int     main (  int argc ,  char ** argv ) 
{
   sCUSTOMER   * customer;
   sENTITY     * custEnt;

   // 1
   sStandardInit( argc, argv, NULL, 00 );
   //  这个初始化函数做了很多工作, 建立DB连接,加载元数据, 建立业务模型调用通道(就是初始化指针对象)等等,一眼难尽.

   // 2
   custEnt = sGetEntityByName( "CUSTOMER" );
   // 这个有点意思. 其实在初始化的时候已经把元数据模型(上面有篇文章提到过)加载到内存.这里就是找到这个地址而已.后续读写数据的时候会抓此指针指向的地址中的内容去使用

   // 3
   sEntityCreate( custEnt, (void **)&customer );
   //  分配内存.    

   // 4
   sEntityDBRead( custEnt, (void *)customer,  "ALL", 00 );
   // 抓数据.   
 
   // 5
   sEntityFree( Entity, (void **)&customer, sYES ); 
   // 释放内存

   // 6
   sFreeGlobal();
   // 结束

   return 0;
}

对于summit的Coding来说 , 这应该是一段标准过程, 唯一的不同可能就是取数的方式不太一样. 比如抓一堆数据还是抓1条数据.

别看这儿就6个函数. 这里涉及到的内容.或者说后面的那些代码, 还是有点意思的. 虽然难度不大, 但是农民工耗体力阿. 

下面来看张图.  画图水平有限(整不出太克拉斯的炫酷吊炸天的图), 客观勉强看一看就算.

这张图对不对呢, 我也不知道(核心源码我也没看过)   反正大概就是那么回事, 就算不对, 也是六七不离十..

C++继续重构它

   
int main()
{
    Q::sGlobalInit();    
    
    IEntity * pCUSTOMER = (IEntity *)Q::InitEntity("CUSTOMER");

    CUSTOMER * pCust = (CUSTOMER *)pCUSTOMER->GetData(Condition);

    pCust->release();   

    Q::sGlobalFree();

    return 0;

}

看起来少掉了一个接口. 当然也不算特别难看. 而且有对象的Coding貌似要清晰简洁一些.那就暂且用这种方法继续下去.

后续章节将仔细介绍重构这几个函数都干了那些有趣的活, 且听后续如何, 静待下回扯蛋...

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值