timemory 3.3.0
Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
functional.hpp
Go to the documentation of this file.
1// MIT License
2//
3// Copyright (c) 2020, The Regents of the University of California,
4// through Lawrence Berkeley National Laboratory (subject to receipt of any
5// required approvals from the U.S. Dept. of Energy). All rights reserved.
6//
7// Permission is hereby granted, free of charge, to any person obtaining a copy
8// of this software and associated documentation files (the "Software"), to deal
9// in the Software without restriction, including without limitation the rights
10// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11// 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
15// copies or substantial portions of the Software.
16//
17// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23// SOFTWARE.
24
25#pragma once
26
27#include "timemory/api.hpp"
35
36#include <type_traits>
37
38namespace tim
39{
40namespace component
41{
42struct base_state;
43}
44//
45namespace invoke
46{
47//
48template <typename... Args>
49TIMEMORY_INLINE void
50print(std::ostream& os, Args&&... args);
51//
52template <typename... Args>
53TIMEMORY_INLINE void
54print(std::ostream& os, const std::string& delim, Args&&... args);
55//
56//--------------------------------------------------------------------------------------//
57// invoke
58//--------------------------------------------------------------------------------------//
59//
60template <template <typename...> class OpT, typename ApiT,
61 template <typename...> class TupleT, typename... Tp, typename... Args>
62TIMEMORY_INLINE void
63invoke(TupleT<Tp...>& obj, Args&&... args);
64//
65template <template <typename...> class OpT, template <typename...> class TupleT,
66 typename... Tp, typename... Args>
67TIMEMORY_INLINE void
68invoke(TupleT<Tp...>& obj, Args&&... args);
69//
70template <template <typename...> class OpT, typename ApiT,
71 template <typename...> class TupleT, typename... Tp, typename... Args>
72TIMEMORY_INLINE void
73invoke(TupleT<Tp&...>&& obj, Args&&... args);
74//
75template <template <typename...> class OpT, template <typename...> class TupleT,
76 typename... Tp, typename... Args>
77TIMEMORY_INLINE void
78invoke(TupleT<Tp&...>&& obj, Args&&... args);
79//
80template <template <typename...> class OpT, typename ApiT = TIMEMORY_API, typename... Up,
81 template <typename...> class TupleT, typename... Tp, typename... Args>
82TIMEMORY_INLINE void
83invoke(mpl::piecewise_select<Up...>, TupleT<Tp...>& obj, Args&&... args);
84//
85template <template <typename...> class OpT, typename ApiT = TIMEMORY_API, typename... Up,
86 template <typename...> class TupleT, typename... Tp, typename... Args>
87TIMEMORY_INLINE void
88invoke(mpl::piecewise_select<Up...>, TupleT<Tp&...>& obj, Args&&... args);
89//
90//--------------------------------------------------------------------------------------//
91// construct
92//--------------------------------------------------------------------------------------//
93//
94template <typename TupleT, typename ApiT, typename... Args>
95TIMEMORY_INLINE auto
96construct(Args&&... args);
97//
98template <typename TupleT, typename... Args>
99TIMEMORY_INLINE auto
100construct(Args&&... args);
101//
102//--------------------------------------------------------------------------------------//
103// destroy
104//--------------------------------------------------------------------------------------//
105//
106template <typename ApiT, template <typename...> class TupleT, typename... Tp>
107TIMEMORY_INLINE auto
108destroy(TupleT<Tp...>& obj);
109//
110template <template <typename...> class TupleT, typename... Tp>
111TIMEMORY_INLINE auto
112destroy(TupleT<Tp...>& obj);
113//
114template <typename ApiT, template <typename...> class TupleT, typename... Tp>
115TIMEMORY_INLINE auto
116destroy(TupleT<Tp&...>&& obj);
117//
118template <template <typename...> class TupleT, typename... Tp>
119TIMEMORY_INLINE auto
120destroy(TupleT<Tp&...>&& obj);
121//
122//--------------------------------------------------------------------------------------//
123// start
124//--------------------------------------------------------------------------------------//
125//
126template <typename ApiT, template <typename...> class TupleT, typename... Tp,
127 typename... Args>
128TIMEMORY_INLINE void
129start(TupleT<Tp...>& obj, Args&&... args);
130//
131template <template <typename...> class TupleT, typename... Tp, typename... Args>
132TIMEMORY_INLINE void
133start(TupleT<Tp...>& obj, Args&&... args);
134//
135template <typename ApiT, template <typename...> class TupleT, typename... Tp,
136 typename... Args>
137TIMEMORY_INLINE void
138start(TupleT<Tp&...>&& obj, Args&&... args);
139//
140template <template <typename...> class TupleT, typename... Tp, typename... Args>
141TIMEMORY_INLINE void
142start(TupleT<Tp&...>&& obj, Args&&... args);
143//
144//--------------------------------------------------------------------------------------//
145// stop
146//--------------------------------------------------------------------------------------//
147//
148template <typename ApiT, template <typename...> class TupleT, typename... Tp,
149 typename... Args>
150TIMEMORY_INLINE void
151stop(TupleT<Tp...>& obj, Args&&... args);
152//
153template <template <typename...> class TupleT, typename... Tp, typename... Args>
154TIMEMORY_INLINE void
155stop(TupleT<Tp...>& obj, Args&&... args);
156//
157template <typename ApiT, template <typename...> class TupleT, typename... Tp,
158 typename... Args>
159TIMEMORY_INLINE void
160stop(TupleT<Tp&...>&& obj, Args&&... args);
161//
162template <template <typename...> class TupleT, typename... Tp, typename... Args>
163TIMEMORY_INLINE void
164stop(TupleT<Tp&...>&& obj, Args&&... args);
165//
166//--------------------------------------------------------------------------------------//
167// mark
168//--------------------------------------------------------------------------------------//
169//
170template <typename ApiT, template <typename...> class TupleT, typename... Tp,
171 typename... Args>
172TIMEMORY_INLINE void
173mark(TupleT<Tp...>& obj, Args&&... args);
174//
175template <template <typename...> class TupleT, typename... Tp, typename... Args>
176TIMEMORY_INLINE void
177mark(TupleT<Tp...>& obj, Args&&... args);
178//
179template <typename ApiT, template <typename...> class TupleT, typename... Tp,
180 typename... Args>
181TIMEMORY_INLINE void
182mark(TupleT<Tp&...>&& obj, Args&&... args);
183//
184template <template <typename...> class TupleT, typename... Tp, typename... Args>
185TIMEMORY_INLINE void
186mark(TupleT<Tp&...>&& obj, Args&&... args);
187//
188//--------------------------------------------------------------------------------------//
189// mark_begin
190//--------------------------------------------------------------------------------------//
191//
192template <typename ApiT, template <typename...> class TupleT, typename... Tp,
193 typename... Args>
194TIMEMORY_INLINE void
195mark_begin(TupleT<Tp...>& obj, Args&&... args);
196//
197template <template <typename...> class TupleT, typename... Tp, typename... Args>
198TIMEMORY_INLINE void
199mark_begin(TupleT<Tp...>& obj, Args&&... args);
200//
201template <typename ApiT, template <typename...> class TupleT, typename... Tp,
202 typename... Args>
203TIMEMORY_INLINE void
204mark_begin(TupleT<Tp&...>&& obj, Args&&... args);
205//
206template <template <typename...> class TupleT, typename... Tp, typename... Args>
207TIMEMORY_INLINE void
208mark_begin(TupleT<Tp&...>&& obj, Args&&... args);
209//
210//--------------------------------------------------------------------------------------//
211// mark_end
212//--------------------------------------------------------------------------------------//
213//
214template <typename ApiT, template <typename...> class TupleT, typename... Tp,
215 typename... Args>
216TIMEMORY_INLINE void
217mark_end(TupleT<Tp...>& obj, Args&&... args);
218//
219template <template <typename...> class TupleT, typename... Tp, typename... Args>
220TIMEMORY_INLINE void
221mark_end(TupleT<Tp...>& obj, Args&&... args);
222//
223template <typename ApiT, template <typename...> class TupleT, typename... Tp,
224 typename... Args>
225TIMEMORY_INLINE void
226mark_end(TupleT<Tp&...>&& obj, Args&&... args);
227//
228template <template <typename...> class TupleT, typename... Tp, typename... Args>
229TIMEMORY_INLINE void
230mark_end(TupleT<Tp&...>&& obj, Args&&... args);
231//
232//--------------------------------------------------------------------------------------//
233// store
234//--------------------------------------------------------------------------------------//
235//
236template <typename ApiT, template <typename...> class TupleT, typename... Tp,
237 typename... Args>
238TIMEMORY_INLINE void
239store(TupleT<Tp...>& obj, Args&&... args);
240//
241template <template <typename...> class TupleT, typename... Tp, typename... Args>
242TIMEMORY_INLINE void
243store(TupleT<Tp...>& obj, Args&&... args);
244//
245template <typename ApiT, template <typename...> class TupleT, typename... Tp,
246 typename... Args>
247TIMEMORY_INLINE void
248store(TupleT<Tp&...>&& obj, Args&&... args);
249//
250template <template <typename...> class TupleT, typename... Tp, typename... Args>
251TIMEMORY_INLINE void
252store(TupleT<Tp&...>&& obj, Args&&... args);
253//
254//--------------------------------------------------------------------------------------//
255// reset
256//--------------------------------------------------------------------------------------//
257//
258template <typename ApiT, template <typename...> class TupleT, typename... Tp,
259 typename... Args>
260TIMEMORY_INLINE void
261reset(TupleT<Tp...>& obj, Args&&... args);
262//
263template <template <typename...> class TupleT, typename... Tp, typename... Args>
264TIMEMORY_INLINE void
265reset(TupleT<Tp...>& obj, Args&&... args);
266//
267template <typename ApiT, template <typename...> class TupleT, typename... Tp,
268 typename... Args>
269TIMEMORY_INLINE void
270reset(TupleT<Tp&...>&& obj, Args&&... args);
271//
272template <template <typename...> class TupleT, typename... Tp, typename... Args>
273TIMEMORY_INLINE void
274reset(TupleT<Tp&...>&& obj, Args&&... args);
275//
276//--------------------------------------------------------------------------------------//
277// record
278//--------------------------------------------------------------------------------------//
279//
280template <typename ApiT, template <typename...> class TupleT, typename... Tp,
281 typename... Args>
282TIMEMORY_INLINE void
283record(TupleT<Tp...>& obj, Args&&... args);
284//
285template <template <typename...> class TupleT, typename... Tp, typename... Args>
286TIMEMORY_INLINE void
287record(TupleT<Tp...>& obj, Args&&... args);
288//
289template <typename ApiT, template <typename...> class TupleT, typename... Tp,
290 typename... Args>
291TIMEMORY_INLINE void
292record(TupleT<Tp&...>&& obj, Args&&... args);
293//
294template <template <typename...> class TupleT, typename... Tp, typename... Args>
295TIMEMORY_INLINE void
296record(TupleT<Tp&...>&& obj, Args&&... args);
297//
298//--------------------------------------------------------------------------------------//
299// measure
300//--------------------------------------------------------------------------------------//
301//
302template <typename ApiT, template <typename...> class TupleT, typename... Tp,
303 typename... Args>
304TIMEMORY_INLINE void
305measure(TupleT<Tp...>& obj, Args&&... args);
306//
307template <template <typename...> class TupleT, typename... Tp, typename... Args>
308TIMEMORY_INLINE void
309measure(TupleT<Tp...>& obj, Args&&... args);
310//
311template <typename ApiT, template <typename...> class TupleT, typename... Tp,
312 typename... Args>
313TIMEMORY_INLINE void
314measure(TupleT<Tp&...>&& obj, Args&&... args);
315//
316template <template <typename...> class TupleT, typename... Tp, typename... Args>
317TIMEMORY_INLINE void
318measure(TupleT<Tp&...>&& obj, Args&&... args);
319//
320//--------------------------------------------------------------------------------------//
321// push
322//--------------------------------------------------------------------------------------//
323//
324template <typename ApiT, template <typename...> class TupleT, typename... Tp,
325 typename... Args>
326TIMEMORY_INLINE void
327push(TupleT<Tp...>& obj, Args&&... args);
328//
329template <template <typename...> class TupleT, typename... Tp, typename... Args>
330TIMEMORY_INLINE void
331push(TupleT<Tp...>& obj, Args&&... args);
332//
333template <typename ApiT, template <typename...> class TupleT, typename... Tp,
334 typename... Args>
335TIMEMORY_INLINE void
336push(TupleT<Tp&...>&& obj, Args&&... args);
337//
338template <template <typename...> class TupleT, typename... Tp, typename... Args>
339TIMEMORY_INLINE void
340push(TupleT<Tp&...>&& obj, Args&&... args);
341//
342//--------------------------------------------------------------------------------------//
343// pop
344//--------------------------------------------------------------------------------------//
345//
346template <typename ApiT, template <typename...> class TupleT, typename... Tp,
347 typename... Args>
348TIMEMORY_INLINE void
349pop(TupleT<Tp...>& obj, Args&&... args);
350//
351template <template <typename...> class TupleT, typename... Tp, typename... Args>
352TIMEMORY_INLINE void
353pop(TupleT<Tp...>& obj, Args&&... args);
354//
355template <typename ApiT, template <typename...> class TupleT, typename... Tp,
356 typename... Args>
357TIMEMORY_INLINE void
358pop(TupleT<Tp&...>&& obj, Args&&... args);
359//
360template <template <typename...> class TupleT, typename... Tp, typename... Args>
361TIMEMORY_INLINE void
362pop(TupleT<Tp&...>&& obj, Args&&... args);
363//
364//--------------------------------------------------------------------------------------//
365// set_prefix
366//--------------------------------------------------------------------------------------//
367//
368template <typename ApiT, template <typename...> class TupleT, typename... Tp,
369 typename... Args>
370TIMEMORY_INLINE void
371set_prefix(TupleT<Tp...>& obj, Args&&... args);
372//
373template <template <typename...> class TupleT, typename... Tp, typename... Args>
374TIMEMORY_INLINE void
375set_prefix(TupleT<Tp...>& obj, Args&&... args);
376//
377template <typename ApiT, template <typename...> class TupleT, typename... Tp,
378 typename... Args>
379TIMEMORY_INLINE void
380set_prefix(TupleT<Tp&...>&& obj, Args&&... args);
381//
382template <template <typename...> class TupleT, typename... Tp, typename... Args>
383TIMEMORY_INLINE void
384set_prefix(TupleT<Tp&...>&& obj, Args&&... args);
385//
386//--------------------------------------------------------------------------------------//
387// set_scope
388//--------------------------------------------------------------------------------------//
389//
390template <typename ApiT, template <typename...> class TupleT, typename... Tp,
391 typename... Args>
392TIMEMORY_INLINE void
393set_scope(TupleT<Tp...>& obj, Args&&... args);
394//
395template <template <typename...> class TupleT, typename... Tp, typename... Args>
396TIMEMORY_INLINE void
397set_scope(TupleT<Tp...>& obj, Args&&... args);
398//
399template <typename ApiT, template <typename...> class TupleT, typename... Tp,
400 typename... Args>
401TIMEMORY_INLINE void
402set_scope(TupleT<Tp&...>&& obj, Args&&... args);
403//
404template <template <typename...> class TupleT, typename... Tp, typename... Args>
405TIMEMORY_INLINE void
406set_scope(TupleT<Tp&...>&& obj, Args&&... args);
407//
408//--------------------------------------------------------------------------------------//
409// set_state
410//--------------------------------------------------------------------------------------//
411//
412template <typename ApiT = TIMEMORY_API, template <typename...> class TupleT,
413 typename... Tp, typename... Args>
414TIMEMORY_INLINE void
415set_state(TupleT<Tp...>& obj, Args&&...);
416//
417template <typename ApiT = TIMEMORY_API, template <typename...> class TupleT,
418 typename... Tp, typename... Args>
419TIMEMORY_INLINE void
420set_state(TupleT<Tp&...>&& obj, Args&&...);
421//
422//--------------------------------------------------------------------------------------//
423// assemble
424//--------------------------------------------------------------------------------------//
425//
426template <typename ApiT, template <typename...> class TupleT, typename... Tp,
427 typename... Args>
428TIMEMORY_INLINE void
429assemble(TupleT<Tp...>& obj, Args&&... args);
430//
431template <template <typename...> class TupleT, typename... Tp, typename... Args>
432TIMEMORY_INLINE void
433assemble(TupleT<Tp...>& obj, Args&&... args);
434//
435template <typename ApiT, template <typename...> class TupleT, typename... Tp,
436 typename... Args>
437TIMEMORY_INLINE void
438assemble(TupleT<Tp&...>&& obj, Args&&... args);
439//
440template <template <typename...> class TupleT, typename... Tp, typename... Args>
441TIMEMORY_INLINE void
442assemble(TupleT<Tp&...>&& obj, Args&&... args);
443//
444//--------------------------------------------------------------------------------------//
445// derive
446//--------------------------------------------------------------------------------------//
447//
448template <typename ApiT, template <typename...> class TupleT, typename... Tp,
449 typename... Args>
450TIMEMORY_INLINE void
451derive(TupleT<Tp...>& obj, Args&&... args);
452//
453template <template <typename...> class TupleT, typename... Tp, typename... Args>
454TIMEMORY_INLINE void
455derive(TupleT<Tp...>& obj, Args&&... args);
456//
457template <typename ApiT, template <typename...> class TupleT, typename... Tp,
458 typename... Args>
459TIMEMORY_INLINE void
460derive(TupleT<Tp&...>&& obj, Args&&... args);
461//
462template <template <typename...> class TupleT, typename... Tp, typename... Args>
463TIMEMORY_INLINE void
464derive(TupleT<Tp&...>&& obj, Args&&... args);
465//
466//--------------------------------------------------------------------------------------//
467// audit
468//--------------------------------------------------------------------------------------//
469//
470template <typename ApiT, template <typename...> class TupleT, typename... Tp,
471 typename... Args>
472TIMEMORY_INLINE void
473audit(TupleT<Tp...>& obj, Args&&... args);
474//
475template <template <typename...> class TupleT, typename... Tp, typename... Args>
476TIMEMORY_INLINE void
477audit(TupleT<Tp...>& obj, Args&&... args);
478//
479template <typename ApiT, template <typename...> class TupleT, typename... Tp,
480 typename... Args>
481TIMEMORY_INLINE void
482audit(TupleT<Tp&...>&& obj, Args&&... args);
483//
484template <template <typename...> class TupleT, typename... Tp, typename... Args>
485TIMEMORY_INLINE void
486audit(TupleT<Tp&...>&& obj, Args&&... args);
487//
488//--------------------------------------------------------------------------------------//
489// add_secondary
490//--------------------------------------------------------------------------------------//
491//
492template <typename ApiT, template <typename...> class TupleT, typename... Tp,
493 typename... Args>
494TIMEMORY_INLINE void
495add_secondary(TupleT<Tp...>& obj, Args&&... args);
496//
497template <template <typename...> class TupleT, typename... Tp, typename... Args>
498TIMEMORY_INLINE void
499add_secondary(TupleT<Tp...>& obj, Args&&... args);
500//
501template <typename ApiT, template <typename...> class TupleT, typename... Tp,
502 typename... Args>
503TIMEMORY_INLINE void
504add_secondary(TupleT<Tp&...>&& obj, Args&&... args);
505//
506template <template <typename...> class TupleT, typename... Tp, typename... Args>
507TIMEMORY_INLINE void
508add_secondary(TupleT<Tp&...>&& obj, Args&&... args);
509//
510//--------------------------------------------------------------------------------------//
511// get
512//--------------------------------------------------------------------------------------//
513//
514template <typename ApiT, template <typename...> class TupleT, typename... Tp,
515 typename... Args>
516TIMEMORY_INLINE auto
517get(TupleT<Tp...>& obj, Args&&... args);
518//
519template <template <typename...> class TupleT, typename... Tp, typename... Args>
520TIMEMORY_INLINE auto
521get(TupleT<Tp...>& obj, Args&&... args);
522//
523template <typename ApiT, template <typename...> class TupleT, typename... Tp,
524 typename... Args>
525TIMEMORY_INLINE auto
526get(TupleT<Tp&...>&& obj, Args&&... args);
527//
528template <template <typename...> class TupleT, typename... Tp, typename... Args>
529TIMEMORY_INLINE auto
530get(TupleT<Tp&...>&& obj, Args&&... args);
531//
532template <typename ApiT, template <typename...> class TupleT, typename... Tp>
533TIMEMORY_INLINE auto
534get(TupleT<Tp...>& obj, void*& _ptr, size_t _hash);
535//
536template <template <typename...> class TupleT, typename... Tp>
537TIMEMORY_INLINE auto
538get(TupleT<Tp...>& obj, void*& _ptr, size_t _hash);
539//
540//--------------------------------------------------------------------------------------//
541// get_labeled
542//--------------------------------------------------------------------------------------//
543//
544template <typename ApiT, template <typename...> class TupleT, typename... Tp,
545 typename... Args>
546TIMEMORY_INLINE auto
547get_labeled(TupleT<Tp...>& obj, Args&&... args);
548//
549template <template <typename...> class TupleT, typename... Tp, typename... Args>
550TIMEMORY_INLINE auto
551get_labeled(TupleT<Tp...>& obj, Args&&... args);
552//
553template <typename ApiT, template <typename...> class TupleT, typename... Tp,
554 typename... Args>
555TIMEMORY_INLINE auto
556get_labeled(TupleT<Tp&...>&& obj, Args&&... args);
557//
558template <template <typename...> class TupleT, typename... Tp, typename... Args>
559TIMEMORY_INLINE auto
560get_labeled(TupleT<Tp&...>&& obj, Args&&... args);
561//
562//--------------------------------------------------------------------------------------//
563// get_labeled
564//--------------------------------------------------------------------------------------//
565//
566template <typename ApiT, typename ArchiveT, template <typename...> class TupleT,
567 typename... Tp>
568TIMEMORY_INLINE auto
569serialize(ArchiveT& ar, TupleT<Tp...>& obj);
570//
571template <typename ArchiveT, template <typename...> class TupleT, typename... Tp>
572TIMEMORY_INLINE auto
573serialize(ArchiveT& ar, TupleT<Tp...>& obj);
574//
575template <typename ApiT, typename ArchiveT, template <typename...> class TupleT,
576 typename... Tp>
577TIMEMORY_INLINE auto
578serialize(ArchiveT& ar, TupleT<Tp&...>&& obj);
579//
580template <typename ArchiveT, template <typename...> class TupleT, typename... Tp>
581TIMEMORY_INLINE auto
582serialize(ArchiveT& ar, TupleT<Tp&...>&& obj);
583//
584//--------------------------------------------------------------------------------------//
585// get_cache
586//--------------------------------------------------------------------------------------//
587//
588template <typename... BundleT>
589TIMEMORY_INLINE auto
590get_cache();
591//
592//--------------------------------------------------------------------------------------//
593//
594namespace disjoint
595{
596//
597template <template <typename...> class TupleT, typename... Tp, typename... Args>
598void
599start(TupleT<Tp...>&& obj, Args&&... args);
600//
601template <template <typename...> class TupleT, typename... Tp, typename... Args>
602void
603stop(TupleT<Tp...>&& obj, Args&&... args);
604//
605template <template <typename...> class TupleT, typename... Tp, typename... Args>
606void
607mark(TupleT<Tp...>&& obj, Args&&... args);
608//
609template <template <typename...> class TupleT, typename... Tp, typename... Args>
610void
611mark_begin(TupleT<Tp...>&& obj, Args&&... args);
612//
613template <template <typename...> class TupleT, typename... Tp, typename... Args>
614void
615mark_end(TupleT<Tp...>&& obj, Args&&... args);
616//
617template <template <typename...> class TupleT, typename... Tp, typename... Args>
618void
619store(TupleT<Tp...>&& obj, Args&&... args);
620//
621template <template <typename...> class TupleT, typename... Tp, typename... Args>
622void
623reset(TupleT<Tp...>&& obj, Args&&... args);
624//
625template <template <typename...> class TupleT, typename... Tp, typename... Args>
626void
627record(TupleT<Tp...>&& obj, Args&&... args);
628//
629template <template <typename...> class TupleT, typename... Tp, typename... Args>
630void
631measure(TupleT<Tp...>&& obj, Args&&... args);
632//
633template <template <typename...> class TupleT, typename... Tp, typename... Args>
634void
635push(TupleT<Tp...>&& obj, Args&&... args);
636//
637template <template <typename...> class TupleT, typename... Tp, typename... Args>
638void
639pop(TupleT<Tp...>&& obj, Args&&... args);
640//
641template <template <typename...> class TupleT, typename... Tp, typename... Args>
642void
643set_prefix(TupleT<Tp...>&& obj, Args&&... args);
644//
645template <template <typename...> class TupleT, typename... Tp, typename... Args>
646void
647set_scope(TupleT<Tp...>&& obj, Args&&... args);
648//
649template <template <typename...> class TupleT, typename... Tp, typename... Args>
650void
651assemble(TupleT<Tp...>&& obj, Args&&... args);
652//
653template <template <typename...> class TupleT, typename... Tp, typename... Args>
654void
655derive(TupleT<Tp...>&& obj, Args&&... args);
656//
657template <template <typename...> class TupleT, typename... Tp, typename... Args>
658void
659audit(TupleT<Tp...>&& obj, Args&&... args);
660//
661template <template <typename...> class TupleT, typename... Tp, typename... Args>
662void
663add_secondary(TupleT<Tp...>&& obj, Args&&... args);
664//
665} // namespace disjoint
666} // namespace invoke
667} // namespace tim
668
Definition for various functions for cache in operations.
Definition for various functions for construct in operations.
Definition for various functions for generic in operations.
void add_secondary(TupleT< Tp... > &&obj, Args &&... args)
void mark_begin(TupleT< Tp... > &&obj, Args &&... args)
void measure(TupleT< Tp... > &&obj, Args &&... args)
void set_scope(TupleT< Tp... > &&obj, Args &&... args)
void audit(TupleT< Tp... > &&obj, Args &&... args)
void pop(TupleT< Tp... > &&obj, Args &&... args)
void push(TupleT< Tp... > &&obj, Args &&... args)
void reset(TupleT< Tp... > &&obj, Args &&... args)
void derive(TupleT< Tp... > &&obj, Args &&... args)
void store(TupleT< Tp... > &&obj, Args &&... args)
void set_prefix(TupleT< Tp... > &&obj, Args &&... args)
void start(TupleT< Tp... > &&obj, Args &&... args)
void mark(TupleT< Tp... > &&obj, Args &&... args)
void mark_end(TupleT< Tp... > &&obj, Args &&... args)
void stop(TupleT< Tp... > &&obj, Args &&... args)
void assemble(TupleT< Tp... > &&obj, Args &&... args)
void record(TupleT< Tp... > &&obj, Args &&... args)
void set_state(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:846
void set_scope(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:810
void assemble(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:868
void mark_begin(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:492
void set_prefix(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:774
void audit(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:939
void store(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:564
auto serialize(ArchiveT &ar, TupleT< Tp... > &obj)
auto construct(Args &&... args)
Definition: functional.cpp:257
void record(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:634
auto get_cache()
void add_secondary(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:974
void derive(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:904
void pop(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:739
auto get(TupleT< Tp... > &obj, Args &&... args)
void invoke(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:178
void stop(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:386
void measure(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:669
void push(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:704
void mark_end(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:528
auto destroy(TupleT< Tp... > &obj)
Definition: functional.cpp:282
auto get_labeled(TupleT< Tp... > &obj, Args &&... args)
void mark(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:457
void reset(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:599
void print(std::ostream &os, Args &&... args)
Definition: functional.cpp:159
void start(TupleT< Tp... > &obj, Args &&... args)
Definition: functional.cpp:316
Ret invoke(string_view_t &&label, Func &&func, Args &&... args)
Definition: invoker.hpp:39
Definition: kokkosp.cpp:39
tim::mpl::apply< std::string > string
Definition: macros.hpp:53
const std::string std::ostream * os