diff options
author | chai <chaifix@163.com> | 2019-03-27 22:18:14 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-03-27 22:18:14 +0800 |
commit | 69f7d1bd745ed5680b9bc4e3cfdd882ff2a5ad26 (patch) | |
tree | 729e563da8fea6cf8c5455f3afdb3c6ce0aecde4 | |
parent | 66c5fdc564dd892ed265132d6c1378dbe3cebcee (diff) |
+threading
120 files changed, 3052 insertions, 117 deletions
diff --git a/Build/Asura.sln b/Build/Asura.sln index c467d40..4b8f502 100644 --- a/Build/Asura.sln +++ b/Build/Asura.sln @@ -93,9 +93,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml2", "3rd-party\tinyx EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "06-coroutine", "tests\06-coroutine\06-coroutine.vcxproj", "{C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-socket", "libs\asura-lib-socket\asura-lib-socket.vcxproj", "{FF8319D3-7ADC-41BC-A397-B31690A7AB5F}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-network", "libs\asura-lib-network\asura-lib-network.vcxproj", "{6361701E-BD43-4AE9-8AE2-5C8F87D436BA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-http", "libs\asura-lib-http\asura-lib-http.vcxproj", "{DCD127A6-68B3-48CA-B769-0680C167D99B}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LuaSocket", "3rd-party\LuaSocket\LuaSocket.vcxproj", "{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -519,26 +519,26 @@ Global {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}.Release|x64.Build.0 = Release|x64 {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}.Release|x86.ActiveCfg = Release|Win32 {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}.Release|x86.Build.0 = Release|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x64.ActiveCfg = Debug|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x64.Build.0 = Debug|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x86.ActiveCfg = Debug|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x86.Build.0 = Debug|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|Any CPU.ActiveCfg = Release|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x64.ActiveCfg = Release|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x64.Build.0 = Release|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x86.ActiveCfg = Release|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x86.Build.0 = Release|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x64.ActiveCfg = Debug|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x64.Build.0 = Debug|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x86.ActiveCfg = Debug|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x86.Build.0 = Debug|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|Any CPU.ActiveCfg = Release|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x64.ActiveCfg = Release|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x64.Build.0 = Release|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x86.ActiveCfg = Release|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x86.Build.0 = Release|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x64.ActiveCfg = Debug|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x64.Build.0 = Debug|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x86.ActiveCfg = Debug|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x86.Build.0 = Debug|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|Any CPU.ActiveCfg = Release|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x64.ActiveCfg = Release|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x64.Build.0 = Release|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x86.ActiveCfg = Release|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x86.Build.0 = Release|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x64.ActiveCfg = Debug|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x64.Build.0 = Debug|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x86.ActiveCfg = Debug|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x86.Build.0 = Debug|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|Any CPU.ActiveCfg = Release|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x64.ActiveCfg = Release|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x64.Build.0 = Release|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.ActiveCfg = Release|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -579,8 +579,8 @@ Global {68FB36CB-C478-4158-A0BC-905B65340AE9} = {25C8D2F8-989B-4742-859D-E2FDBB14EC2F} {883BC26A-4C9E-44B3-B5C0-7F3E4EDC0226} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3} = {E068D138-C824-4365-B5A3-27C65E8FD0B5} - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} - {DCD127A6-68B3-48CA-B769-0680C167D99B} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {331032D8-F7CC-43E3-A03B-67108767F96B} diff --git a/Samples/Hello/entities/anim.gameobject.asset b/Samples/Hello/entities/anim.gameobject.asset deleted file mode 100644 index 484d982..0000000 --- a/Samples/Hello/entities/anim.gameobject.asset +++ /dev/null @@ -1,3 +0,0 @@ -{ - type="gameobject", -}
\ No newline at end of file diff --git a/Samples/Hello/entities/player.gameobject.asset b/Samples/Hello/entities/player.gameobject.asset deleted file mode 100644 index a0ef6b5..0000000 --- a/Samples/Hello/entities/player.gameobject.asset +++ /dev/null @@ -1,15 +0,0 @@ -{ - type="gameobject", - components={ - "/scripts/components/fireball.lua", - "/scripts/components/fly.lua", - "/scripts/components/move.lua", - }, - child_gameobjects={ - ["axe keeper"] = { - components = { - - }, - } - } -}
\ No newline at end of file diff --git a/bin/win64/02-luax.exe b/bin/win64/02-luax.exe Binary files differdeleted file mode 100644 index f9bb428..0000000 --- a/bin/win64/02-luax.exe +++ /dev/null diff --git a/bin/win64/05-physfs.exe b/bin/win64/05-physfs.exe Binary files differindex a3d7410..36f66ae 100644 --- a/bin/win64/05-physfs.exe +++ b/bin/win64/05-physfs.exe diff --git a/bin/win64/05-physfs.exe.lastcodeanalysissucceeded b/bin/win64/05-physfs.exe.lastcodeanalysissucceeded new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/bin/win64/05-physfs.exe.lastcodeanalysissucceeded diff --git a/bin/win64/Luax.lib.lastcodeanalysissucceeded b/bin/win64/Luax.lib.lastcodeanalysissucceeded new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/bin/win64/Luax.lib.lastcodeanalysissucceeded diff --git a/bin/win64/asura-lib-utils.lib.lastcodeanalysissucceeded b/bin/win64/asura-lib-utils.lib.lastcodeanalysissucceeded new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/bin/win64/asura-lib-utils.lib.lastcodeanalysissucceeded diff --git a/bin/win64/bindingGen.exe b/bin/win64/bindingGen.exe Binary files differindex 930d6e4..19029df 100644 --- a/bin/win64/bindingGen.exe +++ b/bin/win64/bindingGen.exe diff --git a/bin/win64/bindingGen.exe.CodeAnalysisLog.xml b/bin/win64/bindingGen.exe.CodeAnalysisLog.xml new file mode 100644 index 0000000..e798c0f --- /dev/null +++ b/bin/win64/bindingGen.exe.CodeAnalysisLog.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<?xml-stylesheet type="text/xsl" href="d:\program files (x86)\microsoft visual studio\2017\community\team tools\static analysis tools\fxcop\Xml\CodeAnalysisReport.xsl"?> +<FxCopReport Version="15.0"> + <Localized> + <String Key="Category">类别</String> + <String Key="Certainty">确定性</String> + <String Key="CollapseAll">全部折叠</String> + <String Key="CheckId">检查 ID</String> + <String Key="Error">错误</String> + <String Key="Errors">错误</String> + <String Key="ExpandAll">全部展开</String> + <String Key="Help">帮助</String> + <String Key="Line">行</String> + <String Key="Messages">消息</String> + <String Key="LocationNotStoredInPdb">[位置未存储在 Pdb 中]</String> + <String Key="Project">项目</String> + <String Key="Resolution">解析</String> + <String Key="Rule">规则</String> + <String Key="RuleFile">规则文件</String> + <String Key="RuleDescription">规则说明</String> + <String Key="Source">源</String> + <String Key="Status">状态</String> + <String Key="Target">目标</String> + <String Key="Warning">警告</String> + <String Key="Warnings">警告</String> + <String Key="ReportTitle">代码分析报告</String> + </Localized> +</FxCopReport> diff --git a/bin/win64/bindingGen.exe.lastcodeanalysissucceeded b/bin/win64/bindingGen.exe.lastcodeanalysissucceeded new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/bin/win64/bindingGen.exe.lastcodeanalysissucceeded diff --git a/build/3rd-party/LuaSocket/LuaSocket.vcxproj b/build/3rd-party/LuaSocket/LuaSocket.vcxproj new file mode 100644 index 0000000..aaf933a --- /dev/null +++ b/build/3rd-party/LuaSocket/LuaSocket.vcxproj @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <VCProjectVersion>15.0</VCProjectVersion> + <ProjectGuid>{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}</ProjectGuid> + <RootNamespace>LuaSocket</RootNamespace> + <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/build/3rd-party/LuaSocket/LuaSocket.vcxproj.filters b/build/3rd-party/LuaSocket/LuaSocket.vcxproj.filters new file mode 100644 index 0000000..9cd8510 --- /dev/null +++ b/build/3rd-party/LuaSocket/LuaSocket.vcxproj.filters @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file diff --git a/build/3rd-party/LuaSocket/LuaSocket.vcxproj.user b/build/3rd-party/LuaSocket/LuaSocket.vcxproj.user new file mode 100644 index 0000000..be25078 --- /dev/null +++ b/build/3rd-party/LuaSocket/LuaSocket.vcxproj.user @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup /> +</Project>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_cfunctions.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_cfunctions.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_cfunctions.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_class.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_class.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_class.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_context.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_context.nativecodeanalysis.xml new file mode 100644 index 0000000..35a3288 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_context.nativecodeanalysis.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_context.cpp</FILENAME> + <LINE>6</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'Luax::LuaxContext::objectCount' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxContext::{ctor}</FUNCTION> + <DECORATED>??0LuaxContext@Luax@@QEAA@PEAUlua_State@@@Z</DECORATED> + <FUNCLINE>6</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_enum.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_enum.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_enum.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_memberref.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_memberref.nativecodeanalysis.xml new file mode 100644 index 0000000..a8b72f2 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_memberref.nativecodeanalysis.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_memberref.cpp</FILENAME> + <LINE>6</LINE> + <COLUMN>16</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxMemberRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxMemberRef@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>6</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_ref.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_ref.nativecodeanalysis.xml new file mode 100644 index 0000000..fb05229 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_ref.nativecodeanalysis.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_ref.cpp</FILENAME> + <LINE>7</LINE> + <COLUMN>10</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxRef@Luax@@QEAA@H@Z</DECORATED> + <FUNCLINE>7</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_ref.cpp</FILENAME> + <LINE>59</LINE> + <COLUMN>16</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxStrongRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxStrongRef@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>59</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_ref.cpp</FILENAME> + <LINE>64</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxWeakRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxWeakRef@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>64</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_reftable.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_reftable.nativecodeanalysis.xml new file mode 100644 index 0000000..fcb4b68 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_reftable.nativecodeanalysis.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_reftable.cpp</FILENAME> + <LINE>7</LINE> + <COLUMN>15</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRefTable::{ctor}</FUNCTION> + <DECORATED>??0LuaxRefTable@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>7</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_reftable.cpp</FILENAME> + <LINE>7</LINE> + <COLUMN>15</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'Luax::LuaxRefTable::mName' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRefTable::{ctor}</FUNCTION> + <DECORATED>??0LuaxRefTable@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>7</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_reftable.cpp</FILENAME> + <LINE>7</LINE> + <COLUMN>15</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'Luax::LuaxRefTable::mMode' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRefTable::{ctor}</FUNCTION> + <DECORATED>??0LuaxRefTable@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>7</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_runtime.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_runtime.nativecodeanalysis.xml new file mode 100644 index 0000000..8d33c8e --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_runtime.nativecodeanalysis.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_runtime.cpp</FILENAME> + <LINE>13</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRuntime::{ctor}</FUNCTION> + <DECORATED>??0LuaxRuntime@Luax@@AEAA@XZ</DECORATED> + <FUNCLINE>13</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_runtime.cpp</FILENAME> + <LINE>30</LINE> + <COLUMN>11</COLUMN> + </SFA> + <DEFECTCODE>26444</DEFECTCODE> + <DESCRIPTION>Avoid unnamed objects with custom construction and destruction (es.84).</DESCRIPTION> + <FUNCTION>Luax::LuaxRuntime::Open</FUNCTION> + <DECORATED>?Open@LuaxRuntime@Luax@@QEAAPEAUlua_State@@XZ</DECORATED> + <FUNCLINE>24</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_runtime.cpp</FILENAME> + <LINE>43</LINE> + <COLUMN>12</COLUMN> + </SFA> + <DEFECTCODE>26444</DEFECTCODE> + <DESCRIPTION>Avoid unnamed objects with custom construction and destruction (es.84).</DESCRIPTION> + <FUNCTION>Luax::LuaxRuntime::Close</FUNCTION> + <DECORATED>?Close@LuaxRuntime@Luax@@QEAAXPEAUlua_State@@@Z</DECORATED> + <FUNCLINE>37</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/luax_state.nativecodeanalysis.xml b/build/3rd-party/Luax/x64/Debug/luax_state.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/luax_state.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/3rd-party/Luax/x64/Debug/vc.nativecodeanalysis.all.xml b/build/3rd-party/Luax/x64/Debug/vc.nativecodeanalysis.all.xml new file mode 100644 index 0000000..c1161fd --- /dev/null +++ b/build/3rd-party/Luax/x64/Debug/vc.nativecodeanalysis.all.xml @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="utf-8"?><DEFECTS><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_context.cpp</FILENAME> + <LINE>6</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'Luax::LuaxContext::objectCount' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxContext::{ctor}</FUNCTION> + <DECORATED>??0LuaxContext@Luax@@QEAA@PEAUlua_State@@@Z</DECORATED> + <FUNCLINE>6</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_memberref.cpp</FILENAME> + <LINE>6</LINE> + <COLUMN>16</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxMemberRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxMemberRef@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>6</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_ref.cpp</FILENAME> + <LINE>7</LINE> + <COLUMN>10</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxRef@Luax@@QEAA@H@Z</DECORATED> + <FUNCLINE>7</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_ref.cpp</FILENAME> + <LINE>59</LINE> + <COLUMN>16</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxStrongRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxStrongRef@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>59</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_ref.cpp</FILENAME> + <LINE>64</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxWeakRef::{ctor}</FUNCTION> + <DECORATED>??0LuaxWeakRef@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>64</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_reftable.cpp</FILENAME> + <LINE>7</LINE> + <COLUMN>15</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRefTable::{ctor}</FUNCTION> + <DECORATED>??0LuaxRefTable@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>7</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_reftable.cpp</FILENAME> + <LINE>7</LINE> + <COLUMN>15</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'Luax::LuaxRefTable::mName' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRefTable::{ctor}</FUNCTION> + <DECORATED>??0LuaxRefTable@Luax@@QEAA@XZ</DECORATED> + <FUNCLINE>7</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_runtime.cpp</FILENAME> + <LINE>13</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxRuntime::{ctor}</FUNCTION> + <DECORATED>??0LuaxRuntime@Luax@@AEAA@XZ</DECORATED> + <FUNCLINE>13</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_runtime.cpp</FILENAME> + <LINE>30</LINE> + <COLUMN>11</COLUMN> + </SFA> + <DEFECTCODE>26444</DEFECTCODE> + <DESCRIPTION>Avoid unnamed objects with custom construction and destruction (es.84).</DESCRIPTION> + <FUNCTION>Luax::LuaxRuntime::Open</FUNCTION> + <DECORATED>?Open@LuaxRuntime@Luax@@QEAAPEAUlua_State@@XZ</DECORATED> + <FUNCLINE>24</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_runtime.cpp</FILENAME> + <LINE>43</LINE> + <COLUMN>12</COLUMN> + </SFA> + <DEFECTCODE>26444</DEFECTCODE> + <DESCRIPTION>Avoid unnamed objects with custom construction and destruction (es.84).</DESCRIPTION> + <FUNCTION>Luax::LuaxRuntime::Close</FUNCTION> + <DECORATED>?Close@LuaxRuntime@Luax@@QEAAXPEAUlua_State@@@Z</DECORATED> + <FUNCLINE>37</FUNCLINE> + <PATH></PATH> + </DEFECT></DEFECTS>
\ No newline at end of file diff --git a/build/Asura.sln b/build/Asura.sln index c467d40..4b8f502 100644 --- a/build/Asura.sln +++ b/build/Asura.sln @@ -93,9 +93,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml2", "3rd-party\tinyx EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "06-coroutine", "tests\06-coroutine\06-coroutine.vcxproj", "{C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-socket", "libs\asura-lib-socket\asura-lib-socket.vcxproj", "{FF8319D3-7ADC-41BC-A397-B31690A7AB5F}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-network", "libs\asura-lib-network\asura-lib-network.vcxproj", "{6361701E-BD43-4AE9-8AE2-5C8F87D436BA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-http", "libs\asura-lib-http\asura-lib-http.vcxproj", "{DCD127A6-68B3-48CA-B769-0680C167D99B}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LuaSocket", "3rd-party\LuaSocket\LuaSocket.vcxproj", "{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -519,26 +519,26 @@ Global {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}.Release|x64.Build.0 = Release|x64 {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}.Release|x86.ActiveCfg = Release|Win32 {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3}.Release|x86.Build.0 = Release|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x64.ActiveCfg = Debug|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x64.Build.0 = Debug|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x86.ActiveCfg = Debug|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Debug|x86.Build.0 = Debug|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|Any CPU.ActiveCfg = Release|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x64.ActiveCfg = Release|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x64.Build.0 = Release|x64 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x86.ActiveCfg = Release|Win32 - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F}.Release|x86.Build.0 = Release|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x64.ActiveCfg = Debug|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x64.Build.0 = Debug|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x86.ActiveCfg = Debug|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Debug|x86.Build.0 = Debug|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|Any CPU.ActiveCfg = Release|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x64.ActiveCfg = Release|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x64.Build.0 = Release|x64 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x86.ActiveCfg = Release|Win32 - {DCD127A6-68B3-48CA-B769-0680C167D99B}.Release|x86.Build.0 = Release|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x64.ActiveCfg = Debug|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x64.Build.0 = Debug|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x86.ActiveCfg = Debug|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Debug|x86.Build.0 = Debug|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|Any CPU.ActiveCfg = Release|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x64.ActiveCfg = Release|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x64.Build.0 = Release|x64 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x86.ActiveCfg = Release|Win32 + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA}.Release|x86.Build.0 = Release|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x64.ActiveCfg = Debug|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x64.Build.0 = Debug|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x86.ActiveCfg = Debug|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Debug|x86.Build.0 = Debug|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|Any CPU.ActiveCfg = Release|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x64.ActiveCfg = Release|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x64.Build.0 = Release|x64 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.ActiveCfg = Release|Win32 + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -579,8 +579,8 @@ Global {68FB36CB-C478-4158-A0BC-905B65340AE9} = {25C8D2F8-989B-4742-859D-E2FDBB14EC2F} {883BC26A-4C9E-44B3-B5C0-7F3E4EDC0226} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} {C3CD1252-3C8D-45E2-B784-D0016E7F0BD3} = {E068D138-C824-4365-B5A3-27C65E8FD0B5} - {FF8319D3-7ADC-41BC-A397-B31690A7AB5F} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} - {DCD127A6-68B3-48CA-B769-0680C167D99B} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} + {6361701E-BD43-4AE9-8AE2-5C8F87D436BA} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} + {E15D111A-9E02-4E0D-86FE-62BFCD3C211E} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {331032D8-F7CC-43E3-A03B-67108767F96B} diff --git a/build/libs/asura-lib-core/asura-lib-core.vcxproj b/build/libs/asura-lib-core/asura-lib-core.vcxproj index d69e2f0..5530000 100644 --- a/build/libs/asura-lib-core/asura-lib-core.vcxproj +++ b/build/libs/asura-lib-core/asura-lib-core.vcxproj @@ -122,6 +122,16 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-core\font\glyph.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\font\string.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\font\ttf.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_canvas.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_color.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_color32.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_image.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_image_data.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_image_decode_task.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_mesh2d.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_shader.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_sprite_batch.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_window.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\canvas.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\color.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\color32.cpp" /> @@ -141,6 +151,8 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\stb_decoder.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\texture.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\window.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glew.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glut.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_sdl.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\input\clipboard.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-core\input\cursor.cpp" /> @@ -182,6 +194,8 @@ <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\stb_decoder.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\texture.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\window.h" /> + <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glew.h" /> + <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glut.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_sdl.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-core\input\clipboard.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-core\input\cursor.h" /> diff --git a/build/libs/asura-lib-core/asura-lib-core.vcxproj.filters b/build/libs/asura-lib-core/asura-lib-core.vcxproj.filters index 68b3ddc..a118d6a 100644 --- a/build/libs/asura-lib-core/asura-lib-core.vcxproj.filters +++ b/build/libs/asura-lib-core/asura-lib-core.vcxproj.filters @@ -16,6 +16,9 @@ <Filter Include="time"> <UniqueIdentifier>{81dedac2-8d27-4c19-bf40-1503f0dbad1b}</UniqueIdentifier> </Filter> + <Filter Include="graphics\binding"> + <UniqueIdentifier>{4f6b2c19-1a06-48c9-b89d-52fa27bec5c1}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClCompile Include="..\..\..\source\libs\asura-lib-core\application.cpp" /> @@ -110,6 +113,42 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\image_decode_task.cpp"> <Filter>graphics</Filter> </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glew.cpp"> + <Filter>graphics</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glut.cpp"> + <Filter>graphics</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_canvas.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_color.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_color32.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_image.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_image_data.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_image_decode_task.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_mesh2d.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_shader.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_sprite_batch.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-core\graphics\binding\_window.cpp"> + <Filter>graphics\binding</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\..\source\libs\asura-lib-core\application.h" /> @@ -233,6 +272,12 @@ <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\image_decode_task.h"> <Filter>graphics</Filter> </ClInclude> + <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glew.h"> + <Filter>graphics</Filter> + </ClInclude> + <ClInclude Include="..\..\..\source\libs\asura-lib-core\graphics\window_impl_glut.h"> + <Filter>graphics</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="..\..\..\source\libs\asura-lib-core\font\string.inl"> diff --git a/build/libs/asura-lib-network/asura-lib-network.vcxproj b/build/libs/asura-lib-network/asura-lib-network.vcxproj new file mode 100644 index 0000000..74dd2ae --- /dev/null +++ b/build/libs/asura-lib-network/asura-lib-network.vcxproj @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <VCProjectVersion>15.0</VCProjectVersion> + <ProjectGuid>{6361701E-BD43-4AE9-8AE2-5C8F87D436BA}</ProjectGuid> + <RootNamespace>asuralibnetwork</RootNamespace> + <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + <AdditionalIncludeDirectories>$(SolutionDir)..\source\3rd-party;$(SolutionDir)..\source\libs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + <AdditionalIncludeDirectories>$(SolutionDir)..\source\3rd-party;$(SolutionDir)..\source\libs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/build/libs/asura-lib-network/asura-lib-network.vcxproj.filters b/build/libs/asura-lib-network/asura-lib-network.vcxproj.filters new file mode 100644 index 0000000..9cd8510 --- /dev/null +++ b/build/libs/asura-lib-network/asura-lib-network.vcxproj.filters @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file diff --git a/build/libs/asura-lib-network/asura-lib-network.vcxproj.user b/build/libs/asura-lib-network/asura-lib-network.vcxproj.user new file mode 100644 index 0000000..be25078 --- /dev/null +++ b/build/libs/asura-lib-network/asura-lib-network.vcxproj.user @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup /> +</Project>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj index 2a97e55..54bd60a 100644 --- a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj +++ b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj @@ -128,6 +128,7 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\binding\_file.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\binding\_file_data.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\binding\_file_system.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\binding\_io_task.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\compressor.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\data_buffer.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\decoded_data.cpp" /> @@ -138,9 +139,12 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\curve.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\functions.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\matrix44.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\quaternion.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\ranged_value.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\transform.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\stringmap.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\binding\_coroutine.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\binding\_thread.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\coroutine.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\mutex.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread.cpp" /> @@ -165,6 +169,7 @@ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\curve.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\functions.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\matrix44.h" /> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\quaternion.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\ranged_value.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\rect.hpp" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\transform.h" /> diff --git a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters index 50d0746..ec034b9 100644 --- a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters +++ b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters @@ -19,6 +19,9 @@ <Filter Include="threading"> <UniqueIdentifier>{d617f453-4cd1-451b-801d-2f88d0072303}</UniqueIdentifier> </Filter> + <Filter Include="threading\binding"> + <UniqueIdentifier>{e63982e2-a2ca-4aa2-be11-f98659586c1f}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\exceptions\exception.cpp"> @@ -101,6 +104,18 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\mutex.cpp"> <Filter>threading</Filter> </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\binding\_coroutine.cpp"> + <Filter>threading\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\binding\_thread.cpp"> + <Filter>threading\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\binding\_io_task.cpp"> + <Filter>io\binding</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\quaternion.cpp"> + <Filter>math</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\exceptions\exception.h"> @@ -192,6 +207,9 @@ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\mutex.h"> <Filter>threading</Filter> </ClInclude> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\quaternion.h"> + <Filter>math</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="..\..\..\source\libs\asura-lib-utils\math\rect.inl"> diff --git a/build/libs/asura-lib-utils/x64/Debug/_compressor.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/_compressor.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/_compressor.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/_coroutine.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/_coroutine.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/_coroutine.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/_data_buffer.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/_data_buffer.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/_data_buffer.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/_file.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/_file.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/_file.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/_file_data.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/_file_data.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/_file_data.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/_file_system.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/_file_system.nativecodeanalysis.xml new file mode 100644 index 0000000..7afbf43 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/_file_system.nativecodeanalysis.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\io\</FILEPATH> + <FILENAME>file_system.h</FILENAME> + <LINE>105</LINE> + <COLUMN>2</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::IO::Filesystem::mInited' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::IO::Filesystem::{ctor}</FUNCTION> + <DECORATED>??0Filesystem@IO@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>105</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\</FILEPATH> + <FILENAME>singleton.hpp</FILENAME> + <LINE>33</LINE> + <COLUMN>2</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Singleton<AsuraEngine::IO::Filesystem>::{ctor}</FUNCTION> + <DECORATED>??0?$Singleton@VFilesystem@IO@AsuraEngine@@@AsuraEngine@@IEAA@XZ</DECORATED> + <FUNCLINE>33</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>79</LINE> + <COLUMN>21</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::IO::Filesystem>::{ctor}</FUNCTION> + <DECORATED>??0?$LuaxNativeClass@VFilesystem@IO@AsuraEngine@@@Luax@@IEAA@XZ</DECORATED> + <FUNCLINE>79</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>100</LINE> + <COLUMN>32</COLUMN> + </SFA> + <DEFECTCODE>26451</DEFECTCODE> + <DESCRIPTION>Arithmetic overflow: Using operator '+' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '+' to avoid overflow (io.2).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::IO::Filesystem>::LuaxRetain</FUNCTION> + <DECORATED>??$LuaxRetain@VDataBuffer@IO@AsuraEngine@@@?$LuaxNativeClass@VFilesystem@IO@AsuraEngine@@@Luax@@QEAAXAEAVLuaxState@1@PEAVDataBuffer@IO@AsuraEngine@@@Z</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/_thread.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/_thread.nativecodeanalysis.xml new file mode 100644 index 0000000..82cf7f3 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/_thread.nativecodeanalysis.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.h</FILENAME> + <LINE>90</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImpl::{ctor}</FUNCTION> + <DECORATED>??0ThreadImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/compressor.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/compressor.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/compressor.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/coroutine.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/coroutine.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/coroutine.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/curve.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/curve.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/curve.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/data_buffer.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/data_buffer.nativecodeanalysis.xml new file mode 100644 index 0000000..b304bdf --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/data_buffer.nativecodeanalysis.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\io\</FILEPATH> + <FILENAME>data_buffer.cpp</FILENAME> + <LINE>10</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::IO::DataBuffer::mBytes' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::IO::DataBuffer::{ctor}</FUNCTION> + <DECORATED>??0DataBuffer@IO@AsuraEngine@@QEAA@AEAV012@@Z</DECORATED> + <FUNCLINE>10</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\io\</FILEPATH> + <FILENAME>data_buffer.cpp</FILENAME> + <LINE>10</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::IO::DataBuffer::mSize' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::IO::DataBuffer::{ctor}</FUNCTION> + <DECORATED>??0DataBuffer@IO@AsuraEngine@@QEAA@AEAV012@@Z</DECORATED> + <FUNCLINE>10</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>79</LINE> + <COLUMN>21</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::IO::DataBuffer>::{ctor}</FUNCTION> + <DECORATED>??0?$LuaxNativeClass@VDataBuffer@IO@AsuraEngine@@@Luax@@IEAA@XZ</DECORATED> + <FUNCLINE>79</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/decoded_data.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/decoded_data.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/decoded_data.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/exception.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/exception.nativecodeanalysis.xml new file mode 100644 index 0000000..88ba25d --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/exception.nativecodeanalysis.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\exceptions\</FILEPATH> + <FILENAME>exception.cpp</FILENAME> + <LINE>43</LINE> + <COLUMN>13</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Exception::{dtor}</FUNCTION> + <DECORATED>??1Exception@AsuraEngine@@UEAA@XZ</DECORATED> + <FUNCLINE>43</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/file.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/file.nativecodeanalysis.xml new file mode 100644 index 0000000..f60a0ab --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/file.nativecodeanalysis.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>79</LINE> + <COLUMN>21</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::IO::File>::{ctor}</FUNCTION> + <DECORATED>??0?$LuaxNativeClass@VFile@IO@AsuraEngine@@@Luax@@IEAA@XZ</DECORATED> + <FUNCLINE>79</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/file_data.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/file_data.nativecodeanalysis.xml new file mode 100644 index 0000000..eb30e9f --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/file_data.nativecodeanalysis.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>79</LINE> + <COLUMN>21</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::IO::FileData>::{ctor}</FUNCTION> + <DECORATED>??0?$LuaxNativeClass@VFileData@IO@AsuraEngine@@@Luax@@IEAA@XZ</DECORATED> + <FUNCLINE>79</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/file_system.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/file_system.nativecodeanalysis.xml new file mode 100644 index 0000000..16b04cf --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/file_system.nativecodeanalysis.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\io\</FILEPATH> + <FILENAME>file_system.cpp</FILENAME> + <LINE>67</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26444</DEFECTCODE> + <DESCRIPTION>Avoid unnamed objects with custom construction and destruction (es.84).</DESCRIPTION> + <FUNCTION>AsuraEngine::IO::Filesystem::Unmount</FUNCTION> + <DECORATED>?Unmount@Filesystem@IO@AsuraEngine@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z</DECORATED> + <FUNCLINE>58</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/functions.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/functions.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/functions.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/io_task.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/io_task.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/io_task.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/matrix44.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/matrix44.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/matrix44.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/mutex.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/mutex.nativecodeanalysis.xml new file mode 100644 index 0000000..75c9214 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/mutex.nativecodeanalysis.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.cpp</FILENAME> + <LINE>23</LINE> + <COLUMN>9</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::Mutex::{ctor}</FUNCTION> + <DECORATED>??0Mutex@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>23</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.cpp</FILENAME> + <LINE>52</LINE> + <COLUMN>18</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImplWin32::{ctor}</FUNCTION> + <DECORATED>??0MutexImplWin32@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>52</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/ranged_value.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/ranged_value.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/ranged_value.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/stringmap.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/stringmap.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/stringmap.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/thread.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/thread.nativecodeanalysis.xml new file mode 100644 index 0000000..c661cd5 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/thread.nativecodeanalysis.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.h</FILENAME> + <LINE>90</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImpl::{ctor}</FUNCTION> + <DECORATED>??0ThreadImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.cpp</FILENAME> + <LINE>13</LINE> + <COLUMN>10</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::Thread::{ctor}</FUNCTION> + <DECORATED>??0Thread@Threading@AsuraEngine@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z</DECORATED> + <FUNCLINE>13</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.cpp</FILENAME> + <LINE>13</LINE> + <COLUMN>10</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::Threading::Thread::mImpl' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::Thread::{ctor}</FUNCTION> + <DECORATED>??0Thread@Threading@AsuraEngine@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z</DECORATED> + <FUNCLINE>13</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>79</LINE> + <COLUMN>21</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::Threading::Thread>::{ctor}</FUNCTION> + <DECORATED>??0?$LuaxNativeClass@VThread@Threading@AsuraEngine@@@Luax@@IEAA@XZ</DECORATED> + <FUNCLINE>79</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/thread_impl_posix.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/thread_impl_posix.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/thread_impl_posix.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/thread_impl_sdl.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/thread_impl_sdl.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/thread_impl_sdl.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/thread_impl_std.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/thread_impl_std.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/thread_impl_std.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/thread_impl_win32.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/thread_impl_win32.nativecodeanalysis.xml new file mode 100644 index 0000000..e0b1c6b --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/thread_impl_win32.nativecodeanalysis.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.h</FILENAME> + <LINE>90</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImpl::{ctor}</FUNCTION> + <DECORATED>??0ThreadImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread_impl_win32.cpp</FILENAME> + <LINE>16</LINE> + <COLUMN>19</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::Threading::ThreadImplWin32::mHandle' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImplWin32::{ctor}</FUNCTION> + <DECORATED>??0ThreadImplWin32@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>16</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread_impl_win32.cpp</FILENAME> + <LINE>16</LINE> + <COLUMN>19</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImplWin32::{ctor}</FUNCTION> + <DECORATED>??0ThreadImplWin32@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>16</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread_impl_win32.cpp</FILENAME> + <LINE>49</LINE> + <COLUMN>20</COLUMN> + </SFA> + <DEFECTCODE>6258</DEFECTCODE> + <DESCRIPTION>使用 TerminateThread 将不允许进行适当的线程清理。</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImplWin32::Kill</FUNCTION> + <DECORATED>?Kill@ThreadImplWin32@Threading@AsuraEngine@@UEAAXXZ</DECORATED> + <FUNCLINE>47</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/thread_task.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/thread_task.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/thread_task.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/transform.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/transform.nativecodeanalysis.xml new file mode 100644 index 0000000..dcdf088 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/transform.nativecodeanalysis.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS></DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/utils_module.nativecodeanalysis.xml b/build/libs/asura-lib-utils/x64/Debug/utils_module.nativecodeanalysis.xml new file mode 100644 index 0000000..82cf7f3 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/utils_module.nativecodeanalysis.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.h</FILENAME> + <LINE>90</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImpl::{ctor}</FUNCTION> + <DECORATED>??0ThreadImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/x64/Debug/vc.nativecodeanalysis.all.xml b/build/libs/asura-lib-utils/x64/Debug/vc.nativecodeanalysis.all.xml new file mode 100644 index 0000000..34e76e9 --- /dev/null +++ b/build/libs/asura-lib-utils/x64/Debug/vc.nativecodeanalysis.all.xml @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="utf-8"?><DEFECTS><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\exceptions\</FILEPATH> + <FILENAME>exception.cpp</FILENAME> + <LINE>43</LINE> + <COLUMN>13</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Exception::{dtor}</FUNCTION> + <DECORATED>??1Exception@AsuraEngine@@UEAA@XZ</DECORATED> + <FUNCLINE>43</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\io\</FILEPATH> + <FILENAME>file_system.h</FILENAME> + <LINE>105</LINE> + <COLUMN>2</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::IO::Filesystem::mInited' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::IO::Filesystem::{ctor}</FUNCTION> + <DECORATED>??0Filesystem@IO@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>105</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\</FILEPATH> + <FILENAME>singleton.hpp</FILENAME> + <LINE>33</LINE> + <COLUMN>2</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Singleton<AsuraEngine::IO::Filesystem>::{ctor}</FUNCTION> + <DECORATED>??0?$Singleton@VFilesystem@IO@AsuraEngine@@@AsuraEngine@@IEAA@XZ</DECORATED> + <FUNCLINE>33</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>79</LINE> + <COLUMN>21</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::IO::Filesystem>::{ctor}</FUNCTION> + <DECORATED>??0?$LuaxNativeClass@VFilesystem@IO@AsuraEngine@@@Luax@@IEAA@XZ</DECORATED> + <FUNCLINE>79</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\3rd-party\luax\</FILEPATH> + <FILENAME>luax_class.inl</FILENAME> + <LINE>100</LINE> + <COLUMN>32</COLUMN> + </SFA> + <DEFECTCODE>26451</DEFECTCODE> + <DESCRIPTION>Arithmetic overflow: Using operator '+' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '+' to avoid overflow (io.2).</DESCRIPTION> + <FUNCTION>Luax::LuaxNativeClass<AsuraEngine::IO::Filesystem>::LuaxRetain</FUNCTION> + <DECORATED>??$LuaxRetain@VDataBuffer@IO@AsuraEngine@@@?$LuaxNativeClass@VFilesystem@IO@AsuraEngine@@@Luax@@QEAAXAEAVLuaxState@1@PEAVDataBuffer@IO@AsuraEngine@@@Z</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\io\</FILEPATH> + <FILENAME>data_buffer.cpp</FILENAME> + <LINE>10</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::IO::DataBuffer::mBytes' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::IO::DataBuffer::{ctor}</FUNCTION> + <DECORATED>??0DataBuffer@IO@AsuraEngine@@QEAA@AEAV012@@Z</DECORATED> + <FUNCLINE>10</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\io\</FILEPATH> + <FILENAME>file_system.cpp</FILENAME> + <LINE>67</LINE> + <COLUMN>14</COLUMN> + </SFA> + <DEFECTCODE>26444</DEFECTCODE> + <DESCRIPTION>Avoid unnamed objects with custom construction and destruction (es.84).</DESCRIPTION> + <FUNCTION>AsuraEngine::IO::Filesystem::Unmount</FUNCTION> + <DECORATED>?Unmount@Filesystem@IO@AsuraEngine@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z</DECORATED> + <FUNCLINE>58</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.h</FILENAME> + <LINE>90</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImpl::{ctor}</FUNCTION> + <DECORATED>??0ThreadImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.cpp</FILENAME> + <LINE>23</LINE> + <COLUMN>9</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::Mutex::{ctor}</FUNCTION> + <DECORATED>??0Mutex@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>23</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.cpp</FILENAME> + <LINE>52</LINE> + <COLUMN>18</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImplWin32::{ctor}</FUNCTION> + <DECORATED>??0MutexImplWin32@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>52</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.cpp</FILENAME> + <LINE>13</LINE> + <COLUMN>10</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::Thread::{ctor}</FUNCTION> + <DECORATED>??0Thread@Threading@AsuraEngine@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z</DECORATED> + <FUNCLINE>13</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.cpp</FILENAME> + <LINE>13</LINE> + <COLUMN>10</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::Threading::Thread::mImpl' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::Thread::{ctor}</FUNCTION> + <DECORATED>??0Thread@Threading@AsuraEngine@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z</DECORATED> + <FUNCLINE>13</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread_impl_win32.cpp</FILENAME> + <LINE>16</LINE> + <COLUMN>19</COLUMN> + </SFA> + <DEFECTCODE>26495</DEFECTCODE> + <DESCRIPTION>Variable 'AsuraEngine::Threading::ThreadImplWin32::mHandle' is uninitialized. Always initialize a member variable (type.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImplWin32::{ctor}</FUNCTION> + <DECORATED>??0ThreadImplWin32@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>16</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread_impl_win32.cpp</FILENAME> + <LINE>16</LINE> + <COLUMN>19</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImplWin32::{ctor}</FUNCTION> + <DECORATED>??0ThreadImplWin32@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>16</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread_impl_win32.cpp</FILENAME> + <LINE>49</LINE> + <COLUMN>20</COLUMN> + </SFA> + <DEFECTCODE>6258</DEFECTCODE> + <DESCRIPTION>使用 TerminateThread 将不允许进行适当的线程清理。</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImplWin32::Kill</FUNCTION> + <DECORATED>?Kill@ThreadImplWin32@Threading@AsuraEngine@@UEAAXXZ</DECORATED> + <FUNCLINE>47</FUNCLINE> + <PATH></PATH> + </DEFECT></DEFECTS>
\ No newline at end of file diff --git a/build/tests/05-physfs/x64/Debug/main.nativecodeanalysis.xml b/build/tests/05-physfs/x64/Debug/main.nativecodeanalysis.xml new file mode 100644 index 0000000..82cf7f3 --- /dev/null +++ b/build/tests/05-physfs/x64/Debug/main.nativecodeanalysis.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<DEFECTS> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT> + <DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.h</FILENAME> + <LINE>90</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImpl::{ctor}</FUNCTION> + <DECORATED>??0ThreadImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT> +</DEFECTS>
\ No newline at end of file diff --git a/build/tests/05-physfs/x64/Debug/vc.nativecodeanalysis.all.xml b/build/tests/05-physfs/x64/Debug/vc.nativecodeanalysis.all.xml new file mode 100644 index 0000000..55e04e2 --- /dev/null +++ b/build/tests/05-physfs/x64/Debug/vc.nativecodeanalysis.all.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?><DEFECTS><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>mutex.h</FILENAME> + <LINE>39</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::MutexImpl::{ctor}</FUNCTION> + <DECORATED>??0MutexImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>39</FUNCLINE> + <PATH></PATH> + </DEFECT><DEFECT> + <SFA> + <FILEPATH>d:\asura\source\libs\asura-lib-utils\threading\</FILEPATH> + <FILENAME>thread.h</FILENAME> + <LINE>90</LINE> + <COLUMN>3</COLUMN> + </SFA> + <DEFECTCODE>26439</DEFECTCODE> + <DESCRIPTION>This kind of function may not throw. Declare it 'noexcept' (f.6).</DESCRIPTION> + <FUNCTION>AsuraEngine::Threading::ThreadImpl::{ctor}</FUNCTION> + <DECORATED>??0ThreadImpl@Threading@AsuraEngine@@QEAA@XZ</DECORATED> + <FUNCLINE>90</FUNCLINE> + <PATH></PATH> + </DEFECT></DEFECTS>
\ No newline at end of file diff --git a/build/tools/bindingGen/main.cs b/build/tools/bindingGen/main.cs index 700f98c..c9290b8 100644 --- a/build/tools/bindingGen/main.cs +++ b/build/tools/bindingGen/main.cs @@ -57,6 +57,7 @@ namespace {1} {{ LUAX_PREPARE(L, {0}); + return 0; }} "; // {0} 类名 @@ -67,6 +68,7 @@ namespace {1} {{ LUAX_STATE(L); + return 0; }} "; diff --git a/build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt b/build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt index 3656c65..442f839 100644 --- a/build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt +++ b/build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt @@ -8,3 +8,5 @@ D:\Asura\build\tools\bindingGen\obj\Debug\bindingGen.pdb D:\Asura\bin\win64\bindingGen.exe.config D:\Asura\bin\win64\bindingGen.exe D:\Asura\bin\win64\bindingGen.pdb +D:\Asura\bin\win64\bindingGen.exe.CodeAnalysisLog.xml +D:\Asura\bin\win64\bindingGen.exe.lastcodeanalysissucceeded diff --git a/build/tools/bindingGen/obj/Debug/bindingGen.csprojAssemblyReference.cache b/build/tools/bindingGen/obj/Debug/bindingGen.csprojAssemblyReference.cache Binary files differindex d31b6fe..79bd24c 100644 --- a/build/tools/bindingGen/obj/Debug/bindingGen.csprojAssemblyReference.cache +++ b/build/tools/bindingGen/obj/Debug/bindingGen.csprojAssemblyReference.cache diff --git a/build/tools/bindingGen/obj/Debug/bindingGen.exe b/build/tools/bindingGen/obj/Debug/bindingGen.exe Binary files differindex 930d6e4..19029df 100644 --- a/build/tools/bindingGen/obj/Debug/bindingGen.exe +++ b/build/tools/bindingGen/obj/Debug/bindingGen.exe diff --git a/samples/Hello/entities/anim.gameobject.asset b/samples/Hello/entities/anim.gameobject.asset deleted file mode 100644 index 484d982..0000000 --- a/samples/Hello/entities/anim.gameobject.asset +++ /dev/null @@ -1,3 +0,0 @@ -{ - type="gameobject", -}
\ No newline at end of file diff --git a/samples/Hello/entities/player.gameobject.asset b/samples/Hello/entities/player.gameobject.asset deleted file mode 100644 index a0ef6b5..0000000 --- a/samples/Hello/entities/player.gameobject.asset +++ /dev/null @@ -1,15 +0,0 @@ -{ - type="gameobject", - components={ - "/scripts/components/fireball.lua", - "/scripts/components/fly.lua", - "/scripts/components/move.lua", - }, - child_gameobjects={ - ["axe keeper"] = { - components = { - - }, - } - } -}
\ No newline at end of file diff --git a/samples/Hello/prefabs/anim.prefab.asset b/samples/Hello/prefabs/anim.prefab.asset new file mode 100644 index 0000000..203eaac --- /dev/null +++ b/samples/Hello/prefabs/anim.prefab.asset @@ -0,0 +1,3 @@ +{ + type="prefab", +}
\ No newline at end of file diff --git a/samples/Hello/prefabs/player.prefab.asset b/samples/Hello/prefabs/player.prefab.asset new file mode 100644 index 0000000..fb9d34c --- /dev/null +++ b/samples/Hello/prefabs/player.prefab.asset @@ -0,0 +1,22 @@ +{ + type="prefab", + guid=_guid"0825df57da6d66a49a6b6f97d6af6ed8", +-- prefab specified + root=_suid"100100000", + entities = { + ["100100000"] = { + children = { + + } + } + }, + components = { + ["100100200"] = { + guid = _guid"0825df57da6d66a49a6b6f97d6af6ed8", + ["width"] = 10, + ["name"] = "Chai", + ["friend"] = _guid"0825df57da6d66a49a6b6f97d6af6ed8", + ["child"] = _guid"", + } + }, +}
\ No newline at end of file diff --git a/source/3rd-party/Luax/luax_class.hpp b/source/3rd-party/Luax/luax_class.hpp index af52b5f..cfac2a5 100644 --- a/source/3rd-party/Luax/luax_class.hpp +++ b/source/3rd-party/Luax/luax_class.hpp @@ -81,6 +81,10 @@ namespace Luax /// virtual bool PushLuaxMemberRef(LuaxState& state, int refID) { assert(false); return false; }; + virtual bool PushLuaxUserdata(LuaxState& state) { assert(false); return false; }; + virtual bool PushLuaxMemberTable(LuaxState& state) { assert(false); return false; }; + virtual bool PushLuaxRefTable(LuaxState& state) { assert(false); return false; }; + }; /// diff --git a/source/3rd-party/Luax/luax_config.h b/source/3rd-party/Luax/luax_config.h index d95ae8b..0ace00b 100644 --- a/source/3rd-party/Luax/luax_config.h +++ b/source/3rd-party/Luax/luax_config.h @@ -52,8 +52,8 @@ namespace Luax #define LUAX_ENABLE_NATIVE_EXTEND 0 -#define LUAX_ENABLE_PLAIN_CLASS 1 -#define LUAX_ENABLE_PLAIN_ENUM 1 +#define LUAX_ENABLE_PLAIN_CLASS 0 +#define LUAX_ENABLE_PLAIN_ENUM 0 } diff --git a/source/3rd-party/Luax/luax_state.h b/source/3rd-party/Luax/luax_state.h index 20d5189..e9c394a 100644 --- a/source/3rd-party/Luax/luax_state.h +++ b/source/3rd-party/Luax/luax_state.h @@ -193,13 +193,13 @@ namespace Luax //------------------------------------------------------------------------------------------------------------ - private: + protected: friend class LuaxContext; LuaxState(lua_State* state); LuaxState(const LuaxState& state); - ~LuaxState(); + virtual ~LuaxState(); /// /// ζLuaxStateĵַز @@ -258,6 +258,39 @@ namespace Luax #define LUAX_STATE(L) \ Luax::LuaxState& state = Luax::LuaxRuntime::Get().GetLuaxState(L) + //-------------------------------------------------------------------------------------------------------------- + + /// + /// ȷȫluaܹڵ֮صstack״̬ + /// + class LuaxScopedState + : public LuaxState + { + public: + LuaxScopedState(lua_State* state) + : LuaxState(state) + { + mRestoreTop = lua_gettop(mState); + } + LuaxScopedState(const LuaxState& state) + : LuaxState(state) + { + mRestoreTop = lua_gettop(mState); + } + ~LuaxScopedState() + { + if (mState) { + if (lua_gettop(mState) != mRestoreTop) { + lua_settop(mState, mRestoreTop); + } + } + } + private: + void* operator new(size_t); + int mRestoreTop; + + }; + } #endif
\ No newline at end of file diff --git a/source/Asura.Editor/system/file_watcher.h b/source/Asura.Editor/system/file_watcher.h index e69de29..43821da 100644 --- a/source/Asura.Editor/system/file_watcher.h +++ b/source/Asura.Editor/system/file_watcher.h @@ -0,0 +1,517 @@ +// MIT License +// +// Copyright(c) 2017 Thomas Monkman +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#ifndef FILEWATCHER_H +#define FILEWATCHER_H + +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN +#define NOMINMAX +#include <windows.h> +#include <stdlib.h> +#include <stdio.h> +#include <tchar.h> +#include <Pathcch.h> +#include <shlwapi.h> +#endif // WIN32 + +#if __unix__ +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <sys/types.h> +#include <sys/inotify.h> +#include <sys/stat.h> +#include <unistd.h> +#endif // __unix__ + +#include <functional> +#include <atomic> +#include <thread> +#include <mutex> +#include <condition_variable> +#include <utility> +#include <vector> +#include <array> +#include <map> +#include <system_error> +#include <string> +#include <algorithm> +#include <type_traits> +#include <future> +#include <regex> + +namespace filewatch { + enum class Event { + added, + removed, + modified, + renamed_old, + renamed_new + }; + + /** + * \class FileWatch + * + * \brief Watches a folder or file, and will notify of changes via function callback. + * + * \author Thomas Monkman + * + */ + template<class T> + class FileWatch + { + typedef std::basic_string<typename T::value_type, std::char_traits<typename T::value_type>> UnderpinningString; + typedef std::basic_regex<typename T::value_type, std::regex_traits<typename T::value_type>> UnderpinningRegex; + + public: + + FileWatch(T path, UnderpinningRegex pattern, std::function<void(const T& file, const Event event_type)> callback) : + _path(path), + _pattern(pattern), + _callback(callback), + _directory(get_directory(path)) + { + init(); + } + +#if defined _WIN32 && (defined UNICODE || defined _UNICODE) + FileWatch(T path, std::function<void(const T& file, const Event event_type)> callback) : + FileWatch<T>(path, UnderpinningRegex(L".*"), callback) {} +#else // _WIN32 && (UNICODE || _UNICODE) + FileWatch(T path, std::function<void(const T& file, const Event event_type)> callback) : + FileWatch<T>(path, UnderpinningRegex(".*"), callback) {} +#endif + + ~FileWatch() { + destroy(); + } + + FileWatch(const FileWatch<T>& other) : FileWatch<T>(other._path, other._callback) {} + + FileWatch<T>& operator=(const FileWatch<T>& other) + { + if (this == &other) { return *this; } + + destroy(); + _path = other._path; + _callback = other._callback; + _directory = get_directory(other._path); + init(); + return *this; + } + + // Const memeber varibles don't let me implent moves nicely, if moves are really wanted std::unique_ptr should be used and move that. + FileWatch<T>(FileWatch<T>&&) = delete; + FileWatch<T>& operator=(FileWatch<T>&&) & = delete; + + private: + struct PathParts + { + PathParts(T directory, T filename) : directory(directory), filename(filename) {} + T directory; + T filename; + }; + const T _path; + + UnderpinningRegex _pattern; + + static constexpr std::size_t _buffer_size = { 1024 * 256 }; + + // only used if watch a single file + bool _watching_single_file = { false }; + T _filename; + + std::atomic<bool> _destory = { false }; + std::function<void(const T& file, const Event event_type)> _callback; + + std::thread _watch_thread; + + std::condition_variable _cv; + std::mutex _callback_mutex; + std::vector<std::pair<T, Event>> _callback_information; + std::thread _callback_thread; + + std::promise<void> _running; +#ifdef _WIN32 + HANDLE _directory = { nullptr }; + HANDLE _close_event = { nullptr }; + + const DWORD _listen_filters = + FILE_NOTIFY_CHANGE_SECURITY | + FILE_NOTIFY_CHANGE_CREATION | + FILE_NOTIFY_CHANGE_LAST_ACCESS | + FILE_NOTIFY_CHANGE_LAST_WRITE | + FILE_NOTIFY_CHANGE_SIZE | + FILE_NOTIFY_CHANGE_ATTRIBUTES | + FILE_NOTIFY_CHANGE_DIR_NAME | + FILE_NOTIFY_CHANGE_FILE_NAME; + + const std::map<DWORD, Event> _event_type_mapping = { + { FILE_ACTION_ADDED, Event::added }, + { FILE_ACTION_REMOVED, Event::removed }, + { FILE_ACTION_MODIFIED, Event::modified }, + { FILE_ACTION_RENAMED_OLD_NAME, Event::renamed_old }, + { FILE_ACTION_RENAMED_NEW_NAME, Event::renamed_new } + }; +#endif // WIN32 + +#if __unix__ + struct FolderInfo { + int folder; + int watch; + }; + + FolderInfo _directory; + + const std::uint32_t _listen_filters = IN_MODIFY | IN_CREATE | IN_DELETE; + + const static std::size_t event_size = (sizeof(struct inotify_event)); +#endif // __unix__ + + void init() + { +#ifdef _WIN32 + _close_event = CreateEvent(NULL, TRUE, FALSE, NULL); + if (!_close_event) { + throw std::system_error(GetLastError(), std::system_category()); + } +#endif // WIN32 + _callback_thread = std::move(std::thread([this]() { + try { + callback_thread(); + } + catch (...) { + try { + _running.set_exception(std::current_exception()); + } + catch (...) {} // set_exception() may throw too + } + })); + _watch_thread = std::move(std::thread([this]() { + try { + monitor_directory(); + } + catch (...) { + try { + _running.set_exception(std::current_exception()); + } + catch (...) {} // set_exception() may throw too + } + })); + + std::future<void> future = _running.get_future(); + future.get(); //block until the monitor_directory is up and running + } + + void destroy() + { + _destory = true; + _running = std::promise<void>(); +#ifdef _WIN32 + SetEvent(_close_event); +#elif __unix__ + inotify_rm_watch(_directory.folder, _directory.watch); +#endif // __unix__ + _cv.notify_all(); + _watch_thread.join(); + _callback_thread.join(); +#ifdef _WIN32 + CloseHandle(_directory); +#elif __unix__ + close(_directory.folder); +#endif // __unix__ + } + + const PathParts split_directory_and_file(const T& path) const + { + const auto predict = [](typename T::value_type character) { +#ifdef _WIN32 + return character == _T('\\') || character == _T('/'); +#elif __unix__ + return character == '/'; +#endif // __unix__ + }; +#ifdef _WIN32 +#define _UNICODE + const UnderpinningString this_directory = _T("./"); +#elif __unix__ + const UnderpinningString this_directory = "./"; +#endif // __unix__ + + const auto pivot = std::find_if(path.rbegin(), path.rend(), predict).base(); + //if the path is something like "test.txt" there will be no directoy part, however we still need one, so insert './' + const T directory = [&]() { + const auto extracted_directory = UnderpinningString(path.begin(), pivot); + return (extracted_directory.size() > 0) ? extracted_directory : this_directory; + }(); + const T filename = UnderpinningString(pivot, path.end()); + return PathParts(directory, filename); + } + + bool pass_filter(const UnderpinningString& file_path) + { + if (_watching_single_file) { + const UnderpinningString extracted_filename = { split_directory_and_file(file_path).filename }; + //if we are watching a single file, only that file should trigger action + return extracted_filename == _filename; + } + return std::regex_match(file_path, _pattern); + } + +#ifdef _WIN32 + HANDLE get_directory(const T& path) + { + auto file_info = GetFileAttributes(path.c_str()); + + if (file_info == INVALID_FILE_ATTRIBUTES) + { + throw std::system_error(GetLastError(), std::system_category()); + } + _watching_single_file = (file_info & FILE_ATTRIBUTE_DIRECTORY) == false; + + const T watch_path = [this, &path]() { + if (_watching_single_file) + { + const auto parsed_path = split_directory_and_file(path); + _filename = parsed_path.filename; + return parsed_path.directory; + } + else + { + return path; + } + }(); + + HANDLE directory = ::CreateFile( + watch_path.c_str(), // pointer to the file name + FILE_LIST_DIRECTORY, // access (read/write) mode + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, // share mode + NULL, // security descriptor + OPEN_EXISTING, // how to create + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, // file attributes + NULL); // file with attributes to copy + + if (directory == INVALID_HANDLE_VALUE) + { + throw std::system_error(GetLastError(), std::system_category()); + } + return directory; + } + void monitor_directory() + { + std::vector<BYTE> buffer(_buffer_size); + DWORD bytes_returned = 0; + OVERLAPPED overlapped_buffer{ 0 }; + + overlapped_buffer.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); + if (!overlapped_buffer.hEvent) { + std::cerr << "Error creating monitor event" << std::endl; + } + + std::array<HANDLE, 2> handles{ overlapped_buffer.hEvent, _close_event }; + + auto async_pending = false; + _running.set_value(); + do { + std::vector<std::pair<T, Event>> parsed_information; + ReadDirectoryChangesW( + _directory, + buffer.data(), buffer.size(), + TRUE, + _listen_filters, + &bytes_returned, + &overlapped_buffer, NULL); + + async_pending = true; + + switch (WaitForMultipleObjects(2, handles.data(), FALSE, INFINITE)) + { + case WAIT_OBJECT_0: + { + if (!GetOverlappedResult(_directory, &overlapped_buffer, &bytes_returned, TRUE)) { + throw std::system_error(GetLastError(), std::system_category()); + } + async_pending = false; + + if (bytes_returned == 0) { + break; + } + + FILE_NOTIFY_INFORMATION *file_information = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(&buffer[0]); + do + { + UnderpinningString changed_file{ file_information->FileName, file_information->FileNameLength / 2 }; + if (pass_filter(changed_file)) + { + parsed_information.emplace_back(T{ changed_file }, _event_type_mapping.at(file_information->Action)); + } + + if (file_information->NextEntryOffset == 0) { + break; + } + + file_information = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(reinterpret_cast<BYTE*>(file_information) + file_information->NextEntryOffset); + } while (true); + break; + } + case WAIT_OBJECT_0 + 1: + // quit + break; + case WAIT_FAILED: + break; + } + //dispatch callbacks + { + std::lock_guard<std::mutex> lock(_callback_mutex); + _callback_information.insert(_callback_information.end(), parsed_information.begin(), parsed_information.end()); + } + _cv.notify_all(); + } while (_destory == false); + + if (async_pending) + { + //clean up running async io + CancelIo(_directory); + GetOverlappedResult(_directory, &overlapped_buffer, &bytes_returned, TRUE); + } + } +#endif // WIN32 + +#if __unix__ + + bool is_file(const T& path) const + { + struct stat statbuf = {}; + if (stat(path.c_str(), &statbuf) != 0) + { + throw std::system_error(errno, std::system_category()); + } + return S_ISREG(statbuf.st_mode); + } + + FolderInfo get_directory(const T& path) + { + const auto folder = inotify_init(); + if (folder < 0) + { + throw std::system_error(errno, std::system_category()); + } + const auto listen_filters = _listen_filters; + + _watching_single_file = is_file(path); + + const T watch_path = [this, &path]() { + if (_watching_single_file) + { + const auto parsed_path = split_directory_and_file(path); + _filename = parsed_path.filename; + return parsed_path.directory; + } + else + { + return path; + } + }(); + + const auto watch = inotify_add_watch(folder, watch_path.c_str(), IN_MODIFY | IN_CREATE | IN_DELETE); + if (watch < 0) + { + throw std::system_error(errno, std::system_category()); + } + return { folder, watch }; + } + + void monitor_directory() + { + std::vector<char> buffer(_buffer_size); + + _running.set_value(); + while (_destory == false) + { + const auto length = read(_directory.folder, static_cast<void*>(buffer.data()), buffer.size()); + if (length > 0) + { + int i = 0; + std::vector<std::pair<T, Event>> parsed_information; + while (i < length) + { + struct inotify_event *event = reinterpret_cast<struct inotify_event *>(&buffer[i]); // NOLINT + if (event->len) + { + const UnderpinningString changed_file{ event->name }; + if (pass_filter(changed_file)) + { + if (event->mask & IN_CREATE) + { + parsed_information.emplace_back(T{ changed_file }, Event::added); + } + else if (event->mask & IN_DELETE) + { + parsed_information.emplace_back(T{ changed_file }, Event::removed); + } + else if (event->mask & IN_MODIFY) + { + parsed_information.emplace_back(T{ changed_file }, Event::modified); + } + } + } + i += event_size + event->len; + } + //dispatch callbacks + { + std::lock_guard<std::mutex> lock(_callback_mutex); + _callback_information.insert(_callback_information.end(), parsed_information.begin(), parsed_information.end()); + } + _cv.notify_all(); + } + } + } +#endif // __unix__ + + void callback_thread() + { + while (_destory == false) { + std::unique_lock<std::mutex> lock(_callback_mutex); + if (_callback_information.empty() && _destory == false) { + _cv.wait(lock, [this] { return _callback_information.size() > 0 || _destory; }); + } + decltype(_callback_information) callback_information = {}; + std::swap(callback_information, _callback_information); + lock.unlock(); + + for (const auto& file : callback_information) { + if (_callback) { + try + { + _callback(file.first, file.second); + } + catch (const std::exception&) + { + } + } + } + } + } + }; +} +#endif
\ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/binding/_image.cpp b/source/libs/asura-lib-core/graphics/binding/_image.cpp index 7c1034c..b455ad5 100644 --- a/source/libs/asura-lib-core/graphics/binding/_image.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_image.cpp @@ -10,10 +10,13 @@ namespace AsuraEngine LUAX_REGISTRY(Image) { LUAX_REGISTER_METHODS(state, + { "New", _New }, { "Load", _Load }, { "GetWidth", _GetWidth }, { "GetHeight", _GetHeight }, - { "GetSize", _GetSize } + { "GetSize", _GetSize }, + { "GetPixel", _GetPixel }, + { "Render", _Render } ); } @@ -22,33 +25,75 @@ namespace AsuraEngine } - // image:Load() + // image = Image.New() + LUAX_IMPL_METHOD(Image, _New) + { + LUAX_STATE(L); + + Image* image = new Image(); + image->PushLuaxUserdata(state); + return 0; + } + + // successed = image:Load(image_data) LUAX_IMPL_METHOD(Image, _Load) { LUAX_PREPARE(L, Image); + ImageData* imgdata = state.CheckUserdata<ImageData>(2); + bool loaded = self->Load(imgdata); + state.Push(loaded); + return 1; } - // image:GetWidth() + // width = image:GetWidth() LUAX_IMPL_METHOD(Image, _GetWidth) { LUAX_PREPARE(L, Image); + state.Push(self->GetWidth()); + return 1; } - // image:GetHeight() + // height = image:GetHeight() LUAX_IMPL_METHOD(Image, _GetHeight) { LUAX_PREPARE(L, Image); + state.Push(self->GetHeight()); + return 1; } - // image:GetSize() + // w, h = image:GetSize() LUAX_IMPL_METHOD(Image, _GetSize) { LUAX_PREPARE(L, Image); + Math::Vector2u size = self->GetSize(); + state.Push(size.x); + state.Push(size.y); + return 2; + } + + // color32 = image:GetPixel(x, y) + LUAX_IMPL_METHOD(Image, _GetPixel) + { + LUAX_PREPARE(L, Image); + + uint x = state.CheckParam<uint>(2); + uint y = state.CheckParam<uint>(3); + Color32* c32 = new Color32(self->GetPixel(x, y)); + c32->PushLuaxUserdata(state); + return 1; + } + + // image:Render() + LUAX_IMPL_METHOD(Image, _Render) + { + LUAX_PREPARE(L, Image); + + return 0; } } -} +}
\ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/binding/_image_decode_task.cpp b/source/libs/asura-lib-core/graphics/binding/_image_decode_task.cpp new file mode 100644 index 0000000..76b544b --- /dev/null +++ b/source/libs/asura-lib-core/graphics/binding/_image_decode_task.cpp @@ -0,0 +1,21 @@ +#include "../image_decode_task.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(ImageDecodeTask) + { + + } + + LUAX_POSTPROCESS(ImageDecodeTask) + { + + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/binding/_window.cpp b/source/libs/asura-lib-core/graphics/binding/_window.cpp new file mode 100644 index 0000000..fc74d6c --- /dev/null +++ b/source/libs/asura-lib-core/graphics/binding/_window.cpp @@ -0,0 +1,103 @@ +#include "../window.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(Window) + { + LUAX_REGISTER_METHODS(state, + { "Show", _Show }, + { "Hide", _Hide }, + { "SetResolution", _SetResolution }, + { "SetFullScreen", _SetFullScreen }, + { "SetTitle", _SetTitle }, + { "SetWindowStyle", _SetWindowStyle }, + { "Clear", _Clear }, + { "Draw", _Draw }, + { "SwapRenderBuffer", _SwapRenderBuffer } + ); + } + + LUAX_POSTPROCESS(Window) + { + + } + + // window:Show() + LUAX_IMPL_METHOD(Window, _Show) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:Hide() + LUAX_IMPL_METHOD(Window, _Hide) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:SetResolution() + LUAX_IMPL_METHOD(Window, _SetResolution) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:SetFullScreen() + LUAX_IMPL_METHOD(Window, _SetFullScreen) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:SetTitle() + LUAX_IMPL_METHOD(Window, _SetTitle) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:SetWindowStyle() + LUAX_IMPL_METHOD(Window, _SetWindowStyle) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:Clear() + LUAX_IMPL_METHOD(Window, _Clear) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:Draw() + LUAX_IMPL_METHOD(Window, _Draw) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + // window:SwapRenderBuffer() + LUAX_IMPL_METHOD(Window, _SwapRenderBuffer) + { + LUAX_PREPARE(L, Window); + + return 0; + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/image.h b/source/libs/asura-lib-core/graphics/image.h index 0e4ea0a..4c1c7b5 100644 --- a/source/libs/asura-lib-core/graphics/image.h +++ b/source/libs/asura-lib-core/graphics/image.h @@ -10,6 +10,7 @@ #include "texture.h" #include "color.h" +#include "color32.h" #include "image_data.h" #include "render_state.h" @@ -31,6 +32,8 @@ namespace AsuraEngine { public: + LUAX_DECL_FACTORY(SimImage); + Image(); ~Image(); @@ -56,21 +59,21 @@ namespace AsuraEngine private: - ImageData* mImageData; + ImageData* mImageData; + Luax::LuaxMemberRef mImageDataRef; Math::Vector2u mSize; - public: - - LUAX_DECL_FACTORY(SimImage); - + LUAX_DECL_METHOD(_New); LUAX_DECL_METHOD(_Load); LUAX_DECL_METHOD(_GetWidth); LUAX_DECL_METHOD(_GetHeight); LUAX_DECL_METHOD(_GetSize); + LUAX_DECL_METHOD(_GetPixel); + LUAX_DECL_METHOD(_Render); }; - + } } diff --git a/source/libs/asura-lib-core/graphics/window.h b/source/libs/asura-lib-core/graphics/window.h index 0bfd6a1..1b219a2 100644 --- a/source/libs/asura-lib-core/graphics/window.h +++ b/source/libs/asura-lib-core/graphics/window.h @@ -12,15 +12,16 @@ namespace AsuraEngine namespace Graphics { + class WindowImpl; + enum WindowStyle { WINDOW_STYLE_FULLSCREEN = 1 << 1, }; - class WindowImpl; - /// - /// ڣֶ֧രڡڱ༭Ҫ֧֣runnerֻҪһڡͬĿͻʵִ˽ӿڲֶעᵽlua + /// ϷĵڣrunnerֻҪһڡͬĿͻʵִ˽ӿڲֶעᵽlua༭ᵼ࣬ӵ༭ + /// ⴰϡ /// class Window : public RenderTarget @@ -63,6 +64,16 @@ namespace AsuraEngine WindowImpl* mImpl; + LUAX_DECL_METHOD(_Show); + LUAX_DECL_METHOD(_Hide); + LUAX_DECL_METHOD(_SetResolution); + LUAX_DECL_METHOD(_SetFullScreen); + LUAX_DECL_METHOD(_SetTitle); + LUAX_DECL_METHOD(_SetWindowStyle); + LUAX_DECL_METHOD(_Clear); + LUAX_DECL_METHOD(_Draw); + LUAX_DECL_METHOD(_SwapRenderBuffer); + }; using RenderWindow = Window; @@ -71,8 +82,6 @@ namespace AsuraEngine { public: - - }; } diff --git a/source/libs/asura-lib-core/graphics/window_impl_glew.cpp b/source/libs/asura-lib-core/graphics/window_impl_glew.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/graphics/window_impl_glew.cpp diff --git a/source/libs/asura-lib-core/graphics/window_impl_glew.h b/source/libs/asura-lib-core/graphics/window_impl_glew.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/graphics/window_impl_glew.h diff --git a/source/libs/asura-lib-core/graphics/window_impl_glut.cpp b/source/libs/asura-lib-core/graphics/window_impl_glut.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/graphics/window_impl_glut.cpp diff --git a/source/libs/asura-lib-core/graphics/window_impl_glut.h b/source/libs/asura-lib-core/graphics/window_impl_glut.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/graphics/window_impl_glut.h diff --git a/source/libs/asura-lib-core/threading/coroutine.cpp b/source/libs/asura-lib-core/threading/coroutine.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/coroutine.cpp diff --git a/source/libs/asura-lib-core/threading/coroutine.h b/source/libs/asura-lib-core/threading/coroutine.h new file mode 100644 index 0000000..1ac6b21 --- /dev/null +++ b/source/libs/asura-lib-core/threading/coroutine.h @@ -0,0 +1,31 @@ +#ifndef __ASURA_COROUTINE_H__ +#define __ASURA_COROUTINE_H__ + +#include <asura-lib-utils/scripting/portable.hpp> + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// luaЭ̣һЩ + /// + class Coroutine ASURA_FINAL + : public AEScripting::Portable<Coroutine> + { + public: + + LUAX_DECL_FACTORY(Coroutine); + + private: + + LUAX_DECL_METHOD(_New); + LUAX_DECL_METHOD(_Run); + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/source/libs/asura-lib-core/threading/thread.cpp b/source/libs/asura-lib-core/threading/thread.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread.cpp diff --git a/source/libs/asura-lib-core/threading/thread.h b/source/libs/asura-lib-core/threading/thread.h new file mode 100644 index 0000000..f4d3b48 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread.h @@ -0,0 +1,53 @@ +#ifndef __ASURA_THREAD_H__ +#define __ASURA_THREAD_H__ + +#include <queue> +#include <asura-lib-utils/scripting/portable.hpp> + +#include "thread_task.h" + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// ̵߳ľʵ֣ûģһֲԣ + /// 1: win32 + /// 2: posix + /// 3: SDL + /// 4: std::thread + /// + ASURA_ABSTRACT class ThreadImpl + { + public: + + }; + + /// + /// ߳壬ÿ߳άһtask queue + /// + class Thread ASURA_FINAL + : public AEScripting::Portable<Thread> + { + public: + + LUAX_DECL_FACTORY(Thread); + + bool Enqueue(ThreadTask* task); + + private: + + /// + /// С + /// + std::queue<ThreadTask*> mTaskQueue; + + ThreadImpl* mImpl; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/source/libs/asura-lib-core/threading/thread_impl_posix.cpp b/source/libs/asura-lib-core/threading/thread_impl_posix.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_posix.cpp diff --git a/source/libs/asura-lib-core/threading/thread_impl_posix.h b/source/libs/asura-lib-core/threading/thread_impl_posix.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_posix.h diff --git a/source/libs/asura-lib-core/threading/thread_impl_sdl.cpp b/source/libs/asura-lib-core/threading/thread_impl_sdl.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_sdl.cpp diff --git a/source/libs/asura-lib-core/threading/thread_impl_sdl.h b/source/libs/asura-lib-core/threading/thread_impl_sdl.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_sdl.h diff --git a/source/libs/asura-lib-core/threading/thread_impl_std.cpp b/source/libs/asura-lib-core/threading/thread_impl_std.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_std.cpp diff --git a/source/libs/asura-lib-core/threading/thread_impl_std.h b/source/libs/asura-lib-core/threading/thread_impl_std.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_std.h diff --git a/source/libs/asura-lib-core/threading/thread_impl_win32.cpp b/source/libs/asura-lib-core/threading/thread_impl_win32.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_win32.cpp diff --git a/source/libs/asura-lib-core/threading/thread_impl_win32.h b/source/libs/asura-lib-core/threading/thread_impl_win32.h new file mode 100644 index 0000000..5d854cc --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_impl_win32.h @@ -0,0 +1,25 @@ +#ifndef __ASURA_THREAD_WIN32_H__ +#define __ASURA_THREAD_WIN32_H__ + +#include "../core_config.h" + +#include "thread.h" + +#if ASURA_THREAD_WIN32 + +namespace AsuraEngine +{ + namespace Threading + { + + class ThreadImplWin32 : public ThreadImpl + { + + }; + + } +} + +#endif // #if ASURA_THREAD_WIN32 + +#endif
\ No newline at end of file diff --git a/source/libs/asura-lib-core/threading/thread_task.cpp b/source/libs/asura-lib-core/threading/thread_task.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_task.cpp diff --git a/source/libs/asura-lib-core/threading/thread_task.h b/source/libs/asura-lib-core/threading/thread_task.h new file mode 100644 index 0000000..19eb113 --- /dev/null +++ b/source/libs/asura-lib-core/threading/thread_task.h @@ -0,0 +1,25 @@ +#ifndef __ASURA_THRAD_TASK_H__ +#define __ASURA_THRAD_TASK_H__ + +#include <asura-lib-utils/type.h> + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// ϣһ̴̳߳TaskдExecute + /// + ASURA_ABSTRACT class ThreadTask + { + public: + + virtual bool Execute() = 0; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/io/binding/_io_task.cpp b/source/libs/asura-lib-utils/io/binding/_io_task.cpp new file mode 100644 index 0000000..c03ff2a --- /dev/null +++ b/source/libs/asura-lib-utils/io/binding/_io_task.cpp @@ -0,0 +1,36 @@ +#include "../io_task.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace IO + { + + LUAX_REGISTRY(IOTask) + { + LUAX_REGISTER_METHODS(state, + { "New", _New } + ); + } + + LUAX_POSTPROCESS(IOTask) + { + + } + + // task = IOTask.New(path, dst) + LUAX_IMPL_METHOD(IOTask, _New) + { + LUAX_STATE(L); + + cc8* path = state.CheckParam<cc8*>(1); + DataBuffer* db = state.CheckUserdata<DataBuffer>(2); + IOTask* task = new IOTask(path, db); + task->PushLuaxUserdata(state); + task->SetLuaxMemberRef(state, task->mDstRef, 2); + return 1; + } + + } +} diff --git a/source/libs/asura-lib-utils/io/data_buffer.cpp b/source/libs/asura-lib-utils/io/data_buffer.cpp index 3c0100b..000869d 100644 --- a/source/libs/asura-lib-utils/io/data_buffer.cpp +++ b/source/libs/asura-lib-utils/io/data_buffer.cpp @@ -2,6 +2,8 @@ #include <cstring> #include "data_buffer.h" +using namespace AEThreading; + namespace AsuraEngine { namespace IO @@ -16,6 +18,7 @@ namespace AsuraEngine : mSize(size) , mBytes(nullptr) { + lock(mMutex); mBytes = new byte[size]; memset(mBytes, 0, size); } @@ -34,6 +37,7 @@ namespace AsuraEngine void DataBuffer::Refactor(size_t size) { + lock(mMutex); if (!mBytes || mSize != size) { delete[] mBytes; @@ -50,6 +54,7 @@ namespace AsuraEngine size_t DataBuffer::Load(const void* data, std::size_t size) { + lock(mMutex); size_t len = mSize > size ? size : mSize; memcpy(mBytes, data, len); return len; @@ -57,6 +62,7 @@ namespace AsuraEngine void DataBuffer::Move(void* bytes, std::size_t size) { + lock(mMutex); if (!mBytes) { delete[] mBytes; @@ -72,10 +78,11 @@ namespace AsuraEngine void DataBuffer::Clear() { + lock(mMutex); if (mBytes) memset(mBytes, 0, mSize); } - + std::size_t DataBuffer::GetSize() { return mSize; diff --git a/source/libs/asura-lib-utils/io/data_buffer.h b/source/libs/asura-lib-utils/io/data_buffer.h index c63a248..9dfe541 100644 --- a/source/libs/asura-lib-utils/io/data_buffer.h +++ b/source/libs/asura-lib-utils/io/data_buffer.h @@ -4,6 +4,7 @@ #include <cstdlib> #include "../scripting/portable.hpp" +#include "../threading/mutex.h" namespace AsuraEngine { @@ -39,6 +40,8 @@ namespace AsuraEngine byte* mBytes; size_t mSize; + AEThreading::Mutex mMutex; + LUAX_DECL_METHOD(_New); LUAX_DECL_METHOD(_GetData); LUAX_DECL_METHOD(_GetSize); diff --git a/source/libs/asura-lib-utils/io/file.h b/source/libs/asura-lib-utils/io/file.h index 4a6d38b..56077e0 100644 --- a/source/libs/asura-lib-utils/io/file.h +++ b/source/libs/asura-lib-utils/io/file.h @@ -4,6 +4,7 @@ #include "physfs/physfs.h" #include "../scripting/portable.hpp" +#include "../threading/thread.h" #include "file_data.h" @@ -58,6 +59,7 @@ namespace AsuraEngine /// size_t Read(ASURA_OUT DataBuffer* dst, size_t length); size_t ReadAll(ASURA_OUT DataBuffer* dst); + size_t ReadAsync(ASURA_OUT DataBuffer* dst); /// /// Ƿļβ @@ -70,6 +72,11 @@ namespace AsuraEngine bool Write(ASURA_REF DataBuffer* src); /// + /// 첽дļдļtaskthreadĶС + /// + bool WriteAsync(ASURA_REF DataBuffer* src, AEThreading::Thread* thread); + + /// /// ˻壬ǿջдļ /// bool Flush(); @@ -118,8 +125,10 @@ namespace AsuraEngine LUAX_DECL_METHOD(_GetMode); LUAX_DECL_METHOD(_GetSize); LUAX_DECL_METHOD(_Read); - LUAX_DECL_METHOD(_IsEOF); LUAX_DECL_METHOD(_Write); + LUAX_DECL_METHOD(_ReadAsync); + LUAX_DECL_METHOD(_WriteAsync); + LUAX_DECL_METHOD(_IsEOF); LUAX_DECL_METHOD(_Flush); LUAX_DECL_METHOD(_Tell); LUAX_DECL_METHOD(_Seek); diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp index e69de29..a96c293 100644 --- a/source/libs/asura-lib-utils/io/io_task.cpp +++ b/source/libs/asura-lib-utils/io/io_task.cpp @@ -0,0 +1,29 @@ +#include "io_task.h" + +namespace AsuraEngine +{ + namespace IO + { + + IOTask::IOTask(const std::string& path, DataBuffer* buffer) + : mPath(path) + , mDst(buffer) + { + } + + IOTask::~IOTask() + { + } + + bool IOTask::Execute() + { + return true; + } + + void IOTask::Invoke() + { + + } + + } +} diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h index b91a88c..aa5b38e 100644 --- a/source/libs/asura-lib-utils/io/io_task.h +++ b/source/libs/asura-lib-utils/io/io_task.h @@ -16,7 +16,7 @@ namespace AsuraEngine /// /// ȡļ /// - class IOTask + class IOTask ASURA_FINAL : public AEScripting::Portable<IOTask> , public AEThreading::ThreadTask { @@ -24,13 +24,21 @@ namespace AsuraEngine LUAX_DECL_FACTORY(IOTask); + IOTask(const std::string& path, DataBuffer* buffer); + ~IOTask(); + bool Execute() override ; + void Invoke() override; private: std::string mPath; DataBuffer* mDst; + Luax::LuaxMemberRef mDstRef; + + LUAX_DECL_METHOD(_New); + }; } diff --git a/source/libs/asura-lib-utils/math/quaternion.cpp b/source/libs/asura-lib-utils/math/quaternion.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-utils/math/quaternion.cpp diff --git a/source/libs/asura-lib-utils/math/quaternion.h b/source/libs/asura-lib-utils/math/quaternion.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-utils/math/quaternion.h diff --git a/source/libs/asura-lib-utils/threading/binding/_coroutine.cpp b/source/libs/asura-lib-utils/threading/binding/_coroutine.cpp new file mode 100644 index 0000000..7f74cca --- /dev/null +++ b/source/libs/asura-lib-utils/threading/binding/_coroutine.cpp @@ -0,0 +1,40 @@ +#include "../coroutine.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Threading + { + + LUAX_REGISTRY(Coroutine) + { + LUAX_REGISTER_METHODS(state, + { "New", _New }, + { "Run", _Run } + ); + } + + LUAX_POSTPROCESS(Coroutine) + { + + } + + // Coroutine.New() + LUAX_IMPL_METHOD(Coroutine, _New) + { + LUAX_STATE(L); + + return 0; + } + + // coroutine:Run() + LUAX_IMPL_METHOD(Coroutine, _Run) + { + LUAX_PREPARE(L, Coroutine); + + return 0; + } + + } +} diff --git a/source/libs/asura-lib-utils/threading/binding/_thread.cpp b/source/libs/asura-lib-utils/threading/binding/_thread.cpp new file mode 100644 index 0000000..9f6d228 --- /dev/null +++ b/source/libs/asura-lib-utils/threading/binding/_thread.cpp @@ -0,0 +1,104 @@ +#include "../thread.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Threading + { + + LUAX_REGISTRY(Thread) + { + LUAX_REGISTER_METHODS(state, + { "New", _New }, + { "Start", _Start }, + { "Join", _Join }, + { "Kill", _Kill }, + { "AddTask", _AddTask }, + { "IsRunning", _IsRunning }, + { "IsCurrent", _IsCurrent }, + { "GetName", _GetName } + ); + } + + LUAX_POSTPROCESS(Thread) + { + + } + + // thread = Thread.New(name) + LUAX_IMPL_METHOD(Thread, _New) + { + LUAX_STATE(L); + + cc8* name = state.GetValue<cc8*>(1, ""); + + Thread* thread = new Thread(name); + thread->PushLuaxUserdata(state); + + return 1; + } + + // thread:Start() + LUAX_IMPL_METHOD(Thread, _Start) + { + LUAX_PREPARE(L, Thread); + self->Start(); + return 0; + } + + // thread:Join() + LUAX_IMPL_METHOD(Thread, _Join) + { + LUAX_PREPARE(L, Thread); + self->Join(); + return 0; + } + + // thread:Kill() + LUAX_IMPL_METHOD(Thread, _Kill) + { + LUAX_PREPARE(L, Thread); + self->Kill(); + return 0; + } + + // successed = thread:AddTask(thread_task) + LUAX_IMPL_METHOD(Thread, _AddTask) + { + LUAX_PREPARE(L, Thread); + + ThreadTask* task = state.GetUserdata<ThreadTask>(2); + self->AddTask(task); + self->LuaxRetain<ThreadTask>(state, task); + return 0; + } + + // thread:IsRunning() + LUAX_IMPL_METHOD(Thread, _IsRunning) + { + LUAX_PREPARE(L, Thread); + + state.Push(self->IsRunning()); + return 0; + } + + // thread:IsCurrent() + LUAX_IMPL_METHOD(Thread, _IsCurrent) + { + LUAX_PREPARE(L, Thread); + + state.Push(self->IsCurrent()); + return 0; + } + + // thread:GetName() + LUAX_IMPL_METHOD(Thread, _GetName) + { + LUAX_PREPARE(L, Thread); + + return 0; + } + + } +} diff --git a/source/libs/asura-lib-utils/threading/coroutine.h b/source/libs/asura-lib-utils/threading/coroutine.h index 1ac6b21..75d9a10 100644 --- a/source/libs/asura-lib-utils/threading/coroutine.h +++ b/source/libs/asura-lib-utils/threading/coroutine.h @@ -28,4 +28,6 @@ namespace AsuraEngine } } +namespace AEThreading = AsuraEngine::Threading; + #endif
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/mutex.cpp b/source/libs/asura-lib-utils/threading/mutex.cpp index e69de29..e0b6e1e 100644 --- a/source/libs/asura-lib-utils/threading/mutex.cpp +++ b/source/libs/asura-lib-utils/threading/mutex.cpp @@ -0,0 +1,81 @@ +#include <asura-lib-utils/exceptions/exception.h> + +#include "mutex.h" + +namespace AsuraEngine +{ + namespace Threading + { + +#define try_create_mutex(impl)\ + if (!mImpl) \ + { \ + try \ + { \ + mImpl = new impl(); \ + } \ + catch (Exception& e) \ + { \ + mImpl = nullptr; \ + } \ + } + + Mutex::Mutex() + : mImpl(nullptr) + { +#if ASURA_THREAD_WIN32 + try_create_mutex(MutexImplWin32); +#endif + ASSERT(mImpl); + } + + Mutex::~Mutex() + { + delete mImpl; + } + + void Mutex::Lock() + { + ASSERT(mImpl); + + mImpl->Lock(); + } + + void Mutex::Unlock() + { + ASSERT(mImpl); + + mImpl->Unlock(); + } + +#if ASURA_THREAD_WIN32 + MutexImplWin32::MutexImplWin32() + { + //mHandle = ::CreateMutex(NULL, FALSE, NULL); + //if (!mHandle) + // throw Exception("Cant use win32 mutex."); + ::InitializeCriticalSection(&mMutex); + } + + MutexImplWin32::~MutexImplWin32() + { + //::CloseHandle(mHandle); + //mHandle = NULL; + ::DeleteCriticalSection(&mMutex); + } + + void MutexImplWin32::Lock() + { + //::WaitForSingleObject(mHandle, INFINITE); + ::EnterCriticalSection(&mMutex); + } + + void MutexImplWin32::Unlock() + { + //::ReleaseMutex(mHandle); + ::LeaveCriticalSection(&mMutex); + } +#endif // ASURA_THREAD_WIN32 + + } +} diff --git a/source/libs/asura-lib-utils/threading/mutex.h b/source/libs/asura-lib-utils/threading/mutex.h index 893c6e5..5ed45ae 100644 --- a/source/libs/asura-lib-utils/threading/mutex.h +++ b/source/libs/asura-lib-utils/threading/mutex.h @@ -1,21 +1,105 @@ #ifndef __ASURA_MUTEX_H__ #define __ASURA_MUTEX_H__ +#include <asura-lib-utils/type.h> + +#include "../utils_config.h" + +#if ASURA_THREAD_WIN32 + #include <windows.h> +#endif + namespace AsuraEngine { namespace Threading { + class MutexImpl; + class Mutex { public: + Mutex(); + ~Mutex(); + void Lock(); void Unlock(); + private: + + MutexImpl* mImpl; + + }; + + class Lock + { + public: + Lock(Mutex& mutex) + : m(mutex) + { + m.Lock(); + }; + ~Lock() + { + m.Unlock(); + } + private: + void* operator new(size_t); + Mutex& m; + }; + +#define lock(mutex) Lock _asura_scoped_lock_0x0_(mutex) +#define lock2(mutex) Lock _asura_scoped_lock_0x1_(mutex) +#define lock3(mutex) Lock _asura_scoped_lock_0x2_(mutex) +#define lock4(mutex) Lock _asura_scoped_lock_0x3_(mutex) +#define lock5(mutex) Lock _asura_scoped_lock_0x4_(mutex) + + ASURA_ABSTRACT class MutexImpl + { + public: + + MutexImpl() {}; + virtual ~MutexImpl() {}; + + virtual void Lock() = 0; + virtual void Unlock() = 0; + + }; + +#if ASURA_THREAD_WIN32 + + //https://blog.csdn.net/l799623787/article/details/18259949 + class MutexImplWin32 ASURA_FINAL : public MutexImpl + { + public: + + MutexImplWin32(); + ~MutexImplWin32(); + + void Lock() override; + void Unlock() override; + + private: + + //HANDLE mHandle; + CRITICAL_SECTION mMutex; + }; +#endif // ASURA_THREAD_WIN32 + +#if ASURA_THREAD_STD + + class MutexImplSTD ASURA_FINAL : public MutexImpl + { + }; + +#endif // ASURA_THREAD_STD + } } +namespace AEThreading = AsuraEngine::Threading; + #endif
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread.cpp b/source/libs/asura-lib-utils/threading/thread.cpp index c77f3ab..d1b055d 100644 --- a/source/libs/asura-lib-utils/threading/thread.cpp +++ b/source/libs/asura-lib-utils/threading/thread.cpp @@ -1,13 +1,92 @@ #include "thread.h" +#include "thread_impl_win32.h" +#include "thread_impl_posix.h" +#include "thread_impl_sdl.h" +#include "thread_impl_std.h" + namespace AsuraEngine { namespace Threading { - bool Thread::Enqueue(ThreadTask* task) + Thread::Thread(const std::string& name) + : mName(name) + { + } + + Thread::~Thread() + { + delete mImpl; + } + +#define try_start_thread(impl)\ + if (!mImpl) \ + { \ + mImpl = new impl(); \ + if (!mImpl->Start(this, stacksize)) \ + { \ + delete mImpl; \ + mImpl = nullptr; \ + } \ + } + + bool Thread::AddTask(ThreadTask* task) + { + mTaskQueue.push(task); + return true; + } + + void Thread::Start(uint32 stacksize) + { +#if ASURA_THREAD_WIN32 + try_start_thread(ThreadImplWin32); +#endif + + assert(mImpl); + } + + void Thread::Join() + { + assert(mImpl); + mImpl->Join(); + } + + void Thread::Kill() + { + assert(mImpl); + mImpl->Kill(); + } + + bool Thread::IsRunning() + { + assert(mImpl); + return mImpl->IsRunning(); + } + + bool Thread::IsCurrent() + { + assert(mImpl); + return mImpl->IsCurrent(); + } + + const std::string& Thread::GetName() + { + return mName; + } + + void Thread::Execute() { + while (!mTaskQueue.empty()) + { + ThreadTask* task = mTaskQueue.front(); + if (task->Execute()) + task->Invoke(); + mMutex.Lock(); + mTaskQueue.pop(); + mMutex.Unlock(); + } } } diff --git a/source/libs/asura-lib-utils/threading/thread.h b/source/libs/asura-lib-utils/threading/thread.h index 0058144..24b549c 100644 --- a/source/libs/asura-lib-utils/threading/thread.h +++ b/source/libs/asura-lib-utils/threading/thread.h @@ -1,10 +1,13 @@ #ifndef __ASURA_THREAD_H__ #define __ASURA_THREAD_H__ +#include <string> #include <queue> + #include <asura-lib-utils/scripting/portable.hpp> #include "thread_task.h" +#include "mutex.h" namespace AsuraEngine { @@ -23,21 +26,55 @@ namespace AsuraEngine LUAX_DECL_FACTORY(Thread); - bool Enqueue(ThreadTask* task); + Thread(const std::string& name = ""); + ~Thread(); + + bool AddTask(ThreadTask* task); + + void Start(uint32 stacksize = 0); + + /// + /// ǿֹ̡߳עҪnewdeleteִ֮TerminateThreadڼʹnewˡ + /// https://blog.csdn.net/anye3000/article/details/7470674 + /// + void Kill(); + + /// + /// ̵߳ȴ߳̽żִС + /// + void Join(); + + bool IsRunning(); - void Run(); + bool IsCurrent(); + + /// + /// ִС + /// + void Execute(); + + const std::string& GetName(); private: + LUAX_DECL_METHOD(_New); + LUAX_DECL_METHOD(_Start); + LUAX_DECL_METHOD(_Join); + LUAX_DECL_METHOD(_Kill); + LUAX_DECL_METHOD(_AddTask); + LUAX_DECL_METHOD(_IsRunning); + LUAX_DECL_METHOD(_IsCurrent); + LUAX_DECL_METHOD(_GetName); + /// - /// С + /// С /// std::queue<ThreadTask*> mTaskQueue; - ThreadImpl* mImpl; + Mutex mMutex; - LUAX_DECL_METHOD(_Enqueue); - LUAX_DECL_METHOD(_Run); + ThreadImpl* mImpl; + std::string mName; }; @@ -51,6 +88,15 @@ namespace AsuraEngine ASURA_ABSTRACT class ThreadImpl { public: + ThreadImpl() {}; + virtual ~ThreadImpl() {}; + + virtual bool Start(Thread* thread, uint32 stacksize = 0) = 0; + virtual void Join() = 0; + virtual void Kill() = 0; + + virtual bool IsRunning() = 0; + virtual bool IsCurrent() = 0; }; diff --git a/source/libs/asura-lib-utils/threading/thread_impl_std.h b/source/libs/asura-lib-utils/threading/thread_impl_std.h index e69de29..0e7d3da 100644 --- a/source/libs/asura-lib-utils/threading/thread_impl_std.h +++ b/source/libs/asura-lib-utils/threading/thread_impl_std.h @@ -0,0 +1,43 @@ +#ifndef __ASURA_THREAD_STD_H__ +#define __ASURA_THREAD_STD_H__ + +#include "../utils_config.h" + +#if ASURA_THREAD_STD + +#include <windows.h> + +#include "thread.h" + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// Threadstd::threadʵ֡ + /// + class ThreadImplSTD : public ThreadImpl + { + public: + + ThreadImplSTD(); + ~ThreadImplSTD(); + + bool Start(Thread* thread, uint32 stacksize) override; + void Join() override; + void Kill() override; + + bool IsRunning() override; + bool IsCurrent() override; + + private: + + }; + + } +} + +#endif // #if ASURA_THREAD_STD + +#endif // __ASURA_THREAD_STD_H__
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp b/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp index e69de29..fd1b066 100644 --- a/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp +++ b/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp @@ -0,0 +1,69 @@ +#include "thread_impl_win32.h" +#include "thread.h" + +namespace AsuraEngine +{ + namespace Threading + { + + static DWORD WINAPI _thread_win32_runner(LPVOID param) + { + Thread* thread = (Thread*)param; + thread->Execute(); + return 0; + } + + ThreadImplWin32::ThreadImplWin32() + { + } + + ThreadImplWin32::~ThreadImplWin32() + { + if (!mHandle) return; + ::CloseHandle(mHandle); + mHandle = 0; + } + + bool ThreadImplWin32::Start(Thread* thread, uint32 stacksize/*=0*/) + { + assert(!IsRunning()); + mHandle = ::CreateThread( + NULL + , stacksize + , _thread_win32_runner + , thread + , 0 /*е*/ + , NULL); + + return mHandle; + } + + void ThreadImplWin32::Join() + { + // ̵߳ȴ̷߳ + ::WaitForSingleObject(mHandle, INFINITE); + } + + void ThreadImplWin32::Kill() + { + ::TerminateThread(mHandle, FALSE); + } + + bool ThreadImplWin32::IsRunning() + { + if (mHandle) { + DWORD exitCode = 0; + // https://blog.csdn.net/yuanmeng567/article/details/19485719 + ::GetExitCodeThread(mHandle, &exitCode); + return exitCode == STILL_ACTIVE; + } + return false; + } + + bool ThreadImplWin32::IsCurrent() + { + return mHandle == ::GetCurrentThread(); + } + + } +}
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.h b/source/libs/asura-lib-utils/threading/thread_impl_win32.h index 3dd2a8e..361152f 100644 --- a/source/libs/asura-lib-utils/threading/thread_impl_win32.h +++ b/source/libs/asura-lib-utils/threading/thread_impl_win32.h @@ -6,6 +6,7 @@ #if ASURA_THREAD_WIN32 #include <windows.h> + #include "thread.h" namespace AsuraEngine @@ -20,6 +21,16 @@ namespace AsuraEngine { public: + ThreadImplWin32(); + ~ThreadImplWin32(); + + bool Start(Thread* thread, uint32 stacksize) override; + void Join() override; + + void Kill() override; + + bool IsRunning() override; + bool IsCurrent() override; private: @@ -32,4 +43,4 @@ namespace AsuraEngine #endif // #if ASURA_THREAD_WIN32 -#endif
\ No newline at end of file +#endif // __ASURA_THREAD_WIN32_H__
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread_task.h b/source/libs/asura-lib-utils/threading/thread_task.h index 35e159c..1ea0a1a 100644 --- a/source/libs/asura-lib-utils/threading/thread_task.h +++ b/source/libs/asura-lib-utils/threading/thread_task.h @@ -2,6 +2,7 @@ #define __ASURA_THRAD_TASK_H__ #include <asura-lib-utils/type.h> +#include <asura-lib-utils/scripting/portable.hpp> namespace AsuraEngine { @@ -11,12 +12,28 @@ namespace AsuraEngine /// /// ϣһ̴̳߳TaskдExecute /// - ASURA_ABSTRACT class ThreadTask + ASURA_ABSTRACT class ThreadTask + : virtual public AEScripting::NativeAccessor { public: + ThreadTask(); + virtual ~ThreadTask(); + + /// + /// ִɺtrueûص + /// virtual bool Execute() = 0; + /// + /// ûص + /// + virtual void Invoke() = 0; + + protected: + + Luax::LuaxMemberRef mCallback; + }; } diff --git a/source/libs/asura-lib-utils/utils_config.h b/source/libs/asura-lib-utils/utils_config.h index 836eb07..d5208d5 100644 --- a/source/libs/asura-lib-utils/utils_config.h +++ b/source/libs/asura-lib-utils/utils_config.h @@ -2,5 +2,6 @@ #define __ASURA_UTILS_CONFIG_H__ #define ASURA_THREAD_WIN32 1 +#define ASURA_THREAD_STD 1 #endif
\ No newline at end of file |