Boost logo

Boost :

From: Brian Braatz (brianb_at_[hidden])
Date: 2005-11-18 15:00:25


(I have been reading this thread with interest. I elected to go back to the
original post and respond to that)

On 11/4/05 1:45 PM, "relative_at_[hidden]" <relative_at_[hidden]> wrote:

> is there, or are there plans for, a boost c++/cli subproject?
>
> i've played around with boost and the cli compiler, a lot of libraries work
> with unmanaged data types (with a lot of warnings, but work), others don't.
> none work with managed data types of course although that wouldn't be a big
> problem I suppose. (e.g. boost::tuple)
>
> the spec is there, at least one compiler exists(mono?) and there is a STL
> called STL.NET by dinkumware(distributed by microsoft) for c++/cli.
> I haven't found anything on the website or the mailing list archives, is
> this beyond the scope of the boost project?
>

This would be easier for me to SEE what you are doing if you coded a sample.
That would also give something concrete to talk about :)

It SOUNDS like (please correct if I am wrong) that you wish to write some
translation layer for the unmanaged types so they maybe used as parameters
to boost templates?

I am still having a hard time understanding where the problem you are
seeking to address is.

I.e. (From what LITTLE I understand about CLI) the normal thing in CLI for
bridging the boundaries between managed and unmanaged types is to create a
class (similar in concept to a PIMPL) and then embed the managed type inside
that.

// psuedo code
struct outer
{

    managed_type_here ^ ref_managed_object;
    
    void foobar()
    {
        // pass the foobar() call to the managed object
        ref_managed_object.foobar();
    }

};

This outer class has a pointer (Stan Lippman calls it a "hat") inside it to
the CLI object. It then uses public member functions to expose stock C++
member functions which turn around and call into the managed object.

Per (my understanding of) CLI, you are not generally supposed to pass a CLI
object into a C++ function. (don't remember if it is even allowed)

Using this mechanism would allow one to take the outer class and place it
in, say a boost.tuple<>. Which would result in a "managed object" being
inside boost.tuple.

My Questions:
    is this along the lines of what you are thinking for a boost-cli
library?
    If not- I suggest you mail the list some sample code.
    If SO, this is A LOT of work making these wrappers for everything in
dotnet
    How does this fit into boost? This library would be VERY CLI specific
(DUH! :) )
    If you were REALLY wanting to do this, I suggest you use the reflection
capabilities of CLR, dig into the type system- and generate code which
implements the above for the Dot Net managed types
    This *might* be allowed into boost as a "tool"
        (though this remains *very* platform specific)
    The output of this tool would be fairly large
        This might be difficult to test

    I am *not* discouraging you in the least. Anything we can do to get more
people using boost the better. My sour notes are simply based around trying
to find a way to FIT this into boost.
    Even if most people do NOT believe this should go into boost, I believe
there is a value to (what I think) you are proposing.

Brian

:)
    
    

    


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