uint32_t size(void) const;
public:
+ // NOTE This method is deprecated. Use 'deps' instead
const ObjectSet *object(void) const;
public:
bool isOutput(void) const;
public:
+ // @brief Return the set of objects that depends on this bag
+ ObjectSet deps(void) const;
// TODO Rename as readers
ReaderSet reads(void) const;
// TODO Rename as updaters
bool Bag::isInput(void) const { return _info->mask()->masked(BagMask::Input); }
bool Bag::isOutput(void) const { return _info->mask()->masked(BagMask::Output); }
+ObjectSet Bag::deps(void) const { return *_info->object(); }
+
Bag::ReaderSet Bag::reads(void) const
{
Bag::ReaderSet res;
- for (auto obj : *object())
+ for (auto obj : deps())
{
for (auto use : *obj->user())
{
{
Bag::UpdaterSet res;
- for (auto obj : *object())
+ for (auto obj : deps())
{
if (obj->def())
{
dep.bag(bag);
- auto deps = *(bag->object());
+ auto deps = bag->deps();
ASSERT_EQ(deps.size(), 1);
ASSERT_NE(deps.count(obj), 0);
ASSERT_EQ(bag_info->object()->count(&obj), 1);
// User SHOULD be able to access dependent objects through 'bag'
- ASSERT_EQ(bag->object()->size(), 1);
- ASSERT_EQ(bag->object()->count(&obj), 1);
+ {
+ auto deps = bag->deps();
+ ASSERT_EQ(deps.size(), 1);
+ ASSERT_EQ(deps.count(&obj), 1);
+ }
// Unlink Object-Bag relation
obj.bag(nullptr);
ASSERT_EQ(obj.bag(), nullptr);
- ASSERT_EQ(bag->object()->size(), 0);
+ {
+ auto deps = bag->deps();
+ ASSERT_EQ(deps.size(), 0);
+ }
}
TEST_F(ObjectTest, destructor)
}
// Object SHOULD be unlinked from Bag on destruction
- ASSERT_EQ(bag->object()->size(), 0);
+ {
+ auto deps = bag->deps();
+ ASSERT_EQ(deps.size(), 0);
+ }
}