[發明專利]一基于Python的CLI自動化導出方法有效
| 申請號: | 201911102677.5 | 申請日: | 2019-11-12 |
| 公開(公告)號: | CN111221519B | 公開(公告)日: | 2020-11-27 |
| 發明(設計)人: | 劉泳;胡大銀 | 申請(專利權)人: | 廣州銀漢科技有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 510630 廣東省廣州*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 python cli 自動化 導出 方法 | ||
1.一基于Python的CLI自動化導出方法,其特征在于,包括:
采用C++中Class的方法,首先,需要導出的Class信息時,需要先定義要導出需要用到的字段描述,此信息結構定義如下列所示:是否結構體,是否是泛型模板類,模板名稱,名字域名稱,字段數據組信息列表,公有字段組列表,屬性字段列表,Enum定義列表,公有方法列表,是否是虛基類,類型別名定義列表;
然后處理類型為CLASS_DECL的CxCursor語法對象,具體方法:遞歸遍歷這些類型為CLASS_DECL結點,當遇到滿足要求的語法對象時,預設流程進行C++源碼的信息分析處理;
導出C++信息中Class,Enum,Field,Function導出方法,通過實現的導出上述的常用語言類型,對源代碼的語義分析,獲取源碼的實現細節信息,為下一步通過模板映射的方法,生成CLI的源碼提供了重要的數據來源;
采用Cheetah庫做為源碼生成的模板庫,通過將CLI源碼生成分解成:生成頭部,生成相應類型的主體代碼,生成尾部來分步生成目標代碼,分段式生成方法,同時適應于頭文件及源文件生成。
2.根據權利要求1所述的基于Python的CLI自動化導出方法,其特征在于,過程為:
步驟a1,獲取當前CxCursor,獲取父類信息,判斷是否需要導出,若需要導出則導出父類,若不需要,則跳轉至步驟a3;
步驟a2,獲取下一個CxCursor;
步驟a3,判斷是否為公有Class/Struck,若是,則遍歷所有類型子孩子,并收集類信息,重復該收集遍歷過程,跳轉至步驟a2;若否,則跳轉至步驟a4;
步驟a4,判斷是否為公有typedef,若是,則收集typedef信息,若否,則跳轉至步驟a5;
步驟a5,判斷是否為公有字段定義,若是,生成NavtiveField,跳轉至步驟a2,若否,則跳轉至步驟a6;
步驟a6,判斷是否為公有Enum,若是,則生成NavtiveEnum,跳轉至步驟a2,若否,則跳轉至步驟a7;
步驟a7,判斷是否為公有方法,若是,則生成NativeFunction,并判斷是否為靜態方法,若是靜態方法,則保存到靜態方法字典,并跳轉至步驟a2,若不是靜態方法,則保存至普通方法字典,并跳轉至步驟a2;若不是公有方法,則跳轉至步驟a8;
步驟a8,判斷是否為構造函數,若是,則生成NativeFunction對象,設置為構造函數類型,重載構造函數,存入構造函數鏈表中,并跳轉至步驟a2;若否,則跳轉至步驟a9;
步驟a9,當前處理完成,跳轉至步驟a2中。
3.根據權利要求2所述的基于Python的CLI自動化導出方法,其特征在于,包括:導出C++中Enum的方法,當檢測到為Enum的CxCursor時,遍歷所有的子孩子,建立名字到字段值的映射的字典,存入NativeNum類。
4.根據權利要求2所述的基于Python的CLI自動化導出方法,其特征在于,包括:導出C++中Field的方法,當檢測到類型為FIELD_DECL時,收集下列信息:獲取名稱,類型定義,是否為常量,存放NavtiveField類。
5.根據權利要求2所述的基于Python的CLI自動化導出方法,其特征在于,包括:導出C++中Function的方法,當檢測到類型為CXX_METHOD時,收集下列信息:是否靜態函數,是否虛函數,參數列表,返回值信息,缺省參數值信息,存入NativeFun ction類。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣州銀漢科技有限公司,未經廣州銀漢科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911102677.5/1.html,轉載請聲明來源鉆瓜專利網。





