??xml version="1.0" encoding="utf-8" standalone="yes"?>老司机免费视频一区二区,久久久久久伊人,久久国产精品亚洲77777http://www.shnenglu.com/zealsoft/archive/2008/10/15/64066.htmlzealsoftzealsoftWed, 15 Oct 2008 14:03:00 GMThttp://www.shnenglu.com/zealsoft/archive/2008/10/15/64066.htmlhttp://www.shnenglu.com/zealsoft/comments/64066.htmlhttp://www.shnenglu.com/zealsoft/archive/2008/10/15/64066.html#Feedback0http://www.shnenglu.com/zealsoft/comments/commentRss/64066.htmlhttp://www.shnenglu.com/zealsoft/services/trackbacks/64066.htmlGoogle CTemplate提供了调节器(Modifier)功能。所谓调节器Q类g在模板中可以使用的用戯定义函数Q也是对于相同的数据字典内容,模板中用不同的调节器就可以昄不同的内宏V?/span>

要编写一个调节器Q需要从template_modifiers::TemplateModifierz一个类Q?/span>


class BitStringModifier : public template_modifiers::TemplateModifier {
    
void Modify(const char* in, size_t inlen,
                
const ctemplate::PerExpandData* per_expand_data,
                ExpandEmitter
* outbuf, const std::string& arg) const;
};

BitString 调节器的作用是将数值型数据转换Zq制字符串显C。其在模板中的用如下所C:

用户自定义的调节器一般采?#8220;x-”开头。调节器可以带有用户参数Q例如上例的“=4”是用户参数Q表C生成的二进制串的长度ؓ4Q如果不?/span>4位,前面自动?/span>0?/span>

调节器的主要功能是在Modify函数中实现的Q在该函C调用outbuf->Emit函数来输出所需要的l果?/span>


void BitStringModifier::Modify(const char* in, size_t inlen,
            
const ctemplate::PerExpandData* per_expand_data,
            ExpandEmitter
* outbuf, const std::string& arg) const 
{
    
int x = atoi(string(in, inlen).c_str());
    unsigned 
int len = atoi(arg.c_str() + 1);
    
string sID = itoa(x, 2);

    
while(sID.size() < len)
        sID 
= "0" + sID;
    
    outbuf
->Emit(sID);
}

 

要在E序中支持调节器Q还需要调?/span>google::template_modifiers::AddModifier函数dBitStringModifier的实例。如Q?/span>


  BitStringModifier bitStringModifier;
  
/// 注册自定义的Modifier
  google::template_modifiers::AddModifier("x-bitstring="&bitStringModifier);



