(root)/
texinfo-7.1/
tp/
Texinfo/
XS/
parsetexi/
Parsetexi.xs
/* Copyright 2014-2023 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

#include <config.h>

/* Avoid namespace conflicts. */
#define context perl_context

#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#if defined _WIN32 && !defined __CYGWIN__
# undef free
#endif
#include "XSUB.h"

#undef context

#include "ppport.h"

#include "parser.h"
#include "api.h"
#include "indices.h"
#include "input.h"

MODULE = Texinfo::Parser	PACKAGE = Texinfo::Parser

PROTOTYPES: ENABLE

# Except for file paths, strings should be UTF-8 encoded.
# In the declarations below, a comment shows that input string
# is a file path, other input strings should be UTF-8 encoded.
#
# There is no need for the parser to know the file paths
# encodings, they are never decoded/encoded but used as is
# and passed as byte strings.

# Called from Texinfo::XSLoader.pm.  The arguments are not actually used.
# file path, can be in any encoding
int
init (texinfo_uninstalled, srcdir)
     int texinfo_uninstalled
     char *srcdir = (char *)SvPVbyte_nolen($arg);

void
wipe_errors ()

# file path, can be in any encoding
int
parse_file(filename)
        char *filename = (char *)SvPVbyte_nolen($arg);

void
parse_piece(string, line_nr)
        char *string = (char *)SvPVbyte_nolen($arg);
        int line_nr

void
parse_string(string, line_nr)
        char *string = (char *)SvPVbyte_nolen($arg);
        int line_nr

void
parse_text(string, line_nr)
        char *string = (char *)SvPVbyte_nolen($arg);
        int line_nr

void
store_value (name, value)
        char *name = (char *)SvPVbyte_nolen($arg);
        char *value = (char *)SvPVbyte_nolen($arg);

void
wipe_values ()

void
reset_context_stack ()

void
init_index_commands ()

# file path, can be in any encoding
void
add_include_directory (filename)
        char *filename = (char *)SvPVbyte_nolen($arg);

HV *
build_texinfo_tree ()

AV *
build_target_elements_list ()

AV *
build_internal_xref_list ()

HV *
build_float_list ()

HV *
build_index_data ()

HV *
build_global_info ()

HV *
build_global_info2 ()

void
reset_parser (int debug_output)

void
clear_expanded_formats ()

void
add_expanded_format (format)
     char *format = (char *)SvPVbyte_nolen($arg);

void
conf_set_show_menu (int i)

void
conf_set_CPP_LINE_DIRECTIVES (int i)

void
conf_set_IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME (int i)

void
conf_set_MAX_MACRO_CALL_NESTING (int i)

void
set_DOC_ENCODING_FOR_INPUT_FILE_NAME (int i)

void
conf_set_input_file_name_encoding (value)
     char *value = (char *)SvPVbyte_nolen($arg);

void
conf_set_locale_encoding (value)
     char *value = (char *)SvPVbyte_nolen($arg);

void
conf_set_documentlanguage_override (value)
     char *value = (char *)SvPVbyte_nolen($arg);

void
set_debug (int i)

void
set_accept_internalvalue()

AV *
get_errors ()