├── .clang-format ├── .gitattributes ├── .gitignore ├── ARCHITECTURE.md ├── CMakeLists.txt ├── Doxyfile ├── LICENSE ├── README.md ├── docs ├── annotated.html ├── annotated_dup.js ├── bc_s.png ├── bdwn.png ├── classes.html ├── closed.png ├── common_8h.html ├── common_8h__dep__incl.map ├── common_8h__dep__incl.md5 ├── common_8h__dep__incl.png ├── common_8h_source.html ├── dir_59425e443f801f1f2fd8bbe4959a3ccf.html ├── dir_59425e443f801f1f2fd8bbe4959a3ccf.js ├── dir_d44c64559bbebec7f509842c48db8b23.html ├── dir_d44c64559bbebec7f509842c48db8b23.js ├── doc.png ├── doxygen.css ├── doxygen.svg ├── dynsections.js ├── files.html ├── files_dup.js ├── folderclosed.png ├── folderopen.png ├── globals.html ├── globals_defs.html ├── globals_enum.html ├── globals_eval.html ├── graph_legend.html ├── graph_legend.md5 ├── graph_legend.png ├── impls_8c.html ├── impls_8h.html ├── impls_8h.js ├── impls_8h__dep__incl.map ├── impls_8h__dep__incl.md5 ├── impls_8h__dep__incl.png ├── impls_8h_source.html ├── index.html ├── itplus_8h.html ├── itplus_8h.js ├── itplus_8h_source.html ├── itplus__chain_8h.html ├── itplus__chain_8h.js ├── itplus__chain_8h__dep__incl.map ├── itplus__chain_8h__dep__incl.md5 ├── itplus__chain_8h__dep__incl.png ├── itplus__chain_8h_source.html ├── itplus__collect_8h.html ├── itplus__collect_8h.js ├── itplus__collect_8h__dep__incl.map ├── itplus__collect_8h__dep__incl.md5 ├── itplus__collect_8h__dep__incl.png ├── itplus__collect_8h_source.html ├── itplus__defn_8h.html ├── itplus__defn_8h.js ├── itplus__defn_8h__dep__incl.map ├── itplus__defn_8h__dep__incl.md5 ├── itplus__defn_8h__dep__incl.png ├── itplus__defn_8h_source.html ├── itplus__drop_8h.html ├── itplus__drop_8h.js ├── itplus__drop_8h__dep__incl.map ├── itplus__drop_8h__dep__incl.md5 ├── itplus__drop_8h__dep__incl.png ├── itplus__drop_8h_source.html ├── itplus__dropwhile_8h.html ├── itplus__dropwhile_8h.js ├── itplus__dropwhile_8h__dep__incl.map ├── itplus__dropwhile_8h__dep__incl.md5 ├── itplus__dropwhile_8h__dep__incl.png ├── itplus__dropwhile_8h_source.html ├── itplus__enumerate_8h.html ├── itplus__enumerate_8h.js ├── itplus__enumerate_8h__dep__incl.map ├── itplus__enumerate_8h__dep__incl.md5 ├── itplus__enumerate_8h__dep__incl.png ├── itplus__enumerate_8h_source.html ├── itplus__filter_8h.html ├── itplus__filter_8h.js ├── itplus__filter_8h__dep__incl.map ├── itplus__filter_8h__dep__incl.md5 ├── itplus__filter_8h__dep__incl.png ├── itplus__filter_8h_source.html ├── itplus__filtermap_8h.html ├── itplus__filtermap_8h.js ├── itplus__filtermap_8h__dep__incl.map ├── itplus__filtermap_8h__dep__incl.md5 ├── itplus__filtermap_8h__dep__incl.png ├── itplus__filtermap_8h_source.html ├── itplus__fold_8h.html ├── itplus__fold_8h.js ├── itplus__fold_8h__dep__incl.map ├── itplus__fold_8h__dep__incl.md5 ├── itplus__fold_8h__dep__incl.png ├── itplus__fold_8h_source.html ├── itplus__foreach_8h.html ├── itplus__foreach_8h.js ├── itplus__foreach_8h__dep__incl.map ├── itplus__foreach_8h__dep__incl.md5 ├── itplus__foreach_8h__dep__incl.png ├── itplus__foreach_8h_source.html ├── itplus__iterator_8h.html ├── itplus__iterator_8h.js ├── itplus__iterator_8h__dep__incl.map ├── itplus__iterator_8h__dep__incl.md5 ├── itplus__iterator_8h__dep__incl.png ├── itplus__iterator_8h_source.html ├── itplus__macro__utils_8h.html ├── itplus__macro__utils_8h__dep__incl.map ├── itplus__macro__utils_8h__dep__incl.md5 ├── itplus__macro__utils_8h__dep__incl.png ├── itplus__macro__utils_8h_source.html ├── itplus__map_8h.html ├── itplus__map_8h.js ├── itplus__map_8h__dep__incl.map ├── itplus__map_8h__dep__incl.md5 ├── itplus__map_8h__dep__incl.png ├── itplus__map_8h_source.html ├── itplus__maybe_8h.html ├── itplus__maybe_8h.js ├── itplus__maybe_8h__dep__incl.map ├── itplus__maybe_8h__dep__incl.md5 ├── itplus__maybe_8h__dep__incl.png ├── itplus__maybe_8h_source.html ├── itplus__pair_8h.html ├── itplus__pair_8h.js ├── itplus__pair_8h__dep__incl.map ├── itplus__pair_8h__dep__incl.md5 ├── itplus__pair_8h__dep__incl.png ├── itplus__pair_8h_source.html ├── itplus__reduce_8h.html ├── itplus__reduce_8h.js ├── itplus__reduce_8h__dep__incl.map ├── itplus__reduce_8h__dep__incl.md5 ├── itplus__reduce_8h__dep__incl.png ├── itplus__reduce_8h_source.html ├── itplus__take_8h.html ├── itplus__take_8h.js ├── itplus__take_8h__dep__incl.map ├── itplus__take_8h__dep__incl.md5 ├── itplus__take_8h__dep__incl.png ├── itplus__take_8h_source.html ├── itplus__takewhile_8h.html ├── itplus__takewhile_8h.js ├── itplus__takewhile_8h__dep__incl.map ├── itplus__takewhile_8h__dep__incl.md5 ├── itplus__takewhile_8h__dep__incl.png ├── itplus__takewhile_8h_source.html ├── itplus__typeclass_8h.html ├── itplus__typeclass_8h.js ├── itplus__typeclass_8h__dep__incl.map ├── itplus__typeclass_8h__dep__incl.md5 ├── itplus__typeclass_8h__dep__incl.png ├── itplus__typeclass_8h_source.html ├── itplus__zip_8h.html ├── itplus__zip_8h.js ├── itplus__zip_8h__dep__incl.map ├── itplus__zip_8h__dep__incl.md5 ├── itplus__zip_8h__dep__incl.png ├── itplus__zip_8h_source.html ├── jquery.js ├── menu.js ├── menudata.js ├── nav_f.png ├── nav_g.png ├── nav_h.png ├── navtree.css ├── navtree.js ├── navtreedata.js ├── navtreeindex0.js ├── open.png ├── preproc__map_8h.html ├── preproc__map_8h__dep__incl.map ├── preproc__map_8h__dep__incl.md5 ├── preproc__map_8h__dep__incl.png ├── preproc__map_8h_source.html ├── resize.js ├── search │ ├── all_0.html │ ├── all_0.js │ ├── all_1.html │ ├── all_1.js │ ├── all_2.html │ ├── all_2.js │ ├── all_3.html │ ├── all_3.js │ ├── all_4.html │ ├── all_4.js │ ├── all_5.html │ ├── all_5.js │ ├── all_6.html │ ├── all_6.js │ ├── all_7.html │ ├── all_7.js │ ├── all_8.html │ ├── all_8.js │ ├── all_9.html │ ├── all_9.js │ ├── all_a.html │ ├── all_a.js │ ├── all_b.html │ ├── all_b.js │ ├── all_c.html │ ├── all_c.js │ ├── classes_0.html │ ├── classes_0.js │ ├── classes_1.html │ ├── classes_1.js │ ├── classes_2.html │ ├── classes_2.js │ ├── close.svg │ ├── defines_0.html │ ├── defines_0.js │ ├── defines_1.html │ ├── defines_1.js │ ├── defines_2.html │ ├── defines_2.js │ ├── defines_3.html │ ├── defines_3.js │ ├── defines_4.html │ ├── defines_4.js │ ├── defines_5.html │ ├── defines_5.js │ ├── defines_6.html │ ├── defines_6.js │ ├── defines_7.html │ ├── defines_7.js │ ├── defines_8.html │ ├── defines_8.js │ ├── defines_9.html │ ├── defines_9.js │ ├── defines_a.html │ ├── defines_a.js │ ├── defines_b.html │ ├── defines_b.js │ ├── defines_c.html │ ├── defines_c.js │ ├── enums_0.html │ ├── enums_0.js │ ├── enumvalues_0.html │ ├── enumvalues_0.js │ ├── files_0.html │ ├── files_0.js │ ├── files_1.html │ ├── files_1.js │ ├── files_2.html │ ├── files_2.js │ ├── files_3.html │ ├── files_3.js │ ├── mag_sel.svg │ ├── nomatches.html │ ├── search.css │ ├── search.js │ ├── search_l.png │ ├── search_m.png │ ├── search_r.png │ └── searchdata.js ├── splitbar.png ├── structMaybeTag.html ├── structStrArrIter.html ├── structfibonacci.html ├── sugar_8c.html ├── sugar_8h.html ├── sugar_8h.js ├── sugar_8h__dep__incl.map ├── sugar_8h__dep__incl.md5 ├── sugar_8h__dep__incl.png ├── sugar_8h_source.html ├── sync_off.png ├── sync_on.png ├── tab_a.png ├── tab_b.png ├── tab_h.png ├── tab_s.png └── tabs.css ├── include ├── itplus_chain.h ├── itplus_collect.h ├── itplus_defn.h ├── itplus_drop.h ├── itplus_dropwhile.h ├── itplus_enumerate.h ├── itplus_filter.h ├── itplus_filtermap.h ├── itplus_fold.h ├── itplus_foreach.h ├── itplus_iterator.h ├── itplus_macro_utils.h ├── itplus_map.h ├── itplus_maybe.h ├── itplus_pair.h ├── itplus_reduce.h ├── itplus_take.h ├── itplus_takewhile.h ├── itplus_typeclass.h └── itplus_zip.h ├── itplus.h ├── samples ├── CMakeLists.txt ├── impls.c ├── impls.h ├── main.c ├── sugar.c └── sugar.h └── tests ├── CMakeLists.txt ├── common.h ├── impls.c ├── impls.h ├── main.c ├── preproc_map.h ├── sugar.c └── sugar.h /.clang-format: -------------------------------------------------------------------------------- 1 | BasedOnStyle: LLVM 2 | IndentWidth: 4 3 | UseTab: Never 4 | AllowShortIfStatementsOnASingleLine: false 5 | IndentCaseLabels: true 6 | BreakBeforeBraces: Mozilla 7 | BreakStringLiterals: true 8 | ColumnLimit: 120 9 | AlignAfterOpenBracket: DontAlign 10 | AlignTrailingComments: true 11 | AlignEscapedNewlines: Right 12 | AlignConsecutiveMacros: true 13 | AllowShortBlocksOnASingleLine: Empty 14 | AllowShortCaseLabelsOnASingleLine: true 15 | AllowShortEnumsOnASingleLine: true 16 | IncludeBlocks: Regroup 17 | PointerAlignment: Left 18 | AlignOperands: Align 19 | AlignConsecutiveAssignments: true -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.h linguist-language=C 2 | 3 | docs/* linguist-documentation 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore object and library files 2 | *.o 3 | *.a 4 | *.obj 5 | *.lib 6 | # Ignore build folders 7 | build/ 8 | out/ 9 | 10 | # Ignore User-specific files 11 | *.rsuser 12 | *.suo 13 | *.user 14 | 15 | # Ignore VS cache/options directory 16 | .vs/ 17 | 18 | # Ignore VSCode user settings 19 | .vscode 20 | 21 | # Ignore cmake stuff 22 | CMakeLists.txt.user 23 | CMakeCache.txt 24 | CMakeSettings.json 25 | CMakeFiles 26 | CMakeScripts 27 | Testing 28 | Makefile 29 | cmake_install.cmake 30 | install_manifest.txt 31 | compile_commands.json 32 | CTestTestfile.cmake 33 | _deps 34 | 35 | # Ignore doxygen generated documentation 36 | html/ 37 | xml/ 38 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15 FATAL_ERROR) 2 | 3 | project(c-iterplus LANGUAGES C) 4 | 5 | ################################################## 6 | # Configure some universal settings 7 | 8 | # Disable non standard extensions 9 | set(CMAKE_C_EXTENSIONS OFF) 10 | 11 | # Don't skimp on warnings 12 | if(MSVC) 13 | add_compile_options(/W4 /WX) 14 | else() 15 | add_compile_options(-Wall -Wextra -Werror -pedantic) 16 | endif() 17 | if(WIN32) 18 | # But ignore the Microsoft "Use *_s functions" warning 19 | add_definitions(-D_CRT_SECURE_NO_WARNINGS) 20 | endif() 21 | 22 | ################################################## 23 | # Configure target for building the library 24 | 25 | # Set library name 26 | set(LIBNAME iterplus) 27 | 28 | # Add the interface library target 29 | add_library(${LIBNAME} INTERFACE) 30 | 31 | # Add the headers to the library interface 32 | target_include_directories(${LIBNAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}) 33 | 34 | # Set standard to C99 35 | target_compile_features(${LIBNAME} INTERFACE c_std_99) 36 | 37 | add_subdirectory(tests) 38 | add_subdirectory(samples) 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 TotallyNotChase 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/annotated_dup.js: -------------------------------------------------------------------------------- 1 | var annotated_dup = 2 | [ 3 | [ "fibonacci", "structfibonacci.html", null ], 4 | [ "MaybeTag", "structMaybeTag.html", null ], 5 | [ "StrArrIter", "structStrArrIter.html", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/bc_s.png -------------------------------------------------------------------------------- /docs/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/bdwn.png -------------------------------------------------------------------------------- /docs/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/closed.png -------------------------------------------------------------------------------- /docs/common_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/common_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | ff7b3a239e6e65a775f12101fd46d260 -------------------------------------------------------------------------------- /docs/common_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/common_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/dir_59425e443f801f1f2fd8bbe4959a3ccf.js: -------------------------------------------------------------------------------- 1 | var dir_59425e443f801f1f2fd8bbe4959a3ccf = 2 | [ 3 | [ "common.h", "common_8h.html", null ], 4 | [ "impls.c", "impls_8c.html", null ], 5 | [ "impls.h", "impls_8h.html", "impls_8h" ], 6 | [ "preproc_map.h", "preproc__map_8h.html", null ], 7 | [ "sugar.c", "sugar_8c.html", null ], 8 | [ "sugar.h", "sugar_8h.html", "sugar_8h" ] 9 | ]; -------------------------------------------------------------------------------- /docs/dir_d44c64559bbebec7f509842c48db8b23.js: -------------------------------------------------------------------------------- 1 | var dir_d44c64559bbebec7f509842c48db8b23 = 2 | [ 3 | [ "itplus_chain.h", "itplus__chain_8h.html", "itplus__chain_8h" ], 4 | [ "itplus_collect.h", "itplus__collect_8h.html", "itplus__collect_8h" ], 5 | [ "itplus_defn.h", "itplus__defn_8h.html", "itplus__defn_8h" ], 6 | [ "itplus_drop.h", "itplus__drop_8h.html", "itplus__drop_8h" ], 7 | [ "itplus_dropwhile.h", "itplus__dropwhile_8h.html", "itplus__dropwhile_8h" ], 8 | [ "itplus_enumerate.h", "itplus__enumerate_8h.html", "itplus__enumerate_8h" ], 9 | [ "itplus_filter.h", "itplus__filter_8h.html", "itplus__filter_8h" ], 10 | [ "itplus_filtermap.h", "itplus__filtermap_8h.html", "itplus__filtermap_8h" ], 11 | [ "itplus_fold.h", "itplus__fold_8h.html", "itplus__fold_8h" ], 12 | [ "itplus_foreach.h", "itplus__foreach_8h.html", "itplus__foreach_8h" ], 13 | [ "itplus_iterator.h", "itplus__iterator_8h.html", "itplus__iterator_8h" ], 14 | [ "itplus_macro_utils.h", "itplus__macro__utils_8h.html", null ], 15 | [ "itplus_map.h", "itplus__map_8h.html", "itplus__map_8h" ], 16 | [ "itplus_maybe.h", "itplus__maybe_8h.html", "itplus__maybe_8h" ], 17 | [ "itplus_pair.h", "itplus__pair_8h.html", "itplus__pair_8h" ], 18 | [ "itplus_reduce.h", "itplus__reduce_8h.html", "itplus__reduce_8h" ], 19 | [ "itplus_take.h", "itplus__take_8h.html", "itplus__take_8h" ], 20 | [ "itplus_takewhile.h", "itplus__takewhile_8h.html", "itplus__takewhile_8h" ], 21 | [ "itplus_typeclass.h", "itplus__typeclass_8h.html", "itplus__typeclass_8h" ], 22 | [ "itplus_zip.h", "itplus__zip_8h.html", "itplus__zip_8h" ] 23 | ]; -------------------------------------------------------------------------------- /docs/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/doc.png -------------------------------------------------------------------------------- /docs/files_dup.js: -------------------------------------------------------------------------------- 1 | var files_dup = 2 | [ 3 | [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ], 4 | [ "tests", "dir_59425e443f801f1f2fd8bbe4959a3ccf.html", "dir_59425e443f801f1f2fd8bbe4959a3ccf" ] 5 | ]; -------------------------------------------------------------------------------- /docs/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/folderclosed.png -------------------------------------------------------------------------------- /docs/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/folderopen.png -------------------------------------------------------------------------------- /docs/globals_enum.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | c-iterplus: Globals 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 | 36 | 37 |
38 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 |
44 |
c-iterplus 45 |  1.0.0 46 |
47 |
Type safe, Generic, Lazy abstractions for working with c-iterator
48 |
55 |
56 | 57 | 58 | 59 | 64 | 65 | 66 | 73 | 74 |
75 |
76 | 81 |
83 |
84 |
85 | 90 |
91 | 92 |
96 |
97 | 98 | 99 |
100 | 103 |
104 | 105 |
106 |   111 |
112 |
113 | 114 | 115 | 121 | 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /docs/graph_legend.md5: -------------------------------------------------------------------------------- 1 | f51bf6e9a10430aafef59831b08dcbfe -------------------------------------------------------------------------------- /docs/graph_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/graph_legend.png -------------------------------------------------------------------------------- /docs/impls_8h.js: -------------------------------------------------------------------------------- 1 | var impls_8h = 2 | [ 3 | [ "fibonacci", "structfibonacci.html", null ], 4 | [ "StrArrIter", "structStrArrIter.html", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/impls_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/impls_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | c32749108b4ebbb15b2a26fa7ee91537 -------------------------------------------------------------------------------- /docs/impls_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/impls_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | c-iterplus: Main Page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 | 36 | 37 |
38 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 |
44 |
c-iterplus 45 |  1.0.0 46 |
47 |
Type safe, Generic, Lazy abstractions for working with c-iterator
48 |
55 |
56 | 57 | 58 | 59 | 64 | 65 | 66 | 73 | 74 |
75 |
76 | 81 |
83 |
84 |
85 | 90 |
91 | 92 |
96 |
97 | 98 | 99 |
100 | 103 |
104 | 105 |
106 |
107 |
c-iterplus Documentation
108 |
109 |
110 |
111 |
112 | 113 | 114 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /docs/itplus__chain_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__chain_8h = 2 | [ 3 | [ "define_iterchain_func", "itplus__chain_8h.html#a2997b1c1acb16a74ad058b5dd4efb13c", null ], 4 | [ "DefineIterChain", "itplus__chain_8h.html#a1382e263ec1cd56a19bf91d8292a2824", null ], 5 | [ "IterChain", "itplus__chain_8h.html#a57f7569f7996a4aa3ae1aa3d0327ec75", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__chain_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__chain_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | c0ff164834dc80504ecabd3da3bfe9fd -------------------------------------------------------------------------------- /docs/itplus__chain_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__chain_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__collect_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__collect_8h = 2 | [ 3 | [ "define_itercollect_func", "itplus__collect_8h.html#a85f93dbce7d63cb1c11818e4bf867a22", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/itplus__collect_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__collect_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 6686fb59760ace32ba67e96b279c138e -------------------------------------------------------------------------------- /docs/itplus__collect_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__collect_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__defn_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__defn_8h = 2 | [ 3 | [ "DeclIterplus", "itplus__defn_8h.html#a2d42bf07174d44f9e400ce68d5d7b9f6", null ], 4 | [ "DefnIterplus", "itplus__defn_8h.html#ae7ec30413b0bc92c99b5c095578e368d", null ], 5 | [ "Iterplus", "itplus__defn_8h.html#a5c50e13ec0251aa058caede675387b12", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__defn_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/itplus__defn_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | e5079a8a09edf0c072776b242c730630 -------------------------------------------------------------------------------- /docs/itplus__defn_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__defn_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__drop_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__drop_8h = 2 | [ 3 | [ "define_iterdrop_func", "itplus__drop_8h.html#a82e8516570a9996f2d26ab4b959687ad", null ], 4 | [ "DefineIterDrop", "itplus__drop_8h.html#a71664a9dd47e10449841bfc1d6248503", null ], 5 | [ "IterDrop", "itplus__drop_8h.html#a6e55b9588c1634ec791b400eb4a9011e", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__drop_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__drop_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 337634ade34ced96b016235eb270b435 -------------------------------------------------------------------------------- /docs/itplus__drop_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__drop_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__dropwhile_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__dropwhile_8h = 2 | [ 3 | [ "define_iterdropwhile_func", "itplus__dropwhile_8h.html#a8ee7dc73bbaa1d2abde64dab352a6c24", null ], 4 | [ "DefineIterDropWhile", "itplus__dropwhile_8h.html#ad6129389904af6d8e22a76da42bd5961", null ], 5 | [ "IterDropWhile", "itplus__dropwhile_8h.html#a883f6455eceac6d293e6e54414c3356e", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__dropwhile_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__dropwhile_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | eb8b227201a658510f046bf5ca71ff51 -------------------------------------------------------------------------------- /docs/itplus__dropwhile_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__dropwhile_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__enumerate_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__enumerate_8h = 2 | [ 3 | [ "define_iterenumr_func", "itplus__enumerate_8h.html#a4c033b2db8a15dda35aebfb417950443", null ], 4 | [ "DefineIterEnumr", "itplus__enumerate_8h.html#a01a1c0c9b689bff859e100034f192fc1", null ], 5 | [ "IterEnumr", "itplus__enumerate_8h.html#ae3969ffb53f197e7b65f90dce652cb5b", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__enumerate_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__enumerate_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | dcb920f243f2e5f08f492e6a8f9d005e -------------------------------------------------------------------------------- /docs/itplus__enumerate_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__enumerate_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__filter_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__filter_8h = 2 | [ 3 | [ "define_iterfilt_func", "itplus__filter_8h.html#aaac99e224f5b437d2d8cff83053cec2c", null ], 4 | [ "DefineIterFilt", "itplus__filter_8h.html#a044891877ea79ca3eb40ca33b511daaf", null ], 5 | [ "IterFilt", "itplus__filter_8h.html#a6a69fe586c6d8864d840c0658db0d363", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__filter_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__filter_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 7a305cb2f79885789d2f1a2500a2bbdb -------------------------------------------------------------------------------- /docs/itplus__filter_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__filter_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__filtermap_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__filtermap_8h = 2 | [ 3 | [ "define_iterfiltmap_func", "itplus__filtermap_8h.html#a1c7f3e9d5e37fe8fcf894f1795ebd1fe", null ], 4 | [ "DefineIterFiltMap", "itplus__filtermap_8h.html#aa00013069bf4e36640355ded3b293d72", null ], 5 | [ "IterFiltMap", "itplus__filtermap_8h.html#a341ce8c4f7f92df65e6fdfde9e1ac575", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__filtermap_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__filtermap_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | f876b8e856ee47f600dea82cf5dbc3fc -------------------------------------------------------------------------------- /docs/itplus__filtermap_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__filtermap_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__fold_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__fold_8h = 2 | [ 3 | [ "define_iterfold_func", "itplus__fold_8h.html#af8803f1b77884ca096246f7d95392e37", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/itplus__fold_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__fold_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 594f222c38ffe2ac5d448146760ba5d5 -------------------------------------------------------------------------------- /docs/itplus__fold_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__fold_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__foreach_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__foreach_8h = 2 | [ 3 | [ "foreach", "itplus__foreach_8h.html#a80a0308d3d97154ab14aa4025fcbacd0", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/itplus__foreach_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/itplus__foreach_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | d3d75e097a28e325f0d45d7b6a1d037d -------------------------------------------------------------------------------- /docs/itplus__foreach_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__foreach_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__iterator_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__iterator_8h = 2 | [ 3 | [ "DefineIteratorOf", "itplus__iterator_8h.html#a938f3e7187cb386e2bf4049753e2ff84", null ], 4 | [ "impl_iterator", "itplus__iterator_8h.html#a01e620430099d2eb6192db193e88cff0", null ], 5 | [ "Iterable", "itplus__iterator_8h.html#a78f1cf949c0e970b2105124f691f5c2a", null ], 6 | [ "Iterator", "itplus__iterator_8h.html#a6c3a22862dc6db425dd4389987c0dbaf", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/itplus__iterator_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /docs/itplus__iterator_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 346a101378b95200aae985a227bfca92 -------------------------------------------------------------------------------- /docs/itplus__iterator_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__iterator_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__macro__utils_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/itplus__macro__utils_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 45c4678c78bd0aa554619db881f9ce9c -------------------------------------------------------------------------------- /docs/itplus__macro__utils_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__macro__utils_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__map_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__map_8h = 2 | [ 3 | [ "define_itermap_func", "itplus__map_8h.html#a4dc643234203e036aa3e0dede29beb73", null ], 4 | [ "DefineIterMap", "itplus__map_8h.html#af8959a5cb249799f82f0c769fd43586e", null ], 5 | [ "IterMap", "itplus__map_8h.html#a2ed8fd79978d16823dc7cd3ef43fce28", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__map_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__map_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 76a74d5436fc7b155ab57fc8fbdf5acc -------------------------------------------------------------------------------- /docs/itplus__map_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__map_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__maybe_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__maybe_8h = 2 | [ 3 | [ "DefineMaybe", "itplus__maybe_8h.html#a0daf26d181160b7fb96d640ed20bb466", null ], 4 | [ "fmap_maybe", "itplus__maybe_8h.html#a78cf196d6558cc31ef4f88e5cf47bdf9", null ], 5 | [ "from_just", "itplus__maybe_8h.html#a26feaafcb3e37674333f6673ec2bdb7d", null ], 6 | [ "from_just_", "itplus__maybe_8h.html#a16682b211c71e2ad917edc9bdd298154", null ], 7 | [ "is_just", "itplus__maybe_8h.html#a8ae2e9c065fbca1cd3a603ad0a71d8f2", null ], 8 | [ "is_nothing", "itplus__maybe_8h.html#a1b03ece9f7b00fcbbe8e0dde45277c47", null ], 9 | [ "Just", "itplus__maybe_8h.html#ae0832f95d5a7ff6845381aa8795fd2a3", null ], 10 | [ "Maybe", "itplus__maybe_8h.html#af47a0e4269e370939835ecc0cf6c7875", null ], 11 | [ "Nothing", "itplus__maybe_8h.html#a65cd69857cc806545d68c79464270a97", null ], 12 | [ "MaybeTag", "itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230", [ 13 | [ "MaybeTag_Nothing", "itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230aae774bc4d692f226f6a9d88b7e1ce26f", null ], 14 | [ "MaybeTag_Just", "itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230a1e57a50afd710304d82f6269f40e18c2", null ] 15 | ] ] 16 | ]; -------------------------------------------------------------------------------- /docs/itplus__maybe_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/itplus__maybe_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 5bd2c8cf6ba8187498661c9e9d2541ab -------------------------------------------------------------------------------- /docs/itplus__maybe_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__maybe_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__pair_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__pair_8h = 2 | [ 3 | [ "DefinePair", "itplus__pair_8h.html#af47436e1eab38cb119ab53fce7ab67e0", null ], 4 | [ "fst", "itplus__pair_8h.html#ae728ef7d0189fc6bf3879edb5fd0c136", null ], 5 | [ "Pair", "itplus__pair_8h.html#a4760cf36bdc0a23827c20b1963186503", null ], 6 | [ "PairOf", "itplus__pair_8h.html#ac6399a724fdf5a1af19dea3e3c25ec21", null ], 7 | [ "snd", "itplus__pair_8h.html#a8828c0ffd47ae7513e1674db7ab294fc", null ] 8 | ]; -------------------------------------------------------------------------------- /docs/itplus__pair_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/itplus__pair_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 91e715c425c4a4a6e89584bc1ab83655 -------------------------------------------------------------------------------- /docs/itplus__pair_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__pair_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__reduce_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__reduce_8h = 2 | [ 3 | [ "define_iterreduce_func", "itplus__reduce_8h.html#a00b36795100b8dd110f7f29c0c67e4b3", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/itplus__reduce_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__reduce_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | f6c5afc01420960c217384f9110b9bcd -------------------------------------------------------------------------------- /docs/itplus__reduce_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__reduce_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__take_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__take_8h = 2 | [ 3 | [ "define_itertake_func", "itplus__take_8h.html#a287ad5fb9bef31ac9370b3a231a82603", null ], 4 | [ "DefineIterTake", "itplus__take_8h.html#a38a907117c644761f094973916334a18", null ], 5 | [ "IterTake", "itplus__take_8h.html#ad62bc1c52430417ab0ce36039c0c57a6", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__take_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__take_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | ea02af2ca55691447e4aa37b11f8bbdb -------------------------------------------------------------------------------- /docs/itplus__take_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__take_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__takewhile_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__takewhile_8h = 2 | [ 3 | [ "define_itertakewhile_func", "itplus__takewhile_8h.html#ab452ed305d5190978aa0d4327e33c408", null ], 4 | [ "DefineIterTakeWhile", "itplus__takewhile_8h.html#a789b4cc6f8b2fc52ed79788fbf45d4e6", null ], 5 | [ "IterTakeWhile", "itplus__takewhile_8h.html#a0603baeec63df613f04d5f13f7975260", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__takewhile_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__takewhile_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | f164098dbf9a92ea35c116af68e3d17f -------------------------------------------------------------------------------- /docs/itplus__takewhile_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__takewhile_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__typeclass_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__typeclass_8h = 2 | [ 3 | [ "typeclass", "itplus__typeclass_8h.html#ab36f9f0d3603452a867a683078618034", null ], 4 | [ "typeclass_instance", "itplus__typeclass_8h.html#af018200b2431a3ab6c296cc8940ecbe3", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/itplus__typeclass_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/itplus__typeclass_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 185641a6bd6f77126c8371cfda0c5d46 -------------------------------------------------------------------------------- /docs/itplus__typeclass_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__typeclass_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/itplus__zip_8h.js: -------------------------------------------------------------------------------- 1 | var itplus__zip_8h = 2 | [ 3 | [ "define_iterzip_func", "itplus__zip_8h.html#a39546aa28cec10faef57954e59bd0950", null ], 4 | [ "DefineIterZip", "itplus__zip_8h.html#ab9ecdbe44b62bf0fee28e221e58a97f8", null ], 5 | [ "IterZip", "itplus__zip_8h.html#aed4cf3e9b41350a8dbe6cb5a24d4d0d2", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/itplus__zip_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/itplus__zip_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 1a99bbe666932a0f34804e1d223470bb -------------------------------------------------------------------------------- /docs/itplus__zip_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/itplus__zip_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/menu.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 26 | function makeTree(data,relPath) { 27 | var result=''; 28 | if ('children' in data) { 29 | result+=''; 36 | } 37 | return result; 38 | } 39 | 40 | $('#main-nav').append(makeTree(menudata,relPath)); 41 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 42 | if (searchEnabled) { 43 | if (serverSide) { 44 | $('#main-menu').append('
  • '); 45 | } else { 46 | $('#main-menu').append('
  • '); 47 | } 48 | } 49 | $('#main-menu').smartmenus(); 50 | } 51 | /* @license-end */ 52 | -------------------------------------------------------------------------------- /docs/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var menudata={children:[ 26 | {text:"Main Page",url:"index.html"}, 27 | {text:"Data Structures",url:"annotated.html",children:[ 28 | {text:"Data Structures",url:"annotated.html"}, 29 | {text:"Data Structure Index",url:"classes.html"}]}, 30 | {text:"Files",url:"files.html",children:[ 31 | {text:"File List",url:"files.html"}, 32 | {text:"Globals",url:"globals.html",children:[ 33 | {text:"All",url:"globals.html",children:[ 34 | {text:"c",url:"globals.html#index_c"}, 35 | {text:"d",url:"globals.html#index_d"}, 36 | {text:"e",url:"globals.html#index_e"}, 37 | {text:"f",url:"globals.html#index_f"}, 38 | {text:"i",url:"globals.html#index_i"}, 39 | {text:"j",url:"globals.html#index_j"}, 40 | {text:"m",url:"globals.html#index_m"}, 41 | {text:"n",url:"globals.html#index_n"}, 42 | {text:"p",url:"globals.html#index_p"}, 43 | {text:"r",url:"globals.html#index_r"}, 44 | {text:"s",url:"globals.html#index_s"}, 45 | {text:"t",url:"globals.html#index_t"}, 46 | {text:"z",url:"globals.html#index_z"}]}, 47 | {text:"Enumerations",url:"globals_enum.html"}, 48 | {text:"Enumerator",url:"globals_eval.html"}, 49 | {text:"Macros",url:"globals_defs.html",children:[ 50 | {text:"c",url:"globals_defs.html#index_c"}, 51 | {text:"d",url:"globals_defs.html#index_d"}, 52 | {text:"e",url:"globals_defs.html#index_e"}, 53 | {text:"f",url:"globals_defs.html#index_f"}, 54 | {text:"i",url:"globals_defs.html#index_i"}, 55 | {text:"j",url:"globals_defs.html#index_j"}, 56 | {text:"m",url:"globals_defs.html#index_m"}, 57 | {text:"n",url:"globals_defs.html#index_n"}, 58 | {text:"p",url:"globals_defs.html#index_p"}, 59 | {text:"r",url:"globals_defs.html#index_r"}, 60 | {text:"s",url:"globals_defs.html#index_s"}, 61 | {text:"t",url:"globals_defs.html#index_t"}, 62 | {text:"z",url:"globals_defs.html#index_z"}]}]}]}]} 63 | -------------------------------------------------------------------------------- /docs/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/nav_f.png -------------------------------------------------------------------------------- /docs/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/nav_g.png -------------------------------------------------------------------------------- /docs/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/nav_h.png -------------------------------------------------------------------------------- /docs/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0px; 15 | padding:0px; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | background-image: url('tab_a.png'); 24 | background-repeat:repeat-x; 25 | color: #fff; 26 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 27 | } 28 | 29 | #nav-tree img { 30 | margin:0px; 31 | padding:0px; 32 | border:0px; 33 | vertical-align: middle; 34 | } 35 | 36 | #nav-tree a { 37 | text-decoration:none; 38 | padding:0px; 39 | margin:0px; 40 | outline:none; 41 | } 42 | 43 | #nav-tree .label { 44 | margin:0px; 45 | padding:0px; 46 | font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; 47 | } 48 | 49 | #nav-tree .label a { 50 | padding:2px; 51 | } 52 | 53 | #nav-tree .selected a { 54 | text-decoration:none; 55 | color:#fff; 56 | } 57 | 58 | #nav-tree .children_ul { 59 | margin:0px; 60 | padding:0px; 61 | } 62 | 63 | #nav-tree .item { 64 | margin:0px; 65 | padding:0px; 66 | } 67 | 68 | #nav-tree { 69 | padding: 0px 0px; 70 | background-color: #FAFAFF; 71 | font-size:14px; 72 | overflow:auto; 73 | } 74 | 75 | #doc-content { 76 | overflow:auto; 77 | display:block; 78 | padding:0px; 79 | margin:0px; 80 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 81 | } 82 | 83 | #side-nav { 84 | padding:0 6px 0 0; 85 | margin: 0px; 86 | display:block; 87 | position: absolute; 88 | left: 0px; 89 | width: 250px; 90 | } 91 | 92 | .ui-resizable .ui-resizable-handle { 93 | display:block; 94 | } 95 | 96 | .ui-resizable-e { 97 | background-image:url("splitbar.png"); 98 | background-size:100%; 99 | background-repeat:repeat-y; 100 | background-attachment: scroll; 101 | cursor:ew-resize; 102 | height:100%; 103 | right:0; 104 | top:0; 105 | width:6px; 106 | } 107 | 108 | .ui-resizable-handle { 109 | display:none; 110 | font-size:0.1px; 111 | position:absolute; 112 | z-index:1; 113 | } 114 | 115 | #nav-tree-contents { 116 | margin: 6px 0px 0px 0px; 117 | } 118 | 119 | #nav-tree { 120 | background-image:url('nav_h.png'); 121 | background-repeat:repeat-x; 122 | background-color: #F9FAFC; 123 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 124 | } 125 | 126 | #nav-sync { 127 | position:absolute; 128 | top:5px; 129 | right:24px; 130 | z-index:0; 131 | } 132 | 133 | #nav-sync img { 134 | opacity:0.3; 135 | } 136 | 137 | #nav-sync img:hover { 138 | opacity:0.9; 139 | } 140 | 141 | @media print 142 | { 143 | #nav-tree { display: none; } 144 | div.ui-resizable-handle { display: none; position: relative; } 145 | } 146 | 147 | -------------------------------------------------------------------------------- /docs/navtreedata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var NAVTREE = 26 | [ 27 | [ "c-iterplus", "index.html", [ 28 | [ "Data Structures", "annotated.html", [ 29 | [ "Data Structures", "annotated.html", "annotated_dup" ], 30 | [ "Data Structure Index", "classes.html", null ] 31 | ] ], 32 | [ "Files", "files.html", [ 33 | [ "File List", "files.html", "files_dup" ], 34 | [ "Globals", "globals.html", [ 35 | [ "All", "globals.html", null ], 36 | [ "Enumerations", "globals_enum.html", null ], 37 | [ "Enumerator", "globals_eval.html", null ], 38 | [ "Macros", "globals_defs.html", null ] 39 | ] ] 40 | ] ] 41 | ] ] 42 | ]; 43 | 44 | var NAVTREEINDEX = 45 | [ 46 | "annotated.html" 47 | ]; 48 | 49 | var SYNCONMSG = 'click to disable panel synchronisation'; 50 | var SYNCOFFMSG = 'click to enable panel synchronisation'; -------------------------------------------------------------------------------- /docs/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/open.png -------------------------------------------------------------------------------- /docs/preproc__map_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/preproc__map_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | f28baa665a5946387302fb32570e0f75 -------------------------------------------------------------------------------- /docs/preproc__map_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/preproc__map_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['chain_0',['chain',['../sugar_8h.html#a43b8c49981738d2955157a73091287ae',1,'sugar.h']]], 4 | ['collect_1',['collect',['../sugar_8h.html#a9895ddb7b50d48ff8f4354ae26aae586',1,'sugar.h']]], 5 | ['common_2eh_2',['common.h',['../common_8h.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['decliterplus_3',['DeclIterplus',['../itplus__defn_8h.html#a2d42bf07174d44f9e400ce68d5d7b9f6',1,'itplus_defn.h']]], 4 | ['define_5fiterchain_5ffunc_4',['define_iterchain_func',['../itplus__chain_8h.html#a2997b1c1acb16a74ad058b5dd4efb13c',1,'itplus_chain.h']]], 5 | ['define_5fitercollect_5ffunc_5',['define_itercollect_func',['../itplus__collect_8h.html#a85f93dbce7d63cb1c11818e4bf867a22',1,'itplus_collect.h']]], 6 | ['define_5fiterdrop_5ffunc_6',['define_iterdrop_func',['../itplus__drop_8h.html#a82e8516570a9996f2d26ab4b959687ad',1,'itplus_drop.h']]], 7 | ['define_5fiterdropwhile_5ffunc_7',['define_iterdropwhile_func',['../itplus__dropwhile_8h.html#a8ee7dc73bbaa1d2abde64dab352a6c24',1,'itplus_dropwhile.h']]], 8 | ['define_5fiterenumr_5ffunc_8',['define_iterenumr_func',['../itplus__enumerate_8h.html#a4c033b2db8a15dda35aebfb417950443',1,'itplus_enumerate.h']]], 9 | ['define_5fiterfilt_5ffunc_9',['define_iterfilt_func',['../itplus__filter_8h.html#aaac99e224f5b437d2d8cff83053cec2c',1,'itplus_filter.h']]], 10 | ['define_5fiterfiltmap_5ffunc_10',['define_iterfiltmap_func',['../itplus__filtermap_8h.html#a1c7f3e9d5e37fe8fcf894f1795ebd1fe',1,'itplus_filtermap.h']]], 11 | ['define_5fiterfold_5ffunc_11',['define_iterfold_func',['../itplus__fold_8h.html#af8803f1b77884ca096246f7d95392e37',1,'itplus_fold.h']]], 12 | ['define_5fitermap_5ffunc_12',['define_itermap_func',['../itplus__map_8h.html#a4dc643234203e036aa3e0dede29beb73',1,'itplus_map.h']]], 13 | ['define_5fiterreduce_5ffunc_13',['define_iterreduce_func',['../itplus__reduce_8h.html#a00b36795100b8dd110f7f29c0c67e4b3',1,'itplus_reduce.h']]], 14 | ['define_5fitertake_5ffunc_14',['define_itertake_func',['../itplus__take_8h.html#a287ad5fb9bef31ac9370b3a231a82603',1,'itplus_take.h']]], 15 | ['define_5fitertakewhile_5ffunc_15',['define_itertakewhile_func',['../itplus__takewhile_8h.html#ab452ed305d5190978aa0d4327e33c408',1,'itplus_takewhile.h']]], 16 | ['define_5fiterzip_5ffunc_16',['define_iterzip_func',['../itplus__zip_8h.html#a39546aa28cec10faef57954e59bd0950',1,'itplus_zip.h']]], 17 | ['defineiteratorof_17',['DefineIteratorOf',['../itplus__iterator_8h.html#a938f3e7187cb386e2bf4049753e2ff84',1,'itplus_iterator.h']]], 18 | ['defineiterchain_18',['DefineIterChain',['../itplus__chain_8h.html#a1382e263ec1cd56a19bf91d8292a2824',1,'itplus_chain.h']]], 19 | ['defineiterdrop_19',['DefineIterDrop',['../itplus__drop_8h.html#a71664a9dd47e10449841bfc1d6248503',1,'itplus_drop.h']]], 20 | ['defineiterdropwhile_20',['DefineIterDropWhile',['../itplus__dropwhile_8h.html#ad6129389904af6d8e22a76da42bd5961',1,'itplus_dropwhile.h']]], 21 | ['defineiterenumr_21',['DefineIterEnumr',['../itplus__enumerate_8h.html#a01a1c0c9b689bff859e100034f192fc1',1,'itplus_enumerate.h']]], 22 | ['defineiterfilt_22',['DefineIterFilt',['../itplus__filter_8h.html#a044891877ea79ca3eb40ca33b511daaf',1,'itplus_filter.h']]], 23 | ['defineiterfiltmap_23',['DefineIterFiltMap',['../itplus__filtermap_8h.html#aa00013069bf4e36640355ded3b293d72',1,'itplus_filtermap.h']]], 24 | ['defineitermap_24',['DefineIterMap',['../itplus__map_8h.html#af8959a5cb249799f82f0c769fd43586e',1,'itplus_map.h']]], 25 | ['defineitertake_25',['DefineIterTake',['../itplus__take_8h.html#a38a907117c644761f094973916334a18',1,'itplus_take.h']]], 26 | ['defineitertakewhile_26',['DefineIterTakeWhile',['../itplus__takewhile_8h.html#a789b4cc6f8b2fc52ed79788fbf45d4e6',1,'itplus_takewhile.h']]], 27 | ['defineiterzip_27',['DefineIterZip',['../itplus__zip_8h.html#ab9ecdbe44b62bf0fee28e221e58a97f8',1,'itplus_zip.h']]], 28 | ['definemaybe_28',['DefineMaybe',['../itplus__maybe_8h.html#a0daf26d181160b7fb96d640ed20bb466',1,'itplus_maybe.h']]], 29 | ['definepair_29',['DefinePair',['../itplus__pair_8h.html#af47436e1eab38cb119ab53fce7ab67e0',1,'itplus_pair.h']]], 30 | ['defniterplus_30',['DefnIterplus',['../itplus__defn_8h.html#ae7ec30413b0bc92c99b5c095578e368d',1,'itplus_defn.h']]], 31 | ['drop_31',['drop',['../sugar_8h.html#a8f13b72985433da15db0de35589883a1',1,'sugar.h']]], 32 | ['dropwhile_32',['dropwhile',['../sugar_8h.html#aac653dec449182ff96574091ea124c64',1,'sugar.h']]] 33 | ]; 34 | -------------------------------------------------------------------------------- /docs/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['enumerate_33',['enumerate',['../sugar_8h.html#a0d9fab4407298bf04b996542e873606a',1,'sugar.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fibonacci_34',['fibonacci',['../structfibonacci.html',1,'']]], 4 | ['filter_35',['filter',['../sugar_8h.html#a84babbbc966e67e4cf6eb8d370e16350',1,'sugar.h']]], 5 | ['filter_5fmap_36',['filter_map',['../sugar_8h.html#a04cf28e85424dbcfb68ee9d49383ac0c',1,'sugar.h']]], 6 | ['fmap_5fmaybe_37',['fmap_maybe',['../itplus__maybe_8h.html#a78cf196d6558cc31ef4f88e5cf47bdf9',1,'itplus_maybe.h']]], 7 | ['fold_38',['fold',['../sugar_8h.html#a03acc6bef492690c52f63bd5faceedbf',1,'sugar.h']]], 8 | ['foreach_39',['foreach',['../itplus__foreach_8h.html#a80a0308d3d97154ab14aa4025fcbacd0',1,'itplus_foreach.h']]], 9 | ['from_5fjust_40',['from_just',['../itplus__maybe_8h.html#a26feaafcb3e37674333f6673ec2bdb7d',1,'itplus_maybe.h']]], 10 | ['from_5fjust_5f_41',['from_just_',['../itplus__maybe_8h.html#a16682b211c71e2ad917edc9bdd298154',1,'itplus_maybe.h']]], 11 | ['fst_42',['fst',['../itplus__pair_8h.html#ae728ef7d0189fc6bf3879edb5fd0c136',1,'itplus_pair.h']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /docs/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['impl_5fiterator_43',['impl_iterator',['../itplus__iterator_8h.html#a01e620430099d2eb6192db193e88cff0',1,'itplus_iterator.h']]], 4 | ['impls_2ec_44',['impls.c',['../impls_8c.html',1,'']]], 5 | ['impls_2eh_45',['impls.h',['../impls_8h.html',1,'']]], 6 | ['is_5fjust_46',['is_just',['../itplus__maybe_8h.html#a8ae2e9c065fbca1cd3a603ad0a71d8f2',1,'itplus_maybe.h']]], 7 | ['is_5fnothing_47',['is_nothing',['../itplus__maybe_8h.html#a1b03ece9f7b00fcbbe8e0dde45277c47',1,'itplus_maybe.h']]], 8 | ['iterable_48',['Iterable',['../itplus__iterator_8h.html#a78f1cf949c0e970b2105124f691f5c2a',1,'itplus_iterator.h']]], 9 | ['iterator_49',['Iterator',['../itplus__iterator_8h.html#a6c3a22862dc6db425dd4389987c0dbaf',1,'itplus_iterator.h']]], 10 | ['iterchain_50',['IterChain',['../itplus__chain_8h.html#a57f7569f7996a4aa3ae1aa3d0327ec75',1,'itplus_chain.h']]], 11 | ['iterdrop_51',['IterDrop',['../itplus__drop_8h.html#a6e55b9588c1634ec791b400eb4a9011e',1,'itplus_drop.h']]], 12 | ['iterdropwhile_52',['IterDropWhile',['../itplus__dropwhile_8h.html#a883f6455eceac6d293e6e54414c3356e',1,'itplus_dropwhile.h']]], 13 | ['iterenumr_53',['IterEnumr',['../itplus__enumerate_8h.html#ae3969ffb53f197e7b65f90dce652cb5b',1,'itplus_enumerate.h']]], 14 | ['iterfilt_54',['IterFilt',['../itplus__filter_8h.html#a6a69fe586c6d8864d840c0658db0d363',1,'itplus_filter.h']]], 15 | ['iterfiltmap_55',['IterFiltMap',['../itplus__filtermap_8h.html#a341ce8c4f7f92df65e6fdfde9e1ac575',1,'itplus_filtermap.h']]], 16 | ['itermap_56',['IterMap',['../itplus__map_8h.html#a2ed8fd79978d16823dc7cd3ef43fce28',1,'itplus_map.h']]], 17 | ['iterplus_57',['Iterplus',['../itplus__defn_8h.html#a5c50e13ec0251aa058caede675387b12',1,'itplus_defn.h']]], 18 | ['itertake_58',['IterTake',['../itplus__take_8h.html#ad62bc1c52430417ab0ce36039c0c57a6',1,'itplus_take.h']]], 19 | ['itertakewhile_59',['IterTakeWhile',['../itplus__takewhile_8h.html#a0603baeec63df613f04d5f13f7975260',1,'itplus_takewhile.h']]], 20 | ['iterzip_60',['IterZip',['../itplus__zip_8h.html#aed4cf3e9b41350a8dbe6cb5a24d4d0d2',1,'itplus_zip.h']]], 21 | ['itplus_5fchain_2eh_61',['itplus_chain.h',['../itplus__chain_8h.html',1,'']]], 22 | ['itplus_5fcollect_2eh_62',['itplus_collect.h',['../itplus__collect_8h.html',1,'']]], 23 | ['itplus_5fdefn_2eh_63',['itplus_defn.h',['../itplus__defn_8h.html',1,'']]], 24 | ['itplus_5fdrop_2eh_64',['itplus_drop.h',['../itplus__drop_8h.html',1,'']]], 25 | ['itplus_5fdropwhile_2eh_65',['itplus_dropwhile.h',['../itplus__dropwhile_8h.html',1,'']]], 26 | ['itplus_5fenumerate_2eh_66',['itplus_enumerate.h',['../itplus__enumerate_8h.html',1,'']]], 27 | ['itplus_5ffilter_2eh_67',['itplus_filter.h',['../itplus__filter_8h.html',1,'']]], 28 | ['itplus_5ffiltermap_2eh_68',['itplus_filtermap.h',['../itplus__filtermap_8h.html',1,'']]], 29 | ['itplus_5ffold_2eh_69',['itplus_fold.h',['../itplus__fold_8h.html',1,'']]], 30 | ['itplus_5fforeach_2eh_70',['itplus_foreach.h',['../itplus__foreach_8h.html',1,'']]], 31 | ['itplus_5fiterator_2eh_71',['itplus_iterator.h',['../itplus__iterator_8h.html',1,'']]], 32 | ['itplus_5fmacro_5futils_2eh_72',['itplus_macro_utils.h',['../itplus__macro__utils_8h.html',1,'']]], 33 | ['itplus_5fmap_2eh_73',['itplus_map.h',['../itplus__map_8h.html',1,'']]], 34 | ['itplus_5fmaybe_2eh_74',['itplus_maybe.h',['../itplus__maybe_8h.html',1,'']]], 35 | ['itplus_5fpair_2eh_75',['itplus_pair.h',['../itplus__pair_8h.html',1,'']]], 36 | ['itplus_5freduce_2eh_76',['itplus_reduce.h',['../itplus__reduce_8h.html',1,'']]], 37 | ['itplus_5ftake_2eh_77',['itplus_take.h',['../itplus__take_8h.html',1,'']]], 38 | ['itplus_5ftakewhile_2eh_78',['itplus_takewhile.h',['../itplus__takewhile_8h.html',1,'']]], 39 | ['itplus_5ftypeclass_2eh_79',['itplus_typeclass.h',['../itplus__typeclass_8h.html',1,'']]], 40 | ['itplus_5fzip_2eh_80',['itplus_zip.h',['../itplus__zip_8h.html',1,'']]] 41 | ]; 42 | -------------------------------------------------------------------------------- /docs/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['just_81',['Just',['../itplus__maybe_8h.html#ae0832f95d5a7ff6845381aa8795fd2a3',1,'itplus_maybe.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['map_82',['map',['../sugar_8h.html#a31d4b0bc2349838d3ac0d3e794ef4605',1,'sugar.h']]], 4 | ['maybe_83',['Maybe',['../itplus__maybe_8h.html#af47a0e4269e370939835ecc0cf6c7875',1,'itplus_maybe.h']]], 5 | ['maybetag_84',['MaybeTag',['../structMaybeTag.html',1,'MaybeTag'],['../itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230',1,'MaybeTag(): itplus_maybe.h']]], 6 | ['maybetag_5fjust_85',['MaybeTag_Just',['../itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230a1e57a50afd710304d82f6269f40e18c2',1,'itplus_maybe.h']]], 7 | ['maybetag_5fnothing_86',['MaybeTag_Nothing',['../itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230aae774bc4d692f226f6a9d88b7e1ce26f',1,'itplus_maybe.h']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nothing_87',['Nothing',['../itplus__maybe_8h.html#a65cd69857cc806545d68c79464270a97',1,'itplus_maybe.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['pair_88',['Pair',['../itplus__pair_8h.html#a4760cf36bdc0a23827c20b1963186503',1,'itplus_pair.h']]], 4 | ['pairof_89',['PairOf',['../itplus__pair_8h.html#ac6399a724fdf5a1af19dea3e3c25ec21',1,'itplus_pair.h']]], 5 | ['preproc_5fmap_2eh_90',['preproc_map.h',['../preproc__map_8h.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['reduce_91',['reduce',['../sugar_8h.html#a4e821bade12960f94ebf66c8351fb64c',1,'sugar.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['snd_92',['snd',['../itplus__pair_8h.html#a8828c0ffd47ae7513e1674db7ab294fc',1,'itplus_pair.h']]], 4 | ['strarriter_93',['StrArrIter',['../structStrArrIter.html',1,'']]], 5 | ['sugar_2ec_94',['sugar.c',['../sugar_8c.html',1,'']]], 6 | ['sugar_2eh_95',['sugar.h',['../sugar_8h.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['take_96',['take',['../sugar_8h.html#af03b042aabf924e66d16de0e47d7be64',1,'sugar.h']]], 4 | ['takewhile_97',['takewhile',['../sugar_8h.html#a4910559bdd537339b69c417ae68ad15a',1,'sugar.h']]], 5 | ['typeclass_98',['typeclass',['../itplus__typeclass_8h.html#ab36f9f0d3603452a867a683078618034',1,'itplus_typeclass.h']]], 6 | ['typeclass_5finstance_99',['typeclass_instance',['../itplus__typeclass_8h.html#af018200b2431a3ab6c296cc8940ecbe3',1,'itplus_typeclass.h']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zip_100',['zip',['../sugar_8h.html#af0638092b90b1dbabb186a358e2d83a7',1,'sugar.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fibonacci_101',['fibonacci',['../structfibonacci.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/classes_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['maybetag_102',['MaybeTag',['../structMaybeTag.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/classes_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/classes_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['strarriter_103',['StrArrIter',['../structStrArrIter.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 31 | 32 | -------------------------------------------------------------------------------- /docs/search/defines_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['chain_133',['chain',['../sugar_8h.html#a43b8c49981738d2955157a73091287ae',1,'sugar.h']]], 4 | ['collect_134',['collect',['../sugar_8h.html#a9895ddb7b50d48ff8f4354ae26aae586',1,'sugar.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/defines_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['decliterplus_135',['DeclIterplus',['../itplus__defn_8h.html#a2d42bf07174d44f9e400ce68d5d7b9f6',1,'itplus_defn.h']]], 4 | ['define_5fiterchain_5ffunc_136',['define_iterchain_func',['../itplus__chain_8h.html#a2997b1c1acb16a74ad058b5dd4efb13c',1,'itplus_chain.h']]], 5 | ['define_5fitercollect_5ffunc_137',['define_itercollect_func',['../itplus__collect_8h.html#a85f93dbce7d63cb1c11818e4bf867a22',1,'itplus_collect.h']]], 6 | ['define_5fiterdrop_5ffunc_138',['define_iterdrop_func',['../itplus__drop_8h.html#a82e8516570a9996f2d26ab4b959687ad',1,'itplus_drop.h']]], 7 | ['define_5fiterdropwhile_5ffunc_139',['define_iterdropwhile_func',['../itplus__dropwhile_8h.html#a8ee7dc73bbaa1d2abde64dab352a6c24',1,'itplus_dropwhile.h']]], 8 | ['define_5fiterenumr_5ffunc_140',['define_iterenumr_func',['../itplus__enumerate_8h.html#a4c033b2db8a15dda35aebfb417950443',1,'itplus_enumerate.h']]], 9 | ['define_5fiterfilt_5ffunc_141',['define_iterfilt_func',['../itplus__filter_8h.html#aaac99e224f5b437d2d8cff83053cec2c',1,'itplus_filter.h']]], 10 | ['define_5fiterfiltmap_5ffunc_142',['define_iterfiltmap_func',['../itplus__filtermap_8h.html#a1c7f3e9d5e37fe8fcf894f1795ebd1fe',1,'itplus_filtermap.h']]], 11 | ['define_5fiterfold_5ffunc_143',['define_iterfold_func',['../itplus__fold_8h.html#af8803f1b77884ca096246f7d95392e37',1,'itplus_fold.h']]], 12 | ['define_5fitermap_5ffunc_144',['define_itermap_func',['../itplus__map_8h.html#a4dc643234203e036aa3e0dede29beb73',1,'itplus_map.h']]], 13 | ['define_5fiterreduce_5ffunc_145',['define_iterreduce_func',['../itplus__reduce_8h.html#a00b36795100b8dd110f7f29c0c67e4b3',1,'itplus_reduce.h']]], 14 | ['define_5fitertake_5ffunc_146',['define_itertake_func',['../itplus__take_8h.html#a287ad5fb9bef31ac9370b3a231a82603',1,'itplus_take.h']]], 15 | ['define_5fitertakewhile_5ffunc_147',['define_itertakewhile_func',['../itplus__takewhile_8h.html#ab452ed305d5190978aa0d4327e33c408',1,'itplus_takewhile.h']]], 16 | ['define_5fiterzip_5ffunc_148',['define_iterzip_func',['../itplus__zip_8h.html#a39546aa28cec10faef57954e59bd0950',1,'itplus_zip.h']]], 17 | ['defineiteratorof_149',['DefineIteratorOf',['../itplus__iterator_8h.html#a938f3e7187cb386e2bf4049753e2ff84',1,'itplus_iterator.h']]], 18 | ['defineiterchain_150',['DefineIterChain',['../itplus__chain_8h.html#a1382e263ec1cd56a19bf91d8292a2824',1,'itplus_chain.h']]], 19 | ['defineiterdrop_151',['DefineIterDrop',['../itplus__drop_8h.html#a71664a9dd47e10449841bfc1d6248503',1,'itplus_drop.h']]], 20 | ['defineiterdropwhile_152',['DefineIterDropWhile',['../itplus__dropwhile_8h.html#ad6129389904af6d8e22a76da42bd5961',1,'itplus_dropwhile.h']]], 21 | ['defineiterenumr_153',['DefineIterEnumr',['../itplus__enumerate_8h.html#a01a1c0c9b689bff859e100034f192fc1',1,'itplus_enumerate.h']]], 22 | ['defineiterfilt_154',['DefineIterFilt',['../itplus__filter_8h.html#a044891877ea79ca3eb40ca33b511daaf',1,'itplus_filter.h']]], 23 | ['defineiterfiltmap_155',['DefineIterFiltMap',['../itplus__filtermap_8h.html#aa00013069bf4e36640355ded3b293d72',1,'itplus_filtermap.h']]], 24 | ['defineitermap_156',['DefineIterMap',['../itplus__map_8h.html#af8959a5cb249799f82f0c769fd43586e',1,'itplus_map.h']]], 25 | ['defineitertake_157',['DefineIterTake',['../itplus__take_8h.html#a38a907117c644761f094973916334a18',1,'itplus_take.h']]], 26 | ['defineitertakewhile_158',['DefineIterTakeWhile',['../itplus__takewhile_8h.html#a789b4cc6f8b2fc52ed79788fbf45d4e6',1,'itplus_takewhile.h']]], 27 | ['defineiterzip_159',['DefineIterZip',['../itplus__zip_8h.html#ab9ecdbe44b62bf0fee28e221e58a97f8',1,'itplus_zip.h']]], 28 | ['definemaybe_160',['DefineMaybe',['../itplus__maybe_8h.html#a0daf26d181160b7fb96d640ed20bb466',1,'itplus_maybe.h']]], 29 | ['definepair_161',['DefinePair',['../itplus__pair_8h.html#af47436e1eab38cb119ab53fce7ab67e0',1,'itplus_pair.h']]], 30 | ['defniterplus_162',['DefnIterplus',['../itplus__defn_8h.html#ae7ec30413b0bc92c99b5c095578e368d',1,'itplus_defn.h']]], 31 | ['drop_163',['drop',['../sugar_8h.html#a8f13b72985433da15db0de35589883a1',1,'sugar.h']]], 32 | ['dropwhile_164',['dropwhile',['../sugar_8h.html#aac653dec449182ff96574091ea124c64',1,'sugar.h']]] 33 | ]; 34 | -------------------------------------------------------------------------------- /docs/search/defines_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['enumerate_165',['enumerate',['../sugar_8h.html#a0d9fab4407298bf04b996542e873606a',1,'sugar.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/defines_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['filter_166',['filter',['../sugar_8h.html#a84babbbc966e67e4cf6eb8d370e16350',1,'sugar.h']]], 4 | ['filter_5fmap_167',['filter_map',['../sugar_8h.html#a04cf28e85424dbcfb68ee9d49383ac0c',1,'sugar.h']]], 5 | ['fmap_5fmaybe_168',['fmap_maybe',['../itplus__maybe_8h.html#a78cf196d6558cc31ef4f88e5cf47bdf9',1,'itplus_maybe.h']]], 6 | ['fold_169',['fold',['../sugar_8h.html#a03acc6bef492690c52f63bd5faceedbf',1,'sugar.h']]], 7 | ['foreach_170',['foreach',['../itplus__foreach_8h.html#a80a0308d3d97154ab14aa4025fcbacd0',1,'itplus_foreach.h']]], 8 | ['from_5fjust_171',['from_just',['../itplus__maybe_8h.html#a26feaafcb3e37674333f6673ec2bdb7d',1,'itplus_maybe.h']]], 9 | ['from_5fjust_5f_172',['from_just_',['../itplus__maybe_8h.html#a16682b211c71e2ad917edc9bdd298154',1,'itplus_maybe.h']]], 10 | ['fst_173',['fst',['../itplus__pair_8h.html#ae728ef7d0189fc6bf3879edb5fd0c136',1,'itplus_pair.h']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /docs/search/defines_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['impl_5fiterator_174',['impl_iterator',['../itplus__iterator_8h.html#a01e620430099d2eb6192db193e88cff0',1,'itplus_iterator.h']]], 4 | ['is_5fjust_175',['is_just',['../itplus__maybe_8h.html#a8ae2e9c065fbca1cd3a603ad0a71d8f2',1,'itplus_maybe.h']]], 5 | ['is_5fnothing_176',['is_nothing',['../itplus__maybe_8h.html#a1b03ece9f7b00fcbbe8e0dde45277c47',1,'itplus_maybe.h']]], 6 | ['iterable_177',['Iterable',['../itplus__iterator_8h.html#a78f1cf949c0e970b2105124f691f5c2a',1,'itplus_iterator.h']]], 7 | ['iterator_178',['Iterator',['../itplus__iterator_8h.html#a6c3a22862dc6db425dd4389987c0dbaf',1,'itplus_iterator.h']]], 8 | ['iterchain_179',['IterChain',['../itplus__chain_8h.html#a57f7569f7996a4aa3ae1aa3d0327ec75',1,'itplus_chain.h']]], 9 | ['iterdrop_180',['IterDrop',['../itplus__drop_8h.html#a6e55b9588c1634ec791b400eb4a9011e',1,'itplus_drop.h']]], 10 | ['iterdropwhile_181',['IterDropWhile',['../itplus__dropwhile_8h.html#a883f6455eceac6d293e6e54414c3356e',1,'itplus_dropwhile.h']]], 11 | ['iterenumr_182',['IterEnumr',['../itplus__enumerate_8h.html#ae3969ffb53f197e7b65f90dce652cb5b',1,'itplus_enumerate.h']]], 12 | ['iterfilt_183',['IterFilt',['../itplus__filter_8h.html#a6a69fe586c6d8864d840c0658db0d363',1,'itplus_filter.h']]], 13 | ['iterfiltmap_184',['IterFiltMap',['../itplus__filtermap_8h.html#a341ce8c4f7f92df65e6fdfde9e1ac575',1,'itplus_filtermap.h']]], 14 | ['itermap_185',['IterMap',['../itplus__map_8h.html#a2ed8fd79978d16823dc7cd3ef43fce28',1,'itplus_map.h']]], 15 | ['iterplus_186',['Iterplus',['../itplus__defn_8h.html#a5c50e13ec0251aa058caede675387b12',1,'itplus_defn.h']]], 16 | ['itertake_187',['IterTake',['../itplus__take_8h.html#ad62bc1c52430417ab0ce36039c0c57a6',1,'itplus_take.h']]], 17 | ['itertakewhile_188',['IterTakeWhile',['../itplus__takewhile_8h.html#a0603baeec63df613f04d5f13f7975260',1,'itplus_takewhile.h']]], 18 | ['iterzip_189',['IterZip',['../itplus__zip_8h.html#aed4cf3e9b41350a8dbe6cb5a24d4d0d2',1,'itplus_zip.h']]] 19 | ]; 20 | -------------------------------------------------------------------------------- /docs/search/defines_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['just_190',['Just',['../itplus__maybe_8h.html#ae0832f95d5a7ff6845381aa8795fd2a3',1,'itplus_maybe.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/defines_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['map_191',['map',['../sugar_8h.html#a31d4b0bc2349838d3ac0d3e794ef4605',1,'sugar.h']]], 4 | ['maybe_192',['Maybe',['../itplus__maybe_8h.html#af47a0e4269e370939835ecc0cf6c7875',1,'itplus_maybe.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/defines_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nothing_193',['Nothing',['../itplus__maybe_8h.html#a65cd69857cc806545d68c79464270a97',1,'itplus_maybe.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/defines_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['pair_194',['Pair',['../itplus__pair_8h.html#a4760cf36bdc0a23827c20b1963186503',1,'itplus_pair.h']]], 4 | ['pairof_195',['PairOf',['../itplus__pair_8h.html#ac6399a724fdf5a1af19dea3e3c25ec21',1,'itplus_pair.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/defines_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['reduce_196',['reduce',['../sugar_8h.html#a4e821bade12960f94ebf66c8351fb64c',1,'sugar.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/defines_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['snd_197',['snd',['../itplus__pair_8h.html#a8828c0ffd47ae7513e1674db7ab294fc',1,'itplus_pair.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/defines_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['take_198',['take',['../sugar_8h.html#af03b042aabf924e66d16de0e47d7be64',1,'sugar.h']]], 4 | ['takewhile_199',['takewhile',['../sugar_8h.html#a4910559bdd537339b69c417ae68ad15a',1,'sugar.h']]], 5 | ['typeclass_200',['typeclass',['../itplus__typeclass_8h.html#ab36f9f0d3603452a867a683078618034',1,'itplus_typeclass.h']]], 6 | ['typeclass_5finstance_201',['typeclass_instance',['../itplus__typeclass_8h.html#af018200b2431a3ab6c296cc8940ecbe3',1,'itplus_typeclass.h']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/defines_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/defines_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zip_202',['zip',['../sugar_8h.html#af0638092b90b1dbabb186a358e2d83a7',1,'sugar.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/enums_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/enums_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['maybetag_130',['MaybeTag',['../itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230',1,'itplus_maybe.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/enumvalues_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/enumvalues_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['maybetag_5fjust_131',['MaybeTag_Just',['../itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230a1e57a50afd710304d82f6269f40e18c2',1,'itplus_maybe.h']]], 4 | ['maybetag_5fnothing_132',['MaybeTag_Nothing',['../itplus__maybe_8h.html#aef352f4183ce21f9ac15edd86a75b230aae774bc4d692f226f6a9d88b7e1ce26f',1,'itplus_maybe.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['common_2eh_104',['common.h',['../common_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['impls_2ec_105',['impls.c',['../impls_8c.html',1,'']]], 4 | ['impls_2eh_106',['impls.h',['../impls_8h.html',1,'']]], 5 | ['itplus_5fchain_2eh_107',['itplus_chain.h',['../itplus__chain_8h.html',1,'']]], 6 | ['itplus_5fcollect_2eh_108',['itplus_collect.h',['../itplus__collect_8h.html',1,'']]], 7 | ['itplus_5fdefn_2eh_109',['itplus_defn.h',['../itplus__defn_8h.html',1,'']]], 8 | ['itplus_5fdrop_2eh_110',['itplus_drop.h',['../itplus__drop_8h.html',1,'']]], 9 | ['itplus_5fdropwhile_2eh_111',['itplus_dropwhile.h',['../itplus__dropwhile_8h.html',1,'']]], 10 | ['itplus_5fenumerate_2eh_112',['itplus_enumerate.h',['../itplus__enumerate_8h.html',1,'']]], 11 | ['itplus_5ffilter_2eh_113',['itplus_filter.h',['../itplus__filter_8h.html',1,'']]], 12 | ['itplus_5ffiltermap_2eh_114',['itplus_filtermap.h',['../itplus__filtermap_8h.html',1,'']]], 13 | ['itplus_5ffold_2eh_115',['itplus_fold.h',['../itplus__fold_8h.html',1,'']]], 14 | ['itplus_5fforeach_2eh_116',['itplus_foreach.h',['../itplus__foreach_8h.html',1,'']]], 15 | ['itplus_5fiterator_2eh_117',['itplus_iterator.h',['../itplus__iterator_8h.html',1,'']]], 16 | ['itplus_5fmacro_5futils_2eh_118',['itplus_macro_utils.h',['../itplus__macro__utils_8h.html',1,'']]], 17 | ['itplus_5fmap_2eh_119',['itplus_map.h',['../itplus__map_8h.html',1,'']]], 18 | ['itplus_5fmaybe_2eh_120',['itplus_maybe.h',['../itplus__maybe_8h.html',1,'']]], 19 | ['itplus_5fpair_2eh_121',['itplus_pair.h',['../itplus__pair_8h.html',1,'']]], 20 | ['itplus_5freduce_2eh_122',['itplus_reduce.h',['../itplus__reduce_8h.html',1,'']]], 21 | ['itplus_5ftake_2eh_123',['itplus_take.h',['../itplus__take_8h.html',1,'']]], 22 | ['itplus_5ftakewhile_2eh_124',['itplus_takewhile.h',['../itplus__takewhile_8h.html',1,'']]], 23 | ['itplus_5ftypeclass_2eh_125',['itplus_typeclass.h',['../itplus__typeclass_8h.html',1,'']]], 24 | ['itplus_5fzip_2eh_126',['itplus_zip.h',['../itplus__zip_8h.html',1,'']]] 25 | ]; 26 | -------------------------------------------------------------------------------- /docs/search/files_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['preproc_5fmap_2eh_127',['preproc_map.h',['../preproc__map_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/files_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/search/files_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sugar_2ec_128',['sugar.c',['../sugar_8c.html',1,'']]], 4 | ['sugar_2eh_129',['sugar.h',['../sugar_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/mag_sel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 31 | 33 | 57 | 63 | 69 | 74 | 75 | -------------------------------------------------------------------------------- /docs/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
    10 |
    No Matches
    11 |
    12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/search/search_l.png -------------------------------------------------------------------------------- /docs/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/search/search_m.png -------------------------------------------------------------------------------- /docs/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/search/search_r.png -------------------------------------------------------------------------------- /docs/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "cdefijmnprstz", 4 | 1: "fms", 5 | 2: "cips", 6 | 3: "m", 7 | 4: "m", 8 | 5: "cdefijmnprstz" 9 | }; 10 | 11 | var indexSectionNames = 12 | { 13 | 0: "all", 14 | 1: "classes", 15 | 2: "files", 16 | 3: "enums", 17 | 4: "enumvalues", 18 | 5: "defines" 19 | }; 20 | 21 | var indexSectionLabels = 22 | { 23 | 0: "All", 24 | 1: "Data Structures", 25 | 2: "Files", 26 | 3: "Enumerations", 27 | 4: "Enumerator", 28 | 5: "Macros" 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /docs/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/splitbar.png -------------------------------------------------------------------------------- /docs/sugar_8h.js: -------------------------------------------------------------------------------- 1 | var sugar_8h = 2 | [ 3 | [ "chain", "sugar_8h.html#a43b8c49981738d2955157a73091287ae", null ], 4 | [ "collect", "sugar_8h.html#a9895ddb7b50d48ff8f4354ae26aae586", null ], 5 | [ "drop", "sugar_8h.html#a8f13b72985433da15db0de35589883a1", null ], 6 | [ "dropwhile", "sugar_8h.html#aac653dec449182ff96574091ea124c64", null ], 7 | [ "enumerate", "sugar_8h.html#a0d9fab4407298bf04b996542e873606a", null ], 8 | [ "filter", "sugar_8h.html#a84babbbc966e67e4cf6eb8d370e16350", null ], 9 | [ "filter_map", "sugar_8h.html#a04cf28e85424dbcfb68ee9d49383ac0c", null ], 10 | [ "fold", "sugar_8h.html#a03acc6bef492690c52f63bd5faceedbf", null ], 11 | [ "map", "sugar_8h.html#a31d4b0bc2349838d3ac0d3e794ef4605", null ], 12 | [ "reduce", "sugar_8h.html#a4e821bade12960f94ebf66c8351fb64c", null ], 13 | [ "take", "sugar_8h.html#af03b042aabf924e66d16de0e47d7be64", null ], 14 | [ "takewhile", "sugar_8h.html#a4910559bdd537339b69c417ae68ad15a", null ], 15 | [ "zip", "sugar_8h.html#af0638092b90b1dbabb186a358e2d83a7", null ] 16 | ]; -------------------------------------------------------------------------------- /docs/sugar_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/sugar_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | c8753e753b1fe478ee07147f2bdff2e3 -------------------------------------------------------------------------------- /docs/sugar_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/sugar_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/sync_off.png -------------------------------------------------------------------------------- /docs/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/sync_on.png -------------------------------------------------------------------------------- /docs/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/tab_a.png -------------------------------------------------------------------------------- /docs/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/tab_b.png -------------------------------------------------------------------------------- /docs/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/tab_h.png -------------------------------------------------------------------------------- /docs/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TotallyNotChase/c-iterplus/2bb63813be5743a77cec18774d64d18c63cd4db6/docs/tab_s.png -------------------------------------------------------------------------------- /include/itplus_collect.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * @brief Macros for implementing the `collect` abstraction. 4 | * 5 | * https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.collect 6 | * Note: Rust's `collect` has a polymorphic return type. The `collect` here just turns an iterable into an array. 7 | */ 8 | 9 | #ifndef LIB_ITPLUS_COLLECT_H 10 | #define LIB_ITPLUS_COLLECT_H 11 | 12 | #include "itplus_foreach.h" 13 | #include "itplus_iterator.h" 14 | #include "itplus_maybe.h" 15 | 16 | #include 17 | 18 | #ifndef ITPLUS_COLLECT_BUFSZ 19 | #define ITPLUS_COLLECT_BUFSZ 64 20 | #endif /* !ITPLUS_COLLECT_BUFSZ */ 21 | 22 | /** 23 | * @def define_itercollect_func(T, Name) 24 | * @brief Define the `collect` function for an iterable. 25 | * 26 | * The defined function takes in an iterable of type `T`, and turns it into an array. Each element of said array 27 | * is of type `T`. Nothing is implicitly cloned. The same values from the iterable are assigned to the array. 28 | * 29 | * This defined function will consume the given iterable. 30 | * 31 | * # Example 32 | * 33 | * @code 34 | * // Defines a function with the signature- `int* collect_int(Iterable(int) x, size_t* len)` 35 | * define_itercollect_func(int, collect_int) 36 | * @endcode 37 | * 38 | * Usage of the defined function- 39 | * 40 | * @code 41 | * size_t arrlen = 0; 42 | * // Collect `it` (of type `Iterable(int)`) into an array 43 | * int* intarr = collect_int(it, &arrlen); 44 | * @endcode 45 | * 46 | * @param T The type of value the `Iterable`, for which this is being implemented, yields. 47 | * @param Name Name to define the function as. 48 | * 49 | * @note The returned array must be freed. 50 | * @note If `T` is a pointer, it needs to be typedef-ed into a type that does not contain the `*`. Only alphanumerics. 51 | * @note An #Iterator(T) for the given `T` **must** also exist. 52 | */ 53 | #define define_itercollect_func(T, Name) \ 54 | T* Name(Iterable(T) it, size_t* len) \ 55 | { \ 56 | size_t size = ITPLUS_COLLECT_BUFSZ; \ 57 | *len = 0; \ 58 | T* arr = malloc(size * sizeof(*arr)); \ 59 | if (arr == NULL) { \ 60 | return NULL; \ 61 | } \ 62 | foreach (T, x, it) { \ 63 | if (*len == size) { \ 64 | T* temp = realloc(arr, (size *= 2) * sizeof(*arr)); \ 65 | if (temp == NULL) { \ 66 | free(arr); \ 67 | return NULL; \ 68 | } \ 69 | arr = temp; \ 70 | } \ 71 | arr[(*len)++] = x; \ 72 | } \ 73 | return arr; \ 74 | } 75 | 76 | #endif /* !LIB_ITPLUS_COLLECT_H */ 77 | -------------------------------------------------------------------------------- /include/itplus_fold.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * @brief Macros for implementing the `foldl` abstraction. 4 | * 5 | * https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-List.html#v:foldl 6 | */ 7 | 8 | #ifndef LIB_ITPLUS_FOLD_H 9 | #define LIB_ITPLUS_FOLD_H 10 | 11 | #include "itplus_foreach.h" 12 | #include "itplus_iterator.h" 13 | 14 | /** 15 | * @def define_iterfold_func(T, Acc, Name) 16 | * @brief Define the `fold` function for an iterable and an accumulator type. 17 | * 18 | * The defined fold function takes in an iterable of type `T`, a function of type `Acc (*const f)(Acc acc, T x)`, and 19 | * a starting value of type `Acc`, and folds the iterable to a singular value of type `Acc`, by repeatedly applying `f` 20 | * onto it. 21 | * 22 | * This defined function will consume the given iterable. 23 | * 24 | * # Example 25 | * 26 | * @code 27 | * typedef struct boxint { int x; } BoxInt; 28 | * 29 | * // The defined function has the signature:- 30 | * // `BoxInt int_boxint_fold(Iterable(int), BoxInt init, BoxInt (*f)(BoxInt acc, int x))` 31 | * define_iterfold_func(int, boxint, int_boxint_fold) 32 | * @endcode 33 | * 34 | * Usage of the defined function- 35 | * 36 | * @code 37 | * // Add 2 ints within 2 BoxInts 38 | * static BoxInt boxed_add(BoxInt a, BoxInt b) { return (BoxInt){ .x = a.x + b.x }; } 39 | * @endcode 40 | * 41 | * @code 42 | * // Fold `it` (of type `Iterable(int)`) with `boxed_add` 43 | * BoxInt boxed_sum = int_boxint_fold(it, (BoxInt){0}, boxed_add); 44 | * @endcode 45 | * 46 | * @param T The type of value the `Iterable`, for which this is being implemented, yields. 47 | * @param Acc The accumulator type the fold function being defined should work on. 48 | * @param Name Name to define the function as. 49 | * 50 | * @note If `T` (or `Acc`) is a pointer, it needs to be typedef-ed into a type that does not contain the `*`. Only 51 | * alphanumerics. 52 | * @note An #Iterator(T) for the given `T` **must** also exist. 53 | * @note This should not be delimited with a semicolon. 54 | */ 55 | #define define_iterfold_func(T, Acc, Name) \ 56 | Acc Name(Iterable(T) it, Acc init, Acc (*f)(Acc acc, T x)) \ 57 | { \ 58 | Acc acc = init; \ 59 | foreach (T, x, it) { \ 60 | acc = f(acc, x); \ 61 | } \ 62 | return acc; \ 63 | } 64 | 65 | #endif /* !LIB_ITPLUS_FOLD_H */ 66 | -------------------------------------------------------------------------------- /include/itplus_foreach.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Definition of the `foreach` macro. 4 | */ 5 | 6 | #ifndef LIB_ITPLUS_FOREACH_UTILS_H 7 | #define LIB_ITPLUS_FOREACH_UTILS_H 8 | 9 | #include "itplus_macro_utils.h" 10 | 11 | #define UNIQVAR(x) ITPL_CONCAT(ITPL_CONCAT(x, _4x2_), __LINE__) /* "Unique" variable name */ 12 | 13 | /** 14 | * @def foreach(T, x, it) 15 | * @brief Iterate through given iterable and store each element in `x` 16 | * 17 | * # Example 18 | * 19 | * @code 20 | * Iterable(int) it = ...; 21 | * 22 | * foreach (int, element, it) { 23 | * printf("%d\n", element); 24 | * } 25 | * @endcode 26 | * 27 | * @param T Type of the elements the iterable yields. 28 | * @param x The variable name to store each element in. Available only inside the loop. 29 | * @param it The iterable to iterate over. This will be consumed. 30 | * 31 | * @note `it` must not be an unevaluated expression. Otherwise, it will be evaluated multiple times in this macro. 32 | * @note This macro cannot be used multiple times *in the same line*. Due to naming conflicts from an implicitly defined 33 | * variable. 34 | */ 35 | #define foreach(T, x, it) \ 36 | Maybe(T) UNIQVAR(res) = (it).tc->next((it).self); \ 37 | for (T x = from_just_(UNIQVAR(res)); is_just(UNIQVAR(res)); \ 38 | UNIQVAR(res) = (it).tc->next((it).self), x = from_just_(UNIQVAR(res))) 39 | 40 | #endif /* !LIB_ITPLUS_FOREACH_UTILS_H */ 41 | -------------------------------------------------------------------------------- /include/itplus_macro_utils.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * General utility macros. 4 | */ 5 | 6 | #ifndef LIB_ITPLUS_MACRO_UTILS_H 7 | #define LIB_ITPLUS_MACRO_UTILS_H 8 | 9 | #define ITPL_CONCAT_(A, B) A##B 10 | #define ITPL_CONCAT(A, B) ITPL_CONCAT_(A, B) 11 | 12 | #endif /* !LIB_ITPLUS_MACRO_UTILS_H */ 13 | -------------------------------------------------------------------------------- /include/itplus_pair.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Utilities to define and use a Pair type. A Tuple of 2 elements. 4 | * 5 | * https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Tuple.html 6 | */ 7 | 8 | #ifndef LIB_ITPLUS_PAIR_H 9 | #define LIB_ITPLUS_PAIR_H 10 | 11 | #include "itplus_macro_utils.h" 12 | 13 | /** 14 | * @def Pair(T, U) 15 | * @brief Convenience macro to get the type of the Pair defined with certain types. 16 | * 17 | * # Example 18 | * 19 | * @code 20 | * DefinePair(int, char); 21 | * Pair(int, char) const x = {0}; // Uses the pair type defined in the previous line 22 | * @endcode 23 | * 24 | * @param T The type the first value in this `Pair` struct. Must be the same type name passed to #DefinePair(T, U) 25 | * @param T The type the second value in this `Pair` struct. Must be the same type name passed to #DefinePair(T, U). 26 | * 27 | * @note If `T`, or `U`, is a pointer, it needs to be typedef-ed into a type that does not contain the `*`. Only 28 | * alphanumerics. 29 | */ 30 | #define Pair(T, U) ITPL_CONCAT(ITPL_CONCAT(Pair_, T), ITPL_CONCAT(_, U)) 31 | 32 | /** 33 | * @def DefinePair(T, U) 34 | * @brief Define a Pair type. 35 | * 36 | * # Example 37 | * 38 | * @code 39 | * DefinePair(int, char); // Defines a Pair(int, char) type 40 | * @endcode 41 | * 42 | * @param T The type the first value in this `Pair` struct. 43 | * @param T The type the second value in this `Pair` struct. 44 | * 45 | * @note If `T`, or `U`, is a pointer, it needs to be typedef-ed into a type that does not contain the `*`. Only 46 | * alphanumerics. 47 | */ 48 | #define DefinePair(T, U) \ 49 | typedef struct \ 50 | { \ 51 | T a; \ 52 | U b; \ 53 | } Pair(T, U) 54 | 55 | /** 56 | * @def PairOf(x, y, T, U) 57 | * @brief Wrap 2 values into a #Pair(T, U). 58 | * 59 | * # Example 60 | * 61 | * @code 62 | * DefinePair(int, char); 63 | * Pair(int, char) const x = PairOf(42, 'c', int, char); // Initializes a Pair(int, char) with the value 42 and 'c' 64 | * @endcode 65 | * 66 | * @param x The value to put as the first member of the pair struct. 67 | * @param y The value to put as the second member of the pair struct. 68 | * @param T The type of the first value. 69 | * @param U The type of the second value. 70 | * 71 | * @note If `T`, or `U`, is a pointer, it needs to be typedef-ed into a type that does not contain the `*`. Only 72 | * alphanumerics. 73 | * @note A #Pair(T, U) for given `T` and `U` must exist. 74 | * @note The values are simply assigned to the #Pair(T, U) struct. No implicit cloning is done. 75 | */ 76 | #define PairOf(x, y, T, U) ((Pair(T, U)){.a = (x), .b = (y)}) 77 | 78 | /** 79 | * @def fst(pair) 80 | * @brief Get the first value from given pair. 81 | */ 82 | #define fst(pair) (pair).a 83 | 84 | /** 85 | * @def snd(pair) 86 | * @brief Get the second value from given pair. 87 | */ 88 | #define snd(pair) (pair).b 89 | 90 | #endif /* !LIB_ITPLUS_PAIR_H */ 91 | -------------------------------------------------------------------------------- /include/itplus_reduce.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * @brief Macros for implementing the `reduce`/`foldl1` abstraction. 4 | * 5 | * https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-List.html#v:foldl1 6 | */ 7 | 8 | #ifndef LIB_ITPLUS_REDUCE_H 9 | #define LIB_ITPLUS_REDUCE_H 10 | 11 | #include "itplus_foreach.h" 12 | #include "itplus_iterator.h" 13 | #include "itplus_maybe.h" 14 | 15 | /** 16 | * @def define_iterreduce_func(T, Name) 17 | * @brief Define the `reduce` function for an iterable. 18 | * 19 | * The defined reduce function takes in an iterable of type `T`, and a function of type `T (*const f)(T acc, T x)`, and 20 | * reduces the iterable to a singular value of type `T`, by repeatedly applying `f` onto it. 21 | * 22 | * If the given iterable was empty, `Nothing` is returned. Otherwise, a `Just` value is returned. 23 | * 24 | * This defined function will consume the given iterable. 25 | * 26 | * # Example 27 | * 28 | * @code 29 | * // The defined function has the signature:- 30 | * // `Maybe(int) int_reduce(Iterable(int), int (*f)(int acc, int x))` 31 | * define_iterreduce_func(int, int_reduce) 32 | * @endcode 33 | * 34 | * Usage of the defined function- 35 | * 36 | * @code 37 | * // Add 2 ints 38 | * static int add(int a, int b) { return a + b; } 39 | * @endcode 40 | * 41 | * @code 42 | * // Reduce `it` (of type `Iterable(int)`) with `add` 43 | * Maybe(int) maybe_sum = int_reduce(it, add); 44 | * @endcode 45 | * 46 | * @param T The type of value the `Iterable`, for which this is being implemented, yields. 47 | * @param Name Name to define the function as. 48 | * 49 | * @note If `T` is a pointer, it needs to be typedef-ed into a type that does not contain the `*`. Only alphanumerics. 50 | * @note An #Iterator(T) for the given `T` **must** also exist. 51 | * @note This should not be delimited with a semicolon. 52 | */ 53 | #define define_iterreduce_func(T, Name) \ 54 | Maybe(T) Name(Iterable(T) it, T (*f)(T acc, T x)) \ 55 | { \ 56 | Maybe(T) const res = it.tc->next(it.self); \ 57 | if (is_nothing(res)) { \ 58 | return Nothing(T); \ 59 | } \ 60 | T acc = from_just_(res); \ 61 | foreach (T, x, it) { \ 62 | acc = f(acc, x); \ 63 | } \ 64 | return Just(acc, T); \ 65 | } 66 | 67 | #endif /* !LIB_ITPLUS_REDUCE_H */ 68 | -------------------------------------------------------------------------------- /include/itplus_typeclass.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Utilities to define a typeclass and its instance. 4 | */ 5 | 6 | #ifndef LIB_ITPLUS_TYPECLASS_H 7 | #define LIB_ITPLUS_TYPECLASS_H 8 | 9 | /** 10 | * @def typeclass(funcs) 11 | * @brief Define a typeclass with the given functions. 12 | * 13 | * # Example 14 | * 15 | * @code 16 | * typedef typeclass(char* (*show)(void* self)) Show; // Defines a typeclass and names it `Show` 17 | * @endcode 18 | * 19 | * @param funcs A semicolon separated list of typeclass functions. 20 | * 21 | * @note The functions usually take the `self` from the typeclass instance (and possibly more arguments). 22 | */ 23 | #define typeclass(funcs) \ 24 | struct \ 25 | { \ 26 | funcs; \ 27 | } 28 | 29 | /** 30 | * @def typeclass_instance(Typeclass) 31 | * @brief Define a typeclass instance for the given typeclass. 32 | * 33 | * This just contains a `void* self` member and the typeclass itself. 34 | * # Example 35 | * 36 | * @code 37 | * typedef typeclass(char* (*show)(void* self)) Show; 38 | * typedef typeclass_instance(Show) Showable; // Defines the typeclass instance for `Show` typeclass 39 | * @endcode 40 | * 41 | * @param Typeclass The semantic type (C type) of the typeclass defined with #typeclass(funcs). 42 | */ 43 | #define typeclass_instance(Typeclass) \ 44 | struct \ 45 | { \ 46 | void* self; \ 47 | Typeclass const* tc; \ 48 | } 49 | 50 | #endif /* !LIB_ITPLUS_TYPECLASS_H */ 51 | -------------------------------------------------------------------------------- /samples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################## 2 | # Configure target for building the testing executable 3 | 4 | set(SOURCES 5 | ${CMAKE_CURRENT_SOURCE_DIR}/main.c 6 | ${CMAKE_CURRENT_SOURCE_DIR}/impls.c 7 | ${CMAKE_CURRENT_SOURCE_DIR}/sugar.c 8 | ) 9 | 10 | set(HEADERS 11 | ${CMAKE_CURRENT_SOURCE_DIR}/impls.h 12 | ${CMAKE_CURRENT_SOURCE_DIR}/sugar.h 13 | ) 14 | 15 | set(EXCNAME iterplus_samples) 16 | 17 | # Add the main executable 18 | add_executable(${EXCNAME} ${HEADERS} ${SOURCES}) 19 | 20 | # Link the iterators interface lib 21 | target_link_libraries(${EXCNAME} ${LIBNAME}) 22 | 23 | # Set C language standard to C11 (for `_Generic`) 24 | # NOTE: The iterplus library works for C99 (and above), but the examples use C11 for convenience 25 | set_property(TARGET ${EXCNAME} PROPERTY C_STANDARD 11) 26 | set_property(TARGET ${EXCNAME} PROPERTY C_STANDARD_REQUIRED ON) 27 | -------------------------------------------------------------------------------- /samples/impls.c: -------------------------------------------------------------------------------- 1 | #include "impls.h" 2 | 3 | /* `next` implementation for the `StrArrIter` struct */ 4 | static Maybe(char) chrarrnxt(ChrArrIter* self) 5 | { 6 | return self->i < self->size ? Just(self->arr[self->i++], char) : Nothing(char); 7 | } 8 | 9 | /* `next` implementation for the `StrArrIter` struct */ 10 | static Maybe(string) strarrnxt(StrArrIter* self) 11 | { 12 | return self->i < self->size ? Just(self->arr[self->i++], string) : Nothing(string); 13 | } 14 | 15 | /* `next` implementation for the `U64ArrIter` struct */ 16 | static Maybe(uint64_t) u64arrnxt(U64ArrIter* self) 17 | { 18 | return self->i < self->size ? Just(self->arr[self->i++], uint64_t) : Nothing(uint64_t); 19 | } 20 | 21 | // clang-format off 22 | /* Implement `Iterator` for `ChrArrIter`, `StrArrIter`, and `U64ArrIter` */ 23 | impl_iterator(ChrArrIter*, char, prep_chrarr_itr, chrarrnxt) 24 | impl_iterator(StrArrIter*, string, prep_strarr_itr, strarrnxt) 25 | impl_iterator(U64ArrIter*, uint64_t, prep_u64arr_itr, u64arrnxt) 26 | /* Define the iterplus utilities for the necessary types */ 27 | DefnIterplus(char, takechr, dropchr, map_chrchr, filtchr, chr_reduce, chr_fold, filtmap_chrchr, chainchr, takewhlchr, 28 | dropwhlchr, enmrchr, zip_chrchr, chr_collect) 29 | 30 | define_itertakewhile_func(Pair(char, char), takewhl_chrchr) 31 | define_itermap_func(Pair(char, char), char, map_chrchr_chr) 32 | define_iterfold_func(string, char*, str_fold) 33 | 34 | define_iterzip_func(uint64_t, uint64_t, zip_u64u64) 35 | define_itermap_func(Pair(uint64_t, uint64_t), uint64_t, map_u64u64_u64) 36 | define_iterreduce_func(uint64_t, u64_reduce) 37 | -------------------------------------------------------------------------------- /samples/impls.h: -------------------------------------------------------------------------------- 1 | #ifndef LIB_ITPLUS_SAMPL_IMPL_H 2 | #define LIB_ITPLUS_SAMPL_IMPL_H 3 | 4 | #define ITPLUS_COLLECT_BUFSZ 16 /* Custom collect buffer size for iterplus collect utility */ 5 | 6 | #include "itplus.h" 7 | 8 | #include 9 | 10 | /* Type for string literals, the only type of strings used in the examples */ 11 | typedef char const* string; 12 | 13 | /* Implement the necessary struct and functions */ 14 | 15 | Iterplus(char); 16 | DeclIterplus(char, takechr, dropchr, map_chrchr, filtchr, chr_reduce, chr_fold, filtmap_chrchr, chainchr, takewhlchr, 17 | dropwhlchr, enmrchr, zip_chrchr, chr_collect); 18 | 19 | /* Define some extra iterplus utilities for `Pair(char, char)` */ 20 | DefineIterTakeWhile(Pair(char, char)); 21 | DefineIterMap(Pair(char, char), char); 22 | Iterable(Pair(char, char)) takewhl_chrchr(IterTakeWhile(Pair(char, char)) * x); 23 | Iterable(char) map_chrchr_chr(IterMap(Pair(char, char), char) * x); 24 | 25 | /* Also define `Iterable(string)` with a specific folding utility */ 26 | // clang-format off 27 | DefineMaybe(string) 28 | DefineIteratorOf(string); 29 | // clang-format on 30 | char* str_fold(Iterable(string) it, char* init, char* (*f)(char* acc, string x)); 31 | 32 | /* Also define `Iterable(uint64_t)` with some utilities */ 33 | // clang-format off 34 | DefineMaybe(uint64_t) 35 | DefinePair(uint64_t, uint64_t); 36 | DefineMaybe(Pair(uint64_t, uint64_t)) 37 | DefineIteratorOf(uint64_t); 38 | DefineIteratorOf(Pair(uint64_t, uint64_t)); 39 | // clang-format on 40 | DefineIterZip(uint64_t, uint64_t); 41 | DefineIterMap(Pair(uint64_t, uint64_t), uint64_t); 42 | Iterable(Pair(uint64_t, uint64_t)) zip_u64u64(IterZip(uint64_t, uint64_t)* x); 43 | Iterable(uint64_t) map_u64u64_u64(IterMap(Pair(uint64_t, uint64_t), uint64_t) * x); 44 | Maybe(uint64_t) u64_reduce(Iterable(uint64_t) it, uint64_t (*acc)(uint64_t acc, uint64_t x)); 45 | 46 | /* ArrIter for the `char` array type */ 47 | typedef struct 48 | { 49 | size_t i; 50 | size_t const size; 51 | /* Array of string literals */ 52 | char const* const arr; 53 | } ChrArrIter; 54 | 55 | /* ArrIter for the `string` array type */ 56 | typedef struct 57 | { 58 | size_t i; 59 | size_t const size; 60 | /* Array of string literals */ 61 | string const* const arr; 62 | } StrArrIter; 63 | 64 | /* ArrIter for the `uint64_t` array type */ 65 | typedef struct 66 | { 67 | size_t i; 68 | size_t const size; 69 | /* Array of string literals */ 70 | uint64_t const* const arr; 71 | } U64ArrIter; 72 | 73 | 74 | /* Turn a pointer to a `ChrArrIter` struct to an iterable */ 75 | Iterable(char) prep_chrarr_itr(ChrArrIter* self); 76 | /* Turn a pointer to a `StrArrIter` struct to an iterable */ 77 | Iterable(string) prep_strarr_itr(StrArrIter* self); 78 | /* Turn a pointer to a `U64ArrIter` struct to an iterable */ 79 | Iterable(uint64_t) prep_u64arr_itr(U64ArrIter* self); 80 | 81 | /* Convert an array of chars into an `Iterable` */ 82 | #define chrarr_to_iter(srcarr, len) prep_chrarr_itr(&(ChrArrIter){.size = (len), .arr = (srcarr)}) 83 | /* Convert an array of string literals into an `Iterable` */ 84 | #define strarr_to_iter(srcarr, len) prep_strarr_itr(&(StrArrIter){.size = (len), .arr = (srcarr)}) 85 | /* Convert an array of string literals into an `Iterable` */ 86 | #define u64arr_to_iter(srcarr, len) prep_u64arr_itr(&(U64ArrIter){.size = (len), .arr = (srcarr)}) 87 | 88 | #endif /* !LIB_ITPLUS_SAMPL_IMPL_H */ 89 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################## 2 | # Configure target for building the testing executable 3 | 4 | set(SOURCES 5 | ${CMAKE_CURRENT_SOURCE_DIR}/main.c 6 | ${CMAKE_CURRENT_SOURCE_DIR}/impls.c 7 | ${CMAKE_CURRENT_SOURCE_DIR}/sugar.c 8 | ) 9 | 10 | set(HEADERS 11 | ${CMAKE_CURRENT_SOURCE_DIR}/common.h 12 | ${CMAKE_CURRENT_SOURCE_DIR}/impls.h 13 | ${CMAKE_CURRENT_SOURCE_DIR}/sugar.h 14 | ${CMAKE_CURRENT_SOURCE_DIR}/preproc_map.h 15 | ) 16 | 17 | set(EXCNAME iterplus_test) 18 | 19 | # Add the main executable 20 | add_executable(${EXCNAME} ${HEADERS} ${SOURCES}) 21 | 22 | # Link the iterators interface lib 23 | target_link_libraries(${EXCNAME} ${LIBNAME}) 24 | 25 | # Set C language standard to C11 (for `_Generic`) 26 | # NOTE: The iterplus library works for C99 (and above), but the examples use C11 for convenience 27 | set_property(TARGET ${EXCNAME} PROPERTY C_STANDARD 11) 28 | set_property(TARGET ${EXCNAME} PROPERTY C_STANDARD_REQUIRED ON) 29 | -------------------------------------------------------------------------------- /tests/common.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Declarations of iterator and iterplus structs used in the test executable. 4 | */ 5 | 6 | #ifndef LIB_ITPLUS_COMMON_H 7 | #define LIB_ITPLUS_COMMON_H 8 | 9 | #include "itplus_chain.h" 10 | #include "itplus_collect.h" 11 | #include "itplus_defn.h" 12 | #include "itplus_drop.h" 13 | #include "itplus_dropwhile.h" 14 | #include "itplus_enumerate.h" 15 | #include "itplus_filter.h" 16 | #include "itplus_filtermap.h" 17 | #include "itplus_fold.h" 18 | #include "itplus_foreach.h" 19 | #include "itplus_iterator.h" 20 | #include "itplus_macro_utils.h" 21 | #include "itplus_map.h" 22 | #include "itplus_maybe.h" 23 | #include "itplus_pair.h" 24 | #include "itplus_reduce.h" 25 | #include "itplus_take.h" 26 | #include "itplus_takewhile.h" 27 | #include "itplus_typeclass.h" 28 | #include "itplus_zip.h" 29 | 30 | #include 31 | 32 | typedef enum 33 | { 34 | EVEN, 35 | ODD 36 | } NumType; 37 | 38 | /* Type for string literals, the only type of strings used in the examples */ 39 | typedef char const* string; 40 | 41 | /* Define iterplus for uint32_t iterables */ 42 | Iterplus(uint32_t); 43 | 44 | // clang-format off 45 | /* Also manually define `Iterator` and some iterplus utilities for NumType and string elements */ 46 | DefineMaybe(NumType) 47 | DefineMaybe(string) 48 | DefineIteratorOf(NumType); 49 | DefineIteratorOf(string); 50 | // clang-format on 51 | DefineIterTake(NumType); 52 | DefineIterTake(string); 53 | DefineIterFilt(string); 54 | /* Define `IterFiltMap` struct for string -> uint32_t, and string -> NumType */ 55 | DefineIterFiltMap(string, uint32_t); 56 | DefineIterFiltMap(string, NumType); 57 | 58 | /* Extend `Iterplus(uint32_t)` map support to uint32_t -> NumType */ 59 | DefineIterMap(uint32_t, NumType); 60 | 61 | #endif /* !LIB_ITPLUS_COMMON_H */ 62 | -------------------------------------------------------------------------------- /tests/impls.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Implementations of iterables and iterplus utilities. 4 | */ 5 | 6 | #include "impls.h" 7 | 8 | #include "common.h" 9 | 10 | #include 11 | 12 | /* `next` implementation for the `Fibonacci` struct */ 13 | static Maybe(uint32_t) fibnxt(Fibonacci* self) 14 | { 15 | uint32_t prev_curr = self->curr; 16 | self->curr = self->next; 17 | self->next += prev_curr; 18 | return Just(prev_curr, uint32_t); 19 | } 20 | 21 | /* `next` implementation for the `StrArrIter` struct */ 22 | static Maybe(string) strarrnxt(StrArrIter* self) 23 | { 24 | return self->i < self->size ? Just(self->arr[self->i++], string) : Nothing(string); 25 | } 26 | 27 | // clang-format off 28 | /* Implement `Iterator` for `Fibonacci*` */ 29 | impl_iterator(Fibonacci*, uint32_t, prep_fib_itr, fibnxt) 30 | /* Implement `Iterator` for `StrArrIter` */ 31 | impl_iterator(StrArrIter*, string, prep_strarr_itr, strarrnxt) 32 | 33 | /* Implement the iterplus utilities for `uint32_t` iterables */ 34 | DefnIterplus( 35 | uint32_t, u32tk_to_itr, u32drp_to_itr, u32u32map_to_itr, u32filt_to_itr, reduce_u32, fold_u32_u32, 36 | u32u32filtmap_to_itr, u32chn_to_itr, u32tkwhl_to_itr, u32drpwhl_to_itr, u32enumr_to_itr, u32u32zip_to_itr, 37 | collect_u32 38 | ) 39 | 40 | /* Implement some specific iterplus utilities for NumType and string iterables */ 41 | /* Implement `take` functionality for NumType iterables */ 42 | define_itertake_func(NumType, numtypetk_to_itr) 43 | /* Implement `take` functionality for string iterables */ 44 | define_itertake_func(string, strtk_to_itr) 45 | /* Implement `filter` functionality for string iterables */ 46 | define_iterfilt_func(string, strfilt_to_itr) 47 | /* Implement `filter_map` functionality for string -> uint32_t, and string -> NumType */ 48 | define_iterfiltmap_func(string, uint32_t, stru32filtmap_to_itr) 49 | define_iterfiltmap_func(string, NumType, strnumtypefiltmap_to_itr) 50 | /* Implement `fold` functionality for string -> string, and string -> uint32_t */ 51 | define_iterfold_func(string, string, fold_str_str) 52 | define_iterfold_func(string, uint32_t, fold_str_u32) 53 | 54 | /* Extend `Iterplus(uint32_t)` map support to uint32_t -> NumType */ 55 | define_itermap_func(uint32_t, NumType, u32numtypemap_to_itr) 56 | -------------------------------------------------------------------------------- /tests/impls.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Declarations of utilities, structs, and functions for which iterator and 4 | * iterplus utilities have been implemented. 5 | */ 6 | 7 | #ifndef LIB_ITPLUS_IMPL_H 8 | #define LIB_ITPLUS_IMPL_H 9 | 10 | #include "common.h" 11 | 12 | #include 13 | 14 | typedef struct fibonacci 15 | { 16 | uint32_t curr; 17 | uint32_t next; 18 | } Fibonacci; 19 | 20 | typedef struct 21 | { 22 | size_t i; 23 | size_t const size; 24 | /* Array of string literals */ 25 | string const* const arr; 26 | } StrArrIter; 27 | 28 | /* Turn a pointer to a `Fibonacci` struct to an iterable */ 29 | Iterable(uint32_t) prep_fib_itr(Fibonacci* self); 30 | 31 | /* Turn a pointer to a `StrArrIter` struct to an iterable */ 32 | Iterable(string) prep_strarr_itr(StrArrIter* self); 33 | 34 | /* Create an infinite `Iterable` representing the fibonacci sequence */ 35 | #define get_fibitr() prep_fib_itr(&(Fibonacci){.curr = 0, .next = 1}) 36 | 37 | /* Convert an array of string literals into an `Iterable` */ 38 | #define strarr_to_iter(srcarr, len) prep_strarr_itr(&(StrArrIter){.i = 0, .size = (len), .arr = (srcarr)}) 39 | 40 | /* Declaration of the iterplus utilities implemented for uint32_t iterables */ 41 | DeclIterplus(uint32_t, u32tk_to_itr, u32drp_to_itr, u32u32map_to_itr, u32filt_to_itr, reduce_u32, fold_u32_u32, 42 | u32u32filtmap_to_itr, u32chn_to_itr, u32tkwhl_to_itr, u32drpwhl_to_itr, u32enumr_to_itr, u32u32zip_to_itr, 43 | collect_u32); 44 | 45 | /* Declarations of some specific iterplus utilities defined for string and NumType iterables */ 46 | Iterable(NumType) numtypetk_to_itr(IterTake(NumType) * x); 47 | Iterable(string) strtk_to_itr(IterTake(string) * x); 48 | Iterable(string) strfilt_to_itr(IterFilt(string) * x); 49 | Iterable(uint32_t) stru32filtmap_to_itr(IterFiltMap(string, uint32_t) * x); 50 | Iterable(NumType) strnumtypefiltmap_to_itr(IterFiltMap(string, NumType) * x); 51 | string fold_str_str(Iterable(string) it, string init, string (*f)(string acc, string x)); 52 | uint32_t fold_str_u32(Iterable(string) it, uint32_t init, uint32_t (*f)(uint32_t acc, string x)); 53 | 54 | /* Declaration for `Iterplus(uint32_t)` map support to uint32_t -> NumType */ 55 | Iterable(NumType) u32numtypemap_to_itr(IterMap(uint32_t, NumType) * x); 56 | 57 | #endif /* !LIB_ITPLUS_IMPL_H */ 58 | -------------------------------------------------------------------------------- /tests/preproc_map.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Macro to map a given function/macro over __VA_ARGS__ - supports upto 8 arguments. 4 | * 5 | * https://stackoverflow.com/questions/1872220/is-it-possible-to-iterate-over-arguments-in-variadic-macros 6 | */ 7 | 8 | #ifndef LIB_ITPLUS_PREPROC_MAP_H 9 | #define LIB_ITPLUS_PREPROC_MAP_H 10 | 11 | #include "itplus_macro_utils.h" 12 | 13 | #define MAP_1(f, x) f(x) 14 | #define MAP_2(f, x, ...) f(x), MAP_1(f, __VA_ARGS__) 15 | #define MAP_3(f, x, ...) f(x), MAP_2(f, __VA_ARGS__) 16 | #define MAP_4(f, x, ...) f(x), MAP_3(f, __VA_ARGS__) 17 | #define MAP_5(f, x, ...) f(x), MAP_4(f, __VA_ARGS__) 18 | #define MAP_6(f, x, ...) f(x), MAP_5(f, __VA_ARGS__) 19 | #define MAP_7(f, x, ...) f(x), MAP_6(f, __VA_ARGS__) 20 | #define MAP_8(f, x, ...) f(x), MAP_7(f, __VA_ARGS__) 21 | 22 | #define MAP_RSEQ_N() 8, 7, 6, 5, 4, 3, 2, 1, 0 23 | #define MAP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, N, ...) N 24 | #define MAP_NARG_(...) MAP_ARG_N(__VA_ARGS__) 25 | #define MAP_NARG(...) MAP_NARG_(__VA_ARGS__, MAP_RSEQ_N()) 26 | 27 | #define MAP_(N, f, ...) ITPL_CONCAT(MAP_, N)(f, __VA_ARGS__) 28 | #define MAP(f, ...) MAP_(MAP_NARG(__VA_ARGS__), f, __VA_ARGS__) 29 | 30 | #endif /* !LIB_ITPLUS_PREPROC_MAP_H */ 31 | --------------------------------------------------------------------------------