zealsoft 2008-10-15 22:03 发表评论
]]>
ZC++的模板引?/title><link>http://www.shnenglu.com/zealsoft/archive/2008/09/17/62013.html</link><dc:creator>zealsoft</dc:creator><author>zealsoft</author><pubDate>Wed, 17 Sep 2008 13:42:00 GMT</pubDate><guid>http://www.shnenglu.com/zealsoft/archive/2008/09/17/62013.html</guid><wfw:comment>http://www.shnenglu.com/zealsoft/comments/62013.html</wfw:comment><comments>http://www.shnenglu.com/zealsoft/archive/2008/09/17/62013.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/zealsoft/comments/commentRss/62013.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zealsoft/services/trackbacks/62013.html</trackback:ping><description><![CDATA[模板引擎(Template engine)是实现模型和视图分离的一个重要手Dc如果你从未接触q模板引擎可以看?a ><span>Wiki的介l?/span></a><span>。模板引擎的行最初是因ؓ|站开发的需要,象比较重要的几个模板引擎Q?/span><a ><span>SMARTY</span></a><span>?/span><a ><span>Velocity</span></a><span>?/span><a ><span>StringTemplate</span></a><span>都是来源于网设计的。当Ӟ除了|页设计Q模板引擎还可以应用于其他领域,而我主要其应用与代码生成器的设计中?br><br>有关模板引擎Q我推荐StringTemplate的作?/span><a ><span>Terence Parr</span></a> 写的一?a >英文论文</a>。Terence Parr是一个大学教授,写的文章自然学术性比较强Q较难懂Q但是很有参考h倹{借助q篇文章的分析,我们可以发现当前模板引擎有着两种不同的思\Q一U是严格模型和视图分开的,设计模板pȝ时往往提供的模板语a比较单,避免在模板语a中加入运符LQ另一U是提供强大的模板语a功能Q模板语ahcM高语言的功能,如各U条件判断语句,甚至数学q算能力。显然从模板~写者的角度看,后者具有更强大的功能,几乎无所不能Q但是安全性不如前者,模板的编写者更Ҏ利用pȝ漏洞做模板系l设计者没有想到的事情。这个问题仁者见仁,见智,好在由很多的模板pȝ可以选择?br><br>l大多数模板引擎都是支持Java、PHP、Python的,q当然和模板引擎的应用领域相兟뀂我的代码生成器是用C++写的Q而且必须支持Windowsq_Q所以选择的范围就比较有限了,从网l上搜烦了一下,g只有<a >Teng</a>?a >CT++</a>?a >Google CTemplate</a>可以使用了。我?个系l进行了单的评估Qƈ实际使用qCT++和CTemplateQ现在ȝ一下自q心得Q希望对大家有一些帮助?<br><br>1、操作系l的支持<br>我的主要工作是在Windows上的Q而模板引擎绝大多数是面向Unix/Linux的,q和我的需求有一定距R当初曾l下载过TengQ但是折腾了半天也没有能够让其在Visual Studio 2003下成功编译,所以就攑ּ了,后来CT++ 1.8单地处理了一下就可以跑了Q很开心。而Google CTemplate更提供了完全的Windows支持Q这对于我这L用户当然是非常省心了?br><br>2、Y件开发的z跃?br>q些软g都是开源的QY件开发的z跃度当然是我关心的Q有的工具刚开始用的时候很开心,但是后来开发者没有兴不玩了Q而又没有人接手,BUG也无法更CQ就比较苦了Q典型的象TurboPower。Tengg已经很长旉不更CQCT++一直在更新Q但是开发者是俄罗斯hQ全部文是俄文的,包括E序注释Q以?.8q有英文文Q从2.0以后没有了Q虽然最q承?.4以后会报告英文文,但是我担心他哪天不高兴就不玩了,所以最后下定决心{到CTemplateM。CTemplate虽然是Google的,而且据说Google内部也在使用Q但是在模板引擎领域的名气却不大Q好像作者的热情仍然很高Q持l更斎ͼ而且可能很快要升U到1.0版本了,q给我很大的信心?br><br>3、模板语a的功?br>在我看来Q模板语a的功能越强,提供的函数越多,它可能越受模板编写者的Ƣ迎Q但是可能不W合模型和视图严格分ȝ原则。Teng和CT++都属于模板语a功能强的一c,象Teng甚至提供了大量的q算W,而CTemplate昄是严格按照模型和视图分离原则设计的,它甚x有提供if/elseq样在其他模板系l中都有的功能。如前所qͼq个问题仁者见仁,见智,不争Z。下面简单地列个表比较一下。由于CT++ 2没有英文文Q一直就没有使用q,可能会遗漏一些新功能?br><br> <table cellSpacing=0 cellPadding=3 border=1> <tbody> <tr> <td></td> <td align=middle>Teng</td> <td align=middle>CT++ </td> <td align=middle>CTemplate</td> </tr> <tr> <td>变量</td> <td>支持</td> <td>支持</td> <td>支持</td> </tr> <tr> <td>函数</td> <td>支持</td> <td>支持</td> <td>支持QModifierQ?/td> </tr> <tr> <td>包含</td> <td>支持</td> <td>支持</td> <td>支持</td> </tr> <tr> <td>条g语句</td> <td>支持</td> <td>支持</td> <td>不支?/td> </tr> <tr> <td>循环</td> <td>支持</td> <td>支持</td> <td>支持</td> </tr> <tr> <td>计算</td> <td>支持</td> <td>不支?/td> <td>不支?/td> </tr> <tr> <td>赋?/td> <td>支持</td> <td>不支?/td> <td>不支?/td> </tr> <tr> <td>注释</td> <td>支持</td> <td>支持</td> <td>支持</td> </tr> <tr> <td>安全性设?/td> <td>不支?/td> <td>不支?/td> <td>支持</td> </tr> <tr> <td>用户定义函数</td> <td>不支?/td> <td>支持</td> <td>支持</td> </tr> </tbody> </table> <br>4、C++ API<br>基本的API几个软g都差不多Q我觉得CTemplate更完善一些,特别喜欢它的调试功能?br><br>M来说Q我对CT++q是有些难舍Q但是综合考虑之后q是军_转到CTemplate上? <img src ="http://www.shnenglu.com/zealsoft/aggbug/62013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zealsoft/" target="_blank">zealsoft</a> 2008-09-17 21:42 <a href="http://www.shnenglu.com/zealsoft/archive/2008/09/17/62013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用UltraEdit实现从UNIX文g到DOS文g的批量{?http://www.shnenglu.com/zealsoft/archive/2007/02/03/18309.htmlzealsoftzealsoftSat, 03 Feb 2007 07:12:00 GMThttp://www.shnenglu.com/zealsoft/archive/2007/02/03/18309.htmlhttp://www.shnenglu.com/zealsoft/comments/18309.htmlhttp://www.shnenglu.com/zealsoft/archive/2007/02/03/18309.html#Feedback1http://www.shnenglu.com/zealsoft/comments/commentRss/18309.htmlhttp://www.shnenglu.com/zealsoft/services/trackbacks/18309.html最q在使用CT++q个软g旉到这样一个问题:q个软g是在FREEBSD下开发的Q虽然提供了C语言源程序,但程序在Visual Studio 2003下编译出现错误。检查原因,主要是因为源E序都是UNIX格式Q每行的回R都是用一?x0a字符表示的,而在WINDOWS/DOS下每行的回R都是?x0d0a两个字符表示的,而该E序注释Z文,影响了VS2003的处理,把大量的E序代码都当作注释了Q所以编译就不能通过。要~译通过Q必dUNIX文本格式转换为DOS格式的。UltraEdit的FILE菜单中提供了对单个文件进行这U{换的能力Q但是一ơ只能{换一个文Ӟ比较ȝ。经q一番研IӞl于扑ֈ了一个批量实现{换的Ҏ。在UE中选择Search | Search in files菜单Q在Find框中填写^nQ表CUNIX文g中的回R换行W号Q,在Replace with中输入^pQ表CDOS文g中的回R换行W号Q,如下图所C。这样就可以实现扚w替换了?/p>

