Răsfoiți Sursa

Fixed fully qualified generic lookup

Brian Fiete 3 ani în urmă
părinte
comite
8aa58b3804
3 a modificat fișierele cu 67 adăugiri și 14 ștergeri
  1. 34 7
      BeefTools/TestDLL/TestDLL.cpp
  2. 9 7
      BeefTools/TestDLL/TestDLL.vcxproj
  3. 24 0
      IDE/mintest/src/main.bf

+ 34 - 7
BeefTools/TestDLL/TestDLL.cpp

@@ -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();
 

+ 9 - 7
BeefTools/TestDLL/TestDLL.vcxproj

@@ -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" />

+ 24 - 0
IDE/mintest/src/main.bf

@@ -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;
 		}