Proto3:C++ API概览
| 包名 | 说明 |
|---|---|
| google::protobuf | Protocol Buffer运行时库核心组件。 |
| google::protobuf::io | I/O操作辅助类。 |
| google::protobuf::util | 工具类。 |
| google::protobuf::compiler | Protocol Buffer编译器实现。 |
google::protobuf
Protocol Buffer运行时库核心组件。
此包中的文件代表着Protocol Buffer系统的核心,它们都是libprotobuf库的组成。
关于线程安全的注意事项:
Protocol Buffer库的线程安全遵循一个简单的规则:除非显示地说明,只要对象在所有线程中声明为const,那么同时使用来自多个线程的对象总是安全的(或者,只有在声明为const的情况下才被允许使用)。但是,如果一个对象在一个线程中以不允许const的方式被访问,那么其它任何线程同时访问访问该对象都是不安全的。
简单来说,在多线程中同时以只读的方式访问对象是允许的,但是同时只能有一个线程以写的方式访问对象。
该实现确实包含一些const方法,这些方法实际上在后台修改对象 --- 例如,缓存结果 --- 但是在这些情况下,使用互斥锁使访问线程安全。
| 文件 | 说明 |
|---|---|
| google/protobuf/arena.h | 针对分配性能,文件定义了Arena分配。 |
| google/protobuf/descriptor.h | 文件中包含描述protocol消息的类。 |
| google/protobuf/descriptor.pb.h | 描述符的Protocol Buffer表示。 |
| google/protobuf/descriptor_database.h | 操作描述符数据库的接口。 |
| google/protobuf/dynamic_message.h | 定义消息的实现,该实现可以模拟编译时未知的类型的。 |
| google/protobuf/map.h | 定义了map容器以及protobuf map支持。 |
| google/protobuf/message.h | 定义消息,非liteprotocol消息对象的抽象接口实现。 |
| google/protobuf/message_lite.h | 定义轻量消息,所有(包括轻量和非清理)protocol消息对象的抽象接口实现。 |
| google/protobuf/repeated_field.h | 供生成的protocol消息类使用RepeatedField和RepeatedPtrField操作重复字段。 |
| google/protobuf/service.h | 弃用:该模块声明了proto2底层RPC服务的抽象接口。 |
| google/protobuf/text_format.h | 以可读的方式 --- text-based方式输出和解析protocol消息工具。 |
| google/protobuf/unknown_field_set.h | 包含用于跟踪在解析protocol消息时遇到的未识别字段的类。 |
| google/protobuf/stubs/common.h | 包含库中其它部分使用的基本类型和工具。 |
google::protobuf::io
I/O操作辅助类。
Protocol Buffer库使用包中类来处理原始字节的I/O和编解码操作。大多数使用者并不需要知道包的实现细节。然而,当用户想要适配他们自己的I/O --- 例如,想要在不使用临时缓存的情况下从不同的输入流中读取Protocol Buffer,这样的用户需要详细了解实现细节。
| 文件 | 说明 |
|---|---|
| google/protobuf/io/coded_stream.h | 这个文件包含CodedInputStream和CodedOutputStream类,它们分别包装一个ZeroCopyInputStream或ZeroCopyOutputStream,并允许您以各种格式读取或写入单个数据片段。 |
| google/protobuf/io/printer.h | 将text内容写入ZeroCopyOutputStream的工具类。 |
| google/protobuf/io/tokenizer.h | 从ZeroCopyInputStream解析标记化的text类。 |
| google/protobuf/io/zero_copy_stream.h | 包含ZeroCopyInputStream或ZeroCopyOutputStream,可用来表示抽象的I/O流和读写Protocol Buffer。 |
| google/protobuf/io/zero_copy_stream_impl.h | 包含在zero_copy_stream.h中定义的接口的实现,仅包括在完整的protobuf库中。 |
google::protobuf::util
工具类,其中包括许多工具,可用于消息比对、JSON转换以及其它已知类型等。
| 文件 | 说明 |
|---|---|
| google/protobuf/util/field_comparator.h | 定义了用于字段对比的类。 |
| google/protobuf/util/field_mask_util.h | 定义FieldMask已知类型的工具。 |
| [google/protobuf/util/json_util.h | 定义了在protocol二进制格式与proto3 JSON格式间转换的工具函数。 |
| google/protobuf/util/message_differencer.h | 定义了用于比较Protocol消息的静态函数和方法。 |
| google/protobuf/util/time_util.h | 定义了用于时间戳和时长的工具函数。 |
| google/protobuf/util/type_resolver.h | 为所有消息定义了Type Resolver。 |
| google/protobuf/util/type_resolver_util.h | 定义了TypeResolver工具。 |
google::protobuf::compiler
Protocol Buffer编译器的实现,其中包含了解析.proto文件的代码以及基于.proto文件生成代码的代码。你可能因为以下两个原因而对这个包感兴趣:
- 在运行时你想要解析
.proto文件。这种情况下,你用过翻阅importer.h。由于这个功能应用很广泛,所以它被包含在libprotobuf的基本库里;这样你就不必链接libprotoc。 - 你要实现一个自定义的protocol编译器来生成不同的代码,比如说官方编译器不支持的编程语言。为此,command_line_interface.h为你提供了完整的编译器前端,所以你要做的就是编写CodeGenerator的自定义实现以及一个简单的
main()函数。你甚至可以让你的编译器支持你自己编写的语言。由于这些功能只适用于那些要自己编写编译器的人,所以它们位于你必须链接的名为libprotoc的特定库中。
更多信息,参见这里。
Proto3:C++ API概览的更多相关文章
- Zookeeper C API 指南四(C API 概览)(转)
上一节<Zookeeper C API 指南三(回调函数)>重点讲了 Zookeeper C API 中各种回调函数的原型,本节将切入正题,正式讲解 Zookeeper C API.相信大 ...
- node-webkit学习(3)Native UI API概览
node-webkit学习(3)Native UI API概览 文/玄魂 目录 node-webkit学习(3)Native UI API概览 前言 3.1 Native UI api概览 Exte ...
- Android 设备管理API概览(Device Administration API)
原文:http://android.eoe.cn/topic/android_sdk Android 2.2通过提供Android设备管理API的支持来引入企业应用支持.在系统级的设备管理API提供了 ...
- V8世界探险 (1) - v8 API概览
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lusing/article/detai ...
- 20. API概览 Schemas
能被机器所理解的概要, 描述了通过api可得到的资源, URL, 表示方式以及支持的操作. API概要在很多使用场景下都是有用的工具, 例如生成参考文档, 或者驱动可以与API交互的动态客户端库. r ...
- Java 8 Date-Time API概览
更新时间:2018-04-19 根据网上资料整理 java 8增加了新的Date-Time API (JSR 310),增强对日期与时间的处理.它在很大程度上受到Joda-Time的影响.之前写过一篇 ...
- underscore api 概览
underscore 集合函数(数组或对象) _.each(list, iteratee, [context]); _.map(list, iteratee, [context]); _.reduce ...
- Golang里面使用protobuf(proto3)
参考文章:https://developers.google.com/protocol-buffers/docs/gotutorial 1.执行指令: go envgo get github.com/ ...
- Zookeeper C API 指南三(回调函数)(转)
2013-02-21 12:54 by Haippy, 9237 阅读, 0 评论, 收藏, 编辑 接上一篇<Zookeeper C API 指南二(监视(Wathes), 基本常量和结构体介绍 ...
随机推荐
- 1027A. Palindromic Twist#变形回文串
题目内容:http://codeforces.com/contest/1027/problem/A 题目解析:输入T组字符串,每个字符串都必须改变一次,每个字母改变的规则是变成相邻的字母,字母a只能变 ...
- arg min,arg max, e.g ,i.e
数学中常见的arg min,arg max 是什么意思 arg 是变元(即自变量argument)的英文缩写 arg min 就是使后面这个式子到达最小值时的变量的取值 arg max 就是使后面这个 ...
- 多对多的三种创建方式-forms相关组件-钩子函数-cookie与session
多对多的三种创建方式 1.全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改 manyToManyField创建的第三张表属于虚拟的, ...
- TreeviewEditor软件的安装和使用
TreeviewEditor是用VB6开发的一款Windows桌面程序,用户可以快速搭建树形结构,可以导出为Word文档. 支持节点的复制粘贴.节点的拖放. 下载地址:TreeviewEditor.r ...
- 跟踪路由(tracert)及ping命令
由于最近学校网络不好,老是有问题,加上最近写了个数据展示系统,要部署到买的域名下,用到了这两个命令 首先,一台服务器,一台工作站,一个笔记本(我的,来测试ip是否通的) 服务器已经部署了三个网站(一个 ...
- Matlab高级教程_第三篇:Matlab转码C/C++方式(混编)_第一部分
0. 其实Matlab的转码混编大多数就是为了现成的算法函数不用再写了,2就是为了方便提高代码运行速度用C语言去运行. 1. MEX文件: Mex文件是一种可在matlab环境中嗲用C语言(或fort ...
- dubbo同步/异步调用的方式
我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制:基于这种机制,Dubbo 实现了以下几种调用方式: 同步调用(默认) 异步调用 参数回调 事件通知 同步 ...
- signal之——异步回收机制
前言:回收子进程之前用了wait()和非阻塞模型,今天学了信号以后可以使回收机制更上一层楼,通过信号函数,父进程只需要做自己的事情,接收到信号后就触发信号函数. 信号处理函数可能会出现的bug: 1. ...
- K3CLOUD表关联
销售订单关联发货通知单 销售订单表 T_SAL_ORDER A T_SAL_ORDERENTRY B T_SAL_ORDERENTRY_LK C 发货通知单表 T_SAL_DELIVERYNOTICE ...
- VS2010 常用的快捷键
1.强迫智能感知:Ctrl+J:2.强迫智能感知显示参数信息:Ctrl-Shift-空格:3.格式化整个块:Ctrl+K+F4.检查括号匹配(在左右括号间切换): Ctrl +]5.选中从光标起到行首 ...