aboutsummaryrefslogtreecommitdiff
path: root/Src/nu/ReEntry.h
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/nu/ReEntry.h
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/nu/ReEntry.h')
-rw-r--r--Src/nu/ReEntry.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/Src/nu/ReEntry.h b/Src/nu/ReEntry.h
new file mode 100644
index 00000000..87035d29
--- /dev/null
+++ b/Src/nu/ReEntry.h
@@ -0,0 +1,68 @@
+#ifndef NULLSOFT_UTILITY_RENTRYH
+#define NULLSOFT_UTILITY_RENTRYH
+
+#include <string>
+
+
+namespace Nullsoft
+{
+ namespace Utility
+ {
+
+
+ class ReEntryGuard
+ {
+ public:
+ ReEntryGuard() : entered(false)
+ {}
+
+
+ bool FunctionCall(std::string funcName = "Unknown")
+ {
+
+ if (entered)
+ {
+ char errorMsg[256];
+ sprintf(errorMsg, "%s branched to %s", firstFunc.c_str(), funcName.c_str());
+ ::MessageBox(NULL, errorMsg, "Class ReEntry error", MB_OK);
+ return false;
+ }
+ else
+ {
+ firstFunc = funcName;
+ entered = true;
+ return true;
+ }
+
+
+ }
+ void LeaveFunction()
+ {
+ entered = false;
+ firstFunc = "";
+ }
+ private:
+ bool entered;
+ std::string firstFunc;
+
+ };
+ class ReEntry
+ {
+ public:
+ ReEntry(ReEntryGuard &_entry, std::string funcName = "Unknown") : entry(&_entry)
+ {
+ entry->FunctionCall(funcName);
+ }
+
+ ~ReEntry()
+ {
+ entry->LeaveFunction();
+ }
+
+ private:
+ ReEntryGuard *entry;
+
+ };
+ }
+}
+#endif