├── .gitignore ├── .travis.yml ├── Makefile ├── README.md ├── doc ├── Makefile ├── README.md ├── html │ ├── .gitignore │ ├── abc_syntax_tree.png │ ├── r_a.png │ ├── r_concat1.png │ ├── r_concat2.png │ ├── r_concat3.png │ ├── r_concat4.png │ ├── r_concat5.png │ ├── style.css │ └── transform.png ├── pdf │ └── slides.pdf ├── svg │ ├── abc_syntax_tree.svg │ ├── r_a.svg │ ├── r_concat1.svg │ ├── r_concat2.svg │ ├── r_concat3.svg │ ├── r_concat4.svg │ ├── r_concat5.svg │ ├── r_concat_all.svg │ └── transform.svg └── tools │ └── gen_toc ├── lab ├── Makefile ├── lab1.cpp ├── lab1.hpp ├── lab2.cpp ├── lab2.hpp ├── lab3.cpp ├── lab3.hpp ├── lab4.cpp ├── lab4.hpp ├── lab5.cpp ├── lab5.hpp ├── lab6.cpp ├── lab6.hpp ├── mpllibs │ ├── boost.hpp │ ├── metamonad │ │ ├── _.hpp │ │ ├── algebraic_data_type_tag.hpp │ │ ├── already_lazy.hpp │ │ ├── already_monadic.hpp │ │ ├── apply.hpp │ │ ├── bad_match.hpp │ │ ├── bind.hpp │ │ ├── bind_.hpp │ │ ├── box.hpp │ │ ├── box_tag.hpp │ │ ├── calculated_value.hpp │ │ ├── case_.hpp │ │ ├── catch_.hpp │ │ ├── catch_all.hpp │ │ ├── catch_c.hpp │ │ ├── catch_just.hpp │ │ ├── compose.hpp │ │ ├── concat.hpp │ │ ├── concat_map.hpp │ │ ├── data.hpp │ │ ├── do_.hpp │ │ ├── do_c.hpp │ │ ├── do_return.hpp │ │ ├── either.hpp │ │ ├── eval.hpp │ │ ├── eval_case.hpp │ │ ├── eval_guard.hpp │ │ ├── eval_let.hpp │ │ ├── eval_let_c.hpp │ │ ├── eval_letrec.hpp │ │ ├── eval_letrec_c.hpp │ │ ├── eval_match_let.hpp │ │ ├── eval_match_let_c.hpp │ │ ├── eval_multi_let.hpp │ │ ├── eval_multi_let_c.hpp │ │ ├── eval_syntax.hpp │ │ ├── exception.hpp │ │ ├── exception_tag.hpp │ │ ├── fail.hpp │ │ ├── fail_with_type.hpp │ │ ├── first.hpp │ │ ├── guard.hpp │ │ ├── has_get_value.hpp │ │ ├── has_value.hpp │ │ ├── helper_metafunction.hpp │ │ ├── if_.hpp │ │ ├── instantiate.hpp │ │ ├── invalid_typeclass.hpp │ │ ├── invalid_typeclass_tag.hpp │ │ ├── is_exception.hpp │ │ ├── is_same.hpp │ │ ├── is_tag.hpp │ │ ├── lambda.hpp │ │ ├── lambda_c.hpp │ │ ├── lazy.hpp │ │ ├── lazy_argument.hpp │ │ ├── lazy_metafunction.hpp │ │ ├── lazy_protect_args.hpp │ │ ├── let.hpp │ │ ├── let_c.hpp │ │ ├── letrec.hpp │ │ ├── letrec_c.hpp │ │ ├── limit_case_size.hpp │ │ ├── limit_compose_arg_size.hpp │ │ ├── limit_compose_size.hpp │ │ ├── limit_data_size.hpp │ │ ├── limit_do_size.hpp │ │ ├── limit_instantiate_arity.hpp │ │ ├── limit_metafunction_arity.hpp │ │ ├── list.hpp │ │ ├── list_tag.hpp │ │ ├── make_monadic.hpp │ │ ├── make_monadic_c.hpp │ │ ├── make_syntax.hpp │ │ ├── make_tmp_value.hpp │ │ ├── mappend.hpp │ │ ├── match.hpp │ │ ├── match_c.hpp │ │ ├── match_let.hpp │ │ ├── match_let_c.hpp │ │ ├── matches.hpp │ │ ├── matches_c.hpp │ │ ├── maybe.hpp │ │ ├── mconcat.hpp │ │ ├── mempty.hpp │ │ ├── metafunction.hpp │ │ ├── monad.hpp │ │ ├── monad_plus.hpp │ │ ├── monoid.hpp │ │ ├── mplus.hpp │ │ ├── multi_let.hpp │ │ ├── multi_let_c.hpp │ │ ├── mzero.hpp │ │ ├── name.hpp │ │ ├── no_case_matched.hpp │ │ ├── overloading_error_tag.hpp │ │ ├── pair.hpp │ │ ├── pair_tag.hpp │ │ ├── reader.hpp │ │ ├── reader_tag.hpp │ │ ├── return_.hpp │ │ ├── returns.hpp │ │ ├── second.hpp │ │ ├── set.hpp │ │ ├── state.hpp │ │ ├── state_tag.hpp │ │ ├── syntax.hpp │ │ ├── syntax_tag.hpp │ │ ├── tag_tag.hpp │ │ ├── td_metafunction.hpp │ │ ├── tmp_tag.hpp │ │ ├── tmp_value.hpp │ │ ├── try_.hpp │ │ ├── try_c.hpp │ │ ├── typeclass.hpp │ │ ├── typeclass_expect.hpp │ │ ├── typeclass_expectations.hpp │ │ ├── unbox.hpp │ │ ├── v1 │ │ │ ├── _.hpp │ │ │ ├── algebraic_data_type_tag.hpp │ │ │ ├── already_lazy.hpp │ │ │ ├── already_monadic.hpp │ │ │ ├── apply.hpp │ │ │ ├── bad_match.hpp │ │ │ ├── bind.hpp │ │ │ ├── bind_.hpp │ │ │ ├── box.hpp │ │ │ ├── box_tag.hpp │ │ │ ├── calculated_value.hpp │ │ │ ├── case_.hpp │ │ │ ├── catch_.hpp │ │ │ ├── catch_all.hpp │ │ │ ├── catch_c.hpp │ │ │ ├── catch_just.hpp │ │ │ ├── compose.hpp │ │ │ ├── concat.hpp │ │ │ ├── concat_map.hpp │ │ │ ├── data.hpp │ │ │ ├── do_.hpp │ │ │ ├── do_c.hpp │ │ │ ├── do_return.hpp │ │ │ ├── either.hpp │ │ │ ├── eval.hpp │ │ │ ├── eval_case.hpp │ │ │ ├── eval_guard.hpp │ │ │ ├── eval_let.hpp │ │ │ ├── eval_let_c.hpp │ │ │ ├── eval_letrec.hpp │ │ │ ├── eval_letrec_c.hpp │ │ │ ├── eval_match_let.hpp │ │ │ ├── eval_match_let_c.hpp │ │ │ ├── eval_multi_let.hpp │ │ │ ├── eval_multi_let_c.hpp │ │ │ ├── eval_syntax.hpp │ │ │ ├── exception.hpp │ │ │ ├── exception_tag.hpp │ │ │ ├── fail.hpp │ │ │ ├── fail_with_type.hpp │ │ │ ├── first.hpp │ │ │ ├── fwd │ │ │ │ ├── _.hpp │ │ │ │ ├── algebraic_data_type_tag.hpp │ │ │ │ ├── already_lazy.hpp │ │ │ │ ├── already_monadic.hpp │ │ │ │ ├── apply.hpp │ │ │ │ ├── bad_match.hpp │ │ │ │ ├── bind.hpp │ │ │ │ ├── bind_.hpp │ │ │ │ ├── box.hpp │ │ │ │ ├── box_tag.hpp │ │ │ │ ├── calculated_value.hpp │ │ │ │ ├── case_.hpp │ │ │ │ ├── catch_.hpp │ │ │ │ ├── catch_all.hpp │ │ │ │ ├── catch_c.hpp │ │ │ │ ├── catch_just.hpp │ │ │ │ ├── concat.hpp │ │ │ │ ├── concat_map.hpp │ │ │ │ ├── do_.hpp │ │ │ │ ├── do_c.hpp │ │ │ │ ├── do_return.hpp │ │ │ │ ├── either.hpp │ │ │ │ ├── eval.hpp │ │ │ │ ├── eval_case.hpp │ │ │ │ ├── eval_guard.hpp │ │ │ │ ├── eval_let.hpp │ │ │ │ ├── eval_let_c.hpp │ │ │ │ ├── eval_letrec.hpp │ │ │ │ ├── eval_letrec_c.hpp │ │ │ │ ├── eval_match_let.hpp │ │ │ │ ├── eval_match_let_c.hpp │ │ │ │ ├── eval_multi_let.hpp │ │ │ │ ├── eval_multi_let_c.hpp │ │ │ │ ├── eval_syntax.hpp │ │ │ │ ├── exception.hpp │ │ │ │ ├── exception_tag.hpp │ │ │ │ ├── fail.hpp │ │ │ │ ├── fail_with_type.hpp │ │ │ │ ├── first.hpp │ │ │ │ ├── guard.hpp │ │ │ │ ├── has_get_value.hpp │ │ │ │ ├── has_value.hpp │ │ │ │ ├── if_.hpp │ │ │ │ ├── instantiate.hpp │ │ │ │ ├── invalid_typeclass.hpp │ │ │ │ ├── invalid_typeclass_tag.hpp │ │ │ │ ├── is_exception.hpp │ │ │ │ ├── is_same.hpp │ │ │ │ ├── is_tag.hpp │ │ │ │ ├── lambda.hpp │ │ │ │ ├── lambda_c.hpp │ │ │ │ ├── lazy.hpp │ │ │ │ ├── lazy_argument.hpp │ │ │ │ ├── lazy_protect_args.hpp │ │ │ │ ├── let.hpp │ │ │ │ ├── let_c.hpp │ │ │ │ ├── letrec.hpp │ │ │ │ ├── letrec_c.hpp │ │ │ │ ├── list_tag.hpp │ │ │ │ ├── make_monadic.hpp │ │ │ │ ├── make_monadic_c.hpp │ │ │ │ ├── make_syntax.hpp │ │ │ │ ├── make_tmp_value.hpp │ │ │ │ ├── mappend.hpp │ │ │ │ ├── match.hpp │ │ │ │ ├── match_c.hpp │ │ │ │ ├── match_let.hpp │ │ │ │ ├── match_let_c.hpp │ │ │ │ ├── matches.hpp │ │ │ │ ├── matches_c.hpp │ │ │ │ ├── maybe.hpp │ │ │ │ ├── mconcat.hpp │ │ │ │ ├── mempty.hpp │ │ │ │ ├── monad.hpp │ │ │ │ ├── monad_plus.hpp │ │ │ │ ├── monoid.hpp │ │ │ │ ├── mplus.hpp │ │ │ │ ├── multi_let.hpp │ │ │ │ ├── multi_let_c.hpp │ │ │ │ ├── mzero.hpp │ │ │ │ ├── no_case_matched.hpp │ │ │ │ ├── overloading_error_tag.hpp │ │ │ │ ├── pair.hpp │ │ │ │ ├── pair_tag.hpp │ │ │ │ ├── reader_tag.hpp │ │ │ │ ├── return_.hpp │ │ │ │ ├── returns.hpp │ │ │ │ ├── second.hpp │ │ │ │ ├── set.hpp │ │ │ │ ├── state_tag.hpp │ │ │ │ ├── syntax.hpp │ │ │ │ ├── syntax_tag.hpp │ │ │ │ ├── tag_tag.hpp │ │ │ │ ├── tmp_tag.hpp │ │ │ │ ├── tmp_value.hpp │ │ │ │ ├── try_.hpp │ │ │ │ ├── try_c.hpp │ │ │ │ ├── typeclass_expectations.hpp │ │ │ │ ├── unbox.hpp │ │ │ │ ├── value_to_stream.hpp │ │ │ │ ├── var.hpp │ │ │ │ ├── var_tag.hpp │ │ │ │ └── writer_tag.hpp │ │ │ ├── guard.hpp │ │ │ ├── has_get_value.hpp │ │ │ ├── has_value.hpp │ │ │ ├── if_.hpp │ │ │ ├── impl │ │ │ │ ├── argument_type.hpp │ │ │ │ ├── build_seq.hpp │ │ │ │ ├── case_check_match.hpp │ │ │ │ ├── compose.hpp │ │ │ │ ├── curried_call.hpp │ │ │ │ ├── data_args.hpp │ │ │ │ ├── data_args_with_default_void.hpp │ │ │ │ ├── data_constr.hpp │ │ │ │ ├── data_constr_cb.hpp │ │ │ │ ├── define_td_metafunction_eval_arg.hpp │ │ │ │ ├── define_td_metafunction_get_tag.hpp │ │ │ │ ├── do.hpp │ │ │ │ ├── do_substitute.hpp │ │ │ │ ├── eval_case_impl.hpp │ │ │ │ ├── eval_syntax_impl.hpp │ │ │ │ ├── expand_arg_usage.hpp │ │ │ │ ├── expand_arg_usage_with_na.hpp │ │ │ │ ├── fwd │ │ │ │ │ ├── lambda_impl.hpp │ │ │ │ │ ├── let_impl.hpp │ │ │ │ │ ├── let_in_syntax.hpp │ │ │ │ │ └── match_c_impl.hpp │ │ │ │ ├── get_just_data.hpp │ │ │ │ ├── handle_catch.hpp │ │ │ │ ├── handle_catch_impl.hpp │ │ │ │ ├── has_type.hpp │ │ │ │ ├── is_same_no_arg.hpp │ │ │ │ ├── lambda_impl.hpp │ │ │ │ ├── lambda_impl_step.hpp │ │ │ │ ├── lambda_maybe_eval.hpp │ │ │ │ ├── lazy_eval_arg.hpp │ │ │ │ ├── lazy_match_c_impl.hpp │ │ │ │ ├── let_do_args.hpp │ │ │ │ ├── let_impl.hpp │ │ │ │ ├── let_in_syntax.hpp │ │ │ │ ├── make_monadic_impl.hpp │ │ │ │ ├── map_insert.hpp │ │ │ │ ├── map_insert_impl.hpp │ │ │ │ ├── match_boxed_impl.hpp │ │ │ │ ├── match_c_impl.hpp │ │ │ │ ├── match_impl.hpp │ │ │ │ ├── maybe.hpp │ │ │ │ ├── merge_map.hpp │ │ │ │ ├── merge_map_value.hpp │ │ │ │ ├── metafunction_body.hpp │ │ │ │ ├── no.hpp │ │ │ │ ├── no_tag_for_tmp_value.hpp │ │ │ │ ├── non_nullary_data_constr.hpp │ │ │ │ ├── nullary_data_constr.hpp │ │ │ │ ├── rec_equal_to.hpp │ │ │ │ ├── rec_equal_to_impl.hpp │ │ │ │ ├── run_param.hpp │ │ │ │ ├── strict_get_just_data.hpp │ │ │ │ ├── strict_is_exception.hpp │ │ │ │ ├── strict_let.hpp │ │ │ │ ├── strict_unbox.hpp │ │ │ │ ├── unpack.hpp │ │ │ │ ├── value_to_stream_impl.hpp │ │ │ │ └── yes.hpp │ │ │ ├── instantiate.hpp │ │ │ ├── invalid_typeclass.hpp │ │ │ ├── invalid_typeclass_tag.hpp │ │ │ ├── is_exception.hpp │ │ │ ├── is_same.hpp │ │ │ ├── is_tag.hpp │ │ │ ├── lambda.hpp │ │ │ ├── lambda_c.hpp │ │ │ ├── lazy.hpp │ │ │ ├── lazy_argument.hpp │ │ │ ├── lazy_metafunction.hpp │ │ │ ├── lazy_protect_args.hpp │ │ │ ├── let.hpp │ │ │ ├── let_c.hpp │ │ │ ├── letrec.hpp │ │ │ ├── letrec_c.hpp │ │ │ ├── list.hpp │ │ │ ├── list_tag.hpp │ │ │ ├── make_monadic.hpp │ │ │ ├── make_monadic_c.hpp │ │ │ ├── make_syntax.hpp │ │ │ ├── make_tmp_value.hpp │ │ │ ├── mappend.hpp │ │ │ ├── match.hpp │ │ │ ├── match_c.hpp │ │ │ ├── match_let.hpp │ │ │ ├── match_let_c.hpp │ │ │ ├── matches.hpp │ │ │ ├── matches_c.hpp │ │ │ ├── maybe.hpp │ │ │ ├── mconcat.hpp │ │ │ ├── mempty.hpp │ │ │ ├── metafunction.hpp │ │ │ ├── monad.hpp │ │ │ ├── monad_plus.hpp │ │ │ ├── monoid.hpp │ │ │ ├── mplus.hpp │ │ │ ├── multi_let.hpp │ │ │ ├── multi_let_c.hpp │ │ │ ├── mzero.hpp │ │ │ ├── name.hpp │ │ │ ├── no_case_matched.hpp │ │ │ ├── overloading_error_tag.hpp │ │ │ ├── pair.hpp │ │ │ ├── pair_tag.hpp │ │ │ ├── reader.hpp │ │ │ ├── reader_tag.hpp │ │ │ ├── return_.hpp │ │ │ ├── returns.hpp │ │ │ ├── second.hpp │ │ │ ├── set.hpp │ │ │ ├── state.hpp │ │ │ ├── state_tag.hpp │ │ │ ├── syntax.hpp │ │ │ ├── syntax_tag.hpp │ │ │ ├── tag_tag.hpp │ │ │ ├── td_metafunction.hpp │ │ │ ├── tmp_tag.hpp │ │ │ ├── tmp_value.hpp │ │ │ ├── try_.hpp │ │ │ ├── try_c.hpp │ │ │ ├── typeclass.hpp │ │ │ ├── typeclass_expect.hpp │ │ │ ├── typeclass_expectations.hpp │ │ │ ├── unbox.hpp │ │ │ ├── value_to_stream.hpp │ │ │ ├── var.hpp │ │ │ ├── var_tag.hpp │ │ │ ├── writer.hpp │ │ │ └── writer_tag.hpp │ │ ├── value_to_stream.hpp │ │ ├── var.hpp │ │ ├── var_tag.hpp │ │ ├── writer.hpp │ │ └── writer_tag.hpp │ ├── metaparse │ │ ├── accept_tag.hpp │ │ ├── accept_when.hpp │ │ ├── alphanum.hpp │ │ ├── always.hpp │ │ ├── always_c.hpp │ │ ├── any.hpp │ │ ├── any1.hpp │ │ ├── any_one_of.hpp │ │ ├── any_one_of1.hpp │ │ ├── build_parser.hpp │ │ ├── change_error_message.hpp │ │ ├── config.hpp │ │ ├── debug_parsing_error.hpp │ │ ├── define_error.hpp │ │ ├── digit.hpp │ │ ├── digit_val.hpp │ │ ├── empty.hpp │ │ ├── entire_input.hpp │ │ ├── error │ │ │ ├── digit_expected.hpp │ │ │ ├── end_of_input_expected.hpp │ │ │ ├── index_out_of_range.hpp │ │ │ ├── letter_expected.hpp │ │ │ ├── literal_expected.hpp │ │ │ ├── none_of_the_expected_cases_found.hpp │ │ │ ├── unexpected_character.hpp │ │ │ ├── unexpected_end_of_input.hpp │ │ │ └── whitespace_expected.hpp │ │ ├── except.hpp │ │ ├── fail.hpp │ │ ├── fail_tag.hpp │ │ ├── first_of.hpp │ │ ├── foldl.hpp │ │ ├── foldl1.hpp │ │ ├── foldlp.hpp │ │ ├── foldr.hpp │ │ ├── foldr1.hpp │ │ ├── foldrp.hpp │ │ ├── get_col.hpp │ │ ├── get_line.hpp │ │ ├── get_position.hpp │ │ ├── get_prev_char.hpp │ │ ├── get_remaining.hpp │ │ ├── get_result.hpp │ │ ├── grammar.hpp │ │ ├── if_.hpp │ │ ├── int_.hpp │ │ ├── is_error.hpp │ │ ├── iterate.hpp │ │ ├── iterate_c.hpp │ │ ├── keyword.hpp │ │ ├── last_of.hpp │ │ ├── letter.hpp │ │ ├── limit_one_char_except_size.hpp │ │ ├── limit_one_of_size.hpp │ │ ├── limit_sequence_size.hpp │ │ ├── limit_string_size.hpp │ │ ├── lit.hpp │ │ ├── lit_c.hpp │ │ ├── look_ahead.hpp │ │ ├── middle_of.hpp │ │ ├── next_char.hpp │ │ ├── next_line.hpp │ │ ├── nth_of.hpp │ │ ├── nth_of_c.hpp │ │ ├── one_char.hpp │ │ ├── one_char_except.hpp │ │ ├── one_char_except_c.hpp │ │ ├── one_of.hpp │ │ ├── one_of_c.hpp │ │ ├── parser_monad.hpp │ │ ├── parser_tag.hpp │ │ ├── return_.hpp │ │ ├── sequence.hpp │ │ ├── source_position.hpp │ │ ├── source_position_tag.hpp │ │ ├── space.hpp │ │ ├── spaces.hpp │ │ ├── start.hpp │ │ ├── string.hpp │ │ ├── string_tag.hpp │ │ ├── token.hpp │ │ ├── transform.hpp │ │ ├── unless_error.hpp │ │ ├── util │ │ │ ├── digit_to_int.hpp │ │ │ ├── digit_to_int_c.hpp │ │ │ ├── in_range.hpp │ │ │ ├── int_to_digit.hpp │ │ │ ├── int_to_digit_c.hpp │ │ │ ├── is_digit.hpp │ │ │ ├── is_lcase_letter.hpp │ │ │ ├── is_letter.hpp │ │ │ ├── is_ucase_letter.hpp │ │ │ ├── is_whitespace.hpp │ │ │ └── is_whitespace_c.hpp │ │ └── v1 │ │ │ ├── accept_tag.hpp │ │ │ ├── accept_when.hpp │ │ │ ├── alphanum.hpp │ │ │ ├── always.hpp │ │ │ ├── always_c.hpp │ │ │ ├── any.hpp │ │ │ ├── any1.hpp │ │ │ ├── any_one_of.hpp │ │ │ ├── any_one_of1.hpp │ │ │ ├── build_parser.hpp │ │ │ ├── change_error_message.hpp │ │ │ ├── debug_parsing_error.hpp │ │ │ ├── define_error.hpp │ │ │ ├── digit.hpp │ │ │ ├── digit_val.hpp │ │ │ ├── empty.hpp │ │ │ ├── entire_input.hpp │ │ │ ├── error │ │ │ ├── digit_expected.hpp │ │ │ ├── end_of_input_expected.hpp │ │ │ ├── index_out_of_range.hpp │ │ │ ├── letter_expected.hpp │ │ │ ├── literal_expected.hpp │ │ │ ├── none_of_the_expected_cases_found.hpp │ │ │ ├── unexpected_character.hpp │ │ │ ├── unexpected_end_of_input.hpp │ │ │ └── whitespace_expected.hpp │ │ │ ├── except.hpp │ │ │ ├── fail.hpp │ │ │ ├── fail_tag.hpp │ │ │ ├── first_of.hpp │ │ │ ├── foldl.hpp │ │ │ ├── foldl1.hpp │ │ │ ├── foldlp.hpp │ │ │ ├── foldr.hpp │ │ │ ├── foldr1.hpp │ │ │ ├── foldrp.hpp │ │ │ ├── fwd │ │ │ ├── build_parser.hpp │ │ │ ├── get_col.hpp │ │ │ ├── get_line.hpp │ │ │ ├── get_position.hpp │ │ │ ├── get_prev_char.hpp │ │ │ ├── get_remaining.hpp │ │ │ ├── get_result.hpp │ │ │ ├── next_char.hpp │ │ │ ├── next_line.hpp │ │ │ ├── source_position.hpp │ │ │ └── string.hpp │ │ │ ├── get_col.hpp │ │ │ ├── get_line.hpp │ │ │ ├── get_position.hpp │ │ │ ├── get_prev_char.hpp │ │ │ ├── get_remaining.hpp │ │ │ ├── get_result.hpp │ │ │ ├── grammar.hpp │ │ │ ├── if_.hpp │ │ │ ├── impl │ │ │ ├── accepted_keyword.hpp │ │ │ ├── accepted_keyword_tag.hpp │ │ │ ├── apply_parser.hpp │ │ │ ├── at_c.hpp │ │ │ ├── concat.hpp │ │ │ ├── empty_string.hpp │ │ │ ├── fwd │ │ │ │ └── iterate_impl.hpp │ │ │ ├── is_any.hpp │ │ │ ├── iterate_impl.hpp │ │ │ ├── iterate_impl_unchecked.hpp │ │ │ ├── no_char.hpp │ │ │ ├── nth_of_c.hpp │ │ │ ├── nth_of_c_impl.hpp │ │ │ ├── one_char_except_not_used.hpp │ │ │ ├── one_of.hpp │ │ │ ├── pop_back.hpp │ │ │ ├── pop_front.hpp │ │ │ ├── push_back_c.hpp │ │ │ ├── push_front_c.hpp │ │ │ ├── remove_trailing_no_chars.hpp │ │ │ ├── sequence.hpp │ │ │ ├── sequence_impl.hpp │ │ │ ├── size.hpp │ │ │ ├── skip_seq.hpp │ │ │ ├── split_at_c.hpp │ │ │ ├── string_iterator.hpp │ │ │ ├── string_iterator_tag.hpp │ │ │ └── update_c.hpp │ │ │ ├── int_.hpp │ │ │ ├── is_error.hpp │ │ │ ├── iterate.hpp │ │ │ ├── iterate_c.hpp │ │ │ ├── keyword.hpp │ │ │ ├── last_of.hpp │ │ │ ├── letter.hpp │ │ │ ├── lit.hpp │ │ │ ├── lit_c.hpp │ │ │ ├── look_ahead.hpp │ │ │ ├── middle_of.hpp │ │ │ ├── next_char.hpp │ │ │ ├── next_line.hpp │ │ │ ├── nth_of.hpp │ │ │ ├── nth_of_c.hpp │ │ │ ├── one_char.hpp │ │ │ ├── one_char_except.hpp │ │ │ ├── one_char_except_c.hpp │ │ │ ├── one_of.hpp │ │ │ ├── one_of_c.hpp │ │ │ ├── parser_monad.hpp │ │ │ ├── parser_tag.hpp │ │ │ ├── return_.hpp │ │ │ ├── sequence.hpp │ │ │ ├── source_position.hpp │ │ │ ├── source_position_tag.hpp │ │ │ ├── space.hpp │ │ │ ├── spaces.hpp │ │ │ ├── start.hpp │ │ │ ├── string.hpp │ │ │ ├── string_tag.hpp │ │ │ ├── token.hpp │ │ │ ├── transform.hpp │ │ │ ├── unless_error.hpp │ │ │ └── util │ │ │ ├── digit_to_int.hpp │ │ │ ├── digit_to_int_c.hpp │ │ │ ├── in_range.hpp │ │ │ ├── int_to_digit.hpp │ │ │ ├── int_to_digit_c.hpp │ │ │ ├── is_digit.hpp │ │ │ ├── is_lcase_letter.hpp │ │ │ ├── is_letter.hpp │ │ │ ├── is_ucase_letter.hpp │ │ │ ├── is_whitespace.hpp │ │ │ └── is_whitespace_c.hpp │ ├── safe_printf │ │ ├── error.hpp │ │ ├── expected_types.hpp │ │ ├── printf.hpp │ │ ├── printf_max_argument.hpp │ │ ├── v1 │ │ │ ├── error.hpp │ │ │ ├── expected_types.hpp │ │ │ ├── fwd │ │ │ │ ├── error.hpp │ │ │ │ ├── expected_types.hpp │ │ │ │ ├── printf.hpp │ │ │ │ └── valid_arguments.hpp │ │ │ ├── impl │ │ │ │ ├── any_type.hpp │ │ │ │ ├── expected_arg.hpp │ │ │ │ ├── grammar.hpp │ │ │ │ ├── matches.hpp │ │ │ │ ├── parser.hpp │ │ │ │ └── to_typelist.hpp │ │ │ ├── printf.hpp │ │ │ └── valid_arguments.hpp │ │ └── valid_arguments.hpp │ └── version.hpp ├── regex_test.cpp ├── regex_test.hpp └── tmp_test.hpp └── solution ├── lab1.hpp ├── lab2.hpp ├── lab3.hpp ├── lab4.hpp ├── lab5.hpp └── lab6.hpp /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | lab/*.o 3 | lab/*.d 4 | lab/lab? 5 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | compiler: 3 | - gcc 4 | before_install: 5 | - sudo apt-get install libboost1.48-dev libboost-test1.48-dev 6 | script: 7 | # Test that the TOC of the description is up to date 8 | - doc/tools/gen_toc -i README.md -o - -t github | diff README.md - 9 | # Test the lab environment 10 | - cd lab 11 | - make 12 | # Test the solutions 13 | - make clean 14 | - make remove_comments 15 | - cp ../solution/* . 16 | - make 17 | -------------------------------------------------------------------------------- /doc/html/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | 3 | -------------------------------------------------------------------------------- /doc/html/abc_syntax_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/abc_syntax_tree.png -------------------------------------------------------------------------------- /doc/html/r_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/r_a.png -------------------------------------------------------------------------------- /doc/html/r_concat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/r_concat1.png -------------------------------------------------------------------------------- /doc/html/r_concat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/r_concat2.png -------------------------------------------------------------------------------- /doc/html/r_concat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/r_concat3.png -------------------------------------------------------------------------------- /doc/html/r_concat4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/r_concat4.png -------------------------------------------------------------------------------- /doc/html/r_concat5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/r_concat5.png -------------------------------------------------------------------------------- /doc/html/transform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/html/transform.png -------------------------------------------------------------------------------- /doc/pdf/slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabel83/metaparse_tutorial/819fddf6bf06736861adbeabeb30967f56b7e8d0/doc/pdf/slides.pdf -------------------------------------------------------------------------------- /lab/lab4.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LAB4_HPP 2 | #define LAB4_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | template 14 | struct beginning_and_end; 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/lab5.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LAB5_HPP 2 | #define LAB5_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | struct beginning_and_end; 14 | 15 | #endif 16 | 17 | -------------------------------------------------------------------------------- /lab/mpllibs/boost.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_BOOST_HPP 2 | #define MPLLIBS_BOOST_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_BOOST_NAMESPACE 10 | # define MPLLIBS_BOOST_NAMESPACE boost 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD___HPP 2 | #define MPLLIBS_METAMONAD___HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/algebraic_data_type_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_ALGEBRAIC_DATA_TYPE_TAG_HPP 2 | #define MPLLIBS_METAMONAD_ALGEBRAIC_DATA_TYPE_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::algebraic_data_type_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/already_lazy.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_ALREADY_LAZY_HPP 2 | #define MPLLIBS_METAMONAD_ALREADY_LAZY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::already_lazy; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/already_monadic.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_ALREADY_MONADIC_HPP 2 | #define MPLLIBS_METAMONAD_ALREADY_MONADIC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::already_monadic; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/apply.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_APPLY_HPP 2 | #define MPLLIBS_METAMONAD_APPLY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::apply; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/bad_match.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_BAD_MATCH_HPP 2 | #define MPLLIBS_METAMONAD_BAD_MATCH_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::bad_match; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/bind.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_BIND_HPP 2 | #define MPLLIBS_METAMONAD_BIND_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::bind; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/bind_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_BIND__HPP 2 | #define MPLLIBS_METAMONAD_BIND__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::bind_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/box.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_BOX_HPP 2 | #define MPLLIBS_METAMONAD_BOX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::box; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/box_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_BOX_TAG_HPP 2 | #define MPLLIBS_METAMONAD_BOX_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::box_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/calculated_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_CALCULATED_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_CALCULATED_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::calculated_value; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/catch_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_CATCH_HPP 2 | #define MPLLIBS_METAMONAD_CATCH_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::catch_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/catch_all.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_CATCH_ALL_HPP 2 | #define MPLLIBS_METAMONAD_CATCH_ALL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::catch_all; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/catch_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_CATCH_C_HPP 2 | #define MPLLIBS_METAMONAD_CATCH_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::catch_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/catch_just.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_CATCH_JUST_HPP 2 | #define MPLLIBS_METAMONAD_CATCH_JUST_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::catch_just; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/compose.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_COMPOSE_HPP 2 | #define MPLLIBS_METAMONAD_COMPOSE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::compose; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/concat.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_CONCAT_HPP 2 | #define MPLLIBS_METAMONAD_CONCAT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::concat; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/concat_map.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_CONCAT_MAP_HPP 2 | #define MPLLIBS_METAMONAD_CONCAT_MAP_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::concat_map; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/data.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_DATA_HPP 2 | #define MPLLIBS_METAMONAD_DATA_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifdef MPLLIBS_DATA 12 | # error MPLLIBS_DATA already defined 13 | #endif 14 | #define MPLLIBS_DATA MPLLIBS_V1_DATA 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/do_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_DO__HPP 2 | #define MPLLIBS_METAMONAD_DO__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace mpllibs 14 | { 15 | namespace metamonad 16 | { 17 | using v1::do_; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/do_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_DO_C_HPP 2 | #define MPLLIBS_METAMONAD_DO_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace mpllibs 14 | { 15 | namespace metamonad 16 | { 17 | using v1::do_c; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/do_return.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_DO_RETURN_HPP 2 | #define MPLLIBS_METAMONAD_DO_RETURN_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::do_return; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/either.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EITHER_HPP 2 | #define MPLLIBS_METAMONAD_EITHER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::left; 16 | using v1::right; 17 | 18 | using v1::either_tag; 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_guard.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_GUARD_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_GUARD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_guard; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_LET_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_let; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_let_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_letrec.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_LETREC_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_LETREC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_letrec; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_letrec_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_LETREC_C_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_LETREC_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_letrec_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_match_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_MATCH_LET_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_MATCH_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_match_let; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_match_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_MATCH_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_MATCH_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_match_let_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_multi_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_MULTI_LET_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_MULTI_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_multi_let; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_multi_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_MULTI_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_MULTI_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_multi_let_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/eval_syntax.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EVAL_SYNTAX_HPP 2 | #define MPLLIBS_METAMONAD_EVAL_SYNTAX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::eval_syntax; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/exception.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EXCEPTION_HPP 2 | #define MPLLIBS_METAMONAD_EXCEPTION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | using v1::exception; 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/exception_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_EXCEPTION_TAG_HPP 2 | #define MPLLIBS_METAMONAD_EXCEPTION_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::exception_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/fail.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_FAIL_HPP 2 | #define MPLLIBS_METAMONAD_FAIL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::fail; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/fail_with_type.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_FAIL_WITH_TYPE_HPP 2 | #define MPLLIBS_METAMONAD_FAIL_WITH_TYPE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::fail_with_type; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/first.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_FIRST_HPP 2 | #define MPLLIBS_METAMONAD_FIRST_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::first; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/guard.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_GUARD_HPP 2 | #define MPLLIBS_METAMONAD_GUARD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::guard; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/has_get_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_HAS_GET_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_HAS_GET_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::has_get_value; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/has_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_HAS_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_HAS_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::has_value; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/helper_metafunction.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_HELPER_METAFUNCTION_HPP 2 | #define MPLLIBS_METAMONAD_HELPER_METAFUNCTION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifndef MPLLIBS_HELPER_METAFUNCTION 12 | # define MPLLIBS_HELPER_METAFUNCTION(name) BOOST_PP_CAT(name, __impl) 13 | #endif 14 | 15 | #endif 16 | 17 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/if_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_IF__HPP 2 | #define MPLLIBS_METAMONAD_IF__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::if_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/invalid_typeclass.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_INVALID_TYPECLASS_HPP 2 | #define MPLLIBS_METAMONAD_INVALID_TYPECLASS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::invalid_typeclass; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/invalid_typeclass_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_INVALID_TYPECLASS_TAG_HPP 2 | #define MPLLIBS_METAMONAD_INVALID_TYPECLASS_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::invalid_typeclass_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/is_exception.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_IS_EXCEPTION_HPP 2 | #define MPLLIBS_METAMONAD_IS_EXCEPTION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::is_exception; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/is_same.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_IS_SAME_HPP 2 | #define MPLLIBS_METAMONAD_IS_SAME_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::is_same; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/is_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_IS_TAG_HPP 2 | #define MPLLIBS_METAMONAD_IS_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::is_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/lambda.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LAMBDA_HPP 2 | #define MPLLIBS_METAMONAD_LAMBDA_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | using v1::lambda; 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/lambda_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LAMBDA_C_HPP 2 | #define MPLLIBS_METAMONAD_LAMBDA_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | using v1::lambda_c; 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/lazy.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LAZY_HPP 2 | #define MPLLIBS_METAMONAD_LAZY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::lazy; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/lazy_argument.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LAZY_ARGUMENT_HPP 2 | #define MPLLIBS_METAMONAD_LAZY_ARGUMENT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::lazy_argument; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/lazy_metafunction.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LAZY_METAFUNCTION_HPP 2 | #define MPLLIBS_METAMONAD_LAZY_METAFUNCTION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifdef MPLLIBS_LAZY_METAFUNCTION 12 | # error MPLLIBS_LAZY_METAFUNCTION already defined 13 | #endif 14 | #define MPLLIBS_LAZY_METAFUNCTION MPLLIBS_V1_LAZY_METAFUNCTION 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/lazy_protect_args.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LAZY_PROTECT_ARGS_HPP 2 | #define MPLLIBS_METAMONAD_LAZY_PROTECT_ARGS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::lazy_protect_args; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LET_HPP 2 | #define MPLLIBS_METAMONAD_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::let; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::let_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/letrec.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LETREC_HPP 2 | #define MPLLIBS_METAMONAD_LETREC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::letrec; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/letrec_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LETREC_C_HPP 2 | #define MPLLIBS_METAMONAD_LETREC_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::letrec_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/limit_case_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIMIT_CASE_SIZE_HPP 2 | #define MPLLIBS_METAMONAD_LIMIT_CASE_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_CASE_SIZE 10 | # define MPLLIBS_LIMIT_CASE_SIZE 8 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/limit_compose_arg_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIMIT_COMPOSE_ARG_SIZE_HPP 2 | #define MPLLIBS_METAMONAD_LIMIT_COMPOSE_ARG_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_COMPOSE_ARG_SIZE 10 | # define MPLLIBS_LIMIT_COMPOSE_ARG_SIZE 3 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/limit_compose_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIMIT_COMPOSE_SIZE_HPP 2 | #define MPLLIBS_METAMONAD_LIMIT_COMPOSE_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_COMPOSE_SIZE 10 | # define MPLLIBS_LIMIT_COMPOSE_SIZE 10 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/limit_data_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIMIT_DATA_SIZE_HPP 2 | #define MPLLIBS_METAMONAD_LIMIT_DATA_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_DATA_SIZE 10 | # define MPLLIBS_LIMIT_DATA_SIZE 10 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/limit_do_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIMIT_DO_SIZE_HPP 2 | #define MPLLIBS_METAMONAD_LIMIT_DO_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_DO_SIZE 10 | # define MPLLIBS_LIMIT_DO_SIZE 8 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/limit_instantiate_arity.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIMIT_INSTANTIATE_ARITY_HPP 2 | #define MPLLIBS_METAMONAD_LIMIT_INSTANTIATE_ARITY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_INSTANTIATE_ARITY 10 | # define MPLLIBS_LIMIT_INSTANTIATE_ARITY 32 11 | #endif 12 | 13 | #endif 14 | 15 | 16 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/limit_metafunction_arity.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIMIT_METAFUNCTION_ARITY_HPP 2 | #define MPLLIBS_METAMONAD_LIMIT_METAFUNCTION_ARITY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_METAFUNCTION_ARITY 10 | # define MPLLIBS_LIMIT_METAFUNCTION_ARITY 21 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/list.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIST_HPP 2 | #define MPLLIBS_METAMONAD_LIST_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | #endif 13 | 14 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/list_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_LIST_TAG_HPP 2 | #define MPLLIBS_METAMONAD_LIST_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::list_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/make_monadic.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MAKE_MONADIC_HPP 2 | #define MPLLIBS_METAMONAD_MAKE_MONADIC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::make_monadic; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/make_monadic_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MAKE_MONADIC_C_HPP 2 | #define MPLLIBS_METAMONAD_MAKE_MONADIC_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::make_monadic_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/make_syntax.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MAKE_SYNTAX_HPP 2 | #define MPLLIBS_METAMONAD_MAKE_SYNTAX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::make_syntax; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/make_tmp_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MAKE_TMP_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_MAKE_TMP_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::make_tmp_value; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/mappend.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MAPPEND_HPP 2 | #define MPLLIBS_METAMONAD_MAPPEND_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::mappend; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/match.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MATCH_HPP 2 | #define MPLLIBS_METAMONAD_MATCH_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace mpllibs 14 | { 15 | namespace metamonad 16 | { 17 | using v1::match; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/match_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MATCH_C_HPP 2 | #define MPLLIBS_METAMONAD_MATCH_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace mpllibs 14 | { 15 | namespace metamonad 16 | { 17 | using v1::match_c; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/match_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MATCH_LET_HPP 2 | #define MPLLIBS_METAMONAD_MATCH_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::match_let; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/match_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MATCH_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_MATCH_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::match_let_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/matches.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MATCHES_HPP 2 | #define MPLLIBS_METAMONAD_MATCHES_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::matches; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/matches_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MATCHES_C_HPP 2 | #define MPLLIBS_METAMONAD_MATCHES_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::matches_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/maybe.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MAYBE_HPP 2 | #define MPLLIBS_METAMONAD_MAYBE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::maybe_tag; 16 | using v1::just; 17 | using v1::nothing; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/mconcat.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MCONCAT_HPP 2 | #define MPLLIBS_METAMONAD_MCONCAT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::mconcat; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/mempty.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MEMPTY_HPP 2 | #define MPLLIBS_METAMONAD_MEMPTY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::mempty; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/metafunction.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_METAFUNCTION_HPP 2 | #define MPLLIBS_METAMONAD_METAFUNCTION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifdef MPLLIBS_METAFUNCTION 12 | # error MPLLIBS_METAFUNCTION already defined 13 | #endif 14 | #define MPLLIBS_METAFUNCTION MPLLIBS_V1_METAFUNCTION 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/monad.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MONAD_HPP 2 | #define MPLLIBS_METAMONAD_MONAD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::monad; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/monad_plus.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MONAD_PLUS_HPP 2 | #define MPLLIBS_METAMONAD_MONAD_PLUS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::monad_plus; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/monoid.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MONOID_HPP 2 | #define MPLLIBS_METAMONAD_MONOID_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::monoid; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/mplus.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MPLUS_HPP 2 | #define MPLLIBS_METAMONAD_MPLUS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::mplus; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/multi_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MULTI_LET_HPP 2 | #define MPLLIBS_METAMONAD_MULTI_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::multi_let; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/multi_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MULTI_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_MULTI_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::multi_let_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/mzero.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_MZERO_HPP 2 | #define MPLLIBS_METAMONAD_MZERO_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::mzero; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/name.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_NAME_HPP 2 | #define MPLLIBS_METAMONAD_NAME_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | namespace name 16 | { 17 | using namespace v1::name; 18 | } 19 | using namespace name; 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/no_case_matched.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_NO_CASE_MATCHED_HPP 2 | #define MPLLIBS_METAMONAD_NO_CASE_MATCHED_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::no_case_matched; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/overloading_error_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_OVERLOADING_ERROR_TAG_HPP 2 | #define MPLLIBS_METAMONAD_OVERLOADING_ERROR_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::overloading_error_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/pair.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_PAIR_HPP 2 | #define MPLLIBS_METAMONAD_PAIR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::pair; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/pair_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_PAIR_TAG_HPP 2 | #define MPLLIBS_METAMONAD_PAIR_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::pair_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/reader.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_READER_HPP 2 | #define MPLLIBS_METAMONAD_READER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | #endif 13 | 14 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/reader_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_READER_TAG_HPP 2 | #define MPLLIBS_METAMONAD_READER_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::reader_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/return_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_RETURN__HPP 2 | #define MPLLIBS_METAMONAD_RETURN__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::return_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/returns.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_RETURNS_HPP 2 | #define MPLLIBS_METAMONAD_RETURNS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::returns; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/second.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_SECOND_HPP 2 | #define MPLLIBS_METAMONAD_SECOND_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::second; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/set.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_SET_HPP 2 | #define MPLLIBS_METAMONAD_SET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::set; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/state.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_STATE_HPP 2 | #define MPLLIBS_METAMONAD_STATE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | #endif 13 | 14 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/state_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_STATE_TAG_HPP 2 | #define MPLLIBS_METAMONAD_STATE_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::state_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/syntax.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_SYNTAX_HPP 2 | #define MPLLIBS_METAMONAD_SYNTAX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | using v1::syntax; 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/syntax_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_SYNTAX_TAG_HPP 2 | #define MPLLIBS_METAMONAD_SYNTAX_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::syntax_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/tag_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TAG_TAG_HPP 2 | #define MPLLIBS_METAMONAD_TAG_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::tag_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/tmp_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TMP_TAG_HPP 2 | #define MPLLIBS_METAMONAD_TMP_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::tmp_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/tmp_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TMP_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_TMP_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::tmp_value; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/try_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TRY__HPP 2 | #define MPLLIBS_METAMONAD_TRY__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace mpllibs 14 | { 15 | namespace metamonad 16 | { 17 | using v1::try_; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/try_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TRY_C_HPP 2 | #define MPLLIBS_METAMONAD_TRY_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace mpllibs 14 | { 15 | namespace metamonad 16 | { 17 | using v1::try_c; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/typeclass.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TYPECLASS_HPP 2 | #define MPLLIBS_METAMONAD_TYPECLASS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | 14 | #endif 15 | 16 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/typeclass_expect.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TYPECLASS_EXPECT_HPP 2 | #define MPLLIBS_METAMONAD_TYPECLASS_EXPECT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifdef MPLLIBS_TYPECLASS_EXPECT 12 | # error MPLLIBS_TYPECLASS_EXPECT already defined 13 | #endif 14 | #define MPLLIBS_TYPECLASS_EXPECT MPLLIBS_V1_TYPECLASS_EXPECT 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/typeclass_expectations.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_TYPECLASS_EXPECTATIONS_HPP 2 | #define MPLLIBS_METAMONAD_TYPECLASS_EXPECTATIONS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::typeclass_expectations; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/unbox.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_UNBOX_HPP 2 | #define MPLLIBS_METAMONAD_UNBOX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::unbox; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1___HPP 2 | #define MPLLIBS_METAMONAD_V1___HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | namespace v1 17 | { 18 | struct _ : tmp_value<_> {}; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/box_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_BOX_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_BOX_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | namespace v1 17 | { 18 | struct box_tag : tmp_tag {}; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD___HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD___HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct _; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/algebraic_data_type_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_ALGEBRAIC_DATA_TYPE_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_ALGEBRAIC_DATA_TYPE_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct algebraic_data_type_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/already_lazy.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_ALREADY_LAZY_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_ALREADY_LAZY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct already_lazy; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/already_monadic.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_ALREADY_MONADIC_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_ALREADY_MONADIC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct already_monadic; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/bad_match.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_BAD_MATCH_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_BAD_MATCH_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct bad_match; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/bind.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_BIND_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_BIND_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct bind; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/bind_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_BIND__HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_BIND__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct bind_; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/box.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_BOX_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_BOX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct box; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/box_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_BOX_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_BOX_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct box_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/catch_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_CATCH__HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_CATCH__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct catch_; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/catch_all.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_CATCH_ALL_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_CATCH_ALL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct catch_all; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/catch_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_CATCH_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_CATCH_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct catch_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/catch_just.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_CATCH_JUST_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_CATCH_JUST_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct catch_just; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/concat.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_CONCAT_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_CONCAT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct concat; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/concat_map.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_CONCAT_MAP_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_CONCAT_MAP_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct concat_map; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/do_return.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_DO_RETURN_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_DO_RETURN_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct do_return; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_guard.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_GUARD_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_GUARD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_guard; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_letrec.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_LETREC_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_LETREC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_letrec; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_letrec_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_LETREC_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_LETREC_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_letrec_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_match_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_MATCH_LET_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_MATCH_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_match_let; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_match_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_MATCH_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_MATCH_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_match_let_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_multi_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_MULTI_LET_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_MULTI_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_multi_let; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_multi_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_MULTI_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_MULTI_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_multi_let_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/eval_syntax.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EVAL_SYNTAX_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EVAL_SYNTAX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct eval_syntax; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/exception.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EXCEPTION_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EXCEPTION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | namespace v1 16 | { 17 | template 18 | struct exception; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/exception_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_EXCEPTION_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_EXCEPTION_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct exception_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/fail.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_FAIL_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_FAIL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct fail; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/fail_with_type.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_FAIL_WITH_TYPE_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_FAIL_WITH_TYPE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | void fail_with_type(); 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/first.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_FIRST_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_FIRST_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct first; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/guard.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_GUARD_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_GUARD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct guard; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/has_get_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_HAS_GET_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_HAS_GET_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct has_get_value; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/has_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_HAS_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_HAS_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct has_value; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/if_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_IF__HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_IF__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct if_; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/invalid_typeclass.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_INVALID_TYPECLASS_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_INVALID_TYPECLASS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct invalid_typeclass; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/invalid_typeclass_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_INVALID_TYPECLASS_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_INVALID_TYPECLASS_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct invalid_typeclass_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/is_exception.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_IS_EXCEPTION_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_IS_EXCEPTION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct is_exception; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/is_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_IS_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_IS_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | // For boost::mpl::na 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | namespace v1 17 | { 18 | template 19 | struct is_tag; 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/lazy.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_LAZY_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_LAZY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct lazy; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/lazy_argument.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_LAZY_ARGUMENT_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_LAZY_ARGUMENT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct lazy_argument; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/lazy_protect_args.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_LAZY_PROTECT_ARGS_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_LAZY_PROTECT_ARGS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct lazy_protect_args; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_LET_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct let; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/letrec.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_LETREC_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_LETREC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct letrec; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/letrec_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_LETREC_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_LETREC_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct letrec_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/list_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_LIST_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_LIST_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct list_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/make_monadic.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MAKE_MONADIC_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MAKE_MONADIC_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct make_monadic; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/make_monadic_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MAKE_MONADIC_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MAKE_MONADIC_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct make_monadic_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/make_syntax.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MAKE_SYNTAX_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MAKE_SYNTAX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct make_syntax; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/mappend.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MAPPEND_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MAPPEND_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct mappend; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/match.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MATCH_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MATCH_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct match; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/match_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MATCH_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MATCH_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct match_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/match_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MATCH_LET_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MATCH_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct match_let; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/match_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MATCH_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MATCH_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct match_let_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/matches.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MATCHES_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MATCHES_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | namespace v1 16 | { 17 | template 18 | struct matches; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/matches_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MATCHES_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MATCHES_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct matches_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/maybe.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MAYBE_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MAYBE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct maybe_tag; 17 | 18 | template 19 | struct just; 20 | 21 | struct nothing; 22 | } 23 | } 24 | } 25 | 26 | #endif 27 | 28 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/mconcat.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MCONCAT_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MCONCAT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct mconcat; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/mempty.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MEMPTY_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MEMPTY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | namespace v1 16 | { 17 | template 18 | struct mempty; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/monad.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MONAD_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MONAD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct monad; 17 | 18 | template 19 | struct monad_defaults; 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/monad_plus.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MONAD_PLUS_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MONAD_PLUS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct monad_plus; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/monoid.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MONOID_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MONOID_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct monoid; 17 | 18 | template 19 | struct monoid_defaults; 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/mplus.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MPLUS_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MPLUS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct mplus; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/multi_let.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MULTI_LET_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MULTI_LET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct multi_let; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/multi_let_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_MULTI_LET_C_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_MULTI_LET_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct multi_let_c; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/no_case_matched.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_NO_CASE_MATCHED_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_NO_CASE_MATCHED_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct no_case_matched; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/overloading_error_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_OVERLOADING_ERROR_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_OVERLOADING_ERROR_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct overloading_error_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/pair_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_PAIR_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_PAIR_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct pair_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/reader_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_READER_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_READER_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct reader_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/return_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_RETURN__HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_RETURN__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct return_; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/returns.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_RETURNS_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_RETURNS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct returns; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/second.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_SECOND_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_SECOND_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct second; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/set.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_SET_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_SET_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct set; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/state_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_STATE_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_STATE_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct state_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/syntax.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_SYNTAX_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_SYNTAX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct syntax; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/syntax_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_SYNTAX_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_SYNTAX_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct syntax_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/tag_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_TAG_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_TAG_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct tag_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/tmp_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_TMP_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_TMP_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct tmp_tag; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/typeclass_expectations.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_TYPECLASS_EXPECTATIONS_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_TYPECLASS_EXPECTATIONS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct typeclass_expectations; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/unbox.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_UNBOX_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_UNBOX_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct unbox; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/value_to_stream.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_VALUE_TO_STREAM_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_VALUE_TO_STREAM_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct value_to_stream; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/var.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_VAR_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_VAR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct var; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/var_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_VAR_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_VAR_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | struct var_tag; 16 | } 17 | } 18 | } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/fwd/writer_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_FWD_WRITER_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_FWD_WRITER_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct writer_tag; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/impl/build_seq.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_IMPL_BUILD_SEQ_HPP 2 | #define MPLLIBS_METAMONAD_V1_IMPL_BUILD_SEQ_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifdef MPLLIBS_V1_BUILD_SEQ 12 | # error MPLLIBS_V1_BUILD_SEQ already defined 13 | #endif 14 | #define MPLLIBS_V1_BUILD_SEQ(z, n, unused) (BOOST_PP_CAT(T, n)) 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/impl/is_same_no_arg.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_IMPL_IS_SAME_NO_ARG_HPP 2 | #define MPLLIBS_METAMONAD_V1_IMPL_IS_SAME_NO_ARG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | namespace impl 16 | { 17 | struct is_same_no_arg; 18 | } 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/impl/maybe.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_IMPL_MAYBE_HPP 2 | #define MPLLIBS_METAMONAD_V1_IMPL_MAYBE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2012. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | namespace v1 16 | { 17 | MPLLIBS_V1_DATA(maybe, 1, ((just, 1))((nothing, 0))); 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/impl/no.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_IMPL_NO_HPP 2 | #define MPLLIBS_METAMONAD_V1_IMPL_NO_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | namespace impl 16 | { 17 | typedef char no; 18 | } 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/impl/no_tag_for_tmp_value.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_IMPL_NO_TAG_FOR_TMP_VALUE_HPP 2 | #define MPLLIBS_METAMONAD_V1_IMPL_NO_TAG_FOR_TMP_VALUE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | namespace impl 16 | { 17 | struct no_tag_for_tmp_value; 18 | } 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | 26 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/impl/yes.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_IMPL_YES_HPP 2 | #define MPLLIBS_METAMONAD_V1_IMPL_YES_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metamonad 12 | { 13 | namespace v1 14 | { 15 | namespace impl 16 | { 17 | struct yes 18 | { 19 | double _[1000]; 20 | }; 21 | } 22 | } 23 | } 24 | } 25 | 26 | #endif 27 | 28 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/tag_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_TAG_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_TAG_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2011. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | namespace v1 17 | { 18 | struct tag_tag : tmp_tag {}; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/typeclass.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_TYPECLASS_HPP 2 | #define MPLLIBS_METAMONAD_V1_TYPECLASS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2011. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | #endif 13 | 14 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/v1/var_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_V1_VAR_TAG_HPP 2 | #define MPLLIBS_METAMONAD_V1_VAR_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metamonad 15 | { 16 | namespace v1 17 | { 18 | struct var_tag : tmp_tag {}; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/value_to_stream.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_VALUE_TO_STREAM_HPP 2 | #define MPLLIBS_METAMONAD_VALUE_TO_STREAM_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::value_to_stream; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/var.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_VAR_HPP 2 | #define MPLLIBS_METAMONAD_VAR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::var; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/var_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_VAR_TAG_HPP 2 | #define MPLLIBS_METAMONAD_VAR_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::var_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/writer.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_WRITER_HPP 2 | #define MPLLIBS_METAMONAD_WRITER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | #endif 13 | 14 | -------------------------------------------------------------------------------- /lab/mpllibs/metamonad/writer_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAMONAD_WRITER_TAG_HPP 2 | #define MPLLIBS_METAMONAD_WRITER_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metamonad 14 | { 15 | using v1::writer_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/accept_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ACCEPT_TAG_HPP 2 | #define MPLLIBS_METAPARSE_ACCEPT_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::accept_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/accept_when.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ACCEPT_WHEN_HPP 2 | #define MPLLIBS_METAPARSE_ACCEPT_WHEN_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::accept_when; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/alphanum.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ALPHANUM_HPP 2 | #define MPLLIBS_METAPARSE_ALPHANUM_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::alphanum; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/always.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ALWAYS_HPP 2 | #define MPLLIBS_METAPARSE_ALWAYS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::always; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/always_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ALWAYS_C_HPP 2 | #define MPLLIBS_METAPARSE_ALWAYS_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::always_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/any.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ANY_HPP 2 | #define MPLLIBS_METAPARSE_ANY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::any; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/any1.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ANY1_HPP 2 | #define MPLLIBS_METAPARSE_ANY1_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::any1; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/any_one_of.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ANY_ONE_OF_HPP 2 | #define MPLLIBS_METAPARSE_ANY_ONE_OF_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::any_one_of; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/any_one_of1.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ANY_ONE_OF1_HPP 2 | #define MPLLIBS_METAPARSE_ANY_ONE_OF1_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::any_one_of1; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/build_parser.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_BUILD_PARSER_HPP 2 | #define MPLLIBS_METAPARSE_BUILD_PARSER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::build_parser; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/change_error_message.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_CHANGE_ERROR_MESSAGE_HPP 2 | #define MPLLIBS_METAPARSE_CHANGE_ERROR_MESSAGE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::change_error_message; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/debug_parsing_error.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_DEBUG_PARSING_ERROR_HPP 2 | #define MPLLIBS_METAPARSE_DEBUG_PARSING_ERROR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::debug_parsing_error; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/define_error.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_DEFINE_ERROR_HPP 2 | #define MPLLIBS_METAPARSE_DEFINE_ERROR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifdef MPLLIBS_DEFINE_ERROR 12 | # error MPLLIBS_DEFINE_ERROR already defined 13 | #endif 14 | #define MPLLIBS_DEFINE_ERROR MPLLIBS_DEFINE_V1_ERROR 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/digit.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_DIGIT_HPP 2 | #define MPLLIBS_METAPARSE_DIGIT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::digit; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/digit_val.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_DIGIT_VAL_HPP 2 | #define MPLLIBS_METAPARSE_DIGIT_VAL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::digit_val; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/empty.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_EMPTY_HPP 2 | #define MPLLIBS_METAPARSE_EMPTY_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::empty; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/entire_input.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ENTIRE_INPUT_HPP 2 | #define MPLLIBS_METAPARSE_ENTIRE_INPUT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::entire_input; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/error/digit_expected.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ERROR_DIGIT_EXPECTED_HPP 2 | #define MPLLIBS_METAPARSE_ERROR_DIGIT_EXPECTED_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace error 16 | { 17 | using v1::error::digit_expected; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/error/letter_expected.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ERROR_LETTER_EXPECTED_HPP 2 | #define MPLLIBS_METAPARSE_ERROR_LETTER_EXPECTED_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace error 16 | { 17 | using v1::error::letter_expected; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/except.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_EXCEPT_HPP 2 | #define MPLLIBS_METAPARSE_EXCEPT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::except; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/fail.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FAIL_HPP 2 | #define MPLLIBS_METAPARSE_FAIL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::fail; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/fail_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FAIL_TAG_HPP 2 | #define MPLLIBS_METAPARSE_FAIL_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::fail_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/first_of.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FIRST_OF_HPP 2 | #define MPLLIBS_METAPARSE_FIRST_OF_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::first_of; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/foldl.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FOLDL_HPP 2 | #define MPLLIBS_METAPARSE_FOLDL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::foldl; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/foldl1.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FOLDL1_HPP 2 | #define MPLLIBS_METAPARSE_FOLDL1_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::foldl1; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/foldlp.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FOLDLP_HPP 2 | #define MPLLIBS_METAPARSE_FOLDLP_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::foldlp; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/foldr.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FOLDR_HPP 2 | #define MPLLIBS_METAPARSE_FOLDR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::foldr; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/foldr1.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FOLDR1_HPP 2 | #define MPLLIBS_METAPARSE_FOLDR1_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::foldr1; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/foldrp.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_FOLDRP_HPP 2 | #define MPLLIBS_METAPARSE_FOLDRP_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::foldrp; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/get_col.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_GET_COL_HPP 2 | #define MPLLIBS_METAPARSE_GET_COL_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::get_col; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/get_line.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_GET_LINE_HPP 2 | #define MPLLIBS_METAPARSE_GET_LINE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::get_line; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/get_position.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_GET_POSITION_HPP 2 | #define MPLLIBS_METAPARSE_GET_POSITION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::get_position; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/get_prev_char.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_GET_PREV_CHAR_HPP 2 | #define MPLLIBS_METAPARSE_GET_PREV_CHAR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::get_prev_char; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/get_remaining.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_GET_REMAINING_HPP 2 | #define MPLLIBS_METAPARSE_GET_REMAINING_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::get_remaining; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/get_result.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_GET_RESULT_HPP 2 | #define MPLLIBS_METAPARSE_GET_RESULT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::get_result; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/grammar.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_GRAMMAR_HPP 2 | #define MPLLIBS_METAPARSE_GRAMMAR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::grammar; 16 | } 17 | } 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/if_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_IF__HPP 2 | #define MPLLIBS_METAPARSE_IF__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::if_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/int_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_INT_HPP 2 | #define MPLLIBS_METAPARSE_INT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::int_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/is_error.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_IS_ERROR_HPP 2 | #define MPLLIBS_METAPARSE_IS_ERROR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::is_error; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/iterate.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ITERATE_HPP 2 | #define MPLLIBS_METAPARSE_ITERATE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::iterate; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/iterate_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ITERATE_C_HPP 2 | #define MPLLIBS_METAPARSE_ITERATE_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::iterate_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/keyword.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_KEYWORD_HPP 2 | #define MPLLIBS_METAPARSE_KEYWORD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::keyword; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/last_of.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LAST_OF_HPP 2 | #define MPLLIBS_METAPARSE_LAST_OF_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::last_of; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/letter.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LETTER_HPP 2 | #define MPLLIBS_METAPARSE_LETTER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::letter; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/limit_one_char_except_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LIMIT_ONE_CHAR_EXCEPT_SIZE_HPP 2 | #define MPLLIBS_METAPARSE_LIMIT_ONE_CHAR_EXCEPT_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_ONE_CHAR_EXCEPT_SIZE 10 | # define MPLLIBS_LIMIT_ONE_CHAR_EXCEPT_SIZE 10 11 | #endif 12 | 13 | #endif 14 | 15 | 16 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/limit_one_of_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LIMIT_ONE_OF_SIZE_HPP 2 | #define MPLLIBS_METAPARSE_LIMIT_ONE_OF_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_ONE_OF_SIZE 10 | # define MPLLIBS_LIMIT_ONE_OF_SIZE 20 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/limit_sequence_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LIMIT_SEQUENCE_SIZE_HPP 2 | #define MPLLIBS_METAPARSE_LIMIT_SEQUENCE_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_SEQUENCE_SIZE 10 | # define MPLLIBS_LIMIT_SEQUENCE_SIZE 5 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/limit_string_size.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LIMIT_STRING_SIZE_HPP 2 | #define MPLLIBS_METAPARSE_LIMIT_STRING_SIZE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_LIMIT_STRING_SIZE 10 | # define MPLLIBS_LIMIT_STRING_SIZE 32 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/lit.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LIT_HPP 2 | #define MPLLIBS_METAPARSE_LIT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::lit; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/lit_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LIT_C_HPP 2 | #define MPLLIBS_METAPARSE_LIT_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::lit_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/look_ahead.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_LOOK_AHEAD_HPP 2 | #define MPLLIBS_METAPARSE_LOOK_AHEAD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::look_ahead; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/middle_of.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_KEEP_MIDDLE_HPP 2 | #define MPLLIBS_METAPARSE_KEEP_MIDDLE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::middle_of; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/next_char.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_NEXT_CHAR_HPP 2 | #define MPLLIBS_METAPARSE_NEXT_CHAR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::next_char; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/next_line.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_NEXT_LINE_HPP 2 | #define MPLLIBS_METAPARSE_NEXT_LINE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::next_line; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/nth_of.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_NTH_OF_HPP 2 | #define MPLLIBS_METAPARSE_NTH_OF_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::nth_of; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/nth_of_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_NTH_OF_C_HPP 2 | #define MPLLIBS_METAPARSE_NTH_OF_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::nth_of_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/one_char.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ONE_CHAR_HPP 2 | #define MPLLIBS_METAPARSE_ONE_CHAR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::one_char; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/one_char_except.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ONE_CHAR_EXCEPT_HPP 2 | #define MPLLIBS_METAPARSE_ONE_CHAR_EXCEPT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::one_char_except; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/one_char_except_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ONE_CHAR_EXCEPT_C_HPP 2 | #define MPLLIBS_METAPARSE_ONE_CHAR_EXCEPT_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::one_char_except_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/one_of.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ONE_OF_HPP 2 | #define MPLLIBS_METAPARSE_ONE_OF_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::one_of; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/one_of_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_ONE_OF_C_HPP 2 | #define MPLLIBS_METAPARSE_ONE_OF_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::one_of_c; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/parser_monad.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_PARSER_MONAD_HPP 2 | #define MPLLIBS_METAPARSE_PARSER_MONAD_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | #endif 13 | 14 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/parser_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_PARSER_TAG_HPP 2 | #define MPLLIBS_METAPARSE_PARSER_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::parser_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/return_.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_RETURN__HPP 2 | #define MPLLIBS_METAPARSE_RETURN__HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::return_; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/sequence.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_SEQUENCE_HPP 2 | #define MPLLIBS_METAPARSE_SEQUENCE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::sequence; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/source_position.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_SOURCE_POSITION_HPP 2 | #define MPLLIBS_METAPARSE_SOURCE_POSITION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::source_position; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/source_position_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_SOURCE_POSITION_TAG_HPP 2 | #define MPLLIBS_METAPARSE_SOURCE_POSITION_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::source_position_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/space.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_SPACE_HPP 2 | #define MPLLIBS_METAPARSE_SPACE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::space; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | 22 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/spaces.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_SPACES_HPP 2 | #define MPLLIBS_METAPARSE_SPACES_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::spaces; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/start.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_START_HPP 2 | #define MPLLIBS_METAPARSE_START_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::start; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/string_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_STRING_TAG_HPP 2 | #define MPLLIBS_METAPARSE_STRING_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::string_tag; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/token.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_TOKEN_HPP 2 | #define MPLLIBS_METAPARSE_TOKEN_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::token; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/transform.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_TRANSFORM_HPP 2 | #define MPLLIBS_METAPARSE_TRANSFORM_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::transform; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/unless_error.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_UNLESS_ERROR_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_UNLESS_ERROR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | using v1::unless_error; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/digit_to_int.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_DIGIT_TO_INT_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_DIGIT_TO_INT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::digit_to_int; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/digit_to_int_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_DIGIT_TO_INT_C_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_DIGIT_TO_INT_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::digit_to_int_c; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/in_range.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_IN_RANGE_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_IN_RANGE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::in_range; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/int_to_digit.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_INT_TO_DIGIT_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_INT_TO_DIGIT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::int_to_digit; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/int_to_digit_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_INT_TO_DIGIT_C_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_INT_TO_DIGIT_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::int_to_digit_c; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/is_digit.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_IS_DIGIT_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_IS_DIGIT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2010. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::is_digit; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/is_lcase_letter.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_IS_LCASE_LETTER_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_IS_LCASE_LETTER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::is_lcase_letter; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/is_letter.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_IS_LETTER_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_IS_LETTER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::is_letter; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/is_ucase_letter.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_IS_UCASE_LETTER_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_IS_UCASE_LETTER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::is_ucase_letter; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/is_whitespace.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_IS_WHITESPACE_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_IS_WHITESPACE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::is_whitespace; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/util/is_whitespace_c.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_UTIL_IS_WHITESPACE_C_HPP 2 | #define MPLLIBS_METAPARSE_UTIL_IS_WHITESPACE_C_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace util 16 | { 17 | using v1::util::is_whitespace_c; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/fwd/build_parser.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_FWD_BUILD_PARSER_HPP 2 | #define MPLLIBS_METAPARSE_V1_FWD_BUILD_PARSER_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metaparse 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct build_parser; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/fwd/get_line.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_FWD_GET_LINE_HPP 2 | #define MPLLIBS_METAPARSE_V1_FWD_GET_LINE_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metaparse 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct get_line_impl; 17 | 18 | template 19 | struct get_line; 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/fwd/get_result.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_FWD_GET_RESULT_HPP 2 | #define MPLLIBS_METAPARSE_V1_FWD_GET_RESULT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metaparse 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct get_result_impl; 17 | 18 | template 19 | struct get_result; 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/fwd/source_position.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_FWD_SOURCE_POSITION_HPP 2 | #define MPLLIBS_METAPARSE_V1_FWD_SOURCE_POSITION_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metaparse 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct source_position; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/impl/no_char.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_IMPL_NO_CHAR_HPP 2 | #define MPLLIBS_METAPARSE_V1_IMPL_NO_CHAR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | #ifdef MPLLIBS_NO_CHAR 12 | # error MPLLIBS_NO_CHAR already defined 13 | #endif 14 | #define MPLLIBS_NO_CHAR EOF 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/parser_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_PARSER_TAG_HPP 2 | #define MPLLIBS_METAPARSE_V1_PARSER_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace metaparse 14 | { 15 | namespace v1 16 | { 17 | struct parser_tag : metamonad::tmp_tag {}; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/spaces.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_SPACES_HPP 2 | #define MPLLIBS_METAPARSE_V1_SPACES_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2010. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | namespace mpllibs 13 | { 14 | namespace metaparse 15 | { 16 | namespace v1 17 | { 18 | typedef any1 spaces; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/metaparse/v1/string_tag.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_METAPARSE_V1_STRING_TAG_HPP 2 | #define MPLLIBS_METAPARSE_V1_STRING_TAG_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace metaparse 12 | { 13 | namespace v1 14 | { 15 | struct string_tag 16 | { 17 | typedef string_tag type; 18 | }; 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/error.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_ERROR_HPP 2 | #define MPLLIBS_SAFE_PRINTF_ERROR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace safe_printf 14 | { 15 | namespace error 16 | { 17 | using v1::error::no_percentage_char_expected; 18 | } 19 | } 20 | } 21 | 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/expected_types.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_EXPECTED_TYPES_HPP 2 | #define MPLLIBS_SAFE_PRINTF_EXPECTED_TYPES_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace safe_printf 14 | { 15 | using v1::expected_types; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/printf.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_PRINTF_HPP 2 | #define MPLLIBS_SAFE_PRINTF_PRINTF_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace safe_printf 14 | { 15 | using v1::printf; 16 | using v1::fprintf; 17 | using v1::sprintf; 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/printf_max_argument.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_PRINTF_MAX_ARGUMENT_HPP 2 | #define MPLLIBS_SAFE_PRINTF_PRINTF_MAX_ARGUMENT_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #ifndef MPLLIBS_PRINTF_MAX_ARGUMENT 10 | # define MPLLIBS_PRINTF_MAX_ARGUMENT 10 11 | #endif 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/v1/fwd/error.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_V1_FWD_ERROR_HPP 2 | #define MPLLIBS_SAFE_PRINTF_V1_FWD_ERROR_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace safe_printf 12 | { 13 | namespace v1 14 | { 15 | namespace error 16 | { 17 | struct no_percentage_char_expected; 18 | } 19 | } 20 | } 21 | } 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/v1/fwd/expected_types.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_V1_FWD_EXPECTED_TYPES_HPP 2 | #define MPLLIBS_SAFE_PRINTF_V1_FWD_EXPECTED_TYPES_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace safe_printf 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct expected_types; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/v1/fwd/valid_arguments.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_VERIFY_V1_FWD_PRINTF_ARGUMENTS_HPP 2 | #define MPLLIBS_SAFE_PRINTF_VERIFY_V1_FWD_PRINTF_ARGUMENTS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | namespace mpllibs 10 | { 11 | namespace safe_printf 12 | { 13 | namespace v1 14 | { 15 | template 16 | struct valid_arguments; 17 | } 18 | } 19 | } 20 | 21 | #endif 22 | 23 | -------------------------------------------------------------------------------- /lab/mpllibs/safe_printf/valid_arguments.hpp: -------------------------------------------------------------------------------- 1 | #ifndef MPLLIBS_SAFE_PRINTF_VERIFY_PRINTF_ARGUMENTS_HPP 2 | #define MPLLIBS_SAFE_PRINTF_VERIFY_PRINTF_ARGUMENTS_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | 11 | namespace mpllibs 12 | { 13 | namespace safe_printf 14 | { 15 | using v1::valid_arguments; 16 | } 17 | } 18 | 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /lab/regex_test.hpp: -------------------------------------------------------------------------------- 1 | #ifndef REGEX_TEST_HPP 2 | #define REGEX_TEST_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | 12 | bool all_tests( 13 | const boost::xpressive::sregex& re_, 14 | const std::string& sre_ 15 | ); 16 | 17 | #endif 18 | 19 | -------------------------------------------------------------------------------- /solution/lab4.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LAB4_HPP 2 | #define LAB4_HPP 3 | 4 | // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | template 14 | struct beginning_and_end : 15 | boost::mpl::pair< 16 | typename boost::mpl::front::type, 17 | typename boost::mpl::back::type 18 | > 19 | {}; 20 | 21 | #endif 22 | 23 | --------------------------------------------------------------------------------