1.robotpy-cppheaderparser库介绍及安装
robotpy-cppheaderparser是一个基于CppHeaderParser的Python库,专门用于解析C++头文件。它提供了一些额外的功能,使其更易于使用,并且对于使用RobotPy的机器人程序员来说非常有用。以下是robotpy-cppheaderparser库的一些功能:
解析C++头文件:robotpy-cppheaderparser可以解析C++头文件,并将其转换为Python对象,以便于使用。它支持解析类、成员变量、成员函数、枚举类型和其他内容。
支持RobotPy:robotpy-cppheaderparser专门为RobotPy设计,因此它提供了一些附加功能,例如将解析的头文件转换为RobotPy类型和方法,以便于在机器人程序中使用。
易于使用:robotpy-cppheaderparser提供了一些易于使用的方法和属性,以便于从解析的头文件中提取所需的信息。例如,您可以使用 get_classes() 方法来获取所有类的列表,然后使用 get_class_members() 方法来获取每个类的成员变量和成员函数。
支持自定义过滤器:robotpy-cppheaderparser支持使用自定义过滤器来选择要解析的头文件内容。这使得解析大型头文件时更加高效。
开源:robotpy-cppheaderparser是一个开源项目,可以在GitHub上找到它的源代码。这意味着您可以自由地使用、修改和分发它,只要您遵循其许可证要求。
总的来说,robotpy-cppheaderparser为机器人程序员提供了一个方便的解析C++头文件的工具,并使其更容易在RobotPy程序中使用。
pip install robotpy-cppheaderparser
2.python代码
import CppHeaderParser
#输入需要打印的头文件
cppHeader = CppHeaderParser.CppHeader(r'C:\Users\104005066\Desktop\eyeState.hpp',encoding="utf-8")
classes=cppHeader.classes
# 打印每个类的信息
# 打印每个类的信息
for classname in cppHeader.classes.keys():
print("------------类%s---------:"%classname)
for oneMethod in cppHeader.classes[classname]['methods']['public']:
print('总: ', oneMethod['debug'])
print('函数名: ', oneMethod['name'])
print('返回类型: ', oneMethod['rtnType'])
print('参数: ', end='')
if len(oneMethod['parameters']):
for oneParam in oneMethod['parameters']:
print(oneParam['name'], oneParam['type'], end='; ')
print('\n')
for oneMethod in cppHeader.classes[classname]['methods']['private']:
print('总: ', oneMethod['debug'])
print('函数名: ', oneMethod['name'])
print('返回类型: ', oneMethod['rtnType'])
print('参数: ', end='')
if len(oneMethod['parameters']):
for oneParam in oneMethod['parameters']:
print(oneParam['name'], oneParam['type'], end='; ')
print('\n')
for oneProperty in cppHeader.classes[classname]['properties']['public']:
print('成员变量名: ', oneProperty['name'])
print('成员变量类型: ', oneProperty['type'])
print('\n')
for oneProperty in cppHeader.classes[classname]['properties']['private']:
print('成员变量名: ', oneProperty['name'])
print('成员变量类型: ', oneProperty['type'])
print('\n')
for func in cppHeader.functions:
print('头文件公共函数名: {}'.format(func['name']))
print('返回类型: {}'.format(func['rtnType']))
print('参数名: ', func['parameters'][0]['name'])
print('函数参数类型: ', func['parameters'][0]['type'])
print('总: ', func['debug'])
print('\n')
3.输出结果:
------------类Infer---------:
函数名: commit
返回类型: shared_future<bool >
参数: image const cv::Mat &;
函数名: commits
返回类型: vector<shared_future<bool> >
参数: images const vector<cv::Mat> &;
------------类EyeStateInferInstance---------:
函数名: startup
返回类型: bool
参数:
函数名: inference
返回类型: bool
参数: image_input const Mat; eyestate bool &;
总: bool requires_model ( const string & name ) {
函数名: requires_model
返回类型: bool
参数: name const string &;
总: shared_ptr<eyeState::Infer> get_infer ( trtCommon::Type type , trtCommon::Mode mode , const string & model ) {
函数名: get_infer
返回类型: shared_ptr<eyeState::Infer >
参数: type trtCommon::Type; mode trtCommon::Mode; model const string &;
成员变量名: infer_
成员变量类型: shared_ptr<eyeState::Infer >
头文件公共函数名: create_infer
返回类型: shared_ptr<Infer >
参数名: engine_file
函数参数类型: const string &
总: shared_ptr<Infer> create_infer ( const string & engine_file , Type type , int gpuid ) ;