Click here to Skip to main content
15,896,118 members
Articles / Desktop Programming / MFC

Another Enum Viewer

Rate me:
Please Sign up or sign in to vote.
4.50/5 (2 votes)
22 Oct 20015 min read 83K   1.3K   19  
An article on the usage and design of another Enum Viewer
// CPPParserSymTemplate.cpp: manipulation of template parameters and arguments.

#include "CPPParserSym.h"
#include "TemplateParameterList.h"
#include "TemplateArgumentList.h"
#include "CPPScope.h"
#include "CPPSymTable.h"

//
// Methods to manipulate template parameter lists
//
///////////////////////////////////////////////////////////////////////
TemplateParameterListRefI 
CPPParserSym::MakeTemplateParameterList()
{
   return new TemplateParameterList;
}

///////////////////////////////////////////////////////////////////////
void 
CPPParserSym::AddTemplateParameterToList(
   TemplateParameterListRefI parmList,
   TemplateParameterRefI parm
)
{
   parmList->push_back(parm);
}


//
// Methods to manipulate template argument lists
//
///////////////////////////////////////////////////////////////////////
TemplateArgumentListRefI 
CPPParserSym::MakeTemplateArgumentList()
{
   return new TemplateArgumentList;
}

///////////////////////////////////////////////////////////////////////
TemplateArgumentRefI 
CPPParserSym::MakeTemplateArgumentType(
   CPPTypeRefI type
)
{
   return new TemplateArgumentType(type);
}

///////////////////////////////////////////////////////////////////////
TemplateArgumentRefI 
CPPParserSym::MakeTemplateArgumentValue(
   CPPExprRefI value
)
{
   return new TemplateArgumentValue(value);
}

///////////////////////////////////////////////////////////////////////
void 
CPPParserSym::AddTemplateArgumentToList(
   TemplateArgumentListRefI argList,
   TemplateArgumentRefI arg
)
{
   argList->push_back(arg);
}

///////////////////////////////////////////////////////////////////////
void 
CPPParserSym::SetTokensInTemplateDeclaration(
   CPPTypeRefI templateType,
   TemplateParameterListRefI templateParameters,
   TokenListRefI tokens
)
{
   symTable->SetTokensInTemplateDeclaration(
      templateType,
      templateParameters,
      tokens
   );
}

///////////////////////////////////////////////////////////////////////
void 
CPPParserSym::LookupSpecialization(
   const JLStr& name,
   TemplateArgumentListRefI argList, 
   const ANTLRTokenPtr& errTok,
   JLStr& specializationNameReturn,
   CPPTypeRefI& specializationTypeReturn
)
{
   // TODO: figure out how to report specialization errors
   CPPScopeRefI specializationScope;
   if (!symTable->LookupSpecialization(
         name,
         argList,
         errTok,
         specializationNameReturn,
         specializationTypeReturn
      )
   )
   {
      // There was an error in creating the specialization
      // Ensure that the type is usable
      specializationNameReturn = name;
      specializationTypeReturn = LookupVoidType();
   }
}

///////////////////////////////////////////////////////////////////////
JLStr 
CPPParserSym::FormatClassSpecializationName(
   const JLStr& name,
   TemplateArgumentListRefI specializationArgList
)
{
   return symTable->FormatClassSpecializationName(name, specializationArgList);
}

///////////////////////////////////////////////////////////////////////
JLStr 
CPPParserSym::FormatFunctionSpecializationName(
   const JLStr& name,
   TemplateParameterListRefI templateParameterList,
   TemplateArgumentListRefI specializationArgList
)
{
   return symTable->FormatFunctionSpecializationName(
      name, 
      templateParameterList, 
      specializationArgList
   );
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions