00001 #ifndef DUNE_INTERFACES_HH 00002 #define DUNE_INTERFACES_HH 00003 00004 #include "typetraits.hh" 00005 00011 namespace Dune { 00012 00014 struct Cloneable { 00015 00021 virtual Cloneable* clone() const = 0; 00022 00024 virtual ~Cloneable() 00025 {} 00026 00027 }; 00028 00030 struct HasObjectStream {}; 00031 00034 template <bool hasStream, class GridImp, class DefaultImp> 00035 struct GridObjectStreamOrDefaultHelper { 00036 typedef typename GridImp::ObjectStreamType ObjectStreamType; 00037 }; 00038 00041 template <class GridImp, class DefaultImp> 00042 struct GridObjectStreamOrDefaultHelper<false, GridImp, DefaultImp> { 00043 typedef DefaultImp ObjectStreamType; 00044 }; 00045 00047 template <class GridImp, class DefaultImp> 00048 struct GridObjectStreamOrDefault { 00049 typedef typename GridObjectStreamOrDefaultHelper< 00050 Conversion<GridImp, HasObjectStream>::exists, 00051 GridImp, 00052 DefaultImp>::ObjectStreamType ObjectStreamType; 00053 }; 00054 00056 struct IsDofManager {}; 00057 00059 struct HasHierarchicIndexSet {}; 00060 00061 } // end namespace Dune 00062 #endif