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

📄 regionimp.cc

📁 分布式仿真 开放源码
💻 CC
字号:
// ----------------------------------------------------------------------------// CERTI - HLA RunTime Infrastructure// Copyright (C) 2003  ONERA//// This file is part of CERTI-libCERTI//// CERTI-libCERTI 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 of// the License, or (at your option) any later version.//// CERTI-libCERTI 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 program ; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307// USA//// $Id: RegionImp.cc,v 3.7 2004/03/04 20:19:05 breholee Exp $// ----------------------------------------------------------------------------#include <config.h>#include "RegionImp.hh"#include <cassert>using std::vector ;namespace certi {// ----------------------------------------------------------------------------/** Region Constructor    \param region_handle Handle of this Region    \param space_handle Handle of the RoutingSpace of this Region    \param nb_extents Number of extents    \param nb_dimensions Number of dimensions */RegionImp::RegionImp(RegionHandle region_handle,		     SpaceHandle space_handle,		     size_t nb_extents,		     size_t nb_dimensions)    : handle(region_handle),      space(space_handle),      extents(nb_extents, Extent(nb_dimensions)),      coExtents(nb_extents, Extent(nb_dimensions)) { }// ----------------------------------------------------------------------------// ~RegionImp//RegionImp::~RegionImp() { }// ----------------------------------------------------------------------------// getSpaceHandle//SpaceHandleRegionImp::getSpaceHandle() const    throw (){    return space ;}// ----------------------------------------------------------------------------// getNumberOfExtents//ULongRegionImp::getNumberOfExtents() const    throw (){    return extents.size();}// ----------------------------------------------------------------------------// getRangeLowerBound//ULongRegionImp::getRangeLowerBound(ExtentIndex index,                              DimensionHandle dimension) const    throw (ArrayIndexOutOfBounds){    if (index >= extents.size()) {        throw ArrayIndexOutOfBounds();    }    else {        return extents[index].getRangeLowerBound(dimension);    }}// ----------------------------------------------------------------------------// getRangeUpperBound//ULongRegionImp::getRangeUpperBound(ExtentIndex index,                              DimensionHandle dimension) const    throw (ArrayIndexOutOfBounds){    if (index >= extents.size()) {        throw ArrayIndexOutOfBounds();    }    else {        return extents[index].getRangeUpperBound(dimension);    }}// ----------------------------------------------------------------------------// getRangeLowerBoundNotificationLimit//ULongRegionImp::getRangeLowerBoundNotificationLimit(ExtentIndex index,                                               DimensionHandle dimension) const    throw (ArrayIndexOutOfBounds){    if (index >= coExtents.size()) {        throw ArrayIndexOutOfBounds();    }    else {        return coExtents[index].getRangeLowerBound(dimension);    }}// ----------------------------------------------------------------------------// getRangeUpperBoundNotificationLimit//ULongRegionImp::getRangeUpperBoundNotificationLimit(ExtentIndex index,                                               DimensionHandle dimension) const    throw (ArrayIndexOutOfBounds){    if (index >= coExtents.size()) {        throw ArrayIndexOutOfBounds();    }    else {        return coExtents[index].getRangeUpperBound(dimension);    }}// ----------------------------------------------------------------------------// setRangeLowerBound//voidRegionImp::setRangeLowerBound(ExtentIndex index,                              DimensionHandle dimension,                              ULong val)    throw (ArrayIndexOutOfBounds){    if (index >= extents.size()) {        throw ArrayIndexOutOfBounds();    }    else {        extents[index].setRangeLowerBound(dimension, val);    }}// ----------------------------------------------------------------------------// setRangeUpperBound//voidRegionImp::setRangeUpperBound(ExtentIndex index,                              DimensionHandle dimension,                              ULong val)    throw (ArrayIndexOutOfBounds){    if (index >= extents.size()) {        throw ArrayIndexOutOfBounds();    }    else {        extents[index].setRangeUpperBound(dimension, val);    }}// ----------------------------------------------------------------------------// getHandle//RegionHandleRegionImp::getHandle() const{    return handle ;}// ----------------------------------------------------------------------------// setHandle//voidRegionImp::setHandle(RegionHandle h){    handle = h ;}// ----------------------------------------------------------------------------/** Update the Region after an update to the RTI.  */voidRegionImp::notify(){    vector<Extent>::iterator e, c ;    vector<Extent>::iterator end = extents.end();    for (e = extents.begin(), c = coExtents.begin(); e != end ; ++e) {	int n = e->size() ;	for (int h = 1 ; h <= n ; ++h) {	    c->setRangeUpperBound(h, e->getRangeUpperBound(h));	    c->setRangeLowerBound(h, e->getRangeLowerBound(h));	}    }}// ----------------------------------------------------------------------------/** Get the number of extents in this region */longRegionImp::getNumberOfExtents(){    return extents.size();}// ----------------------------------------------------------------------------/** Get the region's extents    \return The extents, as a vector */const vector<Extent> &RegionImp::getExtents() const{    return extents ;}// ----------------------------------------------------------------------------// setExtents//voidRegionImp::setExtents(const vector<Extent> &e)    throw (InvalidExtents){    assert(e.size() == extents.size()); // TO REMOVE    if (e.size() != extents.size())	throw InvalidExtents();    extents = e ;}} // namespace certi// $Id: RegionImp.cc,v 3.7 2004/03/04 20:19:05 breholee Exp $

⌨️ 快捷键说明

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