summaryrefslogtreecommitdiffstats
path: root/Source/cmMachO.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmMachO.h')
-rw-r--r--Source/cmMachO.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/Source/cmMachO.h b/Source/cmMachO.h
new file mode 100644
index 0000000..901f17a
--- /dev/null
+++ b/Source/cmMachO.h
@@ -0,0 +1,47 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#ifndef cmMachO_h
+#define cmMachO_h
+
+#include <cmConfigure.h>
+
+#include <iosfwd>
+#include <string>
+
+#if !defined(CMAKE_USE_MACH_PARSER)
+#error "This file may be included only if CMAKE_USE_MACH_PARSER is enabled."
+#endif
+
+class cmMachOInternal;
+
+/** \class cmMachO
+ * \brief Executable and Link Format (Mach-O) parser.
+ */
+class cmMachO
+{
+public:
+ /** Construct with the name of the Mach-O input file to parse. */
+ cmMachO(const char* fname);
+
+ /** Destruct. */
+ ~cmMachO();
+
+ /** Get the error message if any. */
+ std::string const& GetErrorMessage() const;
+
+ /** Boolean conversion. True if the Mach-O file is valid. */
+ operator bool() const { return this->Valid(); }
+
+ /** Get Install name from binary **/
+ bool GetInstallName(std::string& install_name);
+
+ /** Print human-readable information about the Mach-O file. */
+ void PrintInfo(std::ostream& os) const;
+
+private:
+ friend class cmMachOInternal;
+ bool Valid() const;
+ cmMachOInternal* Internal;
+};
+
+#endif