/*
 *  Top-level include file to be used for all (internal) source files.
 *
 *  Source files should not include individual header files, as they
 *  have not been designed to be individually included.
 */

#ifndef DUK_INTERNAL_H_INCLUDED
#define DUK_INTERNAL_H_INCLUDED

/*
 *  Feature selection defines (e.g. _XOPEN_SOURCE) must appear before any
 *  system headers are included.  On the other hand, some platform detection
 *  requires header inclusion (like <endian.h>).  The current approach is
 *  that duk_features.h is included first, and it is responsible for doing
 *  feature selection before including any other headers it needs.
 *
 *  In any case, all implementation files include duk_internal.h first, so
 *  feature selection defines get set correctly.
 */

#include "duk_features.h"

/*
 *  System includes
 *
 *  This is currently the set of headers that we include on all platforms.
 *  Platform specific headers are included in duk_features.h.  The set of
 *  included files should be more precise, so perhaps these all should go
 *  to duk_features.h.
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>  /* varargs */
#include <setjmp.h>
#include <stddef.h>  /* e.g. ptrdiff_t */
#include <stdint.h>

/*
 *  Duktape includes (other than duk_features.h)
 */

#include "duk_misc.h"
#include "duk_rdtsc.h"
#include "duk_bittypes.h"
#include "duk_jmpbuf.h"
#include "duk_forwdecl.h"
#include "duk_js_bytecode.h"
#include "duk_lexer.h"
#include "duk_js_compiler.h"
#include "duk_regexp.h"
#include "duk_tval.h"
#include "duk_heaphdr.h"
#include "duktape.h"
#include "duk_api_internal.h"
#include "duk_hstring.h"
#include "duk_hobject.h"
#include "duk_hcompiledfunction.h"
#include "duk_hnativefunction.h"
#include "duk_hthread.h"
#include "duk_hbuffer.h"
#include "duk_heap.h"
#include "duk_debug.h"
#include "duk_error.h"
#include "duk_util.h"
#include "duk_unicode.h"
#include "duk_json.h"
#include "duk_js.h"
#include "duk_numconv.h"
#include "duk_builtin_protos.h"
#include "duk_strings.h"   /* autogenerated */
#include "duk_builtins.h"  /* autogenerated */

#endif  /* DUK_INTERNAL_H_INCLUDED */

