包名 说明
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消息类使用RepeatedFieldRepeatedPtrField操作重复字段。
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 这个文件包含CodedInputStreamCodedOutputStream类,它们分别包装一个ZeroCopyInputStreamZeroCopyOutputStream,并允许您以各种格式读取或写入单个数据片段。
google/protobuf/io/printer.h 将text内容写入ZeroCopyOutputStream的工具类。
google/protobuf/io/tokenizer.h ZeroCopyInputStream解析标记化的text类。
google/protobuf/io/zero_copy_stream.h 包含ZeroCopyInputStreamZeroCopyOutputStream,可用来表示抽象的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的特定库中。
文件 说明
google/protobuf/compiler/code_generator.h 定义了每个特定语言的代码生成器要实现的的抽象接口。
google/protobuf/compiler/command_line_interface.h Protocol编译器的前端实现,这样它可以在用来支持其它语言的自定义编译器中复用。
google/protobuf/compiler/importer.h .proto文件解析器公共接口。
google/protobuf/compiler/parser.h 实现将.proto文件解析为FileDescriptorProtos
google/protobuf/compiler/plugin.h 由C++编写的protoc代码生成插件的前端。
google/protobuf/compiler/plugin.pb.h protoc插件的API。
google/protobuf/compiler/cpp/cpp_generator.h 为给定的.proto文件生成C++代码。
google/protobuf/compiler/csharp/csharp_generator.h 为给定的.proto文件生成C#代码。
google/protobuf/compiler/csharp/csharp_names.h 提供一种机制,用来将描述符映射为对应的C#类的完整名称。
google/protobuf/compiler/java/java_generator.h 为给定的.proto文件生成Java代码。
google/protobuf/compiler/java/java_names.h 提供一种机制,用来将描述符映射为对应的Java类的完整名称。
google/protobuf/compiler/js/js_generator.h 为给定的.proto文件生成JavaScript代码。
google/protobuf/compiler/objectivec/objectivec_generator.h 为给定的.proto文件生成ObjectiveC代码。
google/protobuf/compiler/objectivec/objectivec_helpers.h 生成ObjectiveC代码的帮助函数。
google/protobuf/compiler/python/python_generator.h 为给定的.proto文件生成Python代码。
google/protobuf/compiler/ruby/ruby_generator.h 为给定的.proto文件生成Ruby代码。

更多信息,参见这里

Proto3:C++ API概览的更多相关文章

  1. Zookeeper C API 指南四(C API 概览)(转)

    上一节<Zookeeper C API 指南三(回调函数)>重点讲了 Zookeeper C API 中各种回调函数的原型,本节将切入正题,正式讲解 Zookeeper C API.相信大 ...

  2. node-webkit学习(3)Native UI API概览

    node-webkit学习(3)Native UI API概览 文/玄魂 目录 node-webkit学习(3)Native UI API概览 前言 3.1  Native UI api概览 Exte ...

  3. Android 设备管理API概览(Device Administration API)

    原文:http://android.eoe.cn/topic/android_sdk Android 2.2通过提供Android设备管理API的支持来引入企业应用支持.在系统级的设备管理API提供了 ...

  4. V8世界探险 (1) - v8 API概览

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lusing/article/detai ...

  5. 20. API概览 Schemas

    能被机器所理解的概要, 描述了通过api可得到的资源, URL, 表示方式以及支持的操作. API概要在很多使用场景下都是有用的工具, 例如生成参考文档, 或者驱动可以与API交互的动态客户端库. r ...

  6. Java 8 Date-Time API概览

    更新时间:2018-04-19 根据网上资料整理 java 8增加了新的Date-Time API (JSR 310),增强对日期与时间的处理.它在很大程度上受到Joda-Time的影响.之前写过一篇 ...

  7. underscore api 概览

    underscore 集合函数(数组或对象) _.each(list, iteratee, [context]); _.map(list, iteratee, [context]); _.reduce ...

  8. Golang里面使用protobuf(proto3)

    参考文章:https://developers.google.com/protocol-buffers/docs/gotutorial 1.执行指令: go envgo get github.com/ ...

  9. Zookeeper C API 指南三(回调函数)(转)

    2013-02-21 12:54 by Haippy, 9237 阅读, 0 评论, 收藏, 编辑 接上一篇<Zookeeper C API 指南二(监视(Wathes), 基本常量和结构体介绍 ...

随机推荐

  1. docker 一些简略环境搭建及部分链接

    1.center 7  搭建 docker https://www.cnblogs.com/yufeng218/p/8370670.html 2.docker 命令 https://www.cnblo ...

  2. 第一行代码近期bug及解决

    Android学习笔记(5)----启动 Theme.Dialog 主题的Activity时程序崩溃的解决办法https://www.cnblogs.com/dongling/p/6476308.ht ...

  3. 三、Shell脚本高级编程实战第三部

    保养好自己的发动机:身体的和心里的身体健康:打打球,跑跑步心里健康:多和大家接触,保持家人.朋友的良好关系一.$*和$@的区别   $*:获取shell的所有参数,将所有的参数视为单个字符串.   $ ...

  4. PAT甲级——1077.Kuchiguse(20分)

    The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...

  5. TPO2-1Desert Formation

    The extreme seriousness of desertification results from the vast areas of land and the tremendous nu ...

  6. Codeforces 1293A - ConneR and the A.R.C. Markland-N

    题目大意: ConneR老师想吃东西,他现在在大楼的第s层,大楼总共有n层,但是其中有k层的餐厅关门了. 然后给了这k层关门的餐厅分别所在的楼层. 所以问ConneR老师最少得往上(或者往下)走几层楼 ...

  7. 达梦、oracel、mysql数据库兼容

    联合表更新sql语句: 只支持mysql.oracle,不支持达梦 update to_pub_report a, to_pub_rec_process b set a.Satisfy_ID , a. ...

  8. 吴裕雄--天生自然python学习笔记:python 用pygame模块角色类(Sprite)移动与碰撞

    角色类(Sprite) Py game 游戏中有许多组件会重复用到,比如射击宇宙飞船的游戏中,外星宇宙 飞船可能多达数十艘 , 通过创建“角色类”,可以生成多个相同的对象. Py game 角色类是游 ...

  9. window 彻底删除mysql

    1. 运行regedit.exe,找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MySQL 文件夹,将其删除: 2. 找到HKEY_LOCAL_ ...

  10. wait操作接口

    1.等待回收的两个函数wait()和waitpid()函数 1.1 wait(int *status)的用法:阻塞函数,等待任意一个子进程的返回.   *wait(NULL):对子进程的结束状态不关心 ...