summaryrefslogtreecommitdiffstats
path: root/src/entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entry.cpp')
-rw-r--r--src/entry.cpp155
1 files changed, 36 insertions, 119 deletions
diff --git a/src/entry.cpp b/src/entry.cpp
index 8ec7846..cc8cd1f 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -38,19 +38,9 @@ Entry::Entry()
num++;
m_parent=0;
section = EMPTY_SEC;
- extends = new QList<BaseInfo>;
- extends->setAutoDelete(TRUE);
- groups = new QList<Grouping>;
- groups->setAutoDelete(TRUE);
- anchors = new QList<SectionInfo>; // Doxygen::sectionDict takes ownership of the items!
- argList = new ArgumentList;
- argList->setAutoDelete(TRUE);
//printf("Entry::Entry() tArgList=0\n");
- tArgLists = 0;
- typeConstr = 0;
mGrpId = -1;
- tagInfo = 0;
- sli = 0;
+ hasTagInfo = FALSE;
relatesType = Simple;
hidden = FALSE;
groupDocType = GROUPDOC_NORMAL;
@@ -64,7 +54,8 @@ Entry::Entry(const Entry &e)
section = e.section;
type = e.type;
name = e.name;
- tagInfo = e.tagInfo;
+ hasTagInfo = e.hasTagInfo;
+ tagInfoData = e.tagInfoData;
protection = e.protection;
mtype = e.mtype;
spec = e.spec;
@@ -81,8 +72,8 @@ Entry::Entry(const Entry &e)
virt = e.virt;
args = e.args;
bitfields = e.bitfields;
- argList = e.argList->deepCopy();
- tArgLists = 0;
+ argList = e.argList;
+ tArgLists = e.tArgLists;
program = e.program;
initializer = e.initializer;
includeFile = e.includeFile;
@@ -102,85 +93,31 @@ Entry::Entry(const Entry &e)
write = e.write;
inside = e.inside;
exception = e.exception;
- typeConstr = 0;
+ typeConstr = e.typeConstr;
bodyLine = e.bodyLine;
endBodyLine = e.endBodyLine;
mGrpId = e.mGrpId;
- extends = new QList<BaseInfo>;
- extends->setAutoDelete(TRUE);
- groups = new QList<Grouping>;
- groups->setAutoDelete(TRUE);
- anchors = new QList<SectionInfo>;
+ anchors = e.anchors;
fileName = e.fileName;
startLine = e.startLine;
startColumn = e.startColumn;
- if (e.sli)
- {
- sli = new QList<ListItemInfo>;
- sli->setAutoDelete(TRUE);
- QListIterator<ListItemInfo> slii(*e.sli);
- ListItemInfo *ili;
- for (slii.toFirst();(ili=slii.current());++slii)
- {
- sli->append(new ListItemInfo(*ili));
- }
- }
- else
- {
- sli=0;
- }
+ sli = e.sli;
lang = e.lang;
hidden = e.hidden;
artificial = e.artificial;
groupDocType = e.groupDocType;
id = e.id;
+ extends = e.extends;
+ groups = e.groups;
+ m_fileDef = e.m_fileDef;
m_parent = e.m_parent;
-
// deep copy child entries
m_sublist.reserve(e.m_sublist.size());
for (const auto &cur : e.m_sublist)
{
- m_sublist.push_back(std::make_unique<Entry>(*cur));
- }
-
- // deep copy base class list
- QListIterator<BaseInfo> bli(*e.extends);
- BaseInfo *bi;
- for (;(bi=bli.current());++bli)
- {
- extends->append(new BaseInfo(*bi));
- }
-
- // deep copy group list
- QListIterator<Grouping> gli(*e.groups);
- Grouping *g;
- for (;(g=gli.current());++gli)
- {
- groups->append(new Grouping(*g));
+ m_sublist.push_back(std::make_shared<Entry>(*cur));
}
-
- QListIterator<SectionInfo> sli2(*e.anchors);
- SectionInfo *s;
- for (;(s=sli2.current());++sli2)
- {
- anchors->append(s); // shallow copy, object are owned by Doxygen::sectionDict
- }
-
- // deep copy type constraint list
- if (e.typeConstr)
- {
- typeConstr = e.typeConstr->deepCopy();
- }
-
- // deep copy template argument lists
- if (e.tArgLists)
- {
- tArgLists = copyArgumentLists(e.tArgLists);
- }
-
- m_fileDef = e.m_fileDef;
-
}
Entry::~Entry()
@@ -189,14 +126,6 @@ Entry::~Entry()
//printf("Deleting entry %d name %s type %x children %d\n",
// num,name.data(),section,sublist->count());
- delete extends;
- delete groups;
- delete anchors;
- delete argList;
- delete tArgLists;
- delete tagInfo;
- delete typeConstr;
- delete sli;
num--;
}
@@ -207,11 +136,11 @@ void Entry::moveToSubEntryAndRefresh(Entry *&current)
current = new Entry;
}
-void Entry::moveToSubEntryAndRefresh(std::unique_ptr<Entry> &current)
+void Entry::moveToSubEntryAndRefresh(std::shared_ptr<Entry> &current)
{
current->m_parent=this;
- m_sublist.push_back(std::move(current));
- current = std::make_unique<Entry>();
+ m_sublist.push_back(current);
+ current = std::make_shared<Entry>();
}
void Entry::moveToSubEntryAndKeep(Entry *current)
@@ -220,10 +149,10 @@ void Entry::moveToSubEntryAndKeep(Entry *current)
m_sublist.emplace_back(current);
}
-void Entry::moveToSubEntryAndKeep(std::unique_ptr<Entry> &current)
+void Entry::moveToSubEntryAndKeep(std::shared_ptr<Entry> &current)
{
current->m_parent=this;
- m_sublist.push_back(std::move(current));
+ m_sublist.push_back(current);
}
void Entry::copyToSubEntry(Entry *current)
@@ -233,20 +162,20 @@ void Entry::copyToSubEntry(Entry *current)
m_sublist.emplace_back(copy);
}
-void Entry::copyToSubEntry(const std::unique_ptr<Entry> &current)
+void Entry::copyToSubEntry(const std::shared_ptr<Entry> &current)
{
- std::unique_ptr<Entry> copy = std::make_unique<Entry>(*current);
+ std::shared_ptr<Entry> copy = std::make_shared<Entry>(*current);
copy->m_parent=this;
- m_sublist.push_back(std::move(copy));
+ m_sublist.push_back(copy);
}
-void Entry::moveFromSubEntry(const Entry *child,std::unique_ptr<Entry> &moveTo)
+void Entry::moveFromSubEntry(const Entry *child,std::shared_ptr<Entry> &moveTo)
{
auto it = std::find_if(m_sublist.begin(),m_sublist.end(),
- [child](const std::unique_ptr<Entry>&elem) { return elem.get()==child; });
+ [child](const std::shared_ptr<Entry>&elem) { return elem.get()==child; });
if (it!=m_sublist.end())
{
- moveTo = std::move(*it);
+ moveTo = *it;
m_sublist.erase(it);
}
else
@@ -258,7 +187,7 @@ void Entry::moveFromSubEntry(const Entry *child,std::unique_ptr<Entry> &moveTo)
void Entry::removeSubEntry(const Entry *e)
{
auto it = std::find_if(m_sublist.begin(),m_sublist.end(),
- [e](const std::unique_ptr<Entry>&elem) { return elem.get()==e; });
+ [e](const std::shared_ptr<Entry>&elem) { return elem.get()==e; });
if (it!=m_sublist.end())
{
m_sublist.erase(it);
@@ -321,24 +250,17 @@ void Entry::reset()
id.resize(0);
metaData.resize(0);
m_sublist.clear();
- extends->clear();
- groups->clear();
- anchors->clear();
- argList->clear();
- if (tagInfo) { delete tagInfo; tagInfo=0; }
- if (tArgLists) { delete tArgLists; tArgLists=0; }
- if (sli) { delete sli; sli=0; }
- if (typeConstr) { delete typeConstr; typeConstr=0; }
- //if (mtArgList) { delete mtArgList; mtArgList=0; }
+ extends.clear();
+ groups.clear();
+ anchors.clear();
+ argList.clear();
+ tArgLists.clear();
+ argList.reset();
+ typeConstr.reset();
+ sli.clear();
m_fileDef = 0;
}
-
-int Entry::getSize()
-{
- return sizeof(Entry);
-}
-
void Entry::setFileDef(FileDef *fd)
{
m_fileDef = fd;
@@ -350,15 +272,10 @@ void Entry::setFileDef(FileDef *fd)
void Entry::addSpecialListItem(const char *listName,int itemId)
{
- if (sli==0)
- {
- sli = new QList<ListItemInfo>;
- sli->setAutoDelete(TRUE);
- }
- ListItemInfo *ili=new ListItemInfo;
- ili->type = listName;
- ili->itemId = itemId;
- sli->append(ili);
+ ListItemInfo ili;
+ ili.type = listName;
+ ili.itemId = itemId;
+ sli.push_back(ili);
}