




#ifndef __PROTO_TOOL_H
#define __PROTO_TOOL_H

#include "../tool/singleton.h"
#include <istream>
#include <google/protobuf/message.h>

class proto_tool:public Singleton<proto_tool>
{
	// 子类必须把父类设定为友元函数，这样父类才能使用子类的私有构造函数。
	friend class Singleton<proto_tool>;
public:
	// 必须关闭拷贝构造和赋值构造，只能通过 get_instance 函数来进行操作唯一的实例。
	proto_tool(const proto_tool&)=delete;
	proto_tool& operator =(const proto_tool&)= delete;
	~proto_tool()=default;
private:
	// 父类的构造函数必须保护，子类的构造函数必须私有。
	proto_tool()=default;


public:
	//读取protobuf 配置文件，转化为protobuf参数形式
	//input：	prototxt_path ：prototxt文件路径
	//ouput：	parameter: protobuf参数，这里是消息基类，实际调用时传入对应的子类即可。
	static bool read_proto_param(std::string prototxt_path, ::google::protobuf::Message& protobuf_parameter);
};




#endif //__PROTO_TOOL_H



















