You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@mesos.apache.org by Joris Van Remoortere <jo...@gmail.com> on 2016/12/14 22:35:28 UTC

Re: Review Request 46425: Add helper function to simplify tokenize handling.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/46425/#review159240
-----------------------------------------------------------




3rdparty/stout/include/stout/strings.hpp (lines 170 - 175)
<https://reviews.apache.org/r/46425/#comment230184>

    What do you think about introducing a building block version of this function like:
    ```
    void foreachtoken(
        const std::string& s,
        const std::string& delims,
        const lambda::function<bool (const std::string&)& callback);
    ```
    
    I think it is a common pattern to provide a return type of `bool` in a callback like this. The reason is that other transforms can be composed on top.
    
    Then we can write:
    ```
    void foreachtoken(
        const std::string& s,
        const std::string& delims,
        const lambda::function<void (const std::string&)& callback,
        const Option<size_t>& max_tokens = None()) {
        size_t count = 0;
        foreachtoken(s, delims, [&](const string& token) -> bool {
          if (max_tokens.isSome() && count >= max_tokens.get()) { return false; }
          callback(token);
          ++count;
          return true;
        });
    }
    ```
    
    I would also consider making `max_tokens` be a template parameter as from our code base it seems we are never interested in a dynamic value. This may be going too far though and is just food for thought for a future discussion.
    
    What do you think?



3rdparty/stout/include/stout/strings.hpp (line 178)
<https://reviews.apache.org/r/46425/#comment230185>

    Please do capture the callback by `const &` when implementing this pattern.
    
    The rule to follow is:
    -If the lambda will be fully consumed during the lifetime of the function, then it is safe to capture by `const &`.
    -If the lambda will be invoked later, the code responsible for capturing the lambda to execute asynchronously should make the copy.


- Joris Van Remoortere


On June 29, 2016, 4:56 p.m., Klaus Ma wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/46425/
> -----------------------------------------------------------
> 
> (Updated June 29, 2016, 4:56 p.m.)
> 
> 
> Review request for mesos, Benjamin Mahler and Joris Van Remoortere.
> 
> 
> Bugs: MESOS-5234
>     https://issues.apache.org/jira/browse/MESOS-5234
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Add helper function to simplify tokenize handling.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/strings.hpp 162bdfb6c4f5a6b108761ebccd9b77e672f6dd87 
>   3rdparty/stout/tests/strings_tests.cpp b54a9dbf162403310b8bba687442e184a473f5a6 
> 
> Diff: https://reviews.apache.org/r/46425/diff/
> 
> 
> Testing
> -------
> 
> make && make check
> 
> 
> Thanks,
> 
> Klaus Ma
> 
>