MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
memiter.h
1//
2// memiter.h
3//
4// derived from memasmg.cc
5// Copyright (C) 1996 Limit Point Systems, Inc.
6//
7// Author: Curtis Janssen <cljanss@limitpt.com>
8// Maintainer: LPS
9//
10// This file is part of the SC Toolkit.
11//
12// The SC Toolkit is free software; you can redistribute it and/or modify
13// it under the terms of the GNU Library General Public License as published by
14// the Free Software Foundation; either version 2, or (at your option)
15// any later version.
16//
17// The SC Toolkit is distributed in the hope that it will be useful,
18// but WITHOUT ANY WARRANTY; without even the implied warranty of
19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20// GNU Library General Public License for more details.
21//
22// You should have received a copy of the GNU Library General Public License
23// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
24// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
25//
26// The U.S. Government is granted a limited license as per AL 91-7.
27//
28
29#ifndef _util_group_memiter_h
30#define _util_group_memiter_h
31
32#include <util/group/memory.h>
33
34namespace sc {
35
41 private:
42 distsize_t *offsets_;
43 int n_;
44
45 void *data_;
46
47 char *current_data_;
48 size_t current_size_;
49 size_t current_offset_;
50 int node_;
51
52 int ready_;
53
54 distsize_t offset_;
55 size_t size_;
56 public:
65 MemoryIter(void *data, distsize_t *offsets, size_t n);
66
71 void begin(distsize_t offset, size_t size);
73 int ready() { return ready_; }
75 void next();
76
79 void *data() { return (void*) current_data_; }
81 int node() { return node_; }
83 size_t offset() { return current_offset_; }
85 size_t size() { return current_size_; }
86
88 bool local(distsize_t offset, size_t size, int node);
89};
90
91}
92
93#endif
94
95// Local Variables:
96// mode: c++
97// c-file-style: "CLJ"
98// End:
This iterates through data in a global array.
Definition memiter.h:40
int node()
The node on which the current subblock resides.
Definition memiter.h:81
void next()
Advance to the next subblock.
MemoryIter(void *data, distsize_t *offsets, size_t n)
Create the MemoryIter.
size_t size()
The size of the current subblock.
Definition memiter.h:85
void * data()
The local offset for the current block within the data array given to the constructor.
Definition memiter.h:79
int ready()
Returns true if there is more data to process.
Definition memiter.h:73
bool local(distsize_t offset, size_t size, int node)
Returns true if all data is local to node.
void begin(distsize_t offset, size_t size)
Initialize the iterator to a block of the global array.
size_t offset()
The local offset of the current subblock on the node.
Definition memiter.h:83
Contains all MPQC code up to version 3.
Definition mpqcin.h:14

Generated at Wed Sep 25 2024 02:45:30 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.