freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Add missing methods to DomainLayout


From: Jeffrey D. Oldham
Subject: Re: [PATCH] Add missing methods to DomainLayout
Date: Wed, 03 Dec 2003 15:04:25 -0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624

Richard Guenther wrote:
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?

Yes.

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>


--
Jeffrey D. Oldham
address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]