Coverage Report

Created: 2025-08-26 06:35

/src/fftw3/kernel/plan.c
Line
Count
Source
1
/*
2
 * Copyright (c) 2003, 2007-14 Matteo Frigo
3
 * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18
 *
19
 */
20
21
22
#include "kernel/ifftw.h"
23
24
/* "Plan: To bother about the best method of accomplishing an
25
   accidental result."  (Ambrose Bierce, The Enlarged Devil's
26
   Dictionary). */
27
28
plan *X(mkplan)(size_t size, const plan_adt *adt)
29
5.77k
{
30
5.77k
     plan *p = (plan *)MALLOC(size, PLANS);
31
32
5.77k
     A(adt->destroy);
33
5.77k
     p->adt = adt;
34
5.77k
     X(ops_zero)(&p->ops);
35
5.77k
     p->pcost = 0.0;
36
5.77k
     p->wakefulness = SLEEPY;
37
5.77k
     p->could_prune_now_p = 0;
38
     
39
5.77k
     return p;
40
5.77k
}
41
42
/*
43
 * destroy a plan
44
 */
45
void X(plan_destroy_internal)(plan *ego)
46
18.8k
{
47
18.8k
     if (ego) {
48
5.77k
    A(ego->wakefulness == SLEEPY);
49
5.77k
          ego->adt->destroy(ego);
50
5.77k
    X(ifree)(ego);
51
5.77k
     }
52
18.8k
}
53
54
/* dummy destroy routine for plans with no local state */
55
void X(plan_null_destroy)(plan *ego)
56
920
{
57
920
     UNUSED(ego);
58
     /* nothing */
59
920
}
60
61
void X(plan_awake)(plan *ego, enum wakefulness wakefulness)
62
2.73k
{
63
2.73k
     if (ego) {
64
2.73k
    A(((wakefulness == SLEEPY) ^ (ego->wakefulness == SLEEPY)));
65
    
66
2.73k
    ego->adt->awake(ego, wakefulness);
67
2.73k
    ego->wakefulness = wakefulness;
68
2.73k
     }
69
2.73k
}
70