> On Sept. 15, 2014, 6:46 p.m., Ben Mahler wrote:
> > 3rdparty/libprocess/3rdparty/stout/include/stout/version.hpp, lines 32-34
> > <https://reviews.apache.org/r/25597/diff/3/?file=688423#file688423line32>
> >
> >     The program will crash if the split is non-numeric, because you'll call 
> > .get() on a numify operation, are you intending this to occur?
> >     
> >     A comment would be nice!
> 
> Kapil Arya wrote:
>     Good catch!  The question now is how to handle the situation where a 
> string such as "1.a.2" is passed on?  Should it be considered an error or 
> should it be interpreted as "1.0.0"?  If it should be considered an error, 
> how should be change the contructor to reflect that?
> 
> Ben Mahler wrote:
>     You can add a 'parse' method akin to what was done in duration.hpp:
>     
>     ```
>     static Try<Version> parse(const std::string& version);
>     ```
>     
>     This makes the error explicit, and we no longer need the (major(), 
> minor(), patch()) accessor methods, since the member variables would be const.
> 
> Kapil Arya wrote:
>     There is one trouble with making major/minor as const fields. Glibc 
> defines major and minor as macros and that breaks the compilation when these 
> fields are initialized in a contructor as ": major(majorVersion), 
> minor(minorVersion), patch(patchVersion)".  The preprocessor expands them to 
> gnu_dev_major and gnu_dev_minor respectively.
>     
>     The alternative solution is to go back to accessor functions and mark 
> these fields as private. Another alternative is to rename the const fields as 
> majorVersion, minorVersion, and patchVersion.
>     
>     Is there any preference here?

I see, seems a bit tricky to skirt around the macro issue:

```
// This caller is ok?
int major = version.major();

// The constructor argument is ok?
Version::Version(int major, int minor, int patch) {}
```

What if we remove the accessors, and make them const private as 'major_', 
'minor_', 'patch_'?

I'm curious why we'd need access to the version components, rather than just 
using the comparison operators or the stringify operator.
I could also envision some compatibility operators to ensure that it's the same 
major version if >= 1.0, or same minor version if < 1.0.

How about we hide them for now and defer the decision for later should the need 
arise?


- Ben


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


On Sept. 16, 2014, 6:48 p.m., Kapil Arya wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/25597/
> -----------------------------------------------------------
> 
> (Updated Sept. 16, 2014, 6:48 p.m.)
> 
> 
> Review request for mesos, Adam B and Niklas Nielsen.
> 
> 
> Repository: mesos-git
> 
> 
> Description
> -------
> 
> Currently there is no facility in Mesos for checking compatibility of various 
> Mesos components that could have been built at different times with 
> potentially different Mesos versions.  This requirement is especially 
> important for doing various compatibility checks between Mesos and Mesos 
> modules (WIP).
> 
> - Features major, minor, and patch numbers.
> - Convenience functions for comparing two versions.
> 
> 
> Diffs
> -----
> 
>   3rdparty/libprocess/3rdparty/Makefile.am 
> db9766d70adb9076946cd2b467c55636fe5f7235 
>   3rdparty/libprocess/3rdparty/stout/Makefile.am 
> b6464de53c3873ecd0b62a08ca9aac530043ffb9 
>   3rdparty/libprocess/3rdparty/stout/include/Makefile.am 
> 6fa5b741bdd7f089ba93bf6fea43b9f39f8f0edb 
>   3rdparty/libprocess/3rdparty/stout/include/stout/os.hpp 
> 5bbf829b3fa5d09a92e1d64c52c1fc7eed73fc91 
>   3rdparty/libprocess/3rdparty/stout/include/stout/version.hpp PRE-CREATION 
>   3rdparty/libprocess/3rdparty/stout/tests/version_tests.cpp PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/25597/diff/
> 
> 
> Testing
> -------
> 
> Added a stout test and ran make check
> 
> 
> Thanks,
> 
> Kapil Arya
> 
>

Reply via email to