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

📄 xmlvector.cpp

📁 利用C
💻 CPP
字号:
// Copyright (C) 2002-2006 Anders Logg.// Licensed under the GNU LGPL Version 2.1.//// First added:  2002-12-06// Last changed: 2006-05-23#include <dolfin/log/dolfin_log.h>#include <dolfin/la/Vector.h>#include "XMLVector.h"using namespace dolfin;//-----------------------------------------------------------------------------XMLVector::XMLVector(GenericVector& vector)  : XMLObject(), x(vector), values(0), size(0){  state = OUTSIDE;}//-----------------------------------------------------------------------------void XMLVector::startElement(const xmlChar *name, const xmlChar **attrs){  switch ( state )  {  case OUTSIDE:        if ( xmlStrcasecmp(name, (xmlChar *) "vector") == 0 )    {      startVector(name, attrs);      state = INSIDE_VECTOR;    }        break;      case INSIDE_VECTOR:        if ( xmlStrcasecmp(name, (xmlChar *) "entry") == 0 )      readEntry(name, attrs);        break;      default:    ;  }}//-----------------------------------------------------------------------------void XMLVector::endElement(const xmlChar *name){  switch ( state )  {  case INSIDE_VECTOR:        if ( xmlStrcasecmp(name, (xmlChar *) "vector") == 0 )    {      endVector();      state = DONE;    }        break;      default:    ;  }}//-----------------------------------------------------------------------------void XMLVector::startVector(const xmlChar *name, const xmlChar **attrs){  // Parse size of vector  size = parseUnsignedInt(name, attrs, "size");    // Initialize vector  if (values)    delete [] values;  values = new real[size];}//-----------------------------------------------------------------------------void XMLVector::endVector(){  // Copy values to vector  dolfin_assert(values);  x.init(size);  x.set(values);  delete [] values;  values = 0;}//-----------------------------------------------------------------------------void XMLVector::readEntry(const xmlChar *name, const xmlChar **attrs){  // Parse values  uint row   = parseUnsignedInt(name, attrs, "row");  real value = parseReal(name, attrs, "value");    // Check values  if (row >= size)    error("Illegal XML data for Vector: row index %d out of range (0 - %d)",          row, size - 1);    // Set value  dolfin_assert(values);  values[row] = value;}//-----------------------------------------------------------------------------

⌨️ 快捷键说明

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