my @highlights = @highlights_man;
 my $blankline = $blankline_man;
 my $modulename = "Kernel API";
-my $function_only = 0;
+
+use constant {
+    OUTPUT_ALL          => 0, # output all symbols and doc sections
+    OUTPUT_INCLUDE      => 1, # output only specified symbols
+    OUTPUT_EXCLUDE      => 2, # output everything except specified symbols
+    OUTPUT_EXPORTED     => 3, # output exported symbols
+    OUTPUT_INTERNAL     => 4, # output non-exported symbols
+};
+my $output_selection = OUTPUT_ALL;
 my $show_not_found = 0;
 
 my @build_time;
     } elsif ($cmd eq "-module") { # not needed for XML, inherits from calling document
        $modulename = shift @ARGV;
     } elsif ($cmd eq "-function") { # to only output specific functions
-       $function_only = 1;
+       $output_selection = OUTPUT_INCLUDE;
        $function = shift @ARGV;
        $function_table{$function} = 1;
-    } elsif ($cmd eq "-nofunction") { # to only output specific functions
-       $function_only = 2;
+    } elsif ($cmd eq "-nofunction") { # output all except specific functions
+       $output_selection = OUTPUT_EXCLUDE;
        $function = shift @ARGV;
        $function_table{$function} = 1;
     } elsif ($cmd eq "-export") { # only exported symbols
-       $function_only = 3;
+       $output_selection = OUTPUT_EXPORTED;
        %function_table = ()
     } elsif ($cmd eq "-internal") { # only non-exported symbols
-       $function_only = 4;
+       $output_selection = OUTPUT_INTERNAL;
        %function_table = ()
     } elsif ($cmd eq "-v") {
        $verbose = 1;
         return;
     }
 
-    if (($function_only == 0) ||
-       ( $function_only == 1 && defined($function_table{$name})) ||
-       ( $function_only == 2 && !defined($function_table{$name})))
+    if (($output_selection == OUTPUT_ALL) ||
+       ($output_selection == OUTPUT_INCLUDE &&
+        defined($function_table{$name})) ||
+       ($output_selection == OUTPUT_EXCLUDE &&
+        !defined($function_table{$name})))
     {
        dump_section($file, $name, $contents);
        output_blockhead({'sectionlist' => \@sectionlist,
                          'sections' => \%sections,
                          'module' => $modulename,
-                         'content-only' => ($function_only != 0), });
+                         'content-only' => ($output_selection != OUTPUT_ALL), });
     }
 }
 
     my $name = shift;
     my $functype = shift;
     my $func = "output_${functype}_$output_mode";
-    if (($function_only==0) ||
-       ( ($function_only == 1 || $function_only == 3) &&
-         defined($function_table{$name})) ||
-       ( ($function_only == 2 || $function_only == 4) &&
-         !($functype eq "function" && defined($function_table{$name}))))
+    if (($output_selection == OUTPUT_ALL) ||
+       (($output_selection == OUTPUT_INCLUDE ||
+         $output_selection == OUTPUT_EXPORTED) &&
+        defined($function_table{$name})) ||
+       (($output_selection == OUTPUT_EXCLUDE ||
+         $output_selection == OUTPUT_INTERNAL) &&
+        !($functype eq "function" && defined($function_table{$name}))))
     {
        &$func(@_);
        $section_counter++;
     }
 
     # two passes for -export and -internal
-    if ($function_only == 3 || $function_only == 4) {
+    if ($output_selection == OUTPUT_EXPORTED ||
+       $output_selection == OUTPUT_INTERNAL) {
        while (<IN>) {
            if (/$export_symbol/o) {
                $function_table{$2} = 1;
     }
     if ($initial_section_counter == $section_counter) {
        print STDERR "${file}:1: warning: no structured comments found\n";
-       if (($function_only == 1) && ($show_not_found == 1)) {
+       if (($output_selection == OUTPUT_INCLUDE) && ($show_not_found == 1)) {
            print STDERR "    Was looking for '$_'.\n" for keys %function_table;
        }
        if ($output_mode eq "xml") {