栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

python 定义C++结构体缓冲区

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 定义C++结构体缓冲区

from Scripts.structure import *
def convert_func(stuname, arr_json={}):
    '''
    stuname:  结构体名字
    arr_json: 嵌套结构体数组信息,以{key1:val1,key1:val2...}形式传入,key值是代表限制嵌套结构体数组大小的字段,val是表示嵌套结构体数组名称字段
    '''
    # 结构体中所有字段列表集合
    all_keys = []
    # 构造结构体缓冲区方法所有入参字段
    input_undefault_param = ''  # 无默认值
    input_default_param = ''  # 有默认值
    for field in stuname._fields:
        all_keys.append(field[0])
        if field[0] != 'dwSize' and field[0] != 'byreserved':
            if field[1] == c_int or field[1] == c_ubyte:
                input_default_param = input_default_param + field[0].lower() + '=1' + ','
            else:
                input_undefault_param = input_undefault_param + field[0].lower() + ','
    # 构造结构体缓冲区方法注释
    print('#构建' + stuname.__name__ + "结构体")
    # 定义构造结构体缓冲区方法函数
    print("def set_struct_" + stuname.__name__.lower() + '(' + input_undefault_param + input_default_param[:-1] + '):')
    # 定义结构体缓冲区实例
    print('    param = ' + stuname.__name__ + '()')
    # 如果结构体有dwSize字段,需要赋值其大小
    if 'dwSize' in all_keys:
        print('    param.dwSize = sizeof(' + stuname.__name__ + ')')
    # 给结构体中除了dwSize、byreserved、嵌套结构体类型数组字段赋值
    for field in stuname._fields:
        if field[0] != 'byreserved' and field[0] != 'dwSize' and field[0] not in arr_json.values():
            if field[1] != c_char:
                print('    param.' + field[0] + ' = ' + field[0].lower())
            else:
                print('    param.' + field[0] + ' = string_convert_to_bytes(' + field[0].lower()+')')
    # 给嵌套结构体类型数组字段赋值
    for arr_number in arr_json.keys():
        if arr_json[arr_number]:
            print('    for index in range(' + arr_number.lower() + '):')
            print('        param.' + arr_json[arr_number] + '[index] = ' + arr_json[arr_number].lower())


convert_func(NET_APP_STU, {'number': 'number_array', 'Number2': 'Number2_array'})
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号