From 95727b6f1641d0e380acf8641ae3a5196c8f24d2 Mon Sep 17 00:00:00 2001
From: Nicolas Marsic <nicolas.marsic@gmail.com>
Date: Fri, 6 Dec 2013 14:40:48 +0000
Subject: [PATCH] Reverting to 17358

---
 FunctionSpace/FunctionSpace.cpp | 36 ++-----------------
 FunctionSpace/FunctionSpace.h   | 63 +++++++++++++++++++++++++++------
 2 files changed, 55 insertions(+), 44 deletions(-)

diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp
index 9fa2b50bd8..ea38989248 100644
--- a/FunctionSpace/FunctionSpace.cpp
+++ b/FunctionSpace/FunctionSpace.cpp
@@ -144,23 +144,6 @@ void FunctionSpace::insertDof(Dof& d,
   }
 }
 */
-
-const Basis& FunctionSpace::getBasis(const MElement& element) const{
-  return *(*basis)[0];
-}
-
-const Basis& FunctionSpace::getBasis(size_t i) const{
-  return *(*basis)[0];
-}
-
-GroupOfElement& FunctionSpace::getSupport(void) const{
-  return *goe;
-}
-
-bool FunctionSpace::isScalar(void) const{
-  return scalar;
-}
-
 vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{
   // Const_Cast //
   MElement& element = const_cast<MElement&>(elem);
@@ -179,7 +162,8 @@ vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{
 
   // New Element
   MElementFactory factory;
-  int lowOrderTag = ElementType::getTag(elem.getType(), 1, false);
+  int parentTag   = ElementType::ParentTypeFromTag(elem.getTypeForMSH());
+  int lowOrderTag = ElementType::getTag(parentTag, 1, false);
 
   MElement* permElement = factory.create(lowOrderTag, vertex);
 
@@ -242,14 +226,6 @@ vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{
   return myDof;
 }
 
-const vector<Dof> FunctionSpace::getAllDofs(void) const{
-  return vector<Dof>(dof->begin(), dof->end());
-}
-
-const vector<GroupOfDof*>& FunctionSpace::getAllGroups(void) const{
-  return *group;
-}
-
 const GroupOfDof& FunctionSpace::
 getGoDFromElement(const MElement& element) const{
 
@@ -264,11 +240,3 @@ getGoDFromElement(const MElement& element) const{
   else
     return *(it->second);
 }
-
-size_t FunctionSpace::dofNumber(void) const{
-  return dof->size();
-}
-
-size_t FunctionSpace::groupNumber(void) const{
-  return group->size();
-}
diff --git a/FunctionSpace/FunctionSpace.h b/FunctionSpace/FunctionSpace.h
index 9305cc1fdb..75f6b3eb7d 100644
--- a/FunctionSpace/FunctionSpace.h
+++ b/FunctionSpace/FunctionSpace.h
@@ -22,7 +22,8 @@
     @interface FunctionSpace
     @brief Common Interface of all Function Spaces
 
-    This is the common interface of all Function Spaces.
+    This is the common interface of
+    all Function Spaces.
 
     A FunctionSpace is defined on a support,
     which is a collection of MElement%s (GroupOfElement).
@@ -67,8 +68,9 @@ class FunctionSpace{
  public:
   virtual ~FunctionSpace(void);
 
-  const Basis& getBasis(const MElement& element) const;
-  const Basis& getBasis(size_t i) const;
+  const std::vector<const Basis*>& getBasis(const MElement& element) const;
+  const Basis&                     getBasis(size_t i) const;
+  size_t                           getNBasis(void) const;
 
   GroupOfElement& getSupport(void) const;
   bool            isScalar(void) const;
@@ -112,12 +114,9 @@ class FunctionSpace{
    Deletes this FunctionSpace
    **
 
-   @fn FunctionSpace::getBasis
-   @param element A MElement
-   @return Returns the Basis associated to the given MElement
-
    @fn FunctionSpace::getSupport
-   @return Returns the support of this FunctionSpace
+   @return Returns the support of this
+   FunctionSpace
    **
 
    @fn FunctionSpace::isScalar
@@ -158,14 +157,16 @@ class FunctionSpace{
 
    @fn FunctionSpace::getGoDFromElement
    @param element An Element of the FunctionSpace Support
-   @return Returns the GroupOfDof%s associated to the given Element
+   @return Returns the GroupOfDof%s associated to
+   the given Element
 
    If the given Element is not in the FunctionSpace Support,
    an Exception is thrown
    **
 
    @fn FunctionSpace::dofNumber
-   @return Returns the number of Dof%s given by FunctionSpace::getAllDofs()
+   @return Returns the number of Dof%s
+   given by FunctionSpace::getAllDofs()
    **
 
    @fn FunctionSpace::groupNumber
@@ -174,4 +175,46 @@ class FunctionSpace{
    **
 */
 
+
+//////////////////////
+// Inline Functions //
+//////////////////////
+
+inline const std::vector<const Basis*>&
+FunctionSpace::getBasis(const MElement& element) const{
+  return *basis;
+}
+
+inline const Basis& FunctionSpace::getBasis(size_t i) const{
+  return *(*basis)[i];
+}
+
+inline size_t FunctionSpace::getNBasis(void) const{
+  return nBasis;
+}
+
+inline GroupOfElement& FunctionSpace::getSupport(void) const{
+  return *goe;
+}
+
+inline bool FunctionSpace::isScalar(void) const{
+  return scalar;
+}
+
+inline size_t FunctionSpace::dofNumber(void) const{
+  return dof->size();
+}
+
+inline size_t FunctionSpace::groupNumber(void) const{
+  return group->size();
+}
+
+inline const std::vector<Dof> FunctionSpace::getAllDofs(void) const{
+  return std::vector<Dof>(dof->begin(), dof->end());
+}
+
+inline const std::vector<GroupOfDof*>& FunctionSpace::getAllGroups(void) const{
+  return *group;
+}
+
 #endif
-- 
GitLab