Skip to content

Commit ca79354

Browse files
committed
Refactoring: replace the last raw pointers by std::unique_ptr in template.cpp
1 parent 21f98f1 commit ca79354

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

src/template.cpp

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,11 +1450,11 @@ class TemplateFilterFactory
14501450
public:
14511451
typedef TemplateVariant (FilterFunction)(const TemplateVariant &v,const TemplateVariant &arg);
14521452

1453-
static TemplateFilterFactory *instance()
1453+
static TemplateFilterFactory &instance()
14541454
{
1455-
static TemplateFilterFactory *instance = 0;
1456-
if (instance==0) instance = new TemplateFilterFactory;
1457-
return instance;
1455+
static std::unique_ptr<TemplateFilterFactory> instance;
1456+
if (instance==0) instance = std::make_unique<TemplateFilterFactory>();
1457+
return *instance;
14581458
}
14591459

14601460
TemplateVariant apply(const QCString &name,const TemplateVariant &v,const TemplateVariant &arg, bool &ok)
@@ -1483,7 +1483,7 @@ class TemplateFilterFactory
14831483
public:
14841484
AutoRegister<T>(const QCString &key)
14851485
{
1486-
TemplateFilterFactory::instance()->registerFilter(key,&T::apply);
1486+
TemplateFilterFactory::instance().registerFilter(key,&T::apply);
14871487
}
14881488
};
14891489

@@ -1610,7 +1610,7 @@ class ExprAstFilter : public ExprAst
16101610
TemplateVariant arg;
16111611
if (m_arg) arg = m_arg->resolve(c);
16121612
bool ok;
1613-
TemplateVariant result = TemplateFilterFactory::instance()->apply(m_name,v,arg,ok);
1613+
TemplateVariant result = TemplateFilterFactory::instance().apply(m_name,v,arg,ok);
16141614
if (!ok)
16151615
{
16161616
ci->warn(ci->templateName(),ci->line(),"unknown filter '%s'",qPrint(m_name));
@@ -1809,6 +1809,8 @@ class TemplateNode
18091809
TemplateNode *m_parent = 0;
18101810
};
18111811

1812+
using TemplateNodePtr = std::unique_ptr<TemplateNode>;
1813+
18121814
//----------------------------------------------------------
18131815

18141816
/** @brief Class representing a lexical token in a template */
@@ -1828,7 +1830,7 @@ using TemplateTokenStream = std::deque< TemplateTokenPtr >;
18281830
//----------------------------------------------------------
18291831

18301832
/** @brief Class representing a list of AST nodes in a template */
1831-
class TemplateNodeList : public std::vector< std::unique_ptr<TemplateNode> >
1833+
class TemplateNodeList : public std::vector< TemplateNodePtr >
18321834
{
18331835
public:
18341836
void render(TextStream &ts,TemplateContext *c)
@@ -2913,12 +2915,12 @@ template<class T> class TemplateNodeCreator : public TemplateNode
29132915
public:
29142916
TemplateNodeCreator(TemplateParser *parser,TemplateNode *parent,int line)
29152917
: TemplateNode(parent), m_templateName(parser->templateName()), m_line(line) {}
2916-
static TemplateNode *createInstance(TemplateParser *parser,
2918+
static TemplateNodePtr createInstance(TemplateParser *parser,
29172919
TemplateNode *parent,
29182920
int line,
29192921
const QCString &data)
29202922
{
2921-
return new T(parser,parent,line,data);
2923+
return std::make_unique<T>(parser,parent,line,data);
29222924
}
29232925
TemplateImpl *getTemplate()
29242926
{
@@ -4530,19 +4532,19 @@ class TemplateNodeEncoding : public TemplateNodeCreator<TemplateNodeEncoding>
45304532
class TemplateNodeFactory
45314533
{
45324534
public:
4533-
typedef TemplateNode *(*CreateFunc)(TemplateParser *parser,
4535+
typedef TemplateNodePtr (*CreateFunc)(TemplateParser *parser,
45344536
TemplateNode *parent,
45354537
int line,
45364538
const QCString &data);
45374539

4538-
static TemplateNodeFactory *instance()
4540+
static TemplateNodeFactory &instance()
45394541
{
4540-
static TemplateNodeFactory *instance = 0;
4541-
if (instance==0) instance = new TemplateNodeFactory;
4542-
return instance;
4542+
static std::unique_ptr<TemplateNodeFactory> instance;
4543+
if (instance==0) instance = std::make_unique<TemplateNodeFactory>();
4544+
return *instance;
45434545
}
45444546

4545-
TemplateNode *create(const QCString &name,
4547+
TemplateNodePtr create(const QCString &name,
45464548
TemplateParser *parser,
45474549
TemplateNode *parent,
45484550
int line,
@@ -4564,7 +4566,7 @@ class TemplateNodeFactory
45644566
public:
45654567
AutoRegister<T>(const QCString &key)
45664568
{
4567-
TemplateNodeFactory::instance()->registerTemplateNode(key,T::createInstance);
4569+
TemplateNodeFactory::instance().registerTemplateNode(key,T::createInstance);
45684570
}
45694571
};
45704572

@@ -4960,8 +4962,8 @@ void TemplateParser::parse(
49604962
{
49614963
arg = tok_ptr->data.mid(sep+1);
49624964
}
4963-
std::unique_ptr<TemplateNode> node { TemplateNodeFactory::instance()->
4964-
create(command,this,parent,tok_ptr->line,arg) };
4965+
TemplateNodePtr node = TemplateNodeFactory::instance().create(
4966+
command,this,parent,tok_ptr->line,arg);
49654967
if (node)
49664968
{
49674969
nodes.push_back(std::move(node));

0 commit comments

Comments
 (0)