mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-12 23:48:35 +02:00
MMIO: Pass pointers to the complex method lambdas when visiting.
This commit is contained in:
parent
6b645f5cac
commit
71962ee0eb
@ -148,12 +148,12 @@ public:
|
|||||||
|
|
||||||
virtual void AcceptReadVisitor(ReadHandlingMethodVisitor<T>& v) const
|
virtual void AcceptReadVisitor(ReadHandlingMethodVisitor<T>& v) const
|
||||||
{
|
{
|
||||||
v.VisitComplex(read_lambda_);
|
v.VisitComplex(&read_lambda_);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void AcceptWriteVisitor(WriteHandlingMethodVisitor<T>& v) const
|
virtual void AcceptWriteVisitor(WriteHandlingMethodVisitor<T>& v) const
|
||||||
{
|
{
|
||||||
v.VisitComplex(write_lambda_);
|
v.VisitComplex(&write_lambda_);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -313,9 +313,9 @@ void ReadHandler<T>::ResetMethod(ReadHandlingMethod<T>* method)
|
|||||||
ret = [addr, mask](u32) { return *addr & mask; };
|
ret = [addr, mask](u32) { return *addr & mask; };
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void VisitComplex(std::function<T(u32)> lambda)
|
virtual void VisitComplex(const std::function<T(u32)>* lambda)
|
||||||
{
|
{
|
||||||
ret = lambda;
|
ret = *lambda;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -367,9 +367,9 @@ void WriteHandler<T>::ResetMethod(WriteHandlingMethod<T>* method)
|
|||||||
ret = [ptr, mask](u32, T val) { *ptr = val & mask; };
|
ret = [ptr, mask](u32, T val) { *ptr = val & mask; };
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void VisitComplex(std::function<void(u32, T)> lambda)
|
virtual void VisitComplex(const std::function<void(u32, T)>* lambda)
|
||||||
{
|
{
|
||||||
ret = lambda;
|
ret = *lambda;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ class ReadHandlingMethodVisitor
|
|||||||
public:
|
public:
|
||||||
virtual void VisitConstant(T value) = 0;
|
virtual void VisitConstant(T value) = 0;
|
||||||
virtual void VisitDirect(const T* addr, u32 mask) = 0;
|
virtual void VisitDirect(const T* addr, u32 mask) = 0;
|
||||||
virtual void VisitComplex(std::function<T(u32)> lambda) = 0;
|
virtual void VisitComplex(const std::function<T(u32)>* lambda) = 0;
|
||||||
};
|
};
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class WriteHandlingMethodVisitor
|
class WriteHandlingMethodVisitor
|
||||||
@ -96,7 +96,7 @@ class WriteHandlingMethodVisitor
|
|||||||
public:
|
public:
|
||||||
virtual void VisitNop() = 0;
|
virtual void VisitNop() = 0;
|
||||||
virtual void VisitDirect(T* addr, u32 mask) = 0;
|
virtual void VisitDirect(T* addr, u32 mask) = 0;
|
||||||
virtual void VisitComplex(std::function<void(u32, T)> lambda) = 0;
|
virtual void VisitComplex(const std::function<void(u32, T)>* lambda) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// These classes are INTERNAL. Do not use outside of the MMIO implementation
|
// These classes are INTERNAL. Do not use outside of the MMIO implementation
|
||||||
|
Loading…
Reference in New Issue
Block a user