aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Patches/EmPatchModule.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Patches/EmPatchModule.h')
-rw-r--r--SrcShared/Patches/EmPatchModule.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/SrcShared/Patches/EmPatchModule.h b/SrcShared/Patches/EmPatchModule.h
new file mode 100644
index 0000000..c867489
--- /dev/null
+++ b/SrcShared/Patches/EmPatchModule.h
@@ -0,0 +1,118 @@
+/* -*- mode: C++; tab-width: 4 -*- */
+/* ===================================================================== *\
+ Copyright (c) 1998-2001 Palm, Inc. or its subsidiaries.
+ Copyright (c) 2001 PocketPyro, Inc.
+ All rights reserved.
+
+ This file is part of the Palm OS Emulator.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+\* ===================================================================== */
+
+#ifndef EmPatchModule_h
+#define EmPatchModule_h
+
+#include "EcmObject.h"
+#include "EmPatchModuleTypes.h"
+#include "ChunkFile.h"
+#include "Miscellaneous.h"
+#include "SystemMgr.h"
+
+#include <string>
+#include <map>
+
+
+
+// ===========================================================================
+// EmPatchModule
+// ===========================================================================
+
+
+const uint16 kMaxProtoTables = 5;
+
+class EmPatchModule : public EcmObject,
+ ecm_implements IEmPatchModule
+{
+ private:
+// ==============================================================================
+// * illegal constructors
+// ==============================================================================
+ //don't let EmPatchModule be created using default constructor... must have a unique name.
+ //
+ EmPatchModule(){}
+
+ public:
+
+// ==============================================================================
+// * constructors
+// ==============================================================================
+
+ EmPatchModule(const char *nameCSP, ProtoPatchTableEntry *protoTable1P = NULL, ProtoPatchTableEntry *protoTable2P = NULL);
+ virtual ~EmPatchModule (void) {};
+
+// ==============================================================================
+// * interface implementations
+// ==============================================================================
+// ==============================================================================
+// * BEGIN IEmPatchModule
+// ==============================================================================
+
+ virtual Err Initialize(IEmPatchContainer &containerIP);
+
+ virtual Err Reset();
+
+ virtual Err Dispose();
+
+ virtual Err Clear ();
+
+ virtual Err Load();
+
+ virtual const string &GetName();
+
+ virtual Err GetHeadpatch (uint16 index, HeadpatchProc& procP);
+ virtual Err GetTailpatch (uint16 index, TailpatchProc& procP);
+
+// ==============================================================================
+// * END IEmPatchModule
+// ==============================================================================
+
+
+ void AddProtoPatchTable (ProtoPatchTableEntry protoPatchTable[], bool loadTable = false)
+ {
+ fProtoTables[fProtoTableCount++] = protoPatchTable;
+
+ if (loadTable)
+ Load();
+ }
+
+
+ void PrvLoadProtoPatchTable (uint16 index);
+
+ bool operator == (const char *nameCSP) const
+ {
+ return (fName == nameCSP);
+ }
+
+ bool operator == (const string &nameStr) const
+ {
+ return (fName == nameStr);
+ }
+
+ private:
+ string fName;
+
+ vector<HeadpatchProc> fHeadpatches;
+ vector<TailpatchProc> fTailpatches;
+
+ uint16 fProtoTableCount;
+ uint16 fLoadedTableCount;
+
+ IEmPatchContainer* fContainerIP;
+
+ ProtoPatchTableEntry* fProtoTables[kMaxProtoTables];
+};
+
+#endif // EmPatchModule_h