1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-07 19:18:19 +02:00

Fixed fully qualified generic lookup

This commit is contained in:
Brian Fiete 2022-06-29 15:17:04 -07:00
parent 3b711932ec
commit 8aa58b3804
3 changed files with 67 additions and 14 deletions

View file

@ -138,9 +138,7 @@ void TestMem()
char* mem = (char*)::VirtualAlloc(0, 4096 * 2, MEM_RESERVE, PAGE_READWRITE);
::VirtualAlloc(mem, 4096, MEM_COMMIT, PAGE_READWRITE);
char* str = "Hey";
char* cPtr = mem + 4096 - 3;
memcpy(cPtr, str, 3);
}
void Test6()
@ -163,10 +161,41 @@ void Test3(int a)
Test4(100, 200, 300);
}
#pragma pack(1)
class TestStruct
{
public:
int mA;
int mB;
int mC;
int mD;
};
enum EnumVal
{
EnumVal_A,
EnumVal_B,
EnumVal_C
};
struct Color
{
float r, g, b, a;
};
// THIS IS VERSION 6.
extern "C"
__declspec(dllexport) void Test2(int aa, int bb, int cc, int dd)
__declspec(dllexport) void Test2(int aa, int bb, int cc, int dd, Color func(int a, int b))
{
Color clr = func(100, 200);
EnumVal ev = EnumVal_A;
TestStruct ts;
ts.mA = 123;
ts.mB = 234;
int a = 1234;
for (int i = 0; i < 100; i++)
@ -174,9 +203,7 @@ __declspec(dllexport) void Test2(int aa, int bb, int cc, int dd)
a++;
}
Test3(10);
char* strP = "Hey yo";
Test3(10);
TestMem();

View file

@ -22,32 +22,32 @@
<ProjectGuid>{14700A80-0FC4-4A3D-99EF-8B78D4B070F1}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>TestDLL</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
@ -104,7 +104,7 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>\Beef\BeefySysLib;\Beef\BeefySysLib\third_party</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>\Beef\BeefySysLib;\Beef\BeefySysLib\third_party;C:\temp\Chipmunk-7.0.3\include</AdditionalIncludeDirectories>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
<Link>
@ -112,7 +112,8 @@
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
</Link>
<PostBuildEvent>
<Command>copy C:\Beef\BeefTools\TestDLL\x64\Debug\TestDLL.dll c:\beef\ide\mintest\build\release_win64\mintest</Command>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -152,6 +153,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="demo.c" />
<ClCompile Include="TestDLL.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

View file

@ -21,6 +21,11 @@ namespace Hey.Dude.Bro
}
}
struct Color
{
public float r, g, b, a;
}
class TestClass
{
/*static void TestFunc()
@ -37,8 +42,27 @@ namespace Hey.Dude.Bro
}*/
//private const uint16[] DebugIndexes = scope uint16[](0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6, 5, 6, 7);
[Import(@"C:\Beef\BeefTools\TestDLL\x64\Debug\TestDLL.dll"), LinkName("Test2")]
public static extern void Test2(int32 a, int32 b, int32 c, int32 d, function Color(int32 a, int32 b) func);
public static Color GetColor(int32 a, int32 b)
{
Color c;
c.r = 1.2f;
c.g = 2.3f;
c.b = 3.4f;
c.a = 4.5f;
return c;
}
public static int Main(String[] args)
{
Test2(1, 2, 3, 4, => GetColor);
//Blurg.Hey();
return 1;
}