memory_region.hpp
00001 #if !defined(__MEMORY_REGION_HPP__)
00002 #define __MEMORY_REGION_HPP__
00003
00004
00005
00006
00007 #include "core/machine/generic/resource_region.hpp"
00008 #include "mmio_handler.hpp"
00009
00013 template <typename AddressT, typename HandlerT=void>
00014 struct memory_region : public resource_region<AddressT>
00015 {
00016 typedef resource_region<AddressT> super_type;
00017
00021 HandlerT *handler;
00022
00023
00024
00025
00026 inline memory_region(void)
00027 : handler(nullptr)
00028 {}
00029
00030 inline memory_region(HandlerT *handler, const AddressT base, const AddressT size=AddressT(1))
00031 : super_type(base, size), handler(handler)
00032 {}
00033
00034
00035
00036
00037 inline memory_region &operator ()(HandlerT *handler, const AddressT base, const AddressT size=AddressT(1))
00038 {
00039 this->handler=handler;
00040 super_type::operator()(base, size);
00041 return *this;
00042 }
00043
00044
00045
00046
00051 inline bool is_valid(void) const
00052 {
00053 return this->handler && this->base && this->size;
00054 }
00055 };
00056
00057 #endif
00058
00059
00060