00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2008-2009 by University of Queensland 00005 * Earth Systems Science Computational Center (ESSCC) 00006 * http://www.uq.edu.au/esscc 00007 * 00008 * Primary Business: Queensland, Australia 00009 * Licensed under the Open Software License version 3.0 00010 * http://www.opensource.org/licenses/osl-3.0.php 00011 * 00012 *******************************************************/ 00013 00014 00017 #ifndef BUFFERGROUP_H 00018 #define BUFFERGROUP_H 00019 00020 #include "DataVector.h" 00021 #ifdef _OPENMP 00022 #include <omp.h> 00023 #endif 00024 00025 namespace escript 00026 { 00027 00028 class BufferGroup 00029 { 00030 public: 00031 BufferGroup(size_t buffersize,size_t numbuffs); 00032 ~BufferGroup(); 00033 DataVector& getBuffer(size_t buffnum); 00034 size_t getOffset(size_t buffnum); 00035 00036 private: 00037 DataVector m_vec; 00038 size_t m_numbuffs; 00039 size_t m_step; 00040 }; 00041 00042 inline DataVector& BufferGroup::getBuffer(size_t buffnum) 00043 { 00044 return m_vec; 00045 } 00046 00047 inline size_t BufferGroup::getOffset(size_t buffnum) 00048 { 00049 return m_step*buffnum; 00050 } 00051 00052 } // end namespace 00053 00054 #endif // BUFFERGROUP_H 00055