This is very boring:

CommandInfo const * InsetCommandParams::findInfo(
   InsetCode code, std::string const & cmdName)
{
   switch (code) {
   case BIBITEM_CODE:
       return InsetBibitem::findInfo(cmdName);
   case BIBTEX_CODE:
       return InsetBibtex::findInfo(cmdName);
   case CITE_CODE:
return InsetCitation::findInfo(cmdName); case FLOAT_LIST_CODE:
       return InsetFloatList::findInfo(cmdName);
   case HFILL_CODE:
       return InsetHFill::findInfo(cmdName);
   case HYPERLINK_CODE:
       return InsetHyperlink::findInfo(cmdName);
   case INCLUDE_CODE:
       return InsetInclude::findInfo(cmdName);
   case INDEX_CODE:
       return InsetIndex::findInfo(cmdName);
   case INDEX_PRINT_CODE:
       return InsetPrintIndex::findInfo(cmdName);
   case LABEL_CODE:
return InsetLabel::findInfo(cmdName); case NOMENCL_CODE:
       return InsetNomencl::findInfo(cmdName);
   case NOMENCL_PRINT_CODE:
       return InsetPrintNomencl::findInfo(cmdName);
   case REF_CODE:
       return InsetRef::findInfo(cmdName);
   case TOC_CODE:
       return InsetTOC::findInfo(cmdName);
   default:
       BOOST_ASSERT(false);
   }
   return 0;
}


std::string InsetCommandParams::getDefaultCmd(InsetCode code) {
   switch (code) {
       case BIBITEM_CODE:
           return InsetBibitem::defaultCommand();
       case BIBTEX_CODE:
           return InsetBibtex::defaultCommand();
       case CITE_CODE:
           return InsetCitation::defaultCommand();
       case FLOAT_LIST_CODE:
           return InsetFloatList::defaultCommand();
       case HFILL_CODE:
           return InsetHFill::defaultCommand();
       case HYPERLINK_CODE:
           return InsetHyperlink::defaultCommand();
       case INCLUDE_CODE:
           return InsetInclude::defaultCommand();
       case INDEX_CODE:
           return InsetIndex::defaultCommand();
       case INDEX_PRINT_CODE:
           return InsetPrintIndex::defaultCommand();
       case LABEL_CODE:
           return InsetLabel::defaultCommand();
       case NOMENCL_CODE:
           return InsetNomencl::defaultCommand();
       case NOMENCL_PRINT_CODE:
           return InsetPrintNomencl::defaultCommand();
       case REF_CODE:
           return InsetRef::defaultCommand();
       case TOC_CODE:
           return InsetTOC::defaultCommand();
       default:
           BOOST_ASSERT(false);
   }
   return string(); //silence the warning
}


static bool InsetCommandParams::isCompatibleCommand(
       InsetCode code, std::string const & s)
{
   switch (code) {
       case BIBITEM_CODE:
           return InsetBibitem::isCompatiableCommand(s);
       case BIBTEX_CODE:
           return InsetBibtex::isCompatiableCommand(s);
       case CITE_CODE:
           return InsetCitation::isCompatiableCommand(s);
       case FLOAT_LIST_CODE:
           return InsetFloatList::isCompatiableCommand(s);
       case HFILL_CODE:
           return InsetHFill::isCompatiableCommand(s);
       case HYPERLINK_CODE:
           return InsetHyperlink::isCompatiableCommand(s);
       case INCLUDE_CODE:
           return InsetInclude::isCompatiableCommand(s);
       case INDEX_CODE:
           return InsetIndex::isCompatiableCommand(s);
       case INDEX_PRINT_CODE:
           return InsetPrintIndex::isCompatiableCommand(s);
       case LABEL_CODE:
           return InsetLabel::isCompatiableCommand(s);
       case NOMENCL_CODE:
           return InsetNomencl::isCompatiableCommand(s);
       case NOMENCL_PRINT_CODE:
           return InsetPrintNomencl::isCompatiableCommand(s);
       case REF_CODE:
           return InsetRef::isCompatiableCommand(s);
       case TOC_CODE:
           return InsetTOC::isCompatiableCommand(s);
       default:
           BOOST_ASSERT(false);
   }
   return false; //silence the warning
}

So tell me: The fact that C++ is strongly typed and not really object oriented makes it impossible to do this neatly? There are such nice ways to do it in both Perl and Python...right Bo?

rh

--
==================================================================
Richard G Heck, Jr
Professor of Philosophy
Brown University
http://frege.brown.edu/heck/
==================================================================
Get my public key from http://sks.keyserver.penguin.de
Hash: 0x1DE91F1E66FFBDEC
Learn how to sign your email using Thunderbird and GnuPG at:
http://dudu.dyn.2-h.org/nist/gpg-enigmail-howto

Reply via email to