[發(fā)明專利]一基于Python的CLI自動化導(dǎo)出方法有效
| 申請?zhí)枺?/td> | 201911102677.5 | 申請日: | 2019-11-12 |
| 公開(公告)號: | CN111221519B | 公開(公告)日: | 2020-11-27 |
| 發(fā)明(設(shè)計)人: | 劉泳;胡大銀 | 申請(專利權(quán))人: | 廣州銀漢科技有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 510630 廣東省廣州*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 python cli 自動化 導(dǎo)出 方法 | ||
本發(fā)明公開一基于Python的CLI自動化導(dǎo)出方法,采用C++中Class的方法,首先,需要導(dǎo)出的Class信息時,需要先定義要導(dǎo)出需要用到的字段描述,此信息結(jié)構(gòu)定義如下列所示:是否結(jié)構(gòu)體,是否是泛型模板類,模板名稱,名字域名稱,字段數(shù)據(jù)組信息列表,公有字段組列表,屬性字段列表,Enum定義列表,公有方法列表,是否是虛基類,類型別名定義列表;然后處理類型為CLASS_DECL的CxCursor語法對象,具體方法:遞歸遍歷這些類型為CLASS_DECL結(jié)點,當遇到滿足要求的語法對象時,預(yù)設(shè)流程進行C++源碼的信息分析處理。本發(fā)明實現(xiàn)了一種從C++到C#的自動化綁定代碼生成方案,包括了C++的函數(shù)導(dǎo)出,類定義導(dǎo)出,生成的CLI調(diào)用的包裝代碼。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機游戲開發(fā)技術(shù)領(lǐng)域,特別是涉及一基于Python的CLI自動化導(dǎo)出方法。
背景技術(shù)
現(xiàn)有技術(shù)中CLI導(dǎo)出方法可以有兩種方法:
1.利用C++/CLI作為代理中間層;
2.利用PInvoke實現(xiàn)直接調(diào)用。
第一種方法:實現(xiàn)起來比較簡單直觀,并且可以實現(xiàn)C#調(diào)用C++所寫的類,但是只能通過.net支持C++/CLI功能,因此無法實現(xiàn)脫離Microsoft.NET Framework跨平臺運行,所以實現(xiàn)方案僅能在Windows平臺使用,具體需要看使用場合,不考慮跨平臺時,這種方案是可行的。
第二種方法:簡單的實現(xiàn)并不麻煩,只要添加DllImportAttribute特性即可以導(dǎo)入C/C++的函數(shù),但是問題是PInvoke不能簡單的實現(xiàn)對C++類的調(diào)用。
目前已經(jīng)國內(nèi)的商用產(chǎn)品中使用到的相關(guān)技術(shù)方案基本上是上述兩種,實現(xiàn)方法即是人工一條條的編寫接口導(dǎo)出方法,或者CLI的代碼實現(xiàn)類。缺點是工作量大,修改維護成本高,需要大量的人工。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一基于Python的CLI自動化導(dǎo)出方法,以解決上述問題。
為實現(xiàn)上述目的,本發(fā)明提供了一基于Python的CLI自動化導(dǎo)出方法,包括:
包括:
采用C++中Class的方法,首先,需要導(dǎo)出的Class信息時,需要先定義要導(dǎo)出需要用到的字段描述,此信息結(jié)構(gòu)定義如下列所示:是否結(jié)構(gòu)體,是否是泛型模板類,模板名稱,名字域名稱,字段數(shù)據(jù)組信息列表,公有字段組列表,屬性字段列表,Enum定義列表,公有方法列表,是否是虛基類,類型別名定義列表;
然后處理類型為CLASS_DECL的CxCursor語法對象,具體方法:遞歸遍歷這些類型為CLASS_DECL結(jié)點,當遇到滿足要求的語法對象時,預(yù)設(shè)流程進行C++源碼的信息分析處理。
進一步地,過程為:
步驟a1,獲取當前CxCursor,獲取父類信息,判斷是否需要導(dǎo)出,若需要導(dǎo)出則導(dǎo)出父類,若不需要,則跳轉(zhuǎn)至步驟a3;
步驟a2,獲取下一個CxCursor;
步驟a3,判斷是否為公有Class/Struck,若是,則遍歷所有類型子孩子,并收集類信息,重復(fù)該收集遍歷過程,跳轉(zhuǎn)至步驟a2;若否,則跳轉(zhuǎn)至步驟a4;
步驟a4,判斷是否為公有typedef,若是,則收集typedef信息,若否,則跳轉(zhuǎn)至步驟a5;
步驟a5,判斷是否為公有字段定義,若是,生成NavtiveField,跳轉(zhuǎn)至步驟a2,若否,則跳轉(zhuǎn)至步驟a6;
步驟a6,判斷是否為公有Enum,若是,則生成NavtiveEnum,跳轉(zhuǎn)至步驟a2,若否,則跳轉(zhuǎn)至步驟a7;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于廣州銀漢科技有限公司,未經(jīng)廣州銀漢科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911102677.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種基于Python語言的網(wǎng)格系統(tǒng)實現(xiàn)方法
- 一種基于模塊鉤子的Python字節(jié)碼文件保護方法
- 一種通過加密Python明文源碼token的知識產(chǎn)權(quán)保護系統(tǒng)
- 一種創(chuàng)建Python沙盒環(huán)境的方法及電子設(shè)備
- 圖形化Python編程交互方法、系統(tǒng)及電子設(shè)備
- 一種基于Ambari實現(xiàn)Python組件管理的方法
- 一種基于Java自動調(diào)用Python腳本的方法
- Python與Scratch交互式編程方法及電子設(shè)備
- 一種 Python 源碼安全防護的實現(xiàn)方法及系統(tǒng)
- 一種生成python項目結(jié)構(gòu)圖的方法、系統(tǒng)及介質(zhì)
- 自動化設(shè)備和自動化系統(tǒng)
- 一種基于流程驅(qū)動的測試自動化方法以及測試自動化系統(tǒng)
- 用于工業(yè)自動化設(shè)備認識的系統(tǒng)和方法
- 實現(xiàn)過程自動化服務(wù)的標準化設(shè)計方法學(xué)的自動化系統(tǒng)
- 一種日產(chǎn)50萬安時勻漿自動化系統(tǒng)
- 一種自動化肥料生產(chǎn)系統(tǒng)
- 一種電氣自動化設(shè)備自動檢測系統(tǒng)及檢測方法
- 用于自動化應(yīng)用的抽象層
- 一種基于虛擬化架構(gòu)的自動化系統(tǒng)功能驗證方法
- 自動化測試框架自動測試的實現(xiàn)技術(shù)





