ROSE 0.11.145.147
processSupport.h
1#ifndef ROSE_PROCESSSUPPORT_H
2#define ROSE_PROCESSSUPPORT_H
3
4#include <vector>
5#include <string>
6#include <cstdio>
7#include <exception>
8#include "rosedll.h"
9#include <Sawyer/Assert.h>
10
11// The various definistions of ROSE_ASSERT have been moved in to the
12// following file. JFR 2020-Jun-05
13
14#include <ROSE_ABORT.h>
15#include <ROSE_ASSERT.h>
16
17ROSE_UTIL_API int systemFromVector(const std::vector<std::string>& argv);
18FILE* popenReadFromVector(const std::vector<std::string>& argv);
19// Assumes there is only one child process
20int pcloseFromVector(FILE* f);
21
23// Assertion handling
25namespace Rose {
26
28ROSE_UTIL_API void abortOnFailedAssertion(const char*, const char*, const std::string&, const char*, unsigned, const char*);
29
31ROSE_UTIL_API void exitOnFailedAssertion(const char*, const char*, const std::string&, const char*, unsigned, const char*);
32
36ROSE_UTIL_API void throwOnFailedAssertion(const char*, const char*, const std::string&, const char*, unsigned, const char*);
37
54struct FailedAssertion: std::runtime_error {
55 const char *mesg; // a short message, like "assertion failed", "not implemented" etc.
56 const char *expr; // C++ expression that caused the failure (optional)
57 std::string note; // second argument from ASSERT_*() macros, or empty
58 const char *fileName; // name of file where assertion failed
59 unsigned lineNumber; // line number where assertion failed (1-origin)
60 const char *functionName; // function name (perhaps with arg types) where assertion failed
61 FailedAssertion(const char *mesg, const char *expr, const std::string &note,
62 const char *fileName, unsigned lineNumber, const char *functionName)
63 : std::runtime_error(expr?expr:mesg), mesg(mesg), expr(expr), note(note), fileName(fileName),
64 lineNumber(lineNumber), functionName(functionName) {}
65 ~FailedAssertion() throw () {};
66};
67
68} // namespace
69
70#endif // ROSE_PROCESSSUPPORT_H
The ROSE library.
Sawyer::Assert::AssertFailureHandler failedAssertionBehavior()
Property: behavior of failed assertions.
ROSE_UTIL_API void abortOnFailedAssertion(const char *, const char *, const std::string &, const char *, unsigned, const char *)
Aborts for a failed assertion.
ROSE_UTIL_API void throwOnFailedAssertion(const char *, const char *, const std::string &, const char *, unsigned, const char *)
Throws an exception for a failed assertion.
ROSE_UTIL_API void exitOnFailedAssertion(const char *, const char *, const std::string &, const char *, unsigned, const char *)
Exits with non-zero status for a failed assertion.
void(* AssertFailureHandler)(const char *mesg, const char *expr, const std::string &note, const char *filename, unsigned linenum, const char *funcname)
Type for user-defined assertion failure handler.
Definition Assert.h:108
Exception that can be thrown for a failed assertion.