[1.33] README: Lots of files with no license/copyright

There are currently quite a few source files showing up with no recognised license or copyright holder information: boost/graph/simple_point.hpp boost/wave/util/flex_string.hpp libs/date_time/example/local_time/local_date_time.cpp libs/date_time/example/local_time/seconds_since_epoch.cpp libs/graph/src/graphviz_digraph_parser.hpp libs/graph/src/graphviz_graph_parser.hpp libs/mpl/book/chapter1/binary.hpp libs/mpl/example/fsm/player2.cpp libs/ptr_container/test/algo_test_data.hpp libs/ptr_container/test/cast.cpp libs/ptr_container/test/concept_check_data.hpp libs/ptr_container/test/convert.cpp libs/ptr_container/test/indirect_vector.cpp libs/ptr_container/test/map_value_iterator.cpp libs/ptr_container/test/null_object.cpp libs/ptr_container/test/ptr_unordered_map.cpp libs/ptr_container/test/ptr_unordered_set.cpp libs/ptr_container/test/sequence_point.cpp libs/ptr_container/test/stack_example.cpp libs/ptr_container/test/tut5.cpp libs/ptr_container/test/vector_size.cpp libs/ptr_container/test/xml_tree_test.cpp libs/python/test/cltree.cpp libs/python/test/tuple.cpp libs/range/test/compat1.cpp libs/regex/performance/time_dynamic_xpressive.cpp libs/test/test/boost_check_equal_str.cpp libs/test/test/config_file_iterator_test.cpp libs/test/test/config_file_test.cpp tools/build/jam_src/filesys.c tools/build/jam_src/hcache.h tools/build/jam_src/subst.c tools/build/v2/test/boostbook/a.hpp tools/build/v2/test/dependency-test/src1/z.h tools/build/v2/test/unused/b.cpp And one file has both, but no date on the copyright: boost/ptr_container/detail/default_deleter.hpp Fixes would be much appreciated, before the release! Thanks, John.

"John Maddock" <john@johnmaddock.co.uk> writes:
There are currently quite a few source files showing up with no recognised license or copyright holder information:
<snip>
libs/mpl/book/chapter1/binary.hpp libs/mpl/example/fsm/player2.cpp
Peter and Aleksey, can we release these code samples under the Boost open-source license? They were used in "C++ Template Metaprogramming" and currently have Aleksey and I as copyright holders with no license info. See http://www.boost-consulting.com/boost/libs/mpl/book/chapter1/binary.hpp and http://www.boost-consulting.com/boost/libs/mpl/example/fsm/player2.cpp <snip>
libs/python/test/cltree.cpp libs/python/test/tuple.cpp
Fixed, thanks. -- Dave Abrahams Boost Consulting www.boost-consulting.com

David Abrahams writes:
"John Maddock" <john@johnmaddock.co.uk> writes:
There are currently quite a few source files showing up with no recognised license or copyright holder information:
<snip>
libs/mpl/book/chapter1/binary.hpp libs/mpl/example/fsm/player2.cpp
Peter and Aleksey, can we release these code samples under the Boost open-source license?
Surely fine with me. -- Aleksey Gurtovoy MetaCommunications Engineering

John Maddock wrote:
There are currently quite a few source files showing up with no recognised license or copyright holder information:
boost/graph/simple_point.hpp boost/wave/util/flex_string.hpp
I'm not sure, what to do with this file. It was put by Andrei into the public domain. That's the reason why I didn't have inserted any Boost License into it. Any hints? Regards Hartmut
libs/date_time/example/local_time/local_date_time.cpp libs/date_time/example/local_time/seconds_since_epoch.cpp libs/graph/src/graphviz_digraph_parser.hpp libs/graph/src/graphviz_graph_parser.hpp libs/mpl/book/chapter1/binary.hpp libs/mpl/example/fsm/player2.cpp libs/ptr_container/test/algo_test_data.hpp libs/ptr_container/test/cast.cpp libs/ptr_container/test/concept_check_data.hpp libs/ptr_container/test/convert.cpp libs/ptr_container/test/indirect_vector.cpp libs/ptr_container/test/map_value_iterator.cpp libs/ptr_container/test/null_object.cpp libs/ptr_container/test/ptr_unordered_map.cpp libs/ptr_container/test/ptr_unordered_set.cpp libs/ptr_container/test/sequence_point.cpp libs/ptr_container/test/stack_example.cpp libs/ptr_container/test/tut5.cpp libs/ptr_container/test/vector_size.cpp libs/ptr_container/test/xml_tree_test.cpp libs/python/test/cltree.cpp libs/python/test/tuple.cpp libs/range/test/compat1.cpp libs/regex/performance/time_dynamic_xpressive.cpp libs/test/test/boost_check_equal_str.cpp libs/test/test/config_file_iterator_test.cpp libs/test/test/config_file_test.cpp tools/build/jam_src/filesys.c tools/build/jam_src/hcache.h tools/build/jam_src/subst.c tools/build/v2/test/boostbook/a.hpp tools/build/v2/test/dependency-test/src1/z.h tools/build/v2/test/unused/b.cpp
And one file has both, but no date on the copyright:
boost/ptr_container/detail/default_deleter.hpp
Fixes would be much appreciated, before the release!
Thanks,
John.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

