fix: 修复增强预处理器和缺失的字符串函数
This commit is contained in:
parent
960de3afb6
commit
b49523e952
|
@ -8,7 +8,7 @@ set(CMAKE_AUTORCC ON)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
set(PROJECT_VERSION "2.2.2")
|
set(PROJECT_VERSION "2.2.3")
|
||||||
|
|
||||||
find_package(
|
find_package(
|
||||||
QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network Concurrent
|
QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network Concurrent
|
||||||
|
@ -40,7 +40,6 @@ add_definitions(-DWINGHEX_VERSION="${PROJECT_VERSION}"
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/WINGHEX_VERSION" ${PROJECT_VERSION})
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/WINGHEX_VERSION" ${PROJECT_VERSION})
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/QT_VERSION" ${QT_VERSION_MAJOR})
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/QT_VERSION" ${QT_VERSION_MAJOR})
|
||||||
|
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
find_package(QT NAMES Qt6 Qt5 REQUIRED AxContainer)
|
find_package(QT NAMES Qt6 Qt5 REQUIRED AxContainer)
|
||||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED AxContainer)
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED AxContainer)
|
||||||
|
|
|
@ -2678,13 +2678,13 @@
|
||||||
<translation>关闭标签</translation>
|
<translation>关闭标签</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="816"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="813"/>
|
||||||
<source>Failed to open script file </source>
|
<source>Failed to open script file </source>
|
||||||
<translation>打开脚本文件失败</translation>
|
<translation>打开脚本文件失败</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="651"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="648"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="699"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="694"/>
|
||||||
<source>Invalid file name for #include; it contains a line-break: </source>
|
<source>Invalid file name for #include; it contains a line-break: </source>
|
||||||
<translation>#include 的文件名无效;它包含换行符:</translation>
|
<translation>#include 的文件名无效;它包含换行符:</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2699,55 +2699,54 @@
|
||||||
<translation>ifdef 非法宏</translation>
|
<translation>ifdef 非法宏</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="279"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="369"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="378"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="384"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="393"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="445"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="454"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="481"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="490"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="517"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="526"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="557"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="566"/>
|
|
||||||
<source>UnexceptedToken</source>
|
<source>UnexceptedToken</source>
|
||||||
<translation>非法标识</translation>
|
<translation>非法标识</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="315"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="306"/>
|
||||||
<source>CalIfFailed</source>
|
<source>CalIfFailed</source>
|
||||||
<translation>宏条件判断发生错误</translation>
|
<translation>宏条件判断发生错误</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="412"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="403"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="461"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="452"/>
|
||||||
<source>InvalidDef</source>
|
<source>InvalidDef</source>
|
||||||
<translation>无效定义</translation>
|
<translation>无效定义</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="439"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="430"/>
|
||||||
<source>ReservedMarcoType</source>
|
<source>ReservedMarcoType</source>
|
||||||
<translation>被保留的宏样式</translation>
|
<translation>被保留的宏样式</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="445"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="436"/>
|
||||||
<source>MarcoNotFound:</source>
|
<source>MarcoNotFound:</source>
|
||||||
<translation>宏未找到:</translation>
|
<translation>宏未找到:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="474"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="465"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="514"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="505"/>
|
||||||
<source>NoMatchingIf</source>
|
<source>NoMatchingIf</source>
|
||||||
<translation>未匹配的宏条件</translation>
|
<translation>未匹配的宏条件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="497"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="488"/>
|
||||||
<source>DupElseDef</source>
|
<source>DupElseDef</source>
|
||||||
<translation>重复的另外条件宏</translation>
|
<translation>重复的另外条件宏</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="718"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="714"/>
|
||||||
<source>Invalid file name for #include; it contains a line-break or unpaired symbol</source>
|
<source>Invalid file name for #include; it contains a line-break or unpaired symbol</source>
|
||||||
<translation>#include 的文件名无效;它包含换行符或不成对的符号</translation>
|
<translation>#include 的文件名无效;它包含换行符或不成对的符号</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="750"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="747"/>
|
||||||
<source>Invalid #pragma directive</source>
|
<source>Invalid #pragma directive</source>
|
||||||
<translation>#pragma 指令无效</translation>
|
<translation>#pragma 指令无效</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2849,7 +2848,7 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="473"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="473"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2107"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2168"/>
|
||||||
<source>Code must be exec in the main thread</source>
|
<source>Code must be exec in the main thread</source>
|
||||||
<translation>脚本代码必须在主线程执行</translation>
|
<translation>脚本代码必须在主线程执行</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2860,8 +2859,8 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="528"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="528"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2156"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2217"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2272"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2333"/>
|
||||||
<source>Script failed to build</source>
|
<source>Script failed to build</source>
|
||||||
<translation>脚本编译失败</translation>
|
<translation>脚本编译失败</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2882,19 +2881,19 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="615"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="615"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2206"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2267"/>
|
||||||
<source>The script failed with an exception</source>
|
<source>The script failed with an exception</source>
|
||||||
<translation>异常被抛出,脚本执行失败</translation>
|
<translation>异常被抛出,脚本执行失败</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="624"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="624"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2215"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2276"/>
|
||||||
<source>The script was aborted</source>
|
<source>The script was aborted</source>
|
||||||
<translation>脚本被终止</translation>
|
<translation>脚本被终止</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="632"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="632"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2223"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2284"/>
|
||||||
<source>The script terminated unexpectedly</source>
|
<source>The script terminated unexpectedly</source>
|
||||||
<translation>脚本异常退出</translation>
|
<translation>脚本异常退出</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -4405,18 +4404,18 @@
|
||||||
<translation>嵌套调用过多</translation>
|
<translation>嵌套调用过多</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2063"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2103"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2075"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2115"/>
|
||||||
<source>Assert failed</source>
|
<source>Assert failed</source>
|
||||||
<translation>断言失败</translation>
|
<translation>断言失败</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2254"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2315"/>
|
||||||
<source>BadDecl:</source>
|
<source>BadDecl:</source>
|
||||||
<translation>错误的声明:</translation>
|
<translation>错误的声明:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2263"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2324"/>
|
||||||
<source>GlobalBadDecl</source>
|
<source>GlobalBadDecl</source>
|
||||||
<translation>错误的全局声明</translation>
|
<translation>错误的全局声明</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -2678,13 +2678,13 @@
|
||||||
<translation>關閉標籤</translation>
|
<translation>關閉標籤</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="816"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="813"/>
|
||||||
<source>Failed to open script file </source>
|
<source>Failed to open script file </source>
|
||||||
<translation>打開腳本檔失敗</translation>
|
<translation>打開腳本檔失敗</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="651"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="648"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="699"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="694"/>
|
||||||
<source>Invalid file name for #include; it contains a line-break: </source>
|
<source>Invalid file name for #include; it contains a line-break: </source>
|
||||||
<translation>#include 的檔案名無效;它包含換行符:</translation>
|
<translation>#include 的檔案名無效;它包含換行符:</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2699,55 +2699,54 @@
|
||||||
<translation>ifdef 非法宏</translation>
|
<translation>ifdef 非法宏</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="279"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="369"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="378"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="384"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="393"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="445"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="454"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="481"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="490"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="517"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="526"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="557"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="566"/>
|
|
||||||
<source>UnexceptedToken</source>
|
<source>UnexceptedToken</source>
|
||||||
<translation>非法標識</translation>
|
<translation>非法標識</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="315"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="306"/>
|
||||||
<source>CalIfFailed</source>
|
<source>CalIfFailed</source>
|
||||||
<translation>宏條件判斷發生錯誤</translation>
|
<translation>宏條件判斷發生錯誤</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="412"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="403"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="461"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="452"/>
|
||||||
<source>InvalidDef</source>
|
<source>InvalidDef</source>
|
||||||
<translation>無效定義</translation>
|
<translation>無效定義</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="439"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="430"/>
|
||||||
<source>ReservedMarcoType</source>
|
<source>ReservedMarcoType</source>
|
||||||
<translation>被保留的宏樣式</translation>
|
<translation>被保留的宏樣式</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="445"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="436"/>
|
||||||
<source>MarcoNotFound:</source>
|
<source>MarcoNotFound:</source>
|
||||||
<translation>宏未找到:</translation>
|
<translation>宏未找到:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="474"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="465"/>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="514"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="505"/>
|
||||||
<source>NoMatchingIf</source>
|
<source>NoMatchingIf</source>
|
||||||
<translation>未匹配的宏條件</translation>
|
<translation>未匹配的宏條件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="497"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="488"/>
|
||||||
<source>DupElseDef</source>
|
<source>DupElseDef</source>
|
||||||
<translation>重複的另外條件宏</translation>
|
<translation>重複的另外條件宏</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="718"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="714"/>
|
||||||
<source>Invalid file name for #include; it contains a line-break or unpaired symbol</source>
|
<source>Invalid file name for #include; it contains a line-break or unpaired symbol</source>
|
||||||
<translation>#include 的檔案名無效;它包含換行符或不成對的符號</translation>
|
<translation>#include 的檔案名無效;它包含換行符或不成對的符號</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/aspreprocesser.cpp" line="750"/>
|
<location filename="../../src/class/aspreprocesser.cpp" line="747"/>
|
||||||
<source>Invalid #pragma directive</source>
|
<source>Invalid #pragma directive</source>
|
||||||
<translation>#pragma 指令無效</translation>
|
<translation>#pragma 指令無效</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2849,7 +2848,7 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="473"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="473"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2107"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2168"/>
|
||||||
<source>Code must be exec in the main thread</source>
|
<source>Code must be exec in the main thread</source>
|
||||||
<translation>腳本代碼必須在主線程執行</translation>
|
<translation>腳本代碼必須在主線程執行</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2860,8 +2859,8 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="528"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="528"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2156"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2217"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2272"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2333"/>
|
||||||
<source>Script failed to build</source>
|
<source>Script failed to build</source>
|
||||||
<translation>腳本編譯失敗</translation>
|
<translation>腳本編譯失敗</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2882,19 +2881,19 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="615"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="615"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2206"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2267"/>
|
||||||
<source>The script failed with an exception</source>
|
<source>The script failed with an exception</source>
|
||||||
<translation>異常被拋出,腳本執行失敗</translation>
|
<translation>異常被拋出,腳本執行失敗</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="624"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="624"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2215"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2276"/>
|
||||||
<source>The script was aborted</source>
|
<source>The script was aborted</source>
|
||||||
<translation>腳本被終止</translation>
|
<translation>腳本被終止</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="632"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="632"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2223"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2284"/>
|
||||||
<source>The script terminated unexpectedly</source>
|
<source>The script terminated unexpectedly</source>
|
||||||
<translation>腳本異常退出</translation>
|
<translation>腳本異常退出</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -4405,18 +4404,18 @@
|
||||||
<translation>嵌套調用過多</translation>
|
<translation>嵌套調用過多</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2063"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2103"/>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2075"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2115"/>
|
||||||
<source>Assert failed</source>
|
<source>Assert failed</source>
|
||||||
<translation>斷言失敗</translation>
|
<translation>斷言失敗</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2254"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2315"/>
|
||||||
<source>BadDecl:</source>
|
<source>BadDecl:</source>
|
||||||
<translation>錯誤的聲明:</translation>
|
<translation>錯誤的聲明:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/class/scriptmachine.cpp" line="2263"/>
|
<location filename="../../src/class/scriptmachine.cpp" line="2324"/>
|
||||||
<source>GlobalBadDecl</source>
|
<source>GlobalBadDecl</source>
|
||||||
<translation>錯誤的全局聲明</translation>
|
<translation>錯誤的全局聲明</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -32,13 +32,13 @@
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(
|
Q_GLOBAL_STATIC_WITH_ARGS(
|
||||||
QByteArrayList, DEFAULT_MARCO,
|
QByteArrayList, DEFAULT_MARCO,
|
||||||
({// special marcos
|
({// special marcos
|
||||||
"__LINE__", "__SECTION__",
|
"__LINE__", "__SECTION__", "__SECTION_BASE__",
|
||||||
// functions
|
// functions
|
||||||
"__AS_ARRAY__", "__AS_ANY__", "__AS_GRID__", "__AS_HANDLE__",
|
"__AS_ARRAY__", "__AS_ANY__", "__AS_GRID__", "__AS_HANDLE__",
|
||||||
"__AS_MATH__", "__AS_WEAKREF__", "__AS_COROUTINE__", "__WING_FILE__",
|
"__AS_MATH__", "__AS_WEAKREF__", "__AS_COROUTINE__", "__WING_FILE__",
|
||||||
"__WING_STRING__", "__WING_COLOR__", "__WING_JSON__", "__WING_REGEX__",
|
"__WING_STRING__", "__WING_COLOR__", "__WING_JSON__", "__WING_REGEX__",
|
||||||
"__WING_DICTIONARY__", "__WING_PRINT_VAR__", "__WING_PRINT_LN__",
|
"__WING_DICTIONARY__", "__WING_PRINT_VAR__", "__WING_PRINT_LN__",
|
||||||
"__AS_PROMISE__"}));
|
"__AS_PROMISE__", "__WING_CLIPBOARD__"}));
|
||||||
|
|
||||||
AsPreprocesser::AsPreprocesser(asIScriptEngine *engine) : engine(engine) {
|
AsPreprocesser::AsPreprocesser(asIScriptEngine *engine) : engine(engine) {
|
||||||
Q_ASSERT(engine);
|
Q_ASSERT(engine);
|
||||||
|
@ -273,15 +273,6 @@ int AsPreprocesser::processScriptSection(const QByteArray &script,
|
||||||
1, asMSGTYPE_ERROR, str.toUtf8());
|
1, asMSGTYPE_ERROR, str.toUtf8());
|
||||||
return asERROR;
|
return asERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure end line
|
|
||||||
if (endLinePassFailed(modifiedScript, pos)) {
|
|
||||||
auto str = QObject::tr("UnexceptedToken");
|
|
||||||
engine->WriteMessage(SECTION,
|
|
||||||
getLineCount(modifiedScript, pos),
|
|
||||||
1, asMSGTYPE_ERROR, str.toUtf8());
|
|
||||||
return asERROR;
|
|
||||||
}
|
|
||||||
} else if (isIf) {
|
} else if (isIf) {
|
||||||
if (_isCodeCompleteMode) {
|
if (_isCodeCompleteMode) {
|
||||||
auto pos = modifiedScript.indexOf('\n', start);
|
auto pos = modifiedScript.indexOf('\n', start);
|
||||||
|
@ -580,6 +571,12 @@ int AsPreprocesser::processScriptSection(const QByteArray &script,
|
||||||
modifiedScript.replace(pos, len, data);
|
modifiedScript.replace(pos, len, data);
|
||||||
pos += data.length();
|
pos += data.length();
|
||||||
continue;
|
continue;
|
||||||
|
} else if (word == "__SECTION_BASE__") {
|
||||||
|
auto data = QFileInfo(SECTION).baseName().toUtf8();
|
||||||
|
data.prepend('"').append('"');
|
||||||
|
modifiedScript.replace(pos, len, data);
|
||||||
|
pos += data.length();
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
auto rword = findReplaceResult(word);
|
auto rword = findReplaceResult(word);
|
||||||
if (word != rword) {
|
if (word != rword) {
|
||||||
|
@ -693,17 +690,16 @@ int AsPreprocesser::processScriptSection(const QByteArray &script,
|
||||||
auto p = includefile.indexOf('\n');
|
auto p = includefile.indexOf('\n');
|
||||||
auto ws = includefile.indexOf(' ');
|
auto ws = includefile.indexOf(' ');
|
||||||
if (!includefile.isEmpty() && p >= 0 && ws >= 0) {
|
if (!includefile.isEmpty() && p >= 0 && ws >= 0) {
|
||||||
// TODO: Show the correct line number for
|
|
||||||
// the error
|
|
||||||
auto str =
|
auto str =
|
||||||
QObject::tr(
|
QObject::tr(
|
||||||
"Invalid file name for #include; "
|
"Invalid file name for #include; "
|
||||||
"it contains a line-break: ") +
|
"it contains a line-break: ") +
|
||||||
QStringLiteral("'") + includefile.left(p) +
|
QStringLiteral("'") + includefile.left(p) +
|
||||||
QStringLiteral("'");
|
QStringLiteral("'");
|
||||||
engine->WriteMessage(sectionname.toUtf8(), 0, 0,
|
engine->WriteMessage(
|
||||||
asMSGTYPE_ERROR,
|
sectionname.toUtf8(),
|
||||||
str.toUtf8());
|
getLineCount(modifiedScript, pos), 1,
|
||||||
|
asMSGTYPE_ERROR, str.toUtf8());
|
||||||
} else {
|
} else {
|
||||||
// Store it for later processing
|
// Store it for later processing
|
||||||
includes.append({includefile, false});
|
includes.append({includefile, false});
|
||||||
|
@ -744,9 +740,10 @@ int AsPreprocesser::processScriptSection(const QByteArray &script,
|
||||||
sectionname, pragmaParam)
|
sectionname, pragmaParam)
|
||||||
: -1;
|
: -1;
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
// TODO: Report the correct line number
|
|
||||||
engine->WriteMessage(
|
engine->WriteMessage(
|
||||||
sectionname.toUtf8(), 0, 0, asMSGTYPE_ERROR,
|
sectionname.toUtf8(),
|
||||||
|
getLineCount(modifiedScript, pos), 1,
|
||||||
|
asMSGTYPE_ERROR,
|
||||||
QObject::tr("Invalid #pragma directive")
|
QObject::tr("Invalid #pragma directive")
|
||||||
.toUtf8());
|
.toUtf8());
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -43,6 +43,8 @@
|
||||||
#include "scriptaddon/scriptqstring.h"
|
#include "scriptaddon/scriptqstring.h"
|
||||||
#include "scriptaddon/scriptregex.h"
|
#include "scriptaddon/scriptregex.h"
|
||||||
|
|
||||||
|
#include <QClipboard>
|
||||||
|
#include <QMimeData>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QScopeGuard>
|
#include <QScopeGuard>
|
||||||
|
|
||||||
|
@ -153,8 +155,6 @@ bool ScriptMachine::configureEngine() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_engine->SetDefaultAccessMask(0x1);
|
|
||||||
|
|
||||||
// we need utf8, the default is what we want
|
// we need utf8, the default is what we want
|
||||||
_engine->SetEngineProperty(asEP_EXPAND_DEF_ARRAY_TO_TMPL, true);
|
_engine->SetEngineProperty(asEP_EXPAND_DEF_ARRAY_TO_TMPL, true);
|
||||||
_engine->SetEngineProperty(asEP_DISALLOW_EMPTY_LIST_ELEMENTS, true);
|
_engine->SetEngineProperty(asEP_DISALLOW_EMPTY_LIST_ELEMENTS, true);
|
||||||
|
@ -1998,6 +1998,8 @@ void ScriptMachine::translation() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptMachine::registerEngineAddon(asIScriptEngine *engine) {
|
void ScriptMachine::registerEngineAddon(asIScriptEngine *engine) {
|
||||||
|
// all modules can access
|
||||||
|
engine->SetDefaultAccessMask(0x3);
|
||||||
RegisterScriptArray(engine, true);
|
RegisterScriptArray(engine, true);
|
||||||
RegisterQString(engine);
|
RegisterQString(engine);
|
||||||
RegisterScriptRegex(engine);
|
RegisterScriptRegex(engine);
|
||||||
|
@ -2012,9 +2014,12 @@ void ScriptMachine::registerEngineAddon(asIScriptEngine *engine) {
|
||||||
RegisterScriptHandle(engine);
|
RegisterScriptHandle(engine);
|
||||||
RegisterColor(engine);
|
RegisterColor(engine);
|
||||||
RegisterQJson(engine);
|
RegisterQJson(engine);
|
||||||
|
|
||||||
|
engine->SetDefaultAccessMask(0x1);
|
||||||
RegisterScriptFile(engine);
|
RegisterScriptFile(engine);
|
||||||
registerExceptionRoutines(engine);
|
registerExceptionRoutines(engine);
|
||||||
registerEngineAssert(engine);
|
registerEngineAssert(engine);
|
||||||
|
registerEngineClipboard(engine);
|
||||||
AsDirectPromise::Register(engine);
|
AsDirectPromise::Register(engine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2051,6 +2056,41 @@ void ScriptMachine::registerEngineAssert(asIScriptEngine *engine) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptMachine::registerEngineClipboard(asIScriptEngine *engine) {
|
||||||
|
int r = engine->SetDefaultNamespace("clipboard");
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
|
||||||
|
// The string type must be available
|
||||||
|
Q_ASSERT(engine->GetTypeInfoByDecl("string"));
|
||||||
|
|
||||||
|
if (strstr(asGetLibraryOptions(), "AS_MAX_PORTABILITY") == 0) {
|
||||||
|
r = engine->RegisterGlobalFunction(
|
||||||
|
"void setText(const string &in text)", asFUNCTION(clip_setText),
|
||||||
|
asCALL_CDECL);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
r = engine->RegisterGlobalFunction(
|
||||||
|
"void setBinary(const uint8[]@ data)", asFUNCTION(clip_setBinary),
|
||||||
|
asCALL_CDECL);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
} else {
|
||||||
|
r = engine->RegisterGlobalFunction(
|
||||||
|
"void setText(const string &in text)", WRAP_FN(clip_setText),
|
||||||
|
asCALL_GENERIC);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
r = engine->RegisterGlobalFunction(
|
||||||
|
"void setBinary(const uint8[]@ data)", WRAP_FN(clip_setBinary),
|
||||||
|
asCALL_GENERIC);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
engine->SetDefaultNamespace("");
|
||||||
|
}
|
||||||
|
|
||||||
void ScriptMachine::registerCallBack(ConsoleMode mode,
|
void ScriptMachine::registerCallBack(ConsoleMode mode,
|
||||||
const RegCallBacks &callbacks) {
|
const RegCallBacks &callbacks) {
|
||||||
_regcalls.insert(mode, callbacks);
|
_regcalls.insert(mode, callbacks);
|
||||||
|
@ -2079,6 +2119,27 @@ void ScriptMachine::scriptAssert_X(bool b, const QString &msg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptMachine::clip_setText(const QString &text) {
|
||||||
|
qApp->clipboard()->setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScriptMachine::clip_setBinary(const CScriptArray &array) {
|
||||||
|
QByteArray buffer;
|
||||||
|
buffer.reserve(array.GetSize());
|
||||||
|
array.AddRef();
|
||||||
|
for (asUINT i = 0; i < array.GetSize(); ++i) {
|
||||||
|
auto item = reinterpret_cast<const asBYTE *>(array.At(i));
|
||||||
|
buffer.append(*item);
|
||||||
|
}
|
||||||
|
array.Release();
|
||||||
|
|
||||||
|
auto c = qApp->clipboard();
|
||||||
|
auto mime = new QMimeData;
|
||||||
|
mime->setData(QStringLiteral("application/octet-stream"),
|
||||||
|
buffer); // don't use setText()
|
||||||
|
c->setMimeData(mime);
|
||||||
|
}
|
||||||
|
|
||||||
void ScriptMachine::scriptThrow(const QString &msg) {
|
void ScriptMachine::scriptThrow(const QString &msg) {
|
||||||
asIScriptContext *ctx = asGetActiveContext();
|
asIScriptContext *ctx = asGetActiveContext();
|
||||||
if (ctx) {
|
if (ctx) {
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QQueue>
|
#include <QQueue>
|
||||||
|
|
||||||
|
class CScriptArray;
|
||||||
|
|
||||||
class ScriptMachine : public QObject {
|
class ScriptMachine : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
private:
|
||||||
|
@ -118,6 +120,7 @@ public:
|
||||||
|
|
||||||
static void registerEngineAddon(asIScriptEngine *engine);
|
static void registerEngineAddon(asIScriptEngine *engine);
|
||||||
static void registerEngineAssert(asIScriptEngine *engine);
|
static void registerEngineAssert(asIScriptEngine *engine);
|
||||||
|
static void registerEngineClipboard(asIScriptEngine *engine);
|
||||||
|
|
||||||
void registerCallBack(ConsoleMode mode, const RegCallBacks &callbacks);
|
void registerCallBack(ConsoleMode mode, const RegCallBacks &callbacks);
|
||||||
|
|
||||||
|
@ -132,6 +135,9 @@ public:
|
||||||
static void scriptAssert(bool b);
|
static void scriptAssert(bool b);
|
||||||
static void scriptAssert_X(bool b, const QString &msg);
|
static void scriptAssert_X(bool b, const QString &msg);
|
||||||
|
|
||||||
|
static void clip_setText(const QString &text);
|
||||||
|
static void clip_setBinary(const CScriptArray &array);
|
||||||
|
|
||||||
static void scriptThrow(const QString &msg);
|
static void scriptThrow(const QString &msg);
|
||||||
|
|
||||||
static QString scriptGetExceptionInfo();
|
static QString scriptGetExceptionInfo();
|
||||||
|
|
|
@ -148,6 +148,10 @@ static void ConstructString(QString *thisPointer) {
|
||||||
new (thisPointer) QString();
|
new (thisPointer) QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ConstructStringChar(const QChar &ch, QString *thisPointer) {
|
||||||
|
new (thisPointer) QString(ch);
|
||||||
|
}
|
||||||
|
|
||||||
static void CopyConstructString(const QString &other, QString *thisPointer) {
|
static void CopyConstructString(const QString &other, QString *thisPointer) {
|
||||||
new (thisPointer) QString(other);
|
new (thisPointer) QString(other);
|
||||||
}
|
}
|
||||||
|
@ -230,6 +234,16 @@ static QString &AddAssignFloatToString(float f, QString &dest) {
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QString &AssignCharToString(const QChar &ch, QString &dest) {
|
||||||
|
dest = ch;
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
static QString &AddAssignCharToString(const QChar &ch, QString &dest) {
|
||||||
|
dest += ch;
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
static QString &AssignBoolToString(bool b, QString &dest) {
|
static QString &AssignBoolToString(bool b, QString &dest) {
|
||||||
dest = b ? QStringLiteral("true") : QStringLiteral("false");
|
dest = b ? QStringLiteral("true") : QStringLiteral("false");
|
||||||
return dest;
|
return dest;
|
||||||
|
@ -256,6 +270,14 @@ static QString AddFloatString(float f, const QString &str) {
|
||||||
return QString::number(f) + str;
|
return QString::number(f) + str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QString AddStringChar(const QString &str, const QChar &ch) {
|
||||||
|
return str + ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
static QString AddCharString(const QChar &ch, const QString &str) {
|
||||||
|
return ch + str;
|
||||||
|
}
|
||||||
|
|
||||||
static QString AddStringBool(const QString &str, bool b) {
|
static QString AddStringBool(const QString &str, bool b) {
|
||||||
return str + (b ? QStringLiteral("true") : QStringLiteral("false"));
|
return str + (b ? QStringLiteral("true") : QStringLiteral("false"));
|
||||||
}
|
}
|
||||||
|
@ -265,7 +287,7 @@ static QString AddBoolString(bool b, const QString &str) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *StringCharAt(unsigned int i, QString &str) {
|
static QChar *StringCharAt(unsigned int i, QString &str) {
|
||||||
if (asDWORD(i) >= asDWORD(str.size())) {
|
if (asDWORD(i) >= asDWORD(str.size())) {
|
||||||
// Set a script exception
|
// Set a script exception
|
||||||
asIScriptContext *ctx = asGetActiveContext();
|
asIScriptContext *ctx = asGetActiveContext();
|
||||||
|
@ -275,7 +297,7 @@ static char *StringCharAt(unsigned int i, QString &str) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<char *>(str.data() + i);
|
return str.data() + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
// AngelScript signature:
|
// AngelScript signature:
|
||||||
|
@ -595,6 +617,11 @@ void RegisterQString_Native(asIScriptEngine *engine) {
|
||||||
asCALL_CDECL_OBJLAST);
|
asCALL_CDECL_OBJLAST);
|
||||||
Q_ASSERT(r >= 0);
|
Q_ASSERT(r >= 0);
|
||||||
Q_UNUSED(r);
|
Q_UNUSED(r);
|
||||||
|
r = engine->RegisterObjectBehaviour(
|
||||||
|
"string", asBEHAVE_CONSTRUCT, "void f(const char &in)",
|
||||||
|
asFUNCTION(ConstructStringChar), asCALL_CDECL_OBJLAST);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
r = engine->RegisterObjectMethod(
|
r = engine->RegisterObjectMethod(
|
||||||
"string", "string &opAssign(const string &in)",
|
"string", "string &opAssign(const string &in)",
|
||||||
asMETHODPR(QString, operator=, (const QString &), QString &),
|
asMETHODPR(QString, operator=, (const QString &), QString &),
|
||||||
|
@ -717,8 +744,29 @@ void RegisterQString_Native(asIScriptEngine *engine) {
|
||||||
Q_ASSERT(r >= 0);
|
Q_ASSERT(r >= 0);
|
||||||
Q_UNUSED(r);
|
Q_UNUSED(r);
|
||||||
|
|
||||||
|
r = engine->RegisterObjectMethod(
|
||||||
|
"string", "string &opAssign(const char &in)",
|
||||||
|
asFUNCTION(AssignCharToString), asCALL_CDECL_OBJLAST);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
r = engine->RegisterObjectMethod(
|
||||||
|
"string", "string &opAddAssign(const char &in)",
|
||||||
|
asFUNCTION(AddAssignCharToString), asCALL_CDECL_OBJLAST);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
r = engine->RegisterObjectMethod(
|
||||||
|
"string", "string opAdd(const char &in) const",
|
||||||
|
asFUNCTION(AddStringChar), asCALL_CDECL_OBJFIRST);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
r = engine->RegisterObjectMethod(
|
||||||
|
"string", "string opAdd_r(const char &in) const",
|
||||||
|
asFUNCTION(AddCharString), asCALL_CDECL_OBJLAST);
|
||||||
|
Q_ASSERT(r >= 0);
|
||||||
|
Q_UNUSED(r);
|
||||||
|
|
||||||
r = engine->RegisterObjectMethod("string", "string &opAssign(float)",
|
r = engine->RegisterObjectMethod("string", "string &opAssign(float)",
|
||||||
asFUNCTION(AssignFloatToString),
|
asFUNCTION(AssignCharToString),
|
||||||
asCALL_CDECL_OBJLAST);
|
asCALL_CDECL_OBJLAST);
|
||||||
Q_ASSERT(r >= 0);
|
Q_ASSERT(r >= 0);
|
||||||
Q_UNUSED(r);
|
Q_UNUSED(r);
|
||||||
|
|
Loading…
Reference in New Issue