[Dune] Barton-Nackman.

Robert Kloefkorn robertk at mathematik.uni-freiburg.de
Thu Jul 27 16:08:30 CEST 2006


Hallo Dune,

nochmal einen Nachtrag zum Barton-Nackman Trick und der DataHandle
Geschichte.

Sowohl Peters Argument mit der deutlich gekennzeichneten Schnittstelle
als auch Markus Bemerkungen zur schwierigeren Implementierung sind richtig.

Mit folgendem Vorschlag kann man meiner Meinung  nach beide Sachen unter
 einen Hut bringen.

Ich würde die Schnittstelle dahigehend ändern, dass

die Klasse CommDataHandleIF nur noch einen template Parameter erhält,
nämlich

template <class DataHandleTraits>
class CommDataHandleIF
{
  typedef typename DataHandleTraits :: DataHandleImp DataHandleImp;
public:
  typedef typename DataHandleTraits :: DataType DataType;

....
};

Damit wäre das gleich erreicht. Ausserdem ist das Interface damit
stabiler gegenüber Änderungen, welche viel leichter druchgezogen wertden
können, da lediglich der Inhalt der Traits, aber nicht die template
Parameter Liste geändert werden muss.

Die Ableitung sieht dann so aus:

// forward deklaration
template <class IndexSetImp,
          class GlobalIdSetImp,
          class DataVectorType >
class ExampleDataHandle;

// Traits of ExampleDataHandle
template <class IndexSetImp,
          class GlobalIdSetImp,
          class DataVectorType >
struct ExampleDataHandleTraits
{
  typedef ExampleDataHandle<IndexSetImp,GlobalIdSetImp,DataVectorType>
DataHandl
  typedef typename DataVectorType :: value_type DataType;
};

// ExampleDataHandle
template <class IndexSetImp,
          class GlobalIdSetImp,
          class DataVectorType >
class ExampleDataHandle
: public CommDataHandleIF <
ExampleDataHandleTraits<IndexSetImp,GlobalIdSetImp,DataVectorType> >
{

...
};

Wenn niemand etwas dagegen hat, dann stelle ich das nochmal so um.

Grüßle

R

-- 

  Robert Klöfkorn           <robertk at mathematik.uni-freiburg.de>

  Mathematisches Institut              Tel: +49 (0) 761 203 5631
  Abt. für Angewandte Mathematik       Fax: +49 (0) 761 203 5632
  Universität Freiburg
  Hermann-Herder-Str. 10
  79104 Freiburg

  http://www.mathematik.uni-freiburg.de/IAM/homepages/robertk




More information about the Dune mailing list