文章(8)中提到,Proto Buffer提供了一个工具,可以为不同编程语言,自动生成支持Proto Buffer协议的数据类型。本文继续以DeviceAttributes类为例,介绍C++的Proto Buffer类。
默认情况下,Proto Buffer生成的C++类都定义在.pb.h文件中。TensorFlow也沿用了这一规则。DeviceAttributes类定义在core/framework/device_attributes.pb.h文件中。
class DeviceAttributes : public ::google::protobuf::Message
上面的代码告诉我们,任何Proto Buffer类必须继承自protobuf::Message类。
DeviceAttributes类定义的方法特别多。要了解这些方法的意义,首先需要回顾DeviceAttributes消息类型的定义。
message DeviceAttributes {
string name = 1;
string device_type = 2;
int64 memory_limit = 4;
DeviceLocality locality = 5;
fixed64 incarnation = 6;
string physical_device_desc = 7;
}
DeviceAttributes类的许多方法与消息类型的字段相关,例如,针对name字段,我们有如下方法。
void clear_