├── .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 |
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 |
44 | c-iterplus
45 | 1.0.0
46 |
47 | Type safe, Generic, Lazy abstractions for working with c-iterator
48 | |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
64 |
65 |
66 |
73 |
74 |
75 |
85 |
90 |
91 |
92 |
96 |
97 |
98 |
99 |
100 |
103 |
104 |
105 |
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 |
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 |
44 | c-iterplus
45 | 1.0.0
46 |
47 | Type safe, Generic, Lazy abstractions for working with c-iterator
48 | |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
64 |
65 |
66 |
73 |
74 |
75 |
85 |
90 |
91 |
92 |
96 |
97 |
98 |
99 |
100 |
103 |
104 |
105 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
75 |
--------------------------------------------------------------------------------
/docs/search/nomatches.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
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 |
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 |
--------------------------------------------------------------------------------