[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Add missing methods to DomainLayout
From: |
Richard Guenther |
Subject: |
[PATCH] Add missing methods to DomainLayout |
Date: |
Wed, 3 Dec 2003 21:50:35 +0100 (CET) |
Hi!
For interoperability, the methods first(int) and blocks() need to be added
to DomainLayout. This also (unrelated) moves the touches() method out of
line.
Tested by being in my tree for a long time.
Ok?
Richard.
2003Dec03 Richard Guenther <address@hidden>
* src/Layout/DomainLayout.h: add first(int) and blocks().
Move touches() out of line.
Index: DomainLayout.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Layout/DomainLayout.h,v
retrieving revision 1.29
diff -u -u -r1.29 DomainLayout.h
--- DomainLayout.h 26 Oct 2003 11:28:11 -0000 1.29
+++ DomainLayout.h 3 Dec 2003 20:42:50 -0000
@@ -193,6 +193,10 @@
return domain().initialized();
}
+ // d'th component of the lower left of the inner domain.
+
+ inline int first(int d) const { return innerDomain()[d].first(); }
+
// A reference to our node object
inline Value_t &node()
@@ -205,6 +209,10 @@
return node_m;
}
+ // Number of blocks in each dimension.
+
+ inline Loc<Dim> blocks() const { return Loc<Dim>(1); }
+
// Return the global domain.
inline const Domain_t &domain() const
@@ -436,37 +444,7 @@
// either pointers or objects.
template<class OtherDomain, class OutIter, class ConstructTag>
- int touches(const OtherDomain &d, OutIter o, ConstructTag ctag) const
- {
- int i, count = 0;
-
- // type of output elements
-
- typedef typename IntersectReturnType<Domain_t,OtherDomain>::Type_t
- OutDomain_t;
- typedef Node<OutDomain_t> OutNode_t;
-
- // find the intersection of our domain and the given one
-
- OutDomain_t outDomain = intersect(d, domain());
-
- // add in touching domain if there is anything that intersects
-
- if (!outDomain.empty())
- {
- ++count;
- *o = touchesConstruct(outDomain,
- node().affinity(),
- node().context(),
- node().globalID(),
- node().localID(),
- ctag);
- }
-
- // return the number of non-empty domains we found
-
- return count;
- }
+ int touches(const OtherDomain &d, OutIter o, ConstructTag ctag) const;
// Find local subdomains that touch on a given domain, and insert the
// intersection of these subdomains into the given output iterator. Return
@@ -535,6 +513,41 @@
Value_t node_m;
};
+
+template<int Dim>
+template<class OtherDomain, class OutIter, class ConstructTag>
+int DomainLayout<Dim>::touches(const OtherDomain &d, OutIter o,
+ ConstructTag ctag) const
+{
+ int i, count = 0;
+
+ // type of output elements
+
+ typedef typename IntersectReturnType<Domain_t,OtherDomain>::Type_t
+ OutDomain_t;
+ typedef Node<OutDomain_t> OutNode_t;
+
+ // find the intersection of our domain and the given one
+
+ OutDomain_t outDomain = intersect(d, domain());
+
+ // add in touching domain if there is anything that intersects
+
+ if (!outDomain.empty())
+ {
+ ++count;
+ *o = touchesConstruct(outDomain,
+ node().affinity(),
+ node().context(),
+ node().globalID(),
+ node().localID(),
+ ctag);
+ }
+
+ // return the number of non-empty domains we found
+
+ return count;
+}
template <int Dim>
- [PATCH] Add missing methods to DomainLayout,
Richard Guenther <=