summaryrefslogtreecommitdiff
path: root/src/Plugins/Food/Burger/Burger.cpp
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2023-07-10 02:10:20 +0100
committerAsh Wolf <ninji@wuffs.org>2023-07-10 02:10:20 +0100
commit0f3cba6fcea0ffd511dfe3275d57a5b9e69be5be (patch)
tree7f9caca3a050552001e87fe5b6bf7d7149afaf1c /src/Plugins/Food/Burger/Burger.cpp
parentbd99f088a53686119c9bbfc0baf34128cd0eda2f (diff)
downloadt2win-0f3cba6fcea0ffd511dfe3275d57a5b9e69be5be.tar.gz
t2win-0f3cba6fcea0ffd511dfe3275d57a5b9e69be5be.zip
build a barely-tested Burger plugin
Diffstat (limited to 'src/Plugins/Food/Burger/Burger.cpp')
-rw-r--r--src/Plugins/Food/Burger/Burger.cpp63
1 files changed, 56 insertions, 7 deletions
diff --git a/src/Plugins/Food/Burger/Burger.cpp b/src/Plugins/Food/Burger/Burger.cpp
index e18f508..2e9f301 100644
--- a/src/Plugins/Food/Burger/Burger.cpp
+++ b/src/Plugins/Food/Burger/Burger.cpp
@@ -1,5 +1,9 @@
+// Burger.cpp : Defines the initialization routines for the DLL.
+//
+
+#include "stdafx.h"
#include "Burger.h"
-#include "T2PluginSpecifier.h"
+#include "../../../T2DLL/T2PluginSpecifier.h"
#include "../Common/FoodDef.h"
#include "../Common/FoodPlugin.h"
@@ -9,27 +13,70 @@
static char THIS_FILE[] = __FILE__;
#endif
+//
+// Note!
+//
+// If this DLL is dynamically linked against the MFC
+// DLLs, any functions exported from this DLL which
+// call into MFC must have the AFX_MANAGE_STATE macro
+// added at the very beginning of the function.
+//
+// For example:
+//
+// extern "C" BOOL PASCAL EXPORT ExportedFunction()
+// {
+// AFX_MANAGE_STATE(AfxGetStaticModuleState());
+// // normal function body here
+// }
+//
+// It is very important that this macro appear in each
+// function, prior to any calls into MFC. This means that
+// it must appear as the first statement within the
+// function, even before any object variable declarations
+// as their constructors may generate calls into the MFC
+// DLL.
+//
+// Please see MFC Technical Notes 33 and 58 for additional
+// details.
+//
+
+/////////////////////////////////////////////////////////////////////////////
+// CBurgerApp
+
BEGIN_MESSAGE_MAP(CBurgerApp, CWinApp)
+ //{{AFX_MSG_MAP(CBurgerApp)
+ // NOTE - the ClassWizard will add and remove mapping macros here.
+ // DO NOT EDIT what you see in these blocks of generated code!
+ //}}AFX_MSG_MAP
END_MESSAGE_MAP()
-CBurgerApp::CBurgerApp() {
+/////////////////////////////////////////////////////////////////////////////
+// CBurgerApp construction
+
+CBurgerApp::CBurgerApp()
+{
}
+/////////////////////////////////////////////////////////////////////////////
+// The one and only CBurgerApp object
+
CBurgerApp theApp;
FoodPlugin *sFoodPlugin;
FoodDef *sFoodDef;
-extern "C" void *AFX_EXT_API CALLBACK ConstructProgramPlugin(T2PluginSpecifier *inSpecifier) {
+#pragma comment(linker, "/export:ConstructProgramPlugin=_ConstructProgramPlugin@4")
+extern "C" void *CALLBACK ConstructProgramPlugin(T2PluginSpecifier *inSpecifier) {
if (!sFoodPlugin) {
#line 88
- sFoodPlugin = new FoodPlugin('TnPl', inSpecifier);
+ sFoodPlugin = new FoodPlugin('TnPl', *inSpecifier);
}
return sFoodPlugin;
}
-extern "C" void *AFX_EXT_API CALLBACK ConstructTemplatePlugin(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) {
+#pragma comment(linker, "/export:ConstructTemplatePlugin=_ConstructTemplatePlugin@16")
+extern "C" void *CALLBACK ConstructTemplatePlugin(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) {
if (!sFoodDef) {
#line 101
sFoodDef = new FoodDef('TnDf', *inSpecifier, inResFile, inWorldDef, inPlugin);
@@ -38,7 +85,8 @@ extern "C" void *AFX_EXT_API CALLBACK ConstructTemplatePlugin(T2PluginSpecifier
return sFoodDef;
}
-extern "C" void *AFX_EXT_API CALLBACK DestructProgramPlugin() {
+#pragma comment(linker, "/export:DestructProgramPlugin=_DestructProgramPlugin@0")
+extern "C" void *CALLBACK DestructProgramPlugin() {
delete sFoodPlugin;
sFoodPlugin = NULL;
@@ -48,7 +96,8 @@ extern "C" void *AFX_EXT_API CALLBACK DestructProgramPlugin() {
return NULL;
}
-extern "C" T2PluginSpecifier *AFX_EXT_API CALLBACK GetAttr(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) {
+#pragma comment(linker, "/export:GetAttr=_GetAttr@16")
+extern "C" T2PluginSpecifier *CALLBACK GetAttr(T2PluginSpecifier *inSpecifier, CResFile *inResFile, T2WorldDef *inWorldDef, T2TenantPlugin *inPlugin) {
#line 120
T2PluginSpecifier *specifier = new T2PluginSpecifier;
specifier->mPluginName = "Burgar";