/* This file is part of Mailfromd. -*- C -*-
   Copyright (C) 2010-2025 Sergey Poznyakoff

   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, 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/>. */

MF_BEGIN_OUTPUT

struct builtin_module {
	char *name;
	void (*init)(void);
	int trace;
};

struct builtin_const_trans
{
	int const_mfl;
	int const_c;
};

int _builtin_const_to_c(struct builtin_const_trans *tab, size_t count,
			int num, int *ret);
int _builtin_c_to_const(struct builtin_const_trans *tab, size_t count,
			int num, int *ret);
int _builtin_const_to_bitmap(struct builtin_const_trans *tab, size_t count,
			     int num);

MF_DEFINES

#ifdef DEFINE_BUILTIN_MODULE
MF_BUILTIN_DECLS
MF_BUILTIN_MODULES
#endif

extern int provide_callout;

void builtin_setup(void);
void builtin_set_module_trace(const char *name, size_t len, int val);
void builtin_set_all_module_trace(int val);
int builtin_module_trace(unsigned idx);
void _builtin_stream_cleanup(void *);
mu_message_t _builtin_mu_stream_to_message(mu_stream_t str,
					   eval_environ_t env,
				           const char *func_name);
