Boost logo

Boost :

Subject: Re: [boost] different matrix library?
From: DE (satan66613_at_[hidden])
Date: 2009-08-20 12:07:28


about policies

on 18.08.2009 at 0:07
 joel wrote :
>> and could you please write an example of policy implementation of
>> yours?
>>
> Rutger wrote:
>> Yes, or provide access to the library already ...
> I don't like showing incomplete code. I'll build up a small toy example
> for policies soon.

since i don't know what a policy concept actualy is i'm going to bla
bla a little

it'll be convenient i suppose to write

    matrix<double> m;
    matrix<double, symmetric> symm;
    matrix<double, upper_triang> upper_tr;
    //etc.
    matrix<double, band|symmetric> band_symm;
    //etc.

implementation:

    enum mode {
      general = 0,
      symmetric = 1<<0,
      upper_triang = 1<<1,
      lower_triang = 1<<2,
      band = 1<<3
      //etc.
    };
      
    template<typename type, mode m = general> class matrix;

    tempplate<typename type> //explicitly specializing
    class matrix<type, general> //... //legal combinations of modes
    {/*...*/}; //providing unique interfaces
                                        //to unique entities
    template<typename type>
    class matrix<type, symmetric> //...
    {/*...*/};

    template<typename type>
    class matrix<type, band|symmetric> //...
    {/*...*/};
    //etc.
    
since illegal combinations are not specializaed it will be impossible
to instantiate them

maybe it's a piece of crap but i can't invent a better one yet

-- 
Pavel

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk