Boost logo

Boost :

From: vicente.botet (vicente.botet_at_[hidden])
Date: 2008-04-06 12:18:10


Could you tell me if the following is equivalent to what appears in the
quick start. I'm not very confortable with
foreach.

</code>
template<class Range, class Predicate>
struct mono_make_filtered
{
    typedef
        boost::filter_iterator<
            typename boost::remove_cv<Predicate>::type,
            typename boost::range_result_iterator<Range>::type
>
    iter_t;

    typedef
        boost::iterator_range<iter_t>
    result_type;

    result_type operator()(Range &rng, Predicate &pred) const
    {
        return result_type(
            iter_t(pred, boost::begin(rng), boost::end(rng)),
            iter_t(pred, boost::end(rng), boost::end(rng))
        );
    }
};

bool is_not_X(char ch) { return ch != 'X'; }
bool is_not_Y(char ch) { return ch != 'Y'; }
bool is_lower(char ch) { return std::islower(ch, std::locale()); }

void quick_start_make_filtered()
{
    std::string src("abXcYdXefXgYhY");

    mono_make_filtered::result_type lowers = make_filtered(src, &is_lower);

    foreach (char ch, lowers) {
        std::cout << ch;
    }

    foreach (char ch, make_filtered(make_filtered(src, &is_not_X),
&is_not_Y)) {
        std::cout << ch;
    }
}
</code>

If this is the case could you show which is really the advantage to use Egg.
I 'm sure there are a lot of, but I think the example do not show them.

Best regards
_____________________
Vicente Juan Botet Escriba

----- Original Message -----
From: "vicente.botet" <vicente.botet_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Sunday, April 06, 2008 6:05 PM
Subject: Re: [boost] Egg 2nd request for reviews: Some comments

> Hello,
>
> As you can see this is not a review. I have no doubt that Egg is an
> excelent
> candidate for a Boost library and that there are a lot of hidden diamons.
>
> I have only started to read the docummentation (the introduction adn the
> quick start) and for the moment I'm not sure that I will find the time to
> see the impementaion. The subject is really abstract and it is hard to
> read
> without stoping every two lines to se if I have realy understood. I supose
> that there are other boosters in the same situation.
>
> I have a little problem that could be a major one. In the documentation it
> is cleary state:
> "Also, assume that every expression is placed after:
> namespace egg = boost::egg;
> using namespace egg;"
>
> Does it means that every not prefixed symbol comes from egg? I think that
> it
> will be better to prefix every specific egg class by egg::. There are some
> moments that I dont't know if the used class is a egg class or a boost
> class. This is surely due to the fact that Egg use class or functions
> names
> already in use on Boost or the STL.
> This has nothing to be with the contents. I recognize that this is not
> natural (I'm writing now a library and I use the same style) for the
> writer
> to prefix every new symbol, but I'm sure the reader will apreciate. We
> shouldn't mix documentation and coding styles.
>
> I dont find too much clear the naming of Major and Little.
>
> "Function Adaptors which take Polymorphic Function Objects then return
> adapted ones."
> Could you ad to what these are adapted?
>
> "Function Objects which are ports of famous function templates."
> Could you explain why this is useful?
>
> I really think that the introduction do not show clearly what is the
> problem
> Egg try to solve.
> " Unfortunately, if you need a Polymorphic Function Object whose return
> type
> depends on its argument types, it is not easy. "
> I think that you should present here what can or can not be done without
> Egg, and show how Egg helps to do that.
> The section "Problems of function templates" for the "Quick Start" shoud
> appear in the introduction to my taste.
>
> May be you can add a 6th problem: a template cannot be passed to
> boost::lambda::bind as it seam from the introductuion this is a majot goal
> of the Egg library. maybe it would be a good idea to show hwhat the user
> needs to do today to pass a template to the boost::lambda::bind function
> and
> how Egg make it easier.
>
> One minor remark on the documentation. There is an incoherence on the two
> first pages:
> Portability
> Egg is known to work on the following platforms:
>
> a.. Microsoft Visual C++ .NET Version 7.1 SP1
> b.. Microsoft Visual C++ 2005 Express Edition SP1
> c.. Microsoft Visual C++ 2008 Express Edition
> d.. MinGW with GCC 3.4.4
> e.. MinGW with GCC 4.1.2
>
> Portability
> Egg is known to work on the following platforms:
>
> a.. Microsoft Visual C++ Version 7.1 or later
> b.. GCC 3.4.4 or later
>
> The Rationale in the Introduction seam to not add nothing interesting. Are
> there some missing links?
>
> I expect to have enough time to do a review, even a little one.
>
> Best
> _____________________
> Vicente Juan Botet Escriba
>
> ----- Original Message -----
> From: "dan marsden" <danmarsden_at_[hidden]>
> To: "Boost" <boost_at_[hidden]>; "Boost Announce"
> <boost-announce_at_[hidden]>; "Boost Users"
> <boost-users_at_[hidden]>
> Sent: Sunday, April 06, 2008 1:59 PM
> Subject: [boost] Egg 2nd request for reviews
>
>
>> Hi All
>>
>> The review of the Egg library by Shunsuke Sogame has been running for 1
>> week now. There has been some discussion of the library on a couple of
>> related threads, but no reviews submitted so far. Please try and find
>> time
>> to submit a review of this library if possible.
>>
>> If you wish to review, but don't have time before the review ends on
>> April
>> 13th, please post to that effect, we may be able to extend / move the
>> review period to help reviewers.
>>
>> Introduction:
>> It is not so easy to define Function Objects
>> especially if you want to support Boost.ResultOf and Boost.Lambda.
>> Therefore, as Boost provides iterator_facade and iterator adaptors,
>> Egg provides function_facade and function adaptors.
>>
>> Egg provides the following features:
>>
>> * Workaround for the Forwarding Problem
>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm
>>
>> * Helpers to build Function Objects:
>> * egg::function and egg::function_facade provides the way to
>> build Function Objects which supports Boost.ResultOf and Lambda.
>>
>> * Function Objects Adaptors(in other words, higher-order functions):
>> * egg::curryN supports the currying.
>> * egg::pipable emulates extension methods(C#).
>> * egg::fuse/unfuse emulates variadic functions.
>> * egg::nestN represents nested lambda expressions.
>> * etc...
>>
>> The documentation is on line:
>> http://p-stade.sourceforge.net/boost/libs/egg/
>> The zipped source code is in Vault/FunctionObjects:
>> http://tinyurl.com/34lgda
>> Tested under:
>> Boost Development Trunk and Boost Version1.34.1.
>>
>> ---------------------------------------------------
>>
>> Please always state in your review, whether you think the library should
>> be
>> accepted as a Boost library!
>>
>> Additionally please consider giving feedback on the following general
>> topics:
>>
>> - What is your evaluation of the design?
>> - What is your evaluation of the implementation?
>> - What is your evaluation of the documentation?
>> - What is your evaluation of the potential usefulness of the library?
>> - Did you try to use the library? With what compiler? Did you have any
>> problems?
>> - How much effort did you put into your evaluation? A glance? A quick
>> reading? In-depth study?
>> - Are you knowledgeable about the problem domain?
>>
>> Thanks
>>
>> Dan Marsden
>> Review Manager
>>
>>
>>
>>
>>
>> ___________________________________________________________
>> Yahoo! For Good helps you make a difference
>>
>> http://uk.promotions.yahoo.com/forgood/
>> _______________________________________________
>> Unsubscribe & other changes:
>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>
>
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>


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