[Dune] [Fwd: [Dune-Commit] dune-grid r5356 - trunk/grid/onedgrid]
Andreas Dedner
dedner at mathematik.uni-freiburg.de
Wed Sep 9 18:36:57 CEST 2009
Hi Oliver,
of course talking first is better but means that everybody involved has
to wait until we have finished our communication - which seems rather
time consuming. Everyone with a gcc 4.3 would have not been able to
configure dune with the version which was checked in.
A quick
svn merge https://svn.dune-project.org/svn/dune-grid/trunk/grid/onedgrid
-r 5356:5355
and a svn commit (with the friend declearations) puts everything back in
working order.
Again: if a configure does not work this seems to me to be a reason to
first revert and then contact the developer.
Best
Andreas
Oliver Sander wrote:
> I prefer if people talk first and then revert. You certainly would not
> want me
> to mess with you code when I don't like it.
>
> The bug you report is do to some missing friend declaration in the preamble
> of OneDGrid. They are
>
> template <int codim_, class GridImp_>
> friend class OneDGridEntityPointer;
>
> template <int codim_, PartitionIteratorType pitype_, class GridImp_>
> friend class OneDGridLevelIterator;
>
> friend class OneDGridHierarchicIterator<const OneDGrid>;
>
> Thanks for reapplying the patch,
> Oliver
>
> Instead you could have just asked me for the missing friend declarations.
>
> Andreas Dedner schrieb:
>> Hi Oliver,
>>
>> It did not compile for me and for other people here as well and the
>> safest way to get it to work for everybody (and for all other users)
>> was to revert it. I was just writting this mail to you with the
>> error messages.
>> Here they are:
>>
>> ../../dune/grid/common/grid.hh: In member function 'bool
>> Dune::OneDGridEntityPointer<codim, GridImp>::equals(const
>> Dune::OneDGridEntityPointer<codim, GridImp>&) const [with int codim =
>> 0, GridImp = const Dune::OneDGrid]':
>> ../../dune/grid/common/entitypointer.hh:269: instantiated from 'bool
>> Dune::EntityPointer<GridImp, EntityPointerImp>::equals(const
>> Dune::EntityPointer<GridImp, EntityPointerImp>&) const [with GridImp =
>> const Dune::OneDGrid, IteratorImp = Dune::OneDGridEntityPointer<0,
>> const Dune::OneDGrid>]'
>> ../../dune/grid/common/entitypointer.hh:227: instantiated from 'bool
>> Dune::EntityPointer<GridImp, EntityPointerImp>::operator!=(const
>> Dune::EntityPointer<GridImp, typename
>> Dune::EnableIfInterOperable<typename IteratorImp::EntityPointerImp,
>> IteratorImp, typename IteratorImp::EntityPointerImp>::type>&) const
>> [with GridImp = const Dune::OneDGrid, IteratorImp =
>> Dune::OneDGridLeafIterator<0, All_Partition, const Dune::OneDGrid>]'
>> onedgrid.cc:549: instantiated from here
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::ReturnImplementationType<T>::ImplementationType&
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::getRealImplementation(InterfaceType&) [with InterfaceType =
>> Dune::MakeableInterfaceObject<Dune::Entity<0, 1, const Dune::OneDGrid,
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double,
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:34: error: within this context
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::ReturnImplementationType<T>::ImplementationType&
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::getRealImplementation(InterfaceType&) [with InterfaceType =
>> Dune::MakeableInterfaceObject<Dune::Entity<0, 1, const Dune::OneDGrid,
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double,
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:34: error: within this context
>> ../../dune/grid/common/grid.hh: In constructor
>> 'Dune::OneDGridEntityPointer<codim,
>> GridImp>::OneDGridEntityPointer(Dune::OneDEntityImp<(Dune::OneDGridEntityPointer<codim,
>> GridImp>::dim - codim)>*) [with int codim = 0, GridImp = const
>> Dune::OneDGrid]':
>> ../onedgrid/onedgridleveliterator.hh:36: instantiated from
>> 'Dune::OneDGridLevelIterator<codim, pitype,
>> GridImp>::OneDGridLevelIterator(Dune::OneDEntityImp<(Dune::OneDGridLevelIterator<codim,
>> pitype, GridImp>::dim - codim)>*) [with int codim = 0,
>> Dune::PartitionIteratorType pitype = All_Partition, GridImp = const
>> Dune::OneDGrid]'
>> onedgrid.cc:140: instantiated from 'typename Dune::GridTraits<1, 1,
>> Dune::OneDGrid, Dune::OneDGridGeometry, Dune::OneDGridEntity,
>> Dune::OneDGridEntityPointer, Dune::OneDGridLevelIterator,
>> Dune::OneDGridLeafIntersectionIterator,
>> Dune::OneDGridLevelIntersectionIterator,
>> Dune::OneDGridLeafIntersectionIterator,
>> Dune::OneDGridLevelIntersectionIterator,
>> Dune::OneDGridHierarchicIterator, Dune::OneDGridLeafIterator,
>> Dune::OneDGridLevelIndexSet<const Dune::OneDGrid>,
>> Dune::OneDGridLeafIndexSet<const Dune::OneDGrid>,
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int,
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int,
>> Dune::CollectiveCommunication<Dune::OneDGrid>,
>> Dune::DefaultLevelGridViewTraits,
>> Dune::DefaultLeafGridViewTraits>::Codim<cd>::LevelIterator
>> Dune::OneDGrid::lbegin(int) const [with int codim = 0]'
>> onedgrid.cc:650: instantiated from here
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::ReturnImplementationType<T>::ImplementationType&
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::getRealImplementation(InterfaceType&) [with InterfaceType =
>> Dune::MakeableInterfaceObject<Dune::Entity<0, 1, const Dune::OneDGrid,
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double,
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:61: error: within this context
>> ../../dune/grid/common/grid.hh: In constructor
>> 'Dune::OneDGridEntityPointer<codim,
>> GridImp>::OneDGridEntityPointer(Dune::OneDEntityImp<(Dune::OneDGridEntityPointer<codim,
>> GridImp>::dim - codim)>*) [with int codim = 1, GridImp = const
>> Dune::OneDGrid]':
>> ../onedgrid/onedgridleveliterator.hh:36: instantiated from
>> 'Dune::OneDGridLevelIterator<codim, pitype,
>> GridImp>::OneDGridLevelIterator(Dune::OneDEntityImp<(Dune::OneDGridLevelIterator<codim,
>> pitype, GridImp>::dim - codim)>*) [with int codim = 1,
>> Dune::PartitionIteratorType pitype = All_Partition, GridImp = const
>> Dune::OneDGrid]'
>> onedgrid.cc:140: instantiated from 'typename Dune::GridTraits<1, 1,
>> Dune::OneDGrid, Dune::OneDGridGeometry, Dune::OneDGridEntity,
>> Dune::OneDGridEntityPointer, Dune::OneDGridLevelIterator,
>> Dune::OneDGridLeafIntersectionIterator,
>> Dune::OneDGridLevelIntersectionIterator,
>> Dune::OneDGridLeafIntersectionIterator,
>> Dune::OneDGridLevelIntersectionIterator,
>> Dune::OneDGridHierarchicIterator, Dune::OneDGridLeafIterator,
>> Dune::OneDGridLevelIndexSet<const Dune::OneDGrid>,
>> Dune::OneDGridLeafIndexSet<const Dune::OneDGrid>,
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int,
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int,
>> Dune::CollectiveCommunication<Dune::OneDGrid>,
>> Dune::DefaultLevelGridViewTraits,
>> Dune::DefaultLeafGridViewTraits>::Codim<cd>::LevelIterator
>> Dune::OneDGrid::lbegin(int) const [with int codim = 1]'
>> onedgrid.cc:651: instantiated from here
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::ReturnImplementationType<T>::ImplementationType&
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>,
>> <template-parameter-1-3>, <template-parameter-1-4>
>> >::getRealImplementation(InterfaceType&) [with InterfaceType =
>> Dune::MakeableInterfaceObject<Dune::Entity<1, 1, const Dune::OneDGrid,
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double,
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:61: error: within this context
>>
>> Best
>> Andreas
>>
>> Oliver Sander wrote:
>>
>>> It certainly did compile for me.
>>> Would you please contact me before tacitly reverting my patches?!
>>>
>>> Thank you,
>>> Oliver
>>>
>>> -------- Original-Nachricht --------
>>> Betreff: [Dune-Commit] dune-grid r5356 - trunk/grid/onedgrid
>>> Datum: Wed, 09 Sep 2009 18:01:02 +0200
>>> Von: dedner at dune-project.org
>>> An: dune-commit at dune-project.org
>>>
>>>
>>>
>>> Author: dedner
>>> Date: 2009-09-09 18:01:02 +0200 (Wed, 09 Sep 2009)
>>> New Revision: 5356
>>>
>>> Modified:
>>> trunk/grid/onedgrid/onedgridentity.hh
>>> trunk/grid/onedgrid/onedgridentitypointer.hh
>>> trunk/grid/onedgrid/onedgridhieriterator.hh
>>> trunk/grid/onedgrid/onedgridleafiterator.hh
>>> trunk/grid/onedgrid/onedgridleveliterator.hh
>>> Log:
>>> did not compile anymore
>>>
>>> Modified: trunk/grid/onedgrid/onedgridentity.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridentity.hh 2009-09-09 15:25:07 UTC
>>> (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridentity.hh 2009-09-09 16:01:02 UTC
>>> (rev 5356)
>>> @@ -121,7 +121,24 @@
>>> };
>>>
>>>
>>> +template<int cd, int dim, class GridImp>
>>> +class OneDEntityWrapper :
>>> + public GridImp::template Codim<cd>::Entity
>>> +{
>>> +public:
>>>
>>> + OneDEntityWrapper() :
>>> + GridImp::template Codim<cd>::Entity (OneDGridEntity<cd, dim,
>>> GridImp>())
>>> + {}
>>> +
>>> + void setToTarget(OneDEntityImp<dim-cd>* target) {
>>> + this->realEntity.setToTarget(target);
>>> + }
>>> +
>>> + OneDEntityImp<dim-cd>* target() {return this->realEntity.target_;}
>>> +};
>>> +
>>> +
>>> //**********************************************************************
>>>
>>> //
>>> // --OneDGridEntity
>>> @@ -383,8 +400,8 @@
>>>
>>> }
>>>
>>> -
>>> GridImp::getRealImplementation(it.virtualEntity_).setToTarget((it.elemStack.empty())
>>> -
>>> ? OneDGridNullIteratorFactory<1>::null() : it.elemStack.top());
>>> + it.virtualEntity_.setToTarget((it.elemStack.empty())
>>> + ?
>>> OneDGridNullIteratorFactory<1>::null() : it.elemStack.top());
>>> return it;
>>> }
>>>
>>> Modified: trunk/grid/onedgrid/onedgridentitypointer.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridentitypointer.hh 2009-09-09
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridentitypointer.hh 2009-09-09
>>> 16:01:02 UTC (rev 5356)
>>> @@ -30,8 +30,7 @@
>>>
>>> //! equality
>>> bool equals(const OneDGridEntityPointer<codim,GridImp>& other)
>>> const {
>>> - return
>>> GridImp::getRealImplementation(other.virtualEntity_).target_
>>> - == GridImp::getRealImplementation(virtualEntity_).target_;
>>> + return other.virtualEntity_.target() == virtualEntity_.target();
>>> }
>>>
>>> //! dereferencing
>>> @@ -40,14 +39,13 @@
>>> //! ask for level of entity
>>> int level () const {return virtualEntity_.level();}
>>>
>>> - OneDGridEntityPointer() - :
>>> virtualEntity_(OneDGridEntity<codim, dim, GridImp>())
>>> - {}
>>> + OneDGridEntityPointer() {}
>>>
>>> /** \brief Constructor from a given entity */
>>> OneDGridEntityPointer(const OneDGridEntity<codim, dim, GridImp> &
>>> entity) - : virtualEntity_(entity)
>>> - {}
>>> + {
>>> + virtualEntity_.setToTarget(entity.target_);
>>> + }
>>>
>>> //! empty method since internal entity is not a pointer void
>>> compactify () {}
>>> @@ -55,15 +53,13 @@
>>> protected:
>>>
>>> /** \brief Constructor from a given iterator */
>>> - OneDGridEntityPointer(OneDEntityImp<dim-codim>* it) - :
>>> virtualEntity_(OneDGridEntity<codim, dim, GridImp>())
>>> - {
>>> - GridImp::getRealImplementation(virtualEntity_).setToTarget(it);
>>> + OneDGridEntityPointer(OneDEntityImp<dim-codim>* it) {
>>> + virtualEntity_.setToTarget(it);
>>> };
>>>
>>> protected:
>>>
>>> - mutable MakeableInterfaceObject<Entity> virtualEntity_;
>>> + mutable OneDEntityWrapper<codim,GridImp::dimension,GridImp>
>>> virtualEntity_;
>>>
>>> };
>>>
>>>
>>> Modified: trunk/grid/onedgrid/onedgridhieriterator.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridhieriterator.hh 2009-09-09
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridhieriterator.hh 2009-09-09
>>> 16:01:02 UTC (rev 5356)
>>> @@ -65,8 +65,8 @@
>>> }
>>> -
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget((elemStack.empty())
>>> -
>>> ? OneDGridNullIteratorFactory<1>::null() : elemStack.top());
>>> + this->virtualEntity_.setToTarget((elemStack.empty())
>>> + ?
>>> OneDGridNullIteratorFactory<1>::null() : elemStack.top());
>>> }
>>>
>>> private:
>>>
>>> Modified: trunk/grid/onedgrid/onedgridleafiterator.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridleafiterator.hh 2009-09-09
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridleafiterator.hh 2009-09-09
>>> 16:01:02 UTC (rev 5356)
>>> @@ -27,16 +27,16 @@
>>> /** \todo Can a make the fullRefineLevel work somehow? */
>>> const int fullRefineLevel = 0;
>>> -
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget((OneDEntityImp<1-codim>*)Dune::get<1-codim>(grid_->entityImps_[fullRefineLevel]).begin());
>>>
>>> +
>>> this->virtualEntity_.setToTarget((OneDEntityImp<1-codim>*)Dune::get<1-codim>(grid_->entityImps_[fullRefineLevel]).begin());
>>>
>>>
>>> - if
>>> (!GridImp::getRealImplementation(this->virtualEntity_).target_->isLeaf())
>>>
>>> + if (!this->virtualEntity_.target()->isLeaf())
>>> increment();
>>> }
>>>
>>> //! Constructor
>>> OneDGridLeafIterator() {
>>> -
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(OneDGridNullIteratorFactory<1-codim>::null());
>>>
>>> +
>>> this->virtualEntity_.setToTarget(OneDGridNullIteratorFactory<1-codim>::null());
>>>
>>> }
>>>
>>> //! prefix increment
>>> @@ -44,8 +44,7 @@
>>> // Increment until you find a leaf entity
>>> do {
>>> globalIncrement();
>>> - } while
>>> (GridImp::getRealImplementation(this->virtualEntity_).target_
>>> - &&
>>> !GridImp::getRealImplementation(this->virtualEntity_).target_->isLeaf());
>>>
>>> + } while (this->virtualEntity_.target() &&
>>> !this->virtualEntity_.target()->isLeaf());
>>> }
>>>
>>> private:
>>> @@ -58,12 +57,12 @@
>>> const int oldLevel = this->virtualEntity_.level();
>>>
>>> // Increment on this level
>>> -
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(GridImp::getRealImplementation(this->virtualEntity_).target_->succ_);
>>>
>>> +
>>> this->virtualEntity_.setToTarget(this->virtualEntity_.target()->succ_);
>>>
>>> // If beyond the end of this level set to first of next level
>>> - if
>>> (!GridImp::getRealImplementation(this->virtualEntity_).target_ &&
>>> oldLevel < grid_->maxLevel()) {
>>> + if (!this->virtualEntity_.target() && oldLevel <
>>> grid_->maxLevel()) {
>>>
>>> -
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(const_cast<OneDEntityImp<dim-codim>*>(Dune::get<1-codim>(grid_->entityImps_[oldLevel+1]).begin()));
>>>
>>> +
>>> this->virtualEntity_.setToTarget(const_cast<OneDEntityImp<dim-codim>*>(Dune::get<1-codim>(grid_->entityImps_[oldLevel+1]).begin()));
>>>
>>>
>>> }
>>>
>>>
>>> Modified: trunk/grid/onedgrid/onedgridleveliterator.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridleveliterator.hh 2009-09-09
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridleveliterator.hh 2009-09-09
>>> 16:01:02 UTC (rev 5356)
>>> @@ -41,7 +41,7 @@
>>>
>>> //! prefix increment
>>> void increment() {
>>> -
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(GridImp::getRealImplementation(this->virtualEntity_).target_->succ_);
>>>
>>> +
>>> this->virtualEntity_.setToTarget(this->virtualEntity_.target()->succ_);
>>> }
>>> };
>>>
>>>
>>>
>>> _______________________________________________
>>> Dune-Commit mailing list
>>> Dune-Commit at dune-project.org
>>> http://lists.dune-project.org/mailman/listinfo/dune-commit
>>>
>>>
>>>
>>
>> _______________________________________________
>> Dune mailing list
>> Dune at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune
>>
>
>
More information about the Dune
mailing list