boost/graph/simple_point.hpp boost/wave/util/flex_string.hpp
I'm not sure, what to do with this file. It was put by Andrei into the public domain. That's the reason why I didn't have inserted any Boost License into it.
Hmm, I guess as long as they're both clearly labelled as public domain then that's OK, one file has "The code is considered to be in the public domain", if you can add that to other file as well, then I'll update the licence scanner to recognise that. Actually "This code is considered to be in the public domain" would be somewhat better English, but that's being pedantic ;-) Thanks, John.

John Maddock wrote:
boost/graph/simple_point.hpp
I'm not responsible for this file.
boost/wave/util/flex_string.hpp
I'm not sure, what to do with this file. It was put by Andrei into the public domain. That's the reason why I didn't have inserted any Boost License into it.
Hmm, I guess as long as they're both clearly labelled as public domain then that's OK, one file has "The code is considered to be in the public domain", if you can add that to other file as well, then I'll update the licence scanner to recognise that. Actually "This code is considered to be in the public domain" would be somewhat better English, but that's being pedantic ;-)
Since I'm not a native English speaker I'd like to ask you for assistance here ;-) Please feel free to change the wording directly in the flex_string.hpp file. Regards Hartmut

Hartmut Kaiser wrote:
boost/wave/util/flex_string.hpp
I'm not sure, what to do with this file. It was put by
Andrei into the
public domain. That's the reason why I didn't have inserted
any Boost
License into it.
Hmm, I guess as long as they're both clearly labelled as public domain then that's OK, one file has "The code is considered to be in the public domain", if you can add that to other file as well, then I'll update the licence scanner to recognise that. Actually "This code is considered to be in the public domain" would be somewhat better English, but that's being pedantic ;-)
Since I'm not a native English speaker I'd like to ask you for assistance here ;-) Please feel free to change the wording directly in the flex_string.hpp file.
Thanks very much for emailing me about flex_string. If you could also insert the following copyright notice, I'd be most grateful (beware of wrapped lines): //////////////////////////////////////////////////////////////////////////////// // flex_string // Copyright (c) 2001 by Andrei Alexandrescu // Permission to use, copy, modify, distribute and sell this software for any // purpose is hereby granted without fee, provided that the above copyright // notice appear in all copies and that both that copyright notice and this // permission notice appear in supporting documentation. // The author makes no representations about the // suitability of this software for any purpose. It is provided "as is" // without express or implied warranty. //////////////////////////////////////////////////////////////////////////////// By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with. Andrei

Andrei Alexandrescu wrote:
Hmm, I guess as long as they're both clearly labelled as public domain then that's OK, one file has "The code is considered to be in the public domain", if you can add that to other file as well, then I'll update the licence scanner to recognise that. Actually "This code is considered to be in the public domain" would be somewhat better English, but that's being pedantic ;-)
Since I'm not a native English speaker I'd like to ask you for assistance here ;-) Please feel free to change the wording directly in the flex_string.hpp file.
Thanks very much for emailing me about flex_string. If you could also insert the following copyright notice, I'd be most grateful (beware of wrapped lines):
[snip] Done.
By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with.
Since Wave is accepted into Boost, it is already :-P Could you please send this newest version to me, I'll try to update at least the flex_string contained in the Wave distro. Regards Hartmut

