Commit Graph

188 Commits

Author SHA1 Message Date
Louis Dionne
79db7e90df [range] Rename Range to range_tag 2015-09-02 21:59:05 -04:00
Louis Dionne
5cec8b3e2e [tuple] Rename Tuple to tuple_tag 2015-09-02 21:59:04 -04:00
Louis Dionne
9168cc4ce8 [map] Rename Map to map_tag 2015-09-02 21:59:04 -04:00
Louis Dionne
c52c6d88d4 [Doc] Adjust the documentation to use "tag" instead of "data type" when it makes sense 2015-09-02 21:59:03 -04:00
Louis Dionne
4e3d17bd3b [Core] Do not use a nested ::hana struct to hold the tag.
This was annoying because

(1) We couldn't use the name hana:: from within the struct
(2) It requires one more instantiation unless you use the
    `using hana = self` trick. But that trick makes something
    that should be trivial to do slightly harder, and that is stupid.
2015-09-02 21:59:03 -04:00
Louis Dionne
f3d9df96d0 [Core] Rename datatype<> to tag_of<>
Also, rename the nested hana::datatype alias to hana::tag.
2015-09-02 21:59:03 -04:00
Louis Dionne
08f66d47c1 [IntegralConstant] Suffix variable templates with _c, and clean up type names
Along with PR #166, this closes #122 because names have now been
cleaned up and are now consistent basically everywhere.
2015-09-01 16:34:04 -04:00
Louis Dionne
0e8913fa3c [Doc] Use implementation-defined instead of unspecified-type
Also, update the tutorial to reflect the fact that container types
are now sometimes specified.
2015-08-31 13:42:15 -04:00
Louis Dionne
d8b08aa43c [Doc] Promote Metafunction from data type to concept, and document as such 2015-08-31 12:59:22 -04:00
Louis Dionne
98e76512a1 [Doc] Document hana::lazy instead of hana::Lazy 2015-08-31 11:42:57 -04:00
Louis Dionne
c2ed70ddf9 [Doc] Document hana::type instead of hana::Type
Precisely,
1. Rename hana::_type to hana::basic_type, and document it
2. Rename hana::type<> to hana::type_c<>
3. Create and document the hana::type<> type
2015-08-30 17:08:06 -04:00
Louis Dionne
e1d08aa277 [Doc] Document hana::basic_tuple instead of hana::BasicTuple 2015-08-30 17:07:19 -04:00
Louis Dionne
d0492da082 [Doc] Document hana::integral_constant instead of hana::IntegralConstant 2015-08-30 17:07:19 -04:00
Louis Dionne
ed2eca2ddb [Doc] Document hana::string instead of hana::String 2015-08-30 17:07:19 -04:00
Louis Dionne
3738a4c662 [Doc] Document hana::range instead of hana::Range 2015-08-30 17:07:18 -04:00
Louis Dionne
7f933490ad [Doc] Document hana::optional instead of hana::Optional 2015-08-30 17:07:18 -04:00
Louis Dionne
4bd3c6bd0e [Doc] Document hana::map instead of hana::Map 2015-08-30 17:07:18 -04:00
Louis Dionne
22d75503ed [Doc] Document hana::pair instead of hana::Pair 2015-08-30 17:07:18 -04:00
Louis Dionne
e4c1b44f8e [Doc] Document hana::set instead of hana::Set 2015-08-30 17:07:18 -04:00
Louis Dionne
6d80a308da [Doc] Document hana::tuple instead of hana::Tuple
Also, document the member functions of `hana::tuple` and add an example.

Fixes #163
2015-08-30 17:07:18 -04:00
Louis Dionne
97c86a064b [Doc] Remove references to tuple_t from the benchmarks 2015-08-30 17:04:57 -04:00
Louis Dionne
307f0d8c50 Add the lexicographical_compare algorithm 2015-08-26 13:40:11 -04:00
Louis Dionne
f373b421f9 [Headers] Minimize the #includes in headers
- Allow specializing models_impl with a forward declaration only
- Modularize remaining concept headers
- Include <boost/hana.hpp> in unit tests to ease the transition
- Add the core/dispatch.hpp header to reduce the number of boilerplate includes
2015-08-26 11:27:28 -04:00
Louis Dionne
54171139bc [Benchmarks, Doc] Update version of the Github.js lib and improve chart.html 2015-08-24 11:47:40 -04:00
Louis Dionne
e67b14bd96 [Doc] Use typewritter font where needed in the cheatsheet 2015-08-23 13:49:17 -04:00
Louis Dionne
e2c4c1f36e [Sequence] Add the remove_range algorithm
Closes #52
2015-08-23 13:49:16 -04:00
Louis Dionne
08b3db1708 [Examples] Modularize and use qualified names
This patch modularizes the examples, makes them self-contained and
also uses qualified hana:: names.

