You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.4 KiB
66 lines
1.4 KiB
3 years ago
|
/**
|
||
|
* @file parameter_pack_cleanup.cpp
|
||
|
*
|
||
|
* @author Guy Maurel
|
||
|
* @license GPL v2+
|
||
|
*/
|
||
|
|
||
|
#include "parameter_pack_cleanup.h"
|
||
|
|
||
2 years ago
|
#include "chunk.h"
|
||
2 years ago
|
#include "uncrustify.h"
|
||
3 years ago
|
|
||
|
|
||
2 years ago
|
void parameter_pack_cleanup()
|
||
3 years ago
|
{
|
||
|
LOG_FUNC_ENTRY();
|
||
|
|
||
2 years ago
|
Chunk *pc = Chunk::GetHead();
|
||
3 years ago
|
|
||
2 years ago
|
while (pc->IsNotNullChunk())
|
||
3 years ago
|
{
|
||
2 years ago
|
LOG_CHUNK(LTOK, pc);
|
||
3 years ago
|
|
||
|
// look for template
|
||
2 years ago
|
if (pc->Is(CT_TEMPLATE)) // Issue #3309
|
||
3 years ago
|
{
|
||
2 years ago
|
Chunk *template_end = pc->GetNextType(CT_SEMICOLON, pc->GetLevel());
|
||
3 years ago
|
|
||
|
// look for a parameter pack
|
||
2 years ago
|
while (pc->IsNotNullChunk())
|
||
3 years ago
|
{
|
||
2 years ago
|
LOG_CHUNK(LTOK, pc);
|
||
3 years ago
|
|
||
2 years ago
|
if (pc->Is(CT_PARAMETER_PACK))
|
||
3 years ago
|
{
|
||
2 years ago
|
Chunk *parameter_pack = pc;
|
||
3 years ago
|
|
||
|
// look for a token with the same text
|
||
2 years ago
|
while (pc->IsNotNullChunk())
|
||
3 years ago
|
{
|
||
2 years ago
|
LOG_CHUNK(LTOK, pc);
|
||
3 years ago
|
|
||
|
if (pc == template_end)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
|
||
2 years ago
|
if (strcmp(pc->Text(), parameter_pack->Text()) == 0)
|
||
3 years ago
|
{
|
||
2 years ago
|
pc->SetType(CT_PARAMETER_PACK);
|
||
3 years ago
|
}
|
||
2 years ago
|
pc = pc->GetNext();
|
||
3 years ago
|
}
|
||
|
}
|
||
2 years ago
|
pc = pc->GetNext();
|
||
3 years ago
|
|
||
|
if (pc == template_end)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
2 years ago
|
pc = pc->GetNext();
|
||
3 years ago
|
}
|
||
|
} // parameter_pack_cleanup
|