zealsoft 2007-02-03 15:12 发表评论
]]>
如何在Visual Studio.NET 2003下编译ANTLR 2.77http://www.shnenglu.com/zealsoft/archive/2007/01/01/17125.htmlzealsoftzealsoftMon, 01 Jan 2007 14:54:00 GMThttp://www.shnenglu.com/zealsoft/archive/2007/01/01/17125.htmlhttp://www.shnenglu.com/zealsoft/comments/17125.htmlhttp://www.shnenglu.com/zealsoft/archive/2007/01/01/17125.html#Feedback0http://www.shnenglu.com/zealsoft/comments/commentRss/17125.htmlhttp://www.shnenglu.com/zealsoft/services/trackbacks/17125.html最q在研究如何开发一个编译器Q初步决定?a class="" title="ANTLR" target="">ANTLR。从ANTLR的网站上下蝲了最新的2.77版本的安装程序(MSI的)。安装之后,使用Visual Studio.NET 2003~译它的C++例子时发现编译照常而链接L错误。仔l看了一下链接错误,发现是_memcpy_s、___CxxFrameHandler3{函数找不到。memcpy_s是Visual C++ 2005中新增加的函敎ͼ主要是ؓ了提高代码的安全性。所有判?.77安装版本中所提供的库是Visual C++ 2005~译的,无法用到Visual C++ 2003中。看来必M载源代码版本Q自己重新编译库了,不能h了?/p>

从网站上又下载了源代码版本,解开后,发现所需要的C++文g都在lib/cpp目录中。该目录中有一个README文gQ介l了如何在Visual C++ 2003中进行编译,按照其介l获得了成功。不q它的帮助文件中说需要能Run Time Type InformationQ我没有修改相应的选项Q目前看也没有什么关pR?/p>

zealsoft 2007-01-01 22:54 发表评论
]]>
þ¾Ʒ| þ| avþþƷ| ŷƷþþþþþο| þþƷ˳| þ¾ƷĻ| ҹƷþþþ| Ʒþþþþø69| ˾Ʒþһav| ˾þþƷӰԺ| ɫۺϾþۺ| ŷ糱þþXXXXx| ƯޱгĻþ| þþþëƬ| þɫۺһ| ũ帾ŮëƬƷþ| Ʒһþ㽶߿ۿ | 99þùۺϾƷŮͬͼƬ| Ʒһþ㽶߿ۿ | þҹɫƷ鶹| Ʒþþþ| Ʒһþ| ۺ޾þһƷ| ŷƷۺϾþ| ҹ91þø| ۺۺϾþ69| þþŮ붯ȺëƬ| ھƷþþþӰԺ޹²| ŷþþҹһĻ | þ99Ʒþþþ| þҹ1000ϼ| ҹƷþþþþӰ777| ۺþþ| yellowĻþ| ѾþþƷ99þ| þþþŮʦһ| þþþþüƷþþ| պƷþþþþþõӰ| ѾþþƷ99reѾy| ƷþþĻ| Ưޱ˾þþƷ|