Milestone in SourceCallbacks and Keyboard callback trigger

Updated SourceCallback class to accept cloning, reversing, and visitors for saving./loading. New mechanism in Source to listen to key triggers for launching SourceCallbacks. Saving and loading in SessionVisitor and SessionCreator.
This commit is contained in:
Bruno Herbelin
2022-01-30 00:25:08 +01:00
parent 3605ae14b5
commit 8404e0f670
17 changed files with 660 additions and 79 deletions

View File

@@ -158,6 +158,15 @@ SourceLink::SourceLink(Source *s): host_(nullptr), target_(nullptr), id_(0)
connect(s);
}
SourceLink::SourceLink(const SourceLink &l)
{
if (l.target_ != nullptr)
connect(l.target_);
else
host_ = l.host_;
id_ = l.id_;
}
void SourceLink::connect(uint64_t id, Session *se)
{
if (connected())
@@ -220,7 +229,7 @@ Source *SourceLink::source()
}
SourceList validate (const SourceLinkList &list)
SourceList validateLinkList (const SourceLinkList &list)
{
SourceList sourcelist;
@@ -237,3 +246,23 @@ SourceList validate (const SourceLinkList &list)
return sourcelist;
}
SourceLinkList getLinkList (const SourceList &list)
{
SourceLinkList linklist;
for( auto sit = list.begin(); sit != list.end(); ++sit)
linklist.push_back( new SourceLink(*sit) );
return linklist;
}
void clearLinkList (SourceLinkList list)
{
for( auto sit = list.begin(); sit != list.end(); ) {
delete (*sit);
sit = list.erase(sit);
}
}