/*
 * l i b . c                    -- Scheme library
 *
 * Copyright © 2000-2023 Erick Gallesio <eg@stklos.net>
 *
 *
 * 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 2 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 * USA.
 *
 *           Author: Erick Gallesio [eg@unice.fr]
 *    Creation date:  5-Jan-2000 12:17 (eg)
 */


#include "stklos.h"
#include "hash.h"


int STk_library_initialized = FALSE;  /* True when successfully initialized */

int
STk_init_library(int _UNUSED(*argc), char _UNUSED(***argv), int stack_size)
{
  void * start_stack;

  STk_get_stack_pointer(&start_stack);


  return
    STk_init_vm()                               &&
    STk_init_env()                              &&
    STk_init_symbol()                           &&
    STk_late_init_env()                         &&
    STk_init_struct()                           &&
    STk_init_cond()                             &&
    STk_late_init_vm()                         &&
    STk_init_threads(stack_size, start_stack)   &&
    STk_init_port()                             &&
    STk_init_extend()                           &&
    STk_init_list()                             &&
    STk_init_vector()                           &&
    STk_init_uniform_vector()                   &&
    STk_init_char()                             &&
    STk_init_keyword()                          &&
    STk_init_string()                           &&
    STk_init_parameter()                        &&
    STk_init_proc()                             &&
    STk_init_boolean()                          &&
    STk_init_reader()                           &&
    STk_init_printer()                          &&
    STk_init_system()                           &&
    STk_init_mutexes()                          &&
    STk_init_number()                           &&
    STk_init_fixnum()                           &&
    STk_init_hash()                             &&
    STk_init_misc()                             &&
    STk_init_signal()                           &&
    STk_init_promise()                          &&
    STk_init_regexp()                           &&
    STk_init_process()                          &&
    STk_init_socket()                           &&
    STk_init_object()                           &&
    STk_init_base64()                           &&
    STk_init_md5()                              &&
    STk_init_cpointer()                         &&
    STk_init_box()                              &&
    STk_init_ffi()                              &&
    STk_init_syntax()                           &&
#ifdef STK_DEBUG
    STk_init_utf8()                             &&
#endif
    (STk_library_initialized = TRUE);
}