Hartmut Kaiser <hartmut.kaiser@gmail.com> writes:
Andrei Alexandrescu wrote:
By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with.
Since Wave is accepted into Boost, it is already :-P
But it's not really in boost as an independent library, is it. Is it even exposed in the interface specification to Wave? -- Dave Abrahams Boost Consulting www.boost-consulting.com

David Abrahams wrote:
By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with.
Since Wave is accepted into Boost, it is already :-P
But it's not really in boost as an independent library, is it. Is it even exposed in the interface specification to Wave?
No and no. Was just kidding. It's certainly an implementation detail and completely exchangeable for any other std::string compatible class (simply by defining BOOST_WAVE_STRING=std::string or similar). Regards Hartmut

Hartmut Kaiser wrote:
Since Wave is accepted into Boost, it is already :-P
Heh, interesting. Now, if only someone one day includes the Loki headers... :o)
Could you please send this newest version to me, I'll try to update at least the flex_string contained in the Wave distro.
It's downloadable from http://moderncppdesign.com/code. I've added the copyright notice about a minute ago :o). Also, you might be disappointed that there are several files now; that was done in the name of easier extensibility. The file main.cpp is a test gig. You may want to assess performance again, speed might increase with the new version. Andrei

By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with.
Will you be interested in submitting it? There is going to be a fixed string review soon. Common base for/cooperation in between fixed and dynamic string would be really interesting discussion. Gennadiy

Gennadiy Rozental wrote:
By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with.
Will you be interested in submitting it?
There is going to be a fixed string review soon. Common base for/cooperation in between fixed and dynamic string would be really interesting discussion.
Interesting. flex_string does have a fixed size policy - one that is buggy for strings with size greater than 254 :o). So yes, I'd say, if there is a fixed string being submitted, why not complement (or actually bundle) with that a design that allows a variety of strings, including fixed. Limited time is always an issue to me, but if anyone wants to take the initiative of writing the docs, I would be glad to help with bugs and discussion for improvements. I've added Reece to the recipient list. On the other hand, I'd totally understand if he wouldn't care for the aggravation; heck, if I wrote a lib, I'd be glad to see it in and be done with it :o). On a yet another hand, I think flex_string would add value to the submission. Andrei

"Andrei Alexandrescu (See Website For Email)" <SeeWebsiteForEmail@moderncppdesign.com> writes:
By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with.
I suggest you start a new thread with an appropriate subject line, describing the basic capabilities of flex_string and querying interest. I suspect there will be lots :) Then if interest is high you could request a formal review. -- Dave Abrahams Boost Consulting www.boost-consulting.com

Andrei Alexandrescu wrote:
By the way, if anyone is interested in adding flex_string to boost :o), I have recently updated the code and reached a design and implementation I'm very happy with.
This is something that would be very useful, and something that would complement the fixed_string and const_string library proposals. However, there are a few limitations with the old version of flex_string (I am not sure about the new version - I am referring to the one used by wave). [1] The interface does not allow for "natural-style" string declerations (like you can do with iterator_facade). That is, you have: flex_string< char, const_string_impl< char > > my_str; or something similar, instead of the more ideal const_string< char > my_str; This is something I have tried to address with detail::basic_string_impl in my fixed_string library. [2] The class is *huge* :). I know that this is a side-effect of the complexity of the std::string interface, and my version (based on flex_string) suffers from this as well. One thing that I am looking into - but there are a lot of issues with - is trying to split up the design into usable, flexible components. That is, you could do: class my_container: public sequence::reverse_iterator< my_container > { // defines [const_]iterator, begin() and end() }; and sequence::reverse_iterator will add [const_]reverse_iterator, rbegin() and rend() defined in terms of the others. The idea is to break up the string interface into its standard modules (capacity, iterators, etc.), with the flex_string-style class pulling in all of these. This allows a more flexible implementation and can be used by containers to implement the iterator component. This could be extended to support common implementations for container methods (e.g. back()/front() in terms of begin() and end()). The idea behind this is for the classes as a whole to behave like iterator_facade. Regards, Reece Reece Haston Dunn Software Engineer, Sophos Web: www.sophos.com Sophos - protecting businesses against viruses and spam

Reece Dunn wrote:
Andrei Alexandrescu wrote: This is something that would be very useful, and something that would complement the fixed_string and const_string library proposals. However, there are a few limitations with the old version of flex_string (I am not sure about the new version - I am referring to the one used by wave).
Cool, I'll intersperse some comments.
[1] The interface does not allow for "natural-style" string declerations (like you can do with iterator_facade). That is, you have:
flex_string< char, const_string_impl< char > > my_str;
or something similar, instead of the more ideal
const_string< char > my_str;
This is something I have tried to address with detail::basic_string_impl in my fixed_string library.
Yah, that's been a problem with PBDs forever. Fortunately, unlike with smart pointers, the first template argument is less varied (mostly char, wchar_t, and int) so user- or library-level typedefs are more of an acceptable solution.
[2] The class is *huge* :). I know that this is a side-effect of the complexity of the std::string interface, and my version (based on flex_string) suffers from this as well.
My friend Florin Trofin has refactored the code in an attempt to address that. The file flex_string_shell.h contains the entire interface and hovers around 1000 lines. I think there's little that can be done about that if the basic_string interface is to be fully implemented. But fortunately, the policies themselves are, I think, of very manageable size even when they do nontrivial things. The simplest, VectorStringStorage, which I think is a very respectable policy, has only 111 lines.
One thing that I am looking into - but there are a lot of issues with - is trying to split up the design into usable, flexible components. That is, you could do:
class my_container: public sequence::reverse_iterator< my_container > { // defines [const_]iterator, begin() and end() };
and sequence::reverse_iterator will add [const_]reverse_iterator, rbegin() and rend() defined in terms of the others. The idea is to break up the string interface into its standard modules (capacity, iterators, etc.), with the flex_string-style class pulling in all of these. This allows a more flexible implementation and can be used by containers to implement the iterator component.
I think that is more of an interesting decomposition of container design in general, and should be scaled as such. Otherwise, you won't be able to reuse the components you define. Andrei

Wouldn't the flex_string be even more flexible if it accepted ranges in constructor, assignment etc. (same for fixed_string, const_string of course) Then you could easily switch between different string types without the .c_str () template <class RangeT> flex_string(const RangeT& input, const A& a = A()) : Storage(a) { assign(begin(input), end(input)); }

Martin wrote:
Wouldn't the flex_string be even more flexible if it accepted ranges in constructor, assignment etc. (same for fixed_string, const_string of course)
This is true. However, this may result in undesired behaviour. For example: template< typename String > void foo( String & str, const std::vector< typename String::char_type > & vec ) { str.assign( vec ); // uses assign( const RangeT & range ) } int main() { flex_string< char, SomeStringType > str1; std::string str2; std::vector< char > vec; // = "Meine Welt!" foo( str1, vec ); // ok: str1 = "Meine Welt!" foo( str2, vec ); // error - std::string does not have assign( const std::vector< char > & )! } This may change in either a TR or the next standard if/when ranges are added and incorporated into std::basic_string.
Then you could easily switch between different string types without the .c_str ()
This deepnds on whether begin(input), etc. would detect that flex_string has begin()/end() defined. Of course, the logic could be added to the begin( RangeT ) and end( RangeT ) definitions.
template <class RangeT> flex_string(const RangeT& input, const A& a = A()) : Storage(a) { assign(begin(input), end(input));
Couldn't this be assign( input ), since assing would have a RangeT variant.
}
Regards, Reece Haston Dunn Software Engineer, Sophos Web: www.sophos.com Sophos - protecting businesses against viruses and spam

Martin wrote:
Wouldn't the flex_string be even more flexible if it accepted ranges in constructor, assignment etc. (same for fixed_string, const_string of course)
Then you could easily switch between different string types without the .c_str ()
template <class RangeT> flex_string(const RangeT& input, const A& a = A()) : Storage(a) { assign(begin(input), end(input)); }
That would take it away from std::basic_string, but I think it's an standard-allowed extension. Andrei

Thanks very much for emailing me about flex_string. If you could also insert the following copyright notice, I'd be most grateful (beware of wrapped lines):
//////////////////////////////////////////////////////////////////////////////// // flex_string // Copyright (c) 2001 by Andrei Alexandrescu // Permission to use, copy, modify, distribute and sell this software for any // purpose is hereby granted without fee, provided that the above copyright // notice appear in all copies and that both that copyright notice and this // permission notice appear in supporting documentation. // The author makes no representations about the // suitability of this software for any purpose. It is provided "as is" // without express or implied warranty. ////////////////////////////////////////////////////////////////////////////////
Hold on a second: we've worked really hard over the last year to cut down on the number of licenses in Boost - and the normal requirement for new code now is that it be under the Boost Software License. Would you be willing to have the code appear under that license? In particular your terms above have a BSD style advertising clause, which I believe we've always forbidden Boost code from having (see http://www.boost.org/more/license_info.html). Regards, John Maddock.

John Maddock wrote:
Thanks very much for emailing me about flex_string. If you could also insert the following copyright notice, I'd be most grateful (beware of wrapped lines):
////////////////////////////////////////////////////////////////////////////////
// flex_string // Copyright (c) 2001 by Andrei Alexandrescu // Permission to use, copy, modify, distribute and sell this software for any // purpose is hereby granted without fee, provided that the above copyright // notice appear in all copies and that both that copyright notice and this // permission notice appear in supporting documentation. // The author makes no representations about the // suitability of this software for any purpose. It is provided "as is" // without express or implied warranty. ////////////////////////////////////////////////////////////////////////////////
Hold on a second: we've worked really hard over the last year to cut down on the number of licenses in Boost - and the normal requirement for new code now is that it be under the Boost Software License. Would you be willing to have the code appear under that license?
Yes, I agree. Andrei

Andrei Alexandrescu wrote:
Hold on a second: we've worked really hard over the last year to cut down on the number of licenses in Boost - and the normal requirement for new code now is that it be under the Boost Software License. Would you be willing to have the code appear under that license?
Yes, I agree.
Applied in CVS. Regards Hartmut

"Andrei Alexandrescu (See Website For Email)" <SeeWebsiteForEmail@moderncppdesign.com> wrote in message news:d5vuk8$fs8$1@sea.gmane.org...
Hold on a second: we've worked really hard over the last year to cut down on the number of licenses in Boost - and the normal requirement for new code now is that it be under the Boost Software License. Would you be willing to have the code appear under that license?
Yes, I agree.
Thanks, Andrei! --Beman

"Beman Dawes" <bdawes@acm.org> writes:
"Andrei Alexandrescu (See Website For Email)" <SeeWebsiteForEmail@moderncppdesign.com> wrote in message news:d5vuk8$fs8$1@sea.gmane.org...
Hold on a second: we've worked really hard over the last year to cut down on the number of licenses in Boost - and the normal requirement for new code now is that it be under the Boost Software License. Would you be willing to have the code appear under that license?
Yes, I agree.
Thanks, Andrei!
Yeah, um, thanks for being flex-ible. (sorry) punnilicious-ly y'rs, dave -- Dave Abrahams Boost Consulting www.boost-consulting.com

"John Maddock" <john@johnmaddock.co.uk> wrote in message news:000301c55551$459aec20$9d140d52@fuji... | There are currently quite a few source files showing up with no recognised | license or copyright holder information: | libs/ptr_container/test/algo_test_data.hpp | libs/ptr_container/test/cast.cpp | libs/ptr_container/test/concept_check_data.hpp | libs/ptr_container/test/convert.cpp | libs/ptr_container/test/indirect_vector.cpp | libs/ptr_container/test/map_value_iterator.cpp | libs/ptr_container/test/null_object.cpp | libs/ptr_container/test/ptr_unordered_map.cpp | libs/ptr_container/test/ptr_unordered_set.cpp | libs/ptr_container/test/sequence_point.cpp | libs/ptr_container/test/stack_example.cpp | libs/ptr_container/test/tut5.cpp | libs/ptr_container/test/vector_size.cpp | libs/ptr_container/test/xml_tree_test.cpp | And one file has both, but no date on the copyright: | | boost/ptr_container/detail/default_deleter.hpp | | Fixes would be much appreciated, before the release! done. -Thorsten

On Tue, 10 May 2005 12:13:07 +0100, John Maddock wrote
There are currently quite a few source files showing up with no recognised license or copyright holder information:
... libs/date_time/example/local_time/local_date_time.cpp libs/date_time/example/local_time/seconds_since_epoch.cpp
Fixed in cvs. Jeff
participants (11)
-
Aleksey Gurtovoy
-
Andrei Alexandrescu (See Website For Email)
-
Beman Dawes
-
David Abrahams
-
Gennadiy Rozental
-
Hartmut Kaiser
-
Jeff Garland
-
John Maddock
-
Martin
-
Reece Dunn
-
Thorsten Ottosen