File Coverage

xsubs/configure.xs
Criterion Covered Total %
statement 27 27 100.0
branch 33 34 97.0
condition n/a
subroutine n/a
pod n/a
total 60 61 98.3


line stmt bran cond sub pod time code
1             ################################################################################
2             #
3             # Copyright (c) 2002-2020 Marcus Holland-Moritz. All rights reserved.
4             # This program is free software; you can redistribute it and/or modify
5             # it under the same terms as Perl itself.
6             #
7             ################################################################################
8              
9              
10             ################################################################################
11             #
12             # METHOD: configure
13             #
14             # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002
15             # CHANGED BY: ON:
16             #
17             ################################################################################
18              
19             SV *
20             CBC::configure(...)
21             PREINIT:
22 7721           CBC_METHOD(configure);
23              
24             CODE:
25             CT_DEBUG_METHOD;
26              
27 7721 100         if (items <= 2 && GIMME_V == G_VOID)
    100          
    100          
    50          
28             {
29 27 100         WARN_VOID_CONTEXT;
30 6072           XSRETURN_EMPTY;
31             }
32 7694 100         else if (items == 1)
33 974           RETVAL = get_configuration(aTHX_ THIS);
34 6720 100         else if (items == 2)
35 235           handle_option(aTHX_ THIS, ST(1), NULL, &RETVAL, NULL);
36 6485 100         else if (items % 2)
37             {
38 6484           int i, changes = 0, layout = 0, preproc = 0;
39             HandleOptionResult res;
40              
41 12779 100         for (i = 1; i < items; i += 2)
42             {
43 6734           handle_option(aTHX_ THIS, ST(i), ST(i+1), NULL, &res);
44 6295 100         if (res.option_modified)
45 5966           changes = 1;
46 6295 100         if (res.impacts_layout)
47 6041           layout = 1;
48 6295 100         if (res.impacts_preproc)
49 115           preproc = 1;
50             }
51              
52 6045 100         if (changes)
53             {
54 5900 100         if (layout)
55             {
56 5756           basic_types_reset(THIS->basic);
57              
58 5756 100         if (THIS->cpi.available && THIS->cpi.ready)
    100          
59 5595           reset_parse_info(&THIS->cpi);
60             }
61              
62 5900 100         if (preproc)
63             {
64 74           reset_preprocessor(&THIS->cpi);
65             }
66             }
67              
68 6045           XSRETURN(1);
69             }
70             else
71 1           Perl_croak(aTHX_ "Invalid number of arguments to %s", method);
72              
73             OUTPUT:
74             RETVAL
75