Fixes #139
Fixes #126
2015-08-15 17:50:40 +02:00
Louis Dionne
9771a2f0ed [Doc] Re-document the Functional module. 2015-08-09 09:00:31 +02:00
Louis Dionne
d8f3b8775e [Doc] Transition to benchmarks on Clang 3.6.2 from 3.6.1 2015-08-08 16:56:35 +02:00
Louis Dionne
78f056a25c [example.switchAny] Update the tutorial to use hana::pair and default_t instead of _default 2015-07-28 20:23:21 +02:00
Louis Dionne
2027593022 [Tutorial] Remove misplaced comma 2015-07-26 12:42:20 +02:00
Louis Dionne
9d74084996 Remove take_until and some xxx_exactly variants
Of the xxx_exactly variants, only drop_front_exactly is kept for now,
because it actually allows an optimization. The other ones did not
really provide a compile-time improvement, so they are removed.
2015-07-26 12:42:20 +02:00
Louis Dionne
cecaf823f6 [Iterable] Replace front by at in the MCD to allow more efficient algorithm implementations
Related to #158
2015-07-25 16:20:48 +02:00
Louis Dionne
d3b7cb2c85 Modularize the headers
This (large) commit introduces the following changes:
- Each algorithm lives in its own header
- The concepts are defined in the concept/ subdirectory. They define the
  `models` metafunction, some explicit default implementations (like
  Applicative::transform_impl), and they include all the algorithms
  related to that concept.
- Removed the `until` method from Logical
- Removed the `drop_until` method from Iterable
- [minor] Added the detail::nested_to utility

Closes #160
2015-07-25 16:20:47 +02:00
Louis Dionne
83c3b4781e [Doc] Move the tutorial out of hana.hpp
Fixes #161
2015-07-07 21:26:11 +02:00
Louis Dionne
3db57c6bca [README, Doc] Update the logo and mention that it's now officially in Boost 2015-07-07 19:47:12 +02:00
Louis Dionne
bd50d5f651 [Doc] Methods -> Functions in the reference
Fixes #98
2015-06-13 09:47:22 -04:00
Louis Dionne
35cdf3b83a [Struct] Implement macros using ERB templates instead of Boost.Preprocessor
This is done because the resulting macros are much more straightforward
to debug when a user makes a mistake. Also, it avoids pulling yet another
dependency.

Also added some general purpose macros in detail/preprocessor.hpp.
2015-06-10 15:50:35 -04:00
Louis Dionne
f3cff75480 [Benchmarks] Disable std::tuple benchmarks on Clang 3.5.0 due to ICE 2015-06-05 10:17:30 -04:00
Louis Dionne
35f25cbc35 [Doc] Implement improvements suggested by @tzlaine (part 1)
- Remove the preface entirely
- Move the current introduction to a "Description" section
- Move the "Quadrants of computation" to the "Introduction"
- Move the current "Motivation" section to the start of the "Introduction"
- Move the section on "Introspection" higher up in the docs
- Remove the "Concept" column in the Cheatsheet, and add links to each
  individual algorithm instead.
- Add a rationale for unpack's name and parameter order
- Add `fold` and `reverse_fold` to the cheatsheet
- Mention the list of all headers in the tutorial
- Add an alphabetical index with everything in the library
- Precise that smaller is better in chart subtitles
- Add benchmarks for std::make_tuple and std::get
2015-06-04 21:13:45 -04:00
Louis Dionne
8fd8129258 [Doc] Daily tutorial improvements
- Finish the section on "Introspection"
- Use a Boost "proposed" logo instead of the proper Boost logo
2015-06-02 23:52:57 -04:00
Louis Dionne
2d7ffed101 [Doc] Daily documentation improvements
- Add an "Acknowledgements" section
- Rename Boost.Hana to Hana for now (not officially a Boost library)
- Partially write the section on "Introspection"

