summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mir/helpers.cpp15
-rw-r--r--src/mir/helpers.hpp19
2 files changed, 25 insertions, 9 deletions
diff --git a/src/mir/helpers.cpp b/src/mir/helpers.cpp
index cbd189bf..2f787927 100644
--- a/src/mir/helpers.cpp
+++ b/src/mir/helpers.cpp
@@ -273,17 +273,13 @@ const ::HIR::TypeRef* ::MIR::TypeResolve::is_type_owned_box(const ::HIR::TypeRef
return m_resolve.is_type_owned_box(ty);
}
+using namespace MIR::visit;
+
// --------------------------------------------------------------------
// MIR_Helper_GetLifetimes
// --------------------------------------------------------------------
-namespace {
- enum class ValUsage {
- Move,
- Read,
- Write,
- Borrow,
- };
-
+namespace MIR {
+namespace visit {
bool visit_mir_lvalue(const ::MIR::LValue& lv, ValUsage u, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb)
{
if( cb(lv, u) )
@@ -466,7 +462,8 @@ namespace {
visit_mir_lvalues_mut(state, const_cast<::MIR::Function&>(fcn), [&](auto& lv, auto im){ return cb(lv, im); });
}
*/
-}
+} // namespace visit
+} // namespace MIR
namespace
{
struct ValueLifetime
diff --git a/src/mir/helpers.hpp b/src/mir/helpers.hpp
index 3a37ed8e..8b4e8424 100644
--- a/src/mir/helpers.hpp
+++ b/src/mir/helpers.hpp
@@ -23,6 +23,10 @@ class Function;
class LValue;
class Constant;
class BasicBlock;
+class Terminator;
+class Statement;
+class RValue;
+class Param;
typedef unsigned int BasicBlockId;
@@ -164,6 +168,21 @@ struct ValueLifetimes
}
};
+namespace visit {
+ enum class ValUsage {
+ Move,
+ Read,
+ Write,
+ Borrow,
+ };
+
+ extern bool visit_mir_lvalue(const ::MIR::LValue& lv, ValUsage u, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb);
+ extern bool visit_mir_lvalue(const ::MIR::Param& p, ValUsage u, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb);
+ extern bool visit_mir_lvalues(const ::MIR::RValue& rval, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb);
+ extern bool visit_mir_lvalues(const ::MIR::Statement& stmt, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb);
+ extern bool visit_mir_lvalues(const ::MIR::Terminator& term, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb);
+} // namespace visit
+
} // namespace MIR
extern ::MIR::ValueLifetimes MIR_Helper_GetLifetimes(::MIR::TypeResolve& state, const ::MIR::Function& fcn, bool dump_debug);