aboutsummaryrefslogtreecommitdiff
path: root/core/objects.cc
diff options
context:
space:
mode:
authorjmpoep <OriginalEntryPoint@qq.com>2023-12-07 16:51:07 +0800
committerjmpoep <OriginalEntryPoint@qq.com>2023-12-07 16:51:07 +0800
commit28008a746a31abb7909dd86cb0cd413ac8943b0b (patch)
treea30b74b8cad548048c3c1551d652828ab76fa9bd /core/objects.cc
downloadvmprotect-3.5.1-master.tar
vmprotect-3.5.1-master.tar.gz
vmprotect-3.5.1-master.tar.bz2
vmprotect-3.5.1-master.zip
first commitHEADmaster
Diffstat (limited to 'core/objects.cc')
-rw-r--r--core/objects.cc39
1 files changed, 39 insertions, 0 deletions
diff --git a/core/objects.cc b/core/objects.cc
new file mode 100644
index 0000000..6bff88d
--- /dev/null
+++ b/core/objects.cc
@@ -0,0 +1,39 @@
+/**
+ * Support of object hierarchy.
+ */
+
+#include "objects.h"
+
+#ifdef __APPLE__
+#define _vsnprintf_s(dest, dest_sz, cnt, fmt, args) _vsnprintf((dest), (dest_sz), (fmt), (args))
+#endif // __APPLE__
+
+std::string string_format(const char *format, ...)
+{
+ va_list args;
+ va_start(args, format);
+ int size = 100;
+ std::string res;
+ for (;;) {
+ res.resize(size);
+ va_start(args, format);
+ int n = _vsnprintf_s(&res[0], size, _TRUNCATE, format, args);
+ if (n > -1 && n < size) {
+ res.resize(n);
+ break;
+ }
+ if (n > -1)
+ size = n + 1;
+ else
+ size *= 2;
+ }
+ va_end(args);
+ return res;
+}
+
+int AddressableObject::CompareWith(const AddressableObject &other) const
+{
+ if (address_ > other.address_) return 1;
+ if (address_ < other.address_) return -1;
+ return 0;
+}