Fixes #46
I feel like the documentation now provides enough real world examples:
- switchAny
- Euclidean distance
- JSON generation (to be written)
- MPL reimplementation
2015-06-01 18:06:28 -04:00
Louis Dionne
ac04435b60 [Doc] Daily improvement of the tutorial
- Merge section on Amphibian Algorithms with section on Algorithms
- Replace the `decayed` pseudo-code by `std::decay_t`.
- Rewrite and move section on type computations
- Add Appendix on the MPL implementation
2015-05-31 18:57:05 -04:00
Louis Dionne
cd38e0238a [Doc] Italicize words from the pseudo-code glossary.
Fixes #74, thanks @alexk7 for the initial suggestion at C++Now.
2015-05-28 19:26:00 -04:00
Louis Dionne
4d3d71aae3 [Doc] Add a Boost logo 2015-05-13 14:10:03 -06:00
Louis Dionne
5ad2e3092d [Doc] Remove old Gnuplot-based benchmarks
[ci skip]
2015-05-05 19:14:56 -04:00
Louis Dionne
434fe06298 [Doc] Fix broken include of GitHub.js 2015-04-29 17:03:59 -04:00
Louis Dionne
a32ea99003 [Tutorial] Charts were pointing to the wrong datasets 2015-04-29 12:08:02 -04:00
Louis Dionne
a85be42014 [Doc] Get JSON data for the charts with the proper headers 2015-04-26 09:03:10 -04:00
Louis Dionne
ca37fdfa4c [Doc] Add a section on performance in the tutorial
Also:
- Introduce the .js charts we have in the reference
- Remove the ugly "Generated by Doxygen" footer
- Refactor the benchmarks
2015-04-25 16:31:56 -04:00
Louis Dionne
1538677829 [Travis] Run the benchmarks in Debug and Release configurations
Fixes #49
2015-04-22 22:58:29 -04:00
Louis Dionne
9a0e356421 [Travis] Run the benchmarks on each compiler and other minor enhancements 2015-04-18 12:51:26 -04:00
Louis Dionne
36a3e22429 [CMake] Add targets to update the benchmarks on the 'datasets' branch 2015-04-18 12:51:26 -04:00
Louis Dionne
fd14741747 [Benchmarks] Simplify the benchmark framework and generate JSON instead of CSV 2015-04-18 12:51:25 -04:00
Louis Dionne
6a08495ab7 [CMake] Use git commit --allow-empty when committing on gh-pages 2015-04-04 13:00:43 -04:00
Louis Dionne
7021c2dd3c [Travis] Move to the container-based infrastructure
- Build libc++ properly on Travis (with CMake)
- Test against Boost trunk
- Build the documentation and push to gh-pages when on master
2015-04-03 13:42:15 -04:00
Louis Dionne
bad068b15f [CMake] Remove the doc/gh-pages submodule and use a clone instead 2015-04-02 02:14:16 -04:00
Louis Dionne
1d7f28f941 [CMake] Improve the build system
- Simplify the compiler flag logic
- Use WARNING instead of STATUS to report caveats
- Allow specifying a custom libc++ root directory
2015-04-02 00:50:58 -04:00
Louis Dionne
2d1edb14ff [CMake] Disable some failing Fusion unit tests 2015-03-20 00:44:23 -04:00
Louis Dionne
065b910128 Update copyright year. 2015-03-03 14:16:50 -05:00
Louis Dionne
640f682b36 [Doxygen] Enable MathJax 2015-02-25 12:39:05 -05:00
Louis Dionne
a25e84cf3b [Doc] Refactor the tutorial 2015-02-22 16:50:00 -05:00
Louis Dionne
efd5aa9624 [Documentation] Rename group-typeclasses to group-concepts 2015-02-15 11:42:42 -05:00
Louis Dionne
14e3c34815 Add missing copyright in doc/CMakeLists.txt 2014-12-01 14:20:06 -05:00
Louis Dionne
943c59c0a1 Refactor benchmarks. 2014-09-02 13:21:51 -04:00
Louis Dionne
963cc1bf6e Documentation: make the default tree view larger so we can see everything 2014-07-31 18:19:40 -04:00
Louis Dionne
d6571e7681 Documentation: add indexes to the doxygen output 2014-07-31 18:15:27 -04:00
Louis Dionne
71dd6fc08b CMake: clarify message when Doxygen/Git is missing. 2014-07-31 17:04:38 -04:00
Louis Dionne
8a8ff797ab Split Core into subdirectories to reduce dependencies. 2014-07-30 11:15:26 -04:00
Louis Dionne
2cf2718597 CMake: more flexibility to generate the documentation 2014-07-29 11:07:15 -04:00
Louis Dionne
a0e357e632 Update the documentation submodule 2014-07-28 20:13:46 -04:00
Louis Dionne
74654d6159 Tutorial: Polishing and explain the reference 2014-07-28 12:52:27 -04:00
Louis Dionne
03792c90d5 Documentation: improve output with a custom layout 2014-07-27 16:57:36 -04:00
Louis Dionne
bda17bc352 Clean up Doxyfile 2014-07-25 22:59:54 -04:00
Louis Dionne
9a56dac2cf CMake: allow putting benchmark plots in the documentation 2014-07-25 08:53:57 -04:00
Louis Dionne
cfcf7eaee6 CMake: add a target to update the gh-pages branch 2014-07-23 13:51:12 -04:00
Louis Dionne
9e8928e299 Remove internal documentation from Doxygen output. 2014-07-15 10:49:20 -04:00
Louis Dionne
d5e215d672 Documentation: refactor and regenerate 2014-06-26 11:23:00 -04:00
Louis Dionne
fd96f88f0d Remove obsolete Doxygen aliases 2014-06-18 16:51:48 -04:00
Louis Dionne
3fffc0365d Remove now useless Doxygen aliases. 2014-06-12 20:41:51 -04:00
Louis Dionne
c1d9ff5529 doc: document instances 2014-06-12 20:36:21 -04:00
Louis Dionne
c531903254 Add link to reference documentation in readme. 2014-06-07 17:39:05 -04:00
Louis Dionne
ac30caf7dc Comparable: improve documentation 2014-06-04 15:35:46 -04:00
Louis Dionne
ce602dd4b4 Document a couple more components. 2014-06-02 21:52:26 -04:00
Louis Dionne
1cebe9821d Document the Functional module. 2014-06-02 21:49:35 -04:00
Louis Dionne
236b0691fe Add gh-pages branch as a submodule. 2014-06-01 12:36:22 -04:00
Louis Dionne
61f73d4687 Add Range and List. 2014-05-16 07:56:09 -06:00
Louis Dionne
ae803c667b Basic setup. 2014-05-15 16:09:22 -06:00