深入研究Clang(三) libclang】的更多相关文章

作者:史宁宁 如今的Clang,不不过一个编译器前端,同一时候也能够作为一个库使用.作为一个库使用的时候,能够用它去分析C/C++/ObjectC语言代码,能够分析源代码得到AST,也能够获取已经分析好的AST,也能够遍历AST,还能够获取AST中基本元素的物理源代码位置.这就是libclang. libclang提供了一系列的C语言的接口,可是这些接口并不能全然提供存储在Clang C++ AST中的全部信息,仅仅能提供部分基本信息,可是这些基本信息已经能够满足普通情况下的使用.主要目的是为了…
[原创]这次更新比较慢,译码过程比想象中复杂一些,更主要是译出来的DCT系数无法确定是否正确,要想验证就需要再进行正向压缩编码,再次形成jpeg图像验证正确,后续工作正在开展,这里就说一说译码的主要思路和过程. 说到译码过程,首先要了解jpeg图像数据流的组成: 数据流是以MCU(最小编码单元)为基本单位的,一个MCU又由若干个Y,Cr,Cb颜色分量单元组成,这里的颜色分量单元可以看作是一个8*8的矩阵,也就是译码过程中的最小单元了,可能读者对于这些结构的关系还不是很了解,OK,我们来看看下面这…
第三章 深入理解盒子模型 盒子模型是CSS控制页面的基础.需要清楚“盒子”的含义是什么,以及盒子的组成.此外,应该理解DOM的基本概念,以及DOM树是如何与一个HTML文档对应的,在此基础上充分理解“标准流”的概念. 3.1 盒子的内部结构 padding-border-margin模型是一个极其通用的描述矩形对象布局形式的方法.这些矩形对象被统称为”盒子“,英文为”Box“. 模型 就是对某种事物的本质特性的抽象. 在CSS中,一个独立的盒子模型由content(内容).border(边框).…
作者:史宁宁(snsn1984) 首先我们确定下Clang编译器的详细内容和涵盖范围.之前在<LLVM每日谈之二十 Everything && Clang driver>中以前提到过.Clang driver(命令行表示是clang)和Clang前端(依照详细实现来说就是Clang的那些库所实现的前端)是不同的.同一时候还存在一个Clang编译器(命令行表示是clang -cc1).Clang编译器不只包括了Clang前端,还包括使用LLVM的哭实现的编译器的中间阶段以及后端,…
怎么选择JSON库? 从整体测试结果来看,总结如下: 用于序列化.反序列的功能,数量量小,吞吐量不大于10000每秒的,选择gson: 用于解析JSON的,还是用Fastjson吧,虽然听说坑很多. 数据量大的时候,用Fastjson吧: 其他情况Jackson是不错的选择. 对Gson库的进一步研究 通过对gson库中gsonbuilder进行一些设置,可优化序列化和反序列化的运行时间. 要看具体数据情况,下面有个例子,大概比无设置的情况快40%左右 Gson gson= new GsonBu…
接着上一篇的moquette-mqtt 的使用之broker启动之后,我们需要启动moquette-mqtt 的服务端发布消息. 在moquette-mqtt 的mqtt-client中三种方式实现发布消息的方式: 1.采用阻塞式的连接的(BlockingConnection) 2.采用回调式的连接 (CallbackConnection) 3.采用Future样式的连接(FutureConnection) 本文采用阻塞式作为实验对象. MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅…
作者:史宁宁(snsn1984) Clang的Lexer(词法分析器)的源代码的主要位置例如以下: clang/lib/Lex    这里是基本的Lexer的代码: clang/include/clang/Lex   这里是Lexer的头文件代码的位置: 同一时候,Lexer还使用了clangBasic库,所以要分析Lexer的代码,clangBasic(clang/lib/Basic)的一些代码也会用到. 首先从Lexer入手. clang/include/clang/Lex/Lexer.hc…
Clang Static Analyzer 官网地址:http://clang-analyzer.llvm.org/ Clang Static Analyer是一个源码分析工具,它可以发现C.C++和Objective-C程序中的bug.现在Clang Static Analyer既可以作为一个单独的工具使用,也可以集成在Xcode中使用.作为单独的工具使用的时候,可以通过命令行调用,作为一个代码库编译的时候的一个串行的动作运行.Clang Static Aanlyer是百分百开源的项目,是Cl…
上篇我们进行了一些代码方面的准备工作.接下来的逻辑是:在View页面解析时,通过 Html.AppendResFile 方法添加的资源文件,我们需要按照分组.优先级,文件名等条件,对其路径进行合并.具体的合并规则如下: (1),优先级高的文件优先渲染. 假如页面中有以下文件添加代码: //添加样式文件A Html.AppendResFile(ResourceType.StyleSheet, "[Content/Styles/styleA]"); //添加样式文件B,但设置了高优先级 H…
插件(plugs in) djangocms支持的插件有: http://docs.django-cms.org/en/latest/basic_reference/plugin_reference.html 如果要自定义插件,查看这里:http://docs.django-cms.org/en/latest/extending_cms/custom_plugins.html 总结下: 1. 插件也应用mtv模式.其中 M - 模型,用于存储配置. 继承自cms.models.pluginmod…