/* * Copyright (C) 2016 Charybdis Development Team * Copyright (C) 2016 Jason Volk * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* This header exposes the SpiderMonkey engine API to all ye who include it. * It also anchors all of our own developed headers and utils which use and extend their API. * * This header is included after the 'stdinc header' . That header creates the * namespace ircd::js, and does not include any 3rd party symbols. is included * automatically in stdinc.h. * * This header should be included if you intend to get dirty with the JS engine subsystem * which requires jsapi support and can't be satisfied by the stdinc header. */ #pragma once #define HAVE_IRCD_JS_JS_H // SpiderMonkey makes use of the `DEBUG` define in headers which must match what the bottom // end was also compiled with. We tie that define to RB_DEBUG controlled by --enable-debug. // From a completely clean build, configuring IRCd with --enable-debug should compile SpiderMonkey // in debug as well. #ifdef RB_DEBUG #define DEBUG #endif // SpiderMonkey headers require an include basis e.g. -I/usr/include/mozjs-XX as their // include directives are written as "jsxxx.h" or "mozilla/xxx.h" etc. Our includes are all // and shouldn't have any conflict issues. #include #include #include // Some forward declarations for jsapi items not declared in the above includes, // but visible to definition files making use of additional jsapi interfaces. struct JSAtom; namespace js { struct InterpreterFrame; } namespace ircd { namespace js { // The ostream operator is explicitly brought from ircd:: to compete for efficient overloading, // and prevent any unnecessary implicit conversions here. using ircd::operator<<; } // namespace js } // namespace ircd #include "version.h" #include "type.h" #include "tracing.h" #include "runtime.h" #include "timer.h" #include "context.h" #include "priv.h" #include "compartment.h" #include "debug.h" #include "root.h" #include "error.h" #include "native.h" #include "value.h" #include "string.h" #include "json.h" #include "id.h" #include "object.h" #include "has.h" #include "get.h" #include "set.h" #include "del.h" #include "vector.h" #include "script.h" #include "function.h" #include "function_literal.h" #include "call.h" #include "for_each.h" #include "args.h" #include "trap.h" #include "trap_function.h" #include "trap_property.h" #include "ctor.h" #include "generator.h" #include "global.h" #include "contract.h" #include "star.h" #include "task.h"