Hoa Nguyen has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/32960 )
Change subject: base: Tag API methods and variables in channel_addr.hh
......................................................................
base: Tag API methods and variables in channel_addr.hh
Change-Id: I91c806e88f035457f93dcfcee1833d6955a07807
Signed-off-by: Hoa Nguyen <[email protected]>
---
M src/base/channel_addr.hh
1 file changed, 127 insertions(+), 6 deletions(-)
diff --git a/src/base/channel_addr.hh b/src/base/channel_addr.hh
index 06fae72..2ee12c0 100644
--- a/src/base/channel_addr.hh
+++ b/src/base/channel_addr.hh
@@ -51,84 +51,174 @@
public:
using Type = Addr;
- /** Explicit constructor assigning a value. */
+ /**
+ * Explicit constructor assigning a value.
+ *
+ * @ingroup api_channel_addr
+ */
explicit constexpr ChannelAddr(Type _a) : a(_a) { }
- /** Converting back to the value type. */
+ /**
+ * Converting back to the value type.
+ *
+ * @ingroup api_channel_addr
+ */
explicit constexpr operator Type() const { return a; }
- /** Converting back to the value type. */
+ /**
+ * Converting back to the value type.
+ *
+ * @ingroup api_channel_addr
+ */
constexpr Type value() const { return a; }
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr() : a(0) { }
+ /**
+ * @ingroup api_channel_addr
+ */
ChannelAddr(const AddrRange &range, Addr _a)
: a(range.removeIntlvBits(_a)) {}
+ /**
+ * @ingroup api_channel_addr
+ */
ChannelAddr(const ChannelAddr &) = default;
+
+ /**
+ * @ingroup api_channel_addr
+ */
ChannelAddr &operator=(const ChannelAddr &) = default;
-
+ /**
+ * @ingroup api_channel_addr
+ */
Addr getPA(const AddrRange &range) const {
return range.addIntlvBits(a);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator|(const Type b) const {
return ChannelAddr(a | b);
}
+
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator&(const Type b) const {
return ChannelAddr(a & b);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator>>(const int b) const {
return ChannelAddr(a >> b);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator<<(const int b) const {
return ChannelAddr(a << b);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator*(const Type &b) const {
return ChannelAddr(a * b);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator/(const Type &b) const {
return ChannelAddr(a / b);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator+(const Type &b) const {
return ChannelAddr(a + b);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator-(const Type &b) const {
return ChannelAddr(a - b);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator|(const ChannelAddr &b) const {
return ChannelAddr(a | b.a);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator&(const ChannelAddr &b) const {
return ChannelAddr(a & b.a);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator^(const ChannelAddr &b) const {
return ChannelAddr(a ^ b.a);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator+(const ChannelAddr &b) const {
return ChannelAddr(a + b.a);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr ChannelAddr operator-(const ChannelAddr &b) const {
return ChannelAddr(a - b.a);
}
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr bool operator>(const ChannelAddr &b) const { return a > b.a;
}
+
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr bool operator>=(const ChannelAddr &b) const { return a >=
b.a; }
+
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr bool operator<(const ChannelAddr &b) const { return a < b.a;
}
+
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr bool operator<=(const ChannelAddr &b) const { return a <=
b.a; }
+
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr bool operator==(const ChannelAddr &b) const { return a ==
b.a; }
+
+ /**
+ * @ingroup api_channel_addr
+ */
constexpr bool operator!=(const ChannelAddr &b) const { return a !=
b.a; }
private:
@@ -143,24 +233,52 @@
class ChannelAddrRange
{
public:
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr ChannelAddrRange()
: ChannelAddrRange(ChannelAddr(1), ChannelAddr(0)) {}
-
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr ChannelAddrRange(ChannelAddr start, ChannelAddr end)
: _start(start), _end(end) {}
-
+ /**
+ * @ingroup api_channel_addr_range
+ */
ChannelAddrRange(AddrRange ch_range, Addr start, Addr end);
+ /**
+ * @ingroup api_channel_addr_range
+ */
ChannelAddrRange(AddrRange ch_range, AddrRange range);
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr ChannelAddrRange(const ChannelAddrRange &) = default;
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr ChannelAddr size() const { return _end - _start + 1; }
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr bool valid() const { return _start <= _end; }
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr ChannelAddr start() const { return _start; }
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr ChannelAddr end() const { return _end; }
+ /**
+ * @ingroup api_channel_addr_range
+ */
constexpr bool contains(ChannelAddr a) const {
return a >= _start && a <= _end;
}
@@ -186,6 +304,9 @@
};
}
+/**
+ * @ingroup api_channel_addr
+ */
std::ostream &operator<<(std::ostream &out, const ChannelAddr &addr);
#endif // __BASE_CHANNEL_ADDR_HH__
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/32960
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I91c806e88f035457f93dcfcee1833d6955a07807
Gerrit-Change-Number: 32960
Gerrit-PatchSet: 1
Gerrit-Owner: Hoa Nguyen <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s