亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? parameters.h

?? 一個用來實現(xiàn)偏微分方程中網(wǎng)格的計算庫
?? H
字號:
// $Id: parameters.h 2910 2008-07-08 15:41:11Z friedmud $// The libMesh Finite Element Library.// Copyright (C) 2002-2007  Benjamin S. Kirk, John W. Peterson  // This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.  // This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Lesser General Public License for more details.  // You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA#ifndef __parameters_h__#define __parameters_h__// C++ includes#include <typeinfo>#include <string>#include <map>// Local includes#include "libmesh_common.h"#include "reference_counted_object.h"/** * This class provides the ability to map between * arbitrary, user-defined strings and several data * types.  This can be used to provide arbitrary * user-specified options. * * \author Benjamin S. Kirk * \date 2004 * \version $Revision: 2910 $ */// ------------------------------------------------------------// Parameters class definitionclass Parameters {public:  /**   * Default constructor.  Does nothing.   */  Parameters () {};  /**   * Copy constructor.   */  Parameters (const Parameters&);  /**   * Destructor.  Clears any allocated memory.   */  ~Parameters ();  /**   * Assignment operator.   */  Parameters& operator= (const Parameters&);    /**   * @returns \p true if a parameter of type \p T   * with a specified name exists, \p false otherwise.   */  template <typename T>  bool have_parameter (const std::string&) const;  /**   * @returns a constant reference to the specified parameter   * value.  Requires, of course, that the parameter exists.   */  template <typename T>  const T& get (const std::string&) const;  /**   * @returns a writeable reference to the specified parameter.   * This method will create the parameter if it does not exist,   * so it can be used to define parameters which will later be   * accessed with the \p get() member.   */  template <typename T>  T& set (const std::string&);  /**   * Removes the specified parameter from the list, if it exists.   */  void remove (const std::string&);  /**   * @returns the total number of parameters.   */  unsigned int n_parameters () const { return _values.size(); }  /**   * @returns the number of parameters of the requested type.   */  template <typename T>  unsigned int n_parameters () const;    /**   * Clears internal data structures & frees any allocated memory.   */  void clear ();  /**   * Prints the contents to the specified stream.   */  void print (std::ostream& os=std::cout) const;  private:  /**   * Abstract definition of a parameter value.   */  class Value : public ReferenceCountedObject<Value>  {  public:    /**     * Destructor.     */    virtual ~Value() {};    /**     * String identifying the type of parameter stored.     * Must be reimplemented in derived classes.     */    virtual std::string type () const = 0;    /**     * Prints the parameter value to the specified stream.     * Must be reimplemented in derived classes.     */    virtual void print(std::ostream&) const = 0;    /**     * Clone this value.  Useful in copy-construction.     * Must be reimplemented in derived classes.     */    virtual Value* clone () const = 0;  };public:  /**   * Concrete definition of a parameter value   * for a specified type.   */  template <typename T>  class Parameter : public Value  {  public:    /**     * @returns a read-only reference to the parameter value.     */    const T& get () const { return _value; }        /**     * @returns a writeable reference to the parameter value.     */    T& set () { return _value; }    /**     * String identifying the type of parameter stored.     */    virtual std::string type () const;    /**     * Prints the parameter value to the specified stream.     */    virtual void print(std::ostream&) const;    /**     * Clone this value.  Useful in copy-construction.     */    virtual Value* clone () const;       private:    /**     * Stored parameter value.     */    T _value;  };  /**   * Parameter map iterator.   */  typedef std::map<std::string, Value*>::iterator iterator;  /**   * Constant parameter map iterator.   */  typedef std::map<std::string, Value*>::const_iterator const_iterator;  /**   * Iterator pointing to the beginning of the set of parameters.   */  iterator begin();  /**   * Iterator pointing to the beginning of the set of parameters.   */  const_iterator begin() const;  /**   * Iterator pointing to the end of the set of parameters   */  iterator end();  /**   * Iterator pointing to the end of the set of parameters   */  const_iterator end() const;private:  /**   * Data structure to map names with values.   */  std::map<std::string, Value*> _values;};// ------------------------------------------------------------// Parameters::Parameter<> class inline methodstemplate <typename T>inlinestd::string Parameters::Parameter<T>::type () const{  return typeid(T).name();}template <typename T>inlinevoid Parameters::Parameter<T>::print (std::ostream& os) const{  os << _value;}template <typename T>inlineParameters::Value* Parameters::Parameter<T>::clone () const{  // No good for Solaris C++! - BSK//  Parameters::Parameter<T>//    *copy = new Parameters::Parameter<T>;  Parameter<T>    *copy = new Parameter<T>;  libmesh_assert (copy != NULL);    copy->_value = _value;  return copy;}// ------------------------------------------------------------// Parameters class inline methodsinlinevoid Parameters::clear () // since this is inline we must define it{                         // before its first use (for some compilers)  while (!_values.empty())    {      Parameters::iterator it = _values.begin();            delete it->second;            it->second = NULL;            _values.erase(it);    }}inlineParameters& Parameters::operator= (const Parameters& rhs){  this->clear();    for (Parameters::const_iterator it = rhs._values.begin();       it != rhs._values.end(); ++it)    _values[it->first] = it->second->clone();    return *this;}inlineParameters::Parameters (const Parameters& p){  *this = p;}inlineParameters::~Parameters (){  this->clear ();}inlinevoid Parameters::print (std::ostream& os) const{  Parameters::const_iterator it = _values.begin();  os << "Name\t Type\t Value\n"     << "---------------------\n";  while (it != _values.end())    {      os << " "   << it->first	 << "\t " << it->second->type()	 << "\t ";   it->second->print(os);            os << '\n';      ++it;    }}// Declare this now that Paramers::print() is defined.// By declaring this early we can use it in subsequent// methods.  Required for gcc-4.0.2 -- 11/30/2005, BSKinlinestd::ostream& operator << (std::ostream& os, const Parameters& p){  p.print(os);  return os;}template <typename T>inlinebool Parameters::have_parameter (const std::string& name) const{  Parameters::const_iterator it = _values.find(name);  if (it != _values.end())    if (dynamic_cast<const Parameter<T>*>(it->second) != NULL)      return true;  return false;}template <typename T>inlineconst T& Parameters::get (const std::string& name) const{  if (!this->have_parameter<T>(name))    {      std::cerr << "ERROR: no "		<< typeid(T).name()		<< " parameter named \""		<< name << "\":" << std::endl		<< *this;            libmesh_error();    }  Parameters::const_iterator it = _values.find(name);  libmesh_assert (it != _values.end());  libmesh_assert (it->second != NULL);  libmesh_assert (dynamic_cast<const Parameter<T>*>(it->second) != NULL);    return dynamic_cast<Parameter<T>*>(it->second)->get();}template <typename T>inlineT& Parameters::set (const std::string& name){  Parameter<T>* param = NULL;    if (!this->have_parameter<T>(name))    _values[name] = new Parameter<T>;  param = dynamic_cast<Parameter<T>*>(_values[name]);  libmesh_assert (param != NULL);    return param->set();}inlinevoid Parameters::remove (const std::string& name){  Parameters::iterator it = _values.find(name);  if (it != _values.end())    {      delete it->second;      it->second = NULL;      _values.erase(it);    }}template <typename T>inlineunsigned int Parameters::n_parameters () const{  unsigned int cnt = 0;      Parameters::const_iterator       it  = _values.begin();  const Parameters::const_iterator end = _values.end();    for (; it != end; ++it)    if (dynamic_cast<Parameter<T>*>(it->second) != NULL)      cnt++;  return cnt;	 }inlineParameters::iterator Parameters::begin(){  return _values.begin();}inlineParameters::const_iterator Parameters::begin() const{  return _values.begin();}inlineParameters::iterator Parameters::end(){  return _values.end();}inlineParameters::const_iterator Parameters::end() const{  return _values.end();}#endif // #define __parameters_h__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类小说视频| 一区二区成人在线视频| 一本到不卡精品视频在线观看| 日本不卡一区二区三区高清视频| 中文字幕va一区二区三区| 6080日韩午夜伦伦午夜伦| av不卡免费在线观看| 久久国产精品99精品国产| 一区二区三区在线视频播放| 中文子幕无线码一区tr| 欧美第一区第二区| 欧美日韩日日夜夜| 99精品偷自拍| 国产一区二区三区黄视频| 免费的国产精品| 亚洲大片精品永久免费| 亚洲欧美日韩综合aⅴ视频| 国产欧美一区二区在线| 精品播放一区二区| 日韩一级完整毛片| 在线播放视频一区| 欧美三级中文字| 欧洲一区在线观看| 在线免费一区三区| 色综合天天综合狠狠| 99国产精品国产精品毛片| 国产.精品.日韩.另类.中文.在线.播放| 日韩和的一区二区| 午夜电影网亚洲视频| 亚洲一区在线播放| 亚洲精品日产精品乱码不卡| 中文字幕精品三区| 国产欧美精品一区二区色综合朱莉| 欧美成人女星排行榜| 精品国产欧美一区二区| 67194成人在线观看| 91精品一区二区三区在线观看| 在线视频欧美精品| 在线观看一区二区视频| 欧洲另类一二三四区| 欧美日韩性生活| 欧美美女bb生活片| 91精品欧美一区二区三区综合在| 欧美久久久久久久久中文字幕| 欧美日韩亚洲高清一区二区| 91精品黄色片免费大全| 日韩免费一区二区| 久久久久久久久久美女| 欧美激情艳妇裸体舞| 中文字幕一区二区三区四区| 亚洲精品日韩一| 天堂va蜜桃一区二区三区漫画版| 免费观看30秒视频久久| 国产一区二区三区久久久| 成人在线综合网| 色999日韩国产欧美一区二区| 欧美色图片你懂的| 91精品麻豆日日躁夜夜躁| 2020日本不卡一区二区视频| 国产清纯美女被跳蛋高潮一区二区久久w | 99这里都是精品| 国产91精品入口| 91理论电影在线观看| 欧美日韩和欧美的一区二区| 日韩欧美国产麻豆| 国产婷婷色一区二区三区| 亚洲欧洲日产国码二区| 亚洲成人激情自拍| 麻豆国产欧美日韩综合精品二区| 国产一区二区不卡| 99久久国产综合精品麻豆| 欧美顶级少妇做爰| 久久久久久久久久久黄色| 中文字幕中文字幕一区| 亚洲一区二区免费视频| 精品一区二区三区久久| 99re这里都是精品| 91精品国产品国语在线不卡| 欧美国产日韩精品免费观看| 亚洲国产wwwccc36天堂| 国产精品综合在线视频| 欧美在线高清视频| 久久美女艺术照精彩视频福利播放 | 日韩成人一区二区| 国产精品66部| 欧美午夜精品免费| 久久久精品国产免大香伊 | 国产白丝网站精品污在线入口| 91视频在线观看免费| 精品国产污污免费网站入口 | 青青草国产成人av片免费| 粉嫩av一区二区三区在线播放| 色94色欧美sute亚洲线路一ni| 欧美成人aa大片| 亚洲黄色av一区| 国产传媒欧美日韩成人| 欧美美女视频在线观看| 国产精品污网站| 久久精品国产亚洲5555| 欧美视频一区二区三区| 日本一区二区成人在线| 九色综合国产一区二区三区| 欧美日韩亚洲另类| 亚洲视频你懂的| 国产精品一区在线| 91精品国产乱| 亚洲一区成人在线| 色综合网站在线| 欧美国产精品一区二区三区| 狠狠色狠狠色综合日日91app| 7777精品久久久大香线蕉| 一区二区在线观看不卡| 成人av电影在线观看| 久久综合色一综合色88| 欧美a级理论片| 欧美精品第1页| 亚洲一区二区三区视频在线| 色婷婷亚洲精品| 亚洲人成在线观看一区二区| 国产在线播放一区| 91精品欧美一区二区三区综合在 | 久久综合综合久久综合| 欧美巨大另类极品videosbest| 亚洲人成网站在线| 大白屁股一区二区视频| 久久久精品黄色| 国产一区二区精品在线观看| 日韩色在线观看| 日韩av一区二区在线影视| 欧美巨大另类极品videosbest | 日本午夜精品一区二区三区电影 | 精品欧美一区二区在线观看| 奇米影视在线99精品| 日韩欧美久久久| 免费视频一区二区| 91精品国产黑色紧身裤美女| 天堂午夜影视日韩欧美一区二区| 欧美日韩亚洲综合一区二区三区| 午夜精品在线看| 欧美日韩一区二区在线观看视频 | 欧美三级日韩三级国产三级| 狠狠色丁香久久婷婷综合丁香| 欧美日韩综合在线免费观看| 亚洲国产你懂的| 欧美又粗又大又爽| 亚洲一区二区三区小说| 精品视频一区二区不卡| 日韩av一区二区三区| 精品国产麻豆免费人成网站| 国内欧美视频一区二区| 国产视频在线观看一区二区三区 | 911精品产国品一二三产区| 午夜精品福利一区二区三区av| 欧美人动与zoxxxx乱| 青娱乐精品视频在线| 久久亚洲精品国产精品紫薇| 国产sm精品调教视频网站| 亚洲丝袜自拍清纯另类| 欧美日精品一区视频| 六月婷婷色综合| 国产精品天天看| 在线看国产日韩| 久久丁香综合五月国产三级网站 | 夜夜揉揉日日人人青青一国产精品 | 欧美精品一区二区三区在线| 成人激情午夜影院| 一区在线观看视频| 欧美日韩国产成人在线免费| 精品一区二区三区在线播放视频 | 欧美日韩在线三级| 看电视剧不卡顿的网站| 中文字幕不卡三区| 欧美日韩在线播| 美女在线一区二区| 一色屋精品亚洲香蕉网站| 91麻豆精品国产91久久久 | 久久一区二区三区四区| 99综合影院在线| 免费成人av资源网| 国产精品久久一级| 欧美一区二区三区免费| 91亚洲永久精品| 美国毛片一区二区| 亚洲欧美色图小说| 26uuu国产在线精品一区二区| 99国产精品99久久久久久| 蜜桃av一区二区| 亚洲精品视频免费看| 久久色在线观看| 欧美中文字幕亚洲一区二区va在线| 国内精品伊人久久久久av影院| 亚洲九九爱视频| 久久精品综合网| 欧美一区二区啪啪| 97久久超碰国产精品| 狠狠色综合播放一区二区| 午夜精品久久久久久久| 亚洲视频中文字幕| 国产亚洲一区字幕| 日韩一区二区高清|