lemon/adaptors.h
changeset 664 4137ef9aacc6
parent 626 d11bf7998905
child 703 cb38ccedd2c1
     1.1 --- a/lemon/adaptors.h	Fri Apr 24 10:15:33 2009 +0200
     1.2 +++ b/lemon/adaptors.h	Fri Apr 24 11:54:48 2009 +0200
     1.3 @@ -109,13 +109,11 @@
     1.4  
     1.5      template <typename V>
     1.6      class NodeMap : public DGR::template NodeMap<V> {
     1.7 +      typedef typename DGR::template NodeMap<V> Parent;
     1.8 +
     1.9      public:
    1.10 -
    1.11 -      typedef typename DGR::template NodeMap<V> Parent;
    1.12 -
    1.13        explicit NodeMap(const Adaptor& adaptor)
    1.14          : Parent(*adaptor._digraph) {}
    1.15 -
    1.16        NodeMap(const Adaptor& adaptor, const V& value)
    1.17          : Parent(*adaptor._digraph, value) { }
    1.18  
    1.19 @@ -134,13 +132,11 @@
    1.20  
    1.21      template <typename V>
    1.22      class ArcMap : public DGR::template ArcMap<V> {
    1.23 +      typedef typename DGR::template ArcMap<V> Parent;
    1.24 +
    1.25      public:
    1.26 -
    1.27 -      typedef typename DGR::template ArcMap<V> Parent;
    1.28 -
    1.29        explicit ArcMap(const DigraphAdaptorBase<DGR>& adaptor)
    1.30          : Parent(*adaptor._digraph) {}
    1.31 -
    1.32        ArcMap(const DigraphAdaptorBase<DGR>& adaptor, const V& value)
    1.33          : Parent(*adaptor._digraph, value) {}
    1.34  
    1.35 @@ -255,8 +251,9 @@
    1.36  
    1.37      template <typename V>
    1.38      class NodeMap : public GR::template NodeMap<V> {
    1.39 +      typedef typename GR::template NodeMap<V> Parent;
    1.40 +
    1.41      public:
    1.42 -      typedef typename GR::template NodeMap<V> Parent;
    1.43        explicit NodeMap(const GraphAdaptorBase<GR>& adapter)
    1.44          : Parent(*adapter._graph) {}
    1.45        NodeMap(const GraphAdaptorBase<GR>& adapter, const V& value)
    1.46 @@ -277,8 +274,9 @@
    1.47  
    1.48      template <typename V>
    1.49      class ArcMap : public GR::template ArcMap<V> {
    1.50 +      typedef typename GR::template ArcMap<V> Parent;
    1.51 +
    1.52      public:
    1.53 -      typedef typename GR::template ArcMap<V> Parent;
    1.54        explicit ArcMap(const GraphAdaptorBase<GR>& adapter)
    1.55          : Parent(*adapter._graph) {}
    1.56        ArcMap(const GraphAdaptorBase<GR>& adapter, const V& value)
    1.57 @@ -298,8 +296,9 @@
    1.58  
    1.59      template <typename V>
    1.60      class EdgeMap : public GR::template EdgeMap<V> {
    1.61 +      typedef typename GR::template EdgeMap<V> Parent;
    1.62 +
    1.63      public:
    1.64 -      typedef typename GR::template EdgeMap<V> Parent;
    1.65        explicit EdgeMap(const GraphAdaptorBase<GR>& adapter)
    1.66          : Parent(*adapter._graph) {}
    1.67        EdgeMap(const GraphAdaptorBase<GR>& adapter, const V& value)
    1.68 @@ -321,9 +320,9 @@
    1.69  
    1.70    template <typename DGR>
    1.71    class ReverseDigraphBase : public DigraphAdaptorBase<DGR> {
    1.72 +    typedef DigraphAdaptorBase<DGR> Parent;
    1.73    public:
    1.74      typedef DGR Digraph;
    1.75 -    typedef DigraphAdaptorBase<DGR> Parent;
    1.76    protected:
    1.77      ReverseDigraphBase() : Parent() { }
    1.78    public:
    1.79 @@ -374,10 +373,10 @@
    1.80    class ReverseDigraph :
    1.81      public DigraphAdaptorExtender<ReverseDigraphBase<DGR> > {
    1.82  #endif
    1.83 +    typedef DigraphAdaptorExtender<ReverseDigraphBase<DGR> > Parent;
    1.84    public:
    1.85      /// The type of the adapted digraph.
    1.86      typedef DGR Digraph;
    1.87 -    typedef DigraphAdaptorExtender<ReverseDigraphBase<DGR> > Parent;
    1.88    protected:
    1.89      ReverseDigraph() { }
    1.90    public:
    1.91 @@ -403,13 +402,13 @@
    1.92  
    1.93    template <typename DGR, typename NF, typename AF, bool ch = true>
    1.94    class SubDigraphBase : public DigraphAdaptorBase<DGR> {
    1.95 +    typedef DigraphAdaptorBase<DGR> Parent;
    1.96    public:
    1.97      typedef DGR Digraph;
    1.98      typedef NF NodeFilterMap;
    1.99      typedef AF ArcFilterMap;
   1.100  
   1.101      typedef SubDigraphBase Adaptor;
   1.102 -    typedef DigraphAdaptorBase<DGR> Parent;
   1.103    protected:
   1.104      NF* _node_filter;
   1.105      AF* _arc_filter;
   1.106 @@ -509,10 +508,11 @@
   1.107      class NodeMap 
   1.108        : public SubMapExtender<SubDigraphBase<DGR, NF, AF, ch>, 
   1.109  	      LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, NodeMap<V>)> {
   1.110 +      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, ch>,
   1.111 +	LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, NodeMap<V>)> Parent;
   1.112 +
   1.113      public:
   1.114        typedef V Value;
   1.115 -      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, ch>,
   1.116 -	    LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, NodeMap<V>)> Parent;
   1.117  
   1.118        NodeMap(const SubDigraphBase<DGR, NF, AF, ch>& adaptor)
   1.119          : Parent(adaptor) {}
   1.120 @@ -535,10 +535,11 @@
   1.121      class ArcMap 
   1.122        : public SubMapExtender<SubDigraphBase<DGR, NF, AF, ch>,
   1.123  	      LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, ArcMap<V>)> {
   1.124 +      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, ch>,
   1.125 +        LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, ArcMap<V>)> Parent;
   1.126 +
   1.127      public:
   1.128        typedef V Value;
   1.129 -      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, ch>,
   1.130 -        LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, ArcMap<V>)> Parent;
   1.131  
   1.132        ArcMap(const SubDigraphBase<DGR, NF, AF, ch>& adaptor)
   1.133          : Parent(adaptor) {}
   1.134 @@ -562,13 +563,13 @@
   1.135    template <typename DGR, typename NF, typename AF>
   1.136    class SubDigraphBase<DGR, NF, AF, false>
   1.137      : public DigraphAdaptorBase<DGR> {
   1.138 +    typedef DigraphAdaptorBase<DGR> Parent;
   1.139    public:
   1.140      typedef DGR Digraph;
   1.141      typedef NF NodeFilterMap;
   1.142      typedef AF ArcFilterMap;
   1.143  
   1.144      typedef SubDigraphBase Adaptor;
   1.145 -    typedef DigraphAdaptorBase<Digraph> Parent;
   1.146    protected:
   1.147      NF* _node_filter;
   1.148      AF* _arc_filter;
   1.149 @@ -650,10 +651,11 @@
   1.150      class NodeMap 
   1.151        : public SubMapExtender<SubDigraphBase<DGR, NF, AF, false>,
   1.152            LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, NodeMap<V>)> {
   1.153 +      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, false>, 
   1.154 +        LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, NodeMap<V>)> Parent;
   1.155 +
   1.156      public:
   1.157        typedef V Value;
   1.158 -      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, false>, 
   1.159 -        LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, NodeMap<V>)> Parent;
   1.160  
   1.161        NodeMap(const SubDigraphBase<DGR, NF, AF, false>& adaptor)
   1.162          : Parent(adaptor) {}
   1.163 @@ -676,10 +678,11 @@
   1.164      class ArcMap 
   1.165        : public SubMapExtender<SubDigraphBase<DGR, NF, AF, false>,
   1.166            LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, ArcMap<V>)> {
   1.167 +      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, false>,
   1.168 +        LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, ArcMap<V>)> Parent;
   1.169 +
   1.170      public:
   1.171        typedef V Value;
   1.172 -      typedef SubMapExtender<SubDigraphBase<DGR, NF, AF, false>,
   1.173 -          LEMON_SCOPE_FIX(DigraphAdaptorBase<DGR>, ArcMap<V>)> Parent;
   1.174  
   1.175        ArcMap(const SubDigraphBase<DGR, NF, AF, false>& adaptor)
   1.176          : Parent(adaptor) {}
   1.177 @@ -863,13 +866,13 @@
   1.178  
   1.179    template <typename GR, typename NF, typename EF, bool ch = true>
   1.180    class SubGraphBase : public GraphAdaptorBase<GR> {
   1.181 +    typedef GraphAdaptorBase<GR> Parent;
   1.182    public:
   1.183      typedef GR Graph;
   1.184      typedef NF NodeFilterMap;
   1.185      typedef EF EdgeFilterMap;
   1.186  
   1.187      typedef SubGraphBase Adaptor;
   1.188 -    typedef GraphAdaptorBase<GR> Parent;
   1.189    protected:
   1.190  
   1.191      NF* _node_filter;
   1.192 @@ -1016,10 +1019,11 @@
   1.193      class NodeMap 
   1.194        : public SubMapExtender<SubGraphBase<GR, NF, EF, ch>,
   1.195            LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, NodeMap<V>)> {
   1.196 +      typedef SubMapExtender<SubGraphBase<GR, NF, EF, ch>, 
   1.197 +        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, NodeMap<V>)> Parent;
   1.198 +
   1.199      public:
   1.200        typedef V Value;
   1.201 -      typedef SubMapExtender<SubGraphBase<GR, NF, EF, ch>, 
   1.202 -        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, NodeMap<V>)> Parent;
   1.203  
   1.204        NodeMap(const SubGraphBase<GR, NF, EF, ch>& adaptor)
   1.205          : Parent(adaptor) {}
   1.206 @@ -1042,10 +1046,11 @@
   1.207      class ArcMap 
   1.208        : public SubMapExtender<SubGraphBase<GR, NF, EF, ch>,
   1.209            LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, ArcMap<V>)> {
   1.210 +      typedef SubMapExtender<SubGraphBase<GR, NF, EF, ch>, 
   1.211 +        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, ArcMap<V>)> Parent;
   1.212 +
   1.213      public:
   1.214        typedef V Value;
   1.215 -      typedef SubMapExtender<SubGraphBase<GR, NF, EF, ch>, 
   1.216 -        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, ArcMap<V>)> Parent;
   1.217  
   1.218        ArcMap(const SubGraphBase<GR, NF, EF, ch>& adaptor)
   1.219          : Parent(adaptor) {}
   1.220 @@ -1068,10 +1073,11 @@
   1.221      class EdgeMap 
   1.222        : public SubMapExtender<SubGraphBase<GR, NF, EF, ch>,
   1.223          LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, EdgeMap<V>)> {
   1.224 +      typedef SubMapExtender<SubGraphBase<GR, NF, EF, ch>, 
   1.225 +        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, EdgeMap<V>)> Parent;
   1.226 +
   1.227      public:
   1.228        typedef V Value;
   1.229 -      typedef SubMapExtender<SubGraphBase<GR, NF, EF, ch>, 
   1.230 -        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, EdgeMap<V>)> Parent;
   1.231  
   1.232        EdgeMap(const SubGraphBase<GR, NF, EF, ch>& adaptor)
   1.233          : Parent(adaptor) {}
   1.234 @@ -1096,13 +1102,13 @@
   1.235    template <typename GR, typename NF, typename EF>
   1.236    class SubGraphBase<GR, NF, EF, false>
   1.237      : public GraphAdaptorBase<GR> {
   1.238 +    typedef GraphAdaptorBase<GR> Parent;
   1.239    public:
   1.240      typedef GR Graph;
   1.241      typedef NF NodeFilterMap;
   1.242      typedef EF EdgeFilterMap;
   1.243  
   1.244      typedef SubGraphBase Adaptor;
   1.245 -    typedef GraphAdaptorBase<GR> Parent;
   1.246    protected:
   1.247      NF* _node_filter;
   1.248      EF* _edge_filter;
   1.249 @@ -1211,10 +1217,11 @@
   1.250      class NodeMap 
   1.251        : public SubMapExtender<SubGraphBase<GR, NF, EF, false>,
   1.252            LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, NodeMap<V>)> {
   1.253 +      typedef SubMapExtender<SubGraphBase<GR, NF, EF, false>, 
   1.254 +        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, NodeMap<V>)> Parent;
   1.255 +
   1.256      public:
   1.257        typedef V Value;
   1.258 -      typedef SubMapExtender<SubGraphBase<GR, NF, EF, false>, 
   1.259 -        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, NodeMap<V>)> Parent;
   1.260  
   1.261        NodeMap(const SubGraphBase<GR, NF, EF, false>& adaptor)
   1.262          : Parent(adaptor) {}
   1.263 @@ -1237,10 +1244,11 @@
   1.264      class ArcMap 
   1.265        : public SubMapExtender<SubGraphBase<GR, NF, EF, false>,
   1.266            LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, ArcMap<V>)> {
   1.267 +      typedef SubMapExtender<SubGraphBase<GR, NF, EF, false>, 
   1.268 +        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, ArcMap<V>)> Parent;
   1.269 +
   1.270      public:
   1.271        typedef V Value;
   1.272 -      typedef SubMapExtender<SubGraphBase<GR, NF, EF, false>, 
   1.273 -        LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, ArcMap<V>)> Parent;
   1.274  
   1.275        ArcMap(const SubGraphBase<GR, NF, EF, false>& adaptor)
   1.276          : Parent(adaptor) {}
   1.277 @@ -1263,10 +1271,11 @@
   1.278      class EdgeMap 
   1.279        : public SubMapExtender<SubGraphBase<GR, NF, EF, false>,
   1.280          LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, EdgeMap<V>)> {
   1.281 +      typedef SubMapExtender<SubGraphBase<GR, NF, EF, false>, 
   1.282 +	LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, EdgeMap<V>)> Parent;
   1.283 +
   1.284      public:
   1.285        typedef V Value;
   1.286 -      typedef SubMapExtender<SubGraphBase<GR, NF, EF, false>, 
   1.287 -		  LEMON_SCOPE_FIX(GraphAdaptorBase<GR>, EdgeMap<V>)> Parent;
   1.288  
   1.289        EdgeMap(const SubGraphBase<GR, NF, EF, false>& adaptor)
   1.290          : Parent(adaptor) {}
   1.291 @@ -1485,15 +1494,15 @@
   1.292        SubDigraphBase<GR, NF, ConstMap<typename GR::Arc, Const<bool, true> >,
   1.293                       true> > {
   1.294  #endif
   1.295 -  public:
   1.296 -
   1.297 -    typedef GR Digraph;
   1.298 -    typedef NF NodeFilterMap;
   1.299 -
   1.300      typedef DigraphAdaptorExtender<
   1.301        SubDigraphBase<GR, NF, ConstMap<typename GR::Arc, Const<bool, true> >, 
   1.302                       true> > Parent;
   1.303  
   1.304 +  public:
   1.305 +
   1.306 +    typedef GR Digraph;
   1.307 +    typedef NF NodeFilterMap;
   1.308 +
   1.309      typedef typename Parent::Node Node;
   1.310  
   1.311    protected:
   1.312 @@ -1548,14 +1557,17 @@
   1.313        SubGraphBase<GR, NF, ConstMap<typename GR::Edge, Const<bool, true> >, 
   1.314                     true> > {
   1.315  
   1.316 -  public:
   1.317 -    typedef GR Graph;
   1.318 -    typedef NF NodeFilterMap;
   1.319      typedef GraphAdaptorExtender<
   1.320        SubGraphBase<GR, NF, ConstMap<typename GR::Edge, Const<bool, true> >, 
   1.321                     true> > Parent;
   1.322  
   1.323 +  public:
   1.324 +
   1.325 +    typedef GR Graph;
   1.326 +    typedef NF NodeFilterMap;
   1.327 +
   1.328      typedef typename Parent::Node Node;
   1.329 +
   1.330    protected:
   1.331      ConstMap<typename GR::Edge, Const<bool, true> > const_true_map;
   1.332  
   1.333 @@ -1629,16 +1641,17 @@
   1.334        SubDigraphBase<DGR, ConstMap<typename DGR::Node, Const<bool, true> >,
   1.335                       AF, false> > {
   1.336  #endif
   1.337 +    typedef DigraphAdaptorExtender<
   1.338 +      SubDigraphBase<DGR, ConstMap<typename DGR::Node, Const<bool, true> >, 
   1.339 +                     AF, false> > Parent;
   1.340 +
   1.341    public:
   1.342 +
   1.343      /// The type of the adapted digraph.
   1.344      typedef DGR Digraph;
   1.345      /// The type of the arc filter map.
   1.346      typedef AF ArcFilterMap;
   1.347  
   1.348 -    typedef DigraphAdaptorExtender<
   1.349 -      SubDigraphBase<DGR, ConstMap<typename DGR::Node, Const<bool, true> >, 
   1.350 -                     AF, false> > Parent;
   1.351 -
   1.352      typedef typename Parent::Arc Arc;
   1.353  
   1.354    protected:
   1.355 @@ -1738,16 +1751,17 @@
   1.356        SubGraphBase<GR, ConstMap<typename GR::Node, Const<bool, true> >, 
   1.357                     EF, false> > {
   1.358  #endif
   1.359 +    typedef GraphAdaptorExtender<
   1.360 +      SubGraphBase<GR, ConstMap<typename GR::Node, Const<bool, true > >, 
   1.361 +                   EF, false> > Parent;
   1.362 +
   1.363    public:
   1.364 +
   1.365      /// The type of the adapted graph.
   1.366      typedef GR Graph;
   1.367      /// The type of the edge filter map.
   1.368      typedef EF EdgeFilterMap;
   1.369  
   1.370 -    typedef GraphAdaptorExtender<
   1.371 -      SubGraphBase<GR, ConstMap<typename GR::Node, Const<bool, true > >, 
   1.372 -                   EF, false> > Parent;
   1.373 -
   1.374      typedef typename Parent::Edge Edge;
   1.375  
   1.376    protected:
   1.377 @@ -2111,10 +2125,10 @@
   1.378  
   1.379      template <typename V>
   1.380      class NodeMap : public DGR::template NodeMap<V> {
   1.381 +      typedef typename DGR::template NodeMap<V> Parent;
   1.382 +
   1.383      public:
   1.384 -
   1.385        typedef V Value;
   1.386 -      typedef typename DGR::template NodeMap<Value> Parent;
   1.387  
   1.388        explicit NodeMap(const UndirectorBase<DGR>& adaptor)
   1.389          : Parent(*adaptor._digraph) {}
   1.390 @@ -2137,11 +2151,11 @@
   1.391  
   1.392      template <typename V>
   1.393      class ArcMap
   1.394 -      : public SubMapExtender<UndirectorBase<DGR>, ArcMapBase<V> >
   1.395 -    {
   1.396 +      : public SubMapExtender<UndirectorBase<DGR>, ArcMapBase<V> > {
   1.397 +      typedef SubMapExtender<UndirectorBase<DGR>, ArcMapBase<V> > Parent;
   1.398 +
   1.399      public:
   1.400        typedef V Value;
   1.401 -      typedef SubMapExtender<Adaptor, ArcMapBase<V> > Parent;
   1.402  
   1.403        explicit ArcMap(const UndirectorBase<DGR>& adaptor)
   1.404          : Parent(adaptor) {}
   1.405 @@ -2163,10 +2177,10 @@
   1.406  
   1.407      template <typename V>
   1.408      class EdgeMap : public Digraph::template ArcMap<V> {
   1.409 +      typedef typename Digraph::template ArcMap<V> Parent;
   1.410 +
   1.411      public:
   1.412 -
   1.413        typedef V Value;
   1.414 -      typedef typename Digraph::template ArcMap<V> Parent;
   1.415  
   1.416        explicit EdgeMap(const UndirectorBase<DGR>& adaptor)
   1.417          : Parent(*adaptor._digraph) {}
   1.418 @@ -2238,10 +2252,10 @@
   1.419    class Undirector :
   1.420      public GraphAdaptorExtender<UndirectorBase<DGR> > {
   1.421  #endif
   1.422 +    typedef GraphAdaptorExtender<UndirectorBase<DGR> > Parent;
   1.423    public:
   1.424      /// The type of the adapted digraph.
   1.425      typedef DGR Digraph;
   1.426 -    typedef GraphAdaptorExtender<UndirectorBase<DGR> > Parent;
   1.427    protected:
   1.428      Undirector() { }
   1.429    public:
   1.430 @@ -2449,10 +2463,10 @@
   1.431  
   1.432      template <typename V>
   1.433      class NodeMap : public GR::template NodeMap<V> {
   1.434 +      typedef typename GR::template NodeMap<V> Parent;
   1.435 +
   1.436      public:
   1.437  
   1.438 -      typedef typename GR::template NodeMap<V> Parent;
   1.439 -
   1.440        explicit NodeMap(const OrienterBase<GR, DM>& adapter)
   1.441          : Parent(*adapter._graph) {}
   1.442  
   1.443 @@ -2474,10 +2488,10 @@
   1.444  
   1.445      template <typename V>
   1.446      class ArcMap : public GR::template EdgeMap<V> {
   1.447 +      typedef typename Graph::template EdgeMap<V> Parent;
   1.448 +
   1.449      public:
   1.450  
   1.451 -      typedef typename Graph::template EdgeMap<V> Parent;
   1.452 -
   1.453        explicit ArcMap(const OrienterBase<GR, DM>& adapter)
   1.454          : Parent(*adapter._graph) { }
   1.455  
   1.456 @@ -2546,6 +2560,7 @@
   1.457    class Orienter :
   1.458      public DigraphAdaptorExtender<OrienterBase<GR, DM> > {
   1.459  #endif
   1.460 +    typedef DigraphAdaptorExtender<OrienterBase<GR, DM> > Parent;
   1.461    public:
   1.462  
   1.463      /// The type of the adapted graph.
   1.464 @@ -2553,10 +2568,11 @@
   1.465      /// The type of the direction edge map.
   1.466      typedef DM DirectionMap;
   1.467  
   1.468 -    typedef DigraphAdaptorExtender<OrienterBase<GR, DM> > Parent;
   1.469      typedef typename Parent::Arc Arc;
   1.470 +
   1.471    protected:
   1.472      Orienter() { }
   1.473 +
   1.474    public:
   1.475  
   1.476      /// \brief Constructor
   1.477 @@ -2866,10 +2882,11 @@
   1.478  
   1.479    template <typename DGR>
   1.480    class SplitNodesBase {
   1.481 +    typedef DigraphAdaptorBase<const DGR> Parent;
   1.482 +
   1.483    public:
   1.484  
   1.485      typedef DGR Digraph;
   1.486 -    typedef DigraphAdaptorBase<const DGR> Parent;
   1.487      typedef SplitNodesBase Adaptor;
   1.488  
   1.489      typedef typename DGR::Node DigraphNode;
   1.490 @@ -3228,11 +3245,11 @@
   1.491  
   1.492      template <typename V>
   1.493      class NodeMap
   1.494 -      : public SubMapExtender<SplitNodesBase<DGR>, NodeMapBase<V> >
   1.495 -    {
   1.496 +      : public SubMapExtender<SplitNodesBase<DGR>, NodeMapBase<V> > {
   1.497 +      typedef SubMapExtender<SplitNodesBase<DGR>, NodeMapBase<V> > Parent;
   1.498 +
   1.499      public:
   1.500        typedef V Value;
   1.501 -      typedef SubMapExtender<SplitNodesBase<DGR>, NodeMapBase<Value> > Parent;
   1.502  
   1.503        NodeMap(const SplitNodesBase<DGR>& adaptor)
   1.504          : Parent(adaptor) {}
   1.505 @@ -3254,11 +3271,11 @@
   1.506  
   1.507      template <typename V>
   1.508      class ArcMap
   1.509 -      : public SubMapExtender<SplitNodesBase<DGR>, ArcMapBase<V> >
   1.510 -    {
   1.511 +      : public SubMapExtender<SplitNodesBase<DGR>, ArcMapBase<V> > {
   1.512 +      typedef SubMapExtender<SplitNodesBase<DGR>, ArcMapBase<V> > Parent;
   1.513 +
   1.514      public:
   1.515        typedef V Value;
   1.516 -      typedef SubMapExtender<SplitNodesBase<DGR>, ArcMapBase<Value> > Parent;
   1.517  
   1.518        ArcMap(const SplitNodesBase<DGR>& adaptor)
   1.519          : Parent(adaptor) {}
   1.520 @@ -3324,9 +3341,10 @@
   1.521    class SplitNodes
   1.522      : public DigraphAdaptorExtender<SplitNodesBase<const DGR> > {
   1.523  #endif
   1.524 +    typedef DigraphAdaptorExtender<SplitNodesBase<const DGR> > Parent;
   1.525 +
   1.526    public:
   1.527      typedef DGR Digraph;
   1.528 -    typedef DigraphAdaptorExtender<SplitNodesBase<const DGR> > Parent;
   1.529  
   1.530      typedef typename DGR::Node DigraphNode;
   1.531      typedef typename DGR::Arc DigraphArc;