⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interpreter.cpp

📁 "More for C++" is a class library that provides some features that are usually common for object ori
💻 CPP
字号:
////  This file is part of the "More for C++" library////  Copyright (c) 1999-2003 by Thorsten Goertz (thorsten@morefor.org)////  The "More for C++" library is free software; you can redistribute it and/or//  modify it under the terms of the license that comes with this package.////  Read "license.txt" for more details.////  THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED//  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES//  OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.////////////////////////////////////////////////////////////////////////////////#include <more/stl.hpp>#include <more/script/interpreter.hpp>using namespace more;using namespace more::script;////////////////////////////////////////////////////////////////////////////////typedef std::map<String, InterpreterFactory*> FactoryMap;typedef FactoryMap::const_iterator FactoryMapIterator;typedef std::map<String, p<Interpreter> > InterpreterMap;typedef InterpreterMap::const_iterator InterpreterMapIterator;static FactoryMap factoryMap;static InterpreterMap interpreterMap;////////////////////////////////////////////////////////////////////////////////Interpreter::NotAvailable::operator const char* ( ) const{  return "Interpreter not available";}////////////////////////////////////////////////////////////////////////////////p<Interpreter> Interpreter::retrieve(  const String& sLanguage) throw( Interpreter::NotAvailable ){  InterpreterMapIterator pInterpreterMapIterator;  pInterpreterMapIterator = interpreterMap.find( sLanguage );  if( pInterpreterMapIterator == interpreterMap.end( ) )  {    FactoryMapIterator pFactoryMapIterator = factoryMap.find( sLanguage );    if( pFactoryMapIterator != factoryMap.end( ) )    {      InterpreterFactory* pInterpreterFactory = pFactoryMapIterator -> second;      interpreterMap[sLanguage] = pInterpreterFactory -> createInterpreter( );      pInterpreterMapIterator = interpreterMap.find( sLanguage );    }  }  if( pInterpreterMapIterator == interpreterMap.end( ) )  {    throw Interpreter::NotAvailable( );  }  return pInterpreterMapIterator -> second;}////////////////////////////////////////////////////////////////////////////////Interpreter::~Interpreter( ){}////////////////////////////////////////////////////////////////////////////////InterpreterFactory::~InterpreterFactory( ){}////////////////////////////////////////////////////////////////////////////////void InterpreterFactory::init( ){  factoryMap[getLanguage( )] = this;}////////////////////////////////////////////////////////////////////////////////void InterpreterFactory::dispose( ){  interpreterMap.clear( );  factoryMap.clear( );}////////////////////////////////////////////////////////////////////////////////#include <more/features.hpp>#ifdef MORE_PYTHON_ENABLED#  include "pythoninterpreterimpl.hpp"// Must be done in this module to prevent linker optimization!static PythonInterpreterFactory factory;#endif////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -