gi-javascriptcore-4.0.17: GI/JavaScriptCore/Objects/Context.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
/No description available in the introspection data./
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.JavaScriptCore.Objects.Context
(
-- * Exported types
Context(..) ,
IsContext ,
toContext ,
noContext ,
-- * Methods
-- ** checkSyntax #method:checkSyntax#
#if ENABLE_OVERLOADING
ContextCheckSyntaxMethodInfo ,
#endif
contextCheckSyntax ,
-- ** clearException #method:clearException#
#if ENABLE_OVERLOADING
ContextClearExceptionMethodInfo ,
#endif
contextClearException ,
-- ** evaluate #method:evaluate#
#if ENABLE_OVERLOADING
ContextEvaluateMethodInfo ,
#endif
contextEvaluate ,
-- ** evaluateInObject #method:evaluateInObject#
#if ENABLE_OVERLOADING
ContextEvaluateInObjectMethodInfo ,
#endif
contextEvaluateInObject ,
-- ** evaluateWithSourceUri #method:evaluateWithSourceUri#
#if ENABLE_OVERLOADING
ContextEvaluateWithSourceUriMethodInfo ,
#endif
contextEvaluateWithSourceUri ,
-- ** getCurrent #method:getCurrent#
contextGetCurrent ,
-- ** getException #method:getException#
#if ENABLE_OVERLOADING
ContextGetExceptionMethodInfo ,
#endif
contextGetException ,
-- ** getGlobalObject #method:getGlobalObject#
#if ENABLE_OVERLOADING
ContextGetGlobalObjectMethodInfo ,
#endif
contextGetGlobalObject ,
-- ** getValue #method:getValue#
#if ENABLE_OVERLOADING
ContextGetValueMethodInfo ,
#endif
contextGetValue ,
-- ** getVirtualMachine #method:getVirtualMachine#
#if ENABLE_OVERLOADING
ContextGetVirtualMachineMethodInfo ,
#endif
contextGetVirtualMachine ,
-- ** new #method:new#
contextNew ,
-- ** newWithVirtualMachine #method:newWithVirtualMachine#
contextNewWithVirtualMachine ,
-- ** popExceptionHandler #method:popExceptionHandler#
#if ENABLE_OVERLOADING
ContextPopExceptionHandlerMethodInfo ,
#endif
contextPopExceptionHandler ,
-- ** pushExceptionHandler #method:pushExceptionHandler#
#if ENABLE_OVERLOADING
ContextPushExceptionHandlerMethodInfo ,
#endif
contextPushExceptionHandler ,
-- ** registerClass #method:registerClass#
#if ENABLE_OVERLOADING
ContextRegisterClassMethodInfo ,
#endif
contextRegisterClass ,
-- ** setValue #method:setValue#
#if ENABLE_OVERLOADING
ContextSetValueMethodInfo ,
#endif
contextSetValue ,
-- ** throw #method:throw#
#if ENABLE_OVERLOADING
ContextThrowMethodInfo ,
#endif
contextThrow ,
-- ** throwException #method:throwException#
#if ENABLE_OVERLOADING
ContextThrowExceptionMethodInfo ,
#endif
contextThrowException ,
-- ** throwWithName #method:throwWithName#
#if ENABLE_OVERLOADING
ContextThrowWithNameMethodInfo ,
#endif
contextThrowWithName ,
-- * Properties
-- ** virtualMachine #attr:virtualMachine#
{- | The 'GI.JavaScriptCore.Objects.VirtualMachine.VirtualMachine' in which the context was created.
-}
#if ENABLE_OVERLOADING
ContextVirtualMachinePropertyInfo ,
#endif
constructContextVirtualMachine ,
#if ENABLE_OVERLOADING
contextVirtualMachine ,
#endif
getContextVirtualMachine ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GI.GLib.Callbacks as GLib.Callbacks
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.JavaScriptCore.Callbacks as JavaScriptCore.Callbacks
import {-# SOURCE #-} qualified GI.JavaScriptCore.Enums as JavaScriptCore.Enums
import {-# SOURCE #-} qualified GI.JavaScriptCore.Objects.Class as JavaScriptCore.Class
import {-# SOURCE #-} qualified GI.JavaScriptCore.Objects.Exception as JavaScriptCore.Exception
import {-# SOURCE #-} qualified GI.JavaScriptCore.Objects.Value as JavaScriptCore.Value
import {-# SOURCE #-} qualified GI.JavaScriptCore.Objects.VirtualMachine as JavaScriptCore.VirtualMachine
import {-# SOURCE #-} qualified GI.JavaScriptCore.Structs.ClassVTable as JavaScriptCore.ClassVTable
-- | Memory-managed wrapper type.
newtype Context = Context (ManagedPtr Context)
foreign import ccall "jsc_context_get_type"
c_jsc_context_get_type :: IO GType
instance GObject Context where
gobjectType = c_jsc_context_get_type
-- | Type class for types which can be safely cast to `Context`, for instance with `toContext`.
class (GObject o, O.IsDescendantOf Context o) => IsContext o
instance (GObject o, O.IsDescendantOf Context o) => IsContext o
instance O.HasParentTypes Context
type instance O.ParentTypes Context = '[GObject.Object.Object]
-- | Cast to `Context`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toContext :: (MonadIO m, IsContext o) => o -> m Context
toContext = liftIO . unsafeCastTo Context
-- | A convenience alias for `Nothing` :: `Maybe` `Context`.
noContext :: Maybe Context
noContext = Nothing
#if ENABLE_OVERLOADING
type family ResolveContextMethod (t :: Symbol) (o :: *) :: * where
ResolveContextMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveContextMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveContextMethod "checkSyntax" o = ContextCheckSyntaxMethodInfo
ResolveContextMethod "clearException" o = ContextClearExceptionMethodInfo
ResolveContextMethod "evaluate" o = ContextEvaluateMethodInfo
ResolveContextMethod "evaluateInObject" o = ContextEvaluateInObjectMethodInfo
ResolveContextMethod "evaluateWithSourceUri" o = ContextEvaluateWithSourceUriMethodInfo
ResolveContextMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveContextMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveContextMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveContextMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveContextMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveContextMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveContextMethod "popExceptionHandler" o = ContextPopExceptionHandlerMethodInfo
ResolveContextMethod "pushExceptionHandler" o = ContextPushExceptionHandlerMethodInfo
ResolveContextMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveContextMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveContextMethod "registerClass" o = ContextRegisterClassMethodInfo
ResolveContextMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveContextMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveContextMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveContextMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveContextMethod "throw" o = ContextThrowMethodInfo
ResolveContextMethod "throwException" o = ContextThrowExceptionMethodInfo
ResolveContextMethod "throwWithName" o = ContextThrowWithNameMethodInfo
ResolveContextMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveContextMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveContextMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveContextMethod "getException" o = ContextGetExceptionMethodInfo
ResolveContextMethod "getGlobalObject" o = ContextGetGlobalObjectMethodInfo
ResolveContextMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveContextMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveContextMethod "getValue" o = ContextGetValueMethodInfo
ResolveContextMethod "getVirtualMachine" o = ContextGetVirtualMachineMethodInfo
ResolveContextMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveContextMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveContextMethod "setValue" o = ContextSetValueMethodInfo
ResolveContextMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveContextMethod t Context, O.MethodInfo info Context p) => OL.IsLabel t (Context -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif
-- VVV Prop "virtual-machine"
-- Type: TInterface (Name {namespace = "JavaScriptCore", name = "VirtualMachine"})
-- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
-- Nullable: (Just False,Nothing)
{- |
Get the value of the “@virtual-machine@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' context #virtualMachine
@
-}
getContextVirtualMachine :: (MonadIO m, IsContext o) => o -> m JavaScriptCore.VirtualMachine.VirtualMachine
getContextVirtualMachine obj = liftIO $ checkUnexpectedNothing "getContextVirtualMachine" $ B.Properties.getObjectPropertyObject obj "virtual-machine" JavaScriptCore.VirtualMachine.VirtualMachine
{- |
Construct a `GValueConstruct` with valid value for the “@virtual-machine@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructContextVirtualMachine :: (IsContext o, JavaScriptCore.VirtualMachine.IsVirtualMachine a) => a -> IO (GValueConstruct o)
constructContextVirtualMachine val = B.Properties.constructObjectPropertyObject "virtual-machine" (Just val)
#if ENABLE_OVERLOADING
data ContextVirtualMachinePropertyInfo
instance AttrInfo ContextVirtualMachinePropertyInfo where
type AttrAllowedOps ContextVirtualMachinePropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint ContextVirtualMachinePropertyInfo = JavaScriptCore.VirtualMachine.IsVirtualMachine
type AttrBaseTypeConstraint ContextVirtualMachinePropertyInfo = IsContext
type AttrGetType ContextVirtualMachinePropertyInfo = JavaScriptCore.VirtualMachine.VirtualMachine
type AttrLabel ContextVirtualMachinePropertyInfo = "virtual-machine"
type AttrOrigin ContextVirtualMachinePropertyInfo = Context
attrGet _ = getContextVirtualMachine
attrSet _ = undefined
attrConstruct _ = constructContextVirtualMachine
attrClear _ = undefined
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList Context
type instance O.AttributeList Context = ContextAttributeList
type ContextAttributeList = ('[ '("virtualMachine", ContextVirtualMachinePropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
contextVirtualMachine :: AttrLabelProxy "virtualMachine"
contextVirtualMachine = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList Context = ContextSignalList
type ContextSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
-- method Context::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Context"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_new" jsc_context_new ::
IO (Ptr Context)
{- |
Create a new 'GI.JavaScriptCore.Objects.Context.Context'. The context is created in a new 'GI.JavaScriptCore.Objects.VirtualMachine.VirtualMachine'.
Use 'GI.JavaScriptCore.Objects.Context.contextNewWithVirtualMachine' to create a new 'GI.JavaScriptCore.Objects.Context.Context' in an
existing 'GI.JavaScriptCore.Objects.VirtualMachine.VirtualMachine'.
-}
contextNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
m Context
{- ^ __Returns:__ the newly created 'GI.JavaScriptCore.Objects.Context.Context'. -}
contextNew = liftIO $ do
result <- jsc_context_new
checkUnexpectedReturnNULL "contextNew" result
result' <- (wrapObject Context) result
return result'
#if ENABLE_OVERLOADING
#endif
-- method Context::new_with_virtual_machine
-- method type : Constructor
-- Args : [Arg {argCName = "vm", argType = TInterface (Name {namespace = "JavaScriptCore", name = "VirtualMachine"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCVirtualMachine", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Context"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_new_with_virtual_machine" jsc_context_new_with_virtual_machine ::
Ptr JavaScriptCore.VirtualMachine.VirtualMachine -> -- vm : TInterface (Name {namespace = "JavaScriptCore", name = "VirtualMachine"})
IO (Ptr Context)
{- |
Create a new 'GI.JavaScriptCore.Objects.Context.Context' in /@virtualMachine@/.
-}
contextNewWithVirtualMachine ::
(B.CallStack.HasCallStack, MonadIO m, JavaScriptCore.VirtualMachine.IsVirtualMachine a) =>
a
{- ^ /@vm@/: a 'GI.JavaScriptCore.Objects.VirtualMachine.VirtualMachine' -}
-> m Context
{- ^ __Returns:__ the newly created 'GI.JavaScriptCore.Objects.Context.Context'. -}
contextNewWithVirtualMachine vm = liftIO $ do
vm' <- unsafeManagedPtrCastPtr vm
result <- jsc_context_new_with_virtual_machine vm'
checkUnexpectedReturnNULL "contextNewWithVirtualMachine" result
result' <- (wrapObject Context) result
touchManagedPtr vm
return result'
#if ENABLE_OVERLOADING
#endif
-- method Context::check_syntax
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a JavaScript script to check", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of @code, or -1 if @code is a nul-terminated string", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface (Name {namespace = "JavaScriptCore", name = "CheckSyntaxMode"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCCheckSyntaxMode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source URI", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line_number", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the starting line number", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "exception", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Exception"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for a #JSCException, or %NULL to ignore", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "CheckSyntaxResult"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_check_syntax" jsc_context_check_syntax ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- code : TBasicType TUTF8
Int64 -> -- length : TBasicType TInt64
CUInt -> -- mode : TInterface (Name {namespace = "JavaScriptCore", name = "CheckSyntaxMode"})
CString -> -- uri : TBasicType TUTF8
Word32 -> -- line_number : TBasicType TUInt
Ptr (Ptr JavaScriptCore.Exception.Exception) -> -- exception : TInterface (Name {namespace = "JavaScriptCore", name = "Exception"})
IO CUInt
{- |
Check the given /@code@/ in /@context@/ for syntax errors. The /@lineNumber@/ is the starting line number in /@uri@/;
the value is one-based so the first line is 1. /@uri@/ and /@lineNumber@/ are only used to fill the /@exception@/.
In case of errors /@exception@/ will be set to a new 'GI.JavaScriptCore.Objects.Exception.Exception' with the details. You can pass 'Nothing' to
/@exception@/ to ignore the error details.
-}
contextCheckSyntax ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@code@/: a JavaScript script to check -}
-> Int64
{- ^ /@length@/: length of /@code@/, or -1 if /@code@/ is a nul-terminated string -}
-> JavaScriptCore.Enums.CheckSyntaxMode
{- ^ /@mode@/: a 'GI.JavaScriptCore.Enums.CheckSyntaxMode' -}
-> T.Text
{- ^ /@uri@/: the source URI -}
-> Word32
{- ^ /@lineNumber@/: the starting line number -}
-> m ((JavaScriptCore.Enums.CheckSyntaxResult, JavaScriptCore.Exception.Exception))
{- ^ __Returns:__ a 'GI.JavaScriptCore.Enums.CheckSyntaxResult' -}
contextCheckSyntax context code length_ mode uri lineNumber = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
code' <- textToCString code
let mode' = (fromIntegral . fromEnum) mode
uri' <- textToCString uri
exception <- allocMem :: IO (Ptr (Ptr JavaScriptCore.Exception.Exception))
result <- jsc_context_check_syntax context' code' length_ mode' uri' lineNumber exception
let result' = (toEnum . fromIntegral) result
exception' <- peek exception
exception'' <- (wrapObject JavaScriptCore.Exception.Exception) exception'
touchManagedPtr context
freeMem code'
freeMem uri'
freeMem exception
return (result', exception'')
#if ENABLE_OVERLOADING
data ContextCheckSyntaxMethodInfo
instance (signature ~ (T.Text -> Int64 -> JavaScriptCore.Enums.CheckSyntaxMode -> T.Text -> Word32 -> m ((JavaScriptCore.Enums.CheckSyntaxResult, JavaScriptCore.Exception.Exception))), MonadIO m, IsContext a) => O.MethodInfo ContextCheckSyntaxMethodInfo a signature where
overloadedMethod _ = contextCheckSyntax
#endif
-- method Context::clear_exception
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_clear_exception" jsc_context_clear_exception ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
IO ()
{- |
Clear the uncaught exception in /@context@/ if any.
-}
contextClearException ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> m ()
contextClearException context = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
jsc_context_clear_exception context'
touchManagedPtr context
return ()
#if ENABLE_OVERLOADING
data ContextClearExceptionMethodInfo
instance (signature ~ (m ()), MonadIO m, IsContext a) => O.MethodInfo ContextClearExceptionMethodInfo a signature where
overloadedMethod _ = contextClearException
#endif
-- method Context::evaluate
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a JavaScript script to evaluate", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of @code, or -1 if @code is a nul-terminated string", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Value"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_evaluate" jsc_context_evaluate ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- code : TBasicType TUTF8
Int64 -> -- length : TBasicType TInt64
IO (Ptr JavaScriptCore.Value.Value)
{- |
Evaluate /@code@/ in /@context@/.
-}
contextEvaluate ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@code@/: a JavaScript script to evaluate -}
-> Int64
{- ^ /@length@/: length of /@code@/, or -1 if /@code@/ is a nul-terminated string -}
-> m JavaScriptCore.Value.Value
{- ^ __Returns:__ a 'GI.JavaScriptCore.Objects.Value.Value' representing the last value generated by the script. -}
contextEvaluate context code length_ = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
code' <- textToCString code
result <- jsc_context_evaluate context' code' length_
checkUnexpectedReturnNULL "contextEvaluate" result
result' <- (wrapObject JavaScriptCore.Value.Value) result
touchManagedPtr context
freeMem code'
return result'
#if ENABLE_OVERLOADING
data ContextEvaluateMethodInfo
instance (signature ~ (T.Text -> Int64 -> m JavaScriptCore.Value.Value), MonadIO m, IsContext a) => O.MethodInfo ContextEvaluateMethodInfo a signature where
overloadedMethod _ = contextEvaluate
#endif
-- method Context::evaluate_in_object
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a JavaScript script to evaluate", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of @code, or -1 if @code is a nul-terminated string", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "object_instance", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "an object instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "object_class", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Class"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #JSCClass or %NULL to use the default", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source URI", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line_number", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the starting line number", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "object", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Value"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for a #JSCValue.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Value"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_evaluate_in_object" jsc_context_evaluate_in_object ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- code : TBasicType TUTF8
Int64 -> -- length : TBasicType TInt64
Ptr () -> -- object_instance : TBasicType TPtr
Ptr JavaScriptCore.Class.Class -> -- object_class : TInterface (Name {namespace = "JavaScriptCore", name = "Class"})
CString -> -- uri : TBasicType TUTF8
Word32 -> -- line_number : TBasicType TUInt
Ptr (Ptr JavaScriptCore.Value.Value) -> -- object : TInterface (Name {namespace = "JavaScriptCore", name = "Value"})
IO (Ptr JavaScriptCore.Value.Value)
{- |
Evaluate /@code@/ and create an new object where symbols defined in /@code@/ will be added as properties,
instead of being added to /@context@/ global object. The new object is returned as /@object@/ parameter.
Similar to how 'GI.JavaScriptCore.Objects.Value.valueNewObject' works, if /@objectInstance@/ is not 'Nothing' /@objectClass@/ must be provided too.
The /@lineNumber@/ is the starting line number in /@uri@/; the value is one-based so the first line is 1.
/@uri@/ and /@lineNumber@/ will be shown in exceptions and they don\'t affect the behavior of the script.
-}
contextEvaluateInObject ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a, JavaScriptCore.Class.IsClass b) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@code@/: a JavaScript script to evaluate -}
-> Int64
{- ^ /@length@/: length of /@code@/, or -1 if /@code@/ is a nul-terminated string -}
-> Ptr ()
{- ^ /@objectInstance@/: an object instance -}
-> Maybe (b)
{- ^ /@objectClass@/: a 'GI.JavaScriptCore.Objects.Class.Class' or 'Nothing' to use the default -}
-> T.Text
{- ^ /@uri@/: the source URI -}
-> Word32
{- ^ /@lineNumber@/: the starting line number -}
-> m ((JavaScriptCore.Value.Value, JavaScriptCore.Value.Value))
{- ^ __Returns:__ a 'GI.JavaScriptCore.Objects.Value.Value' representing the last value generated by the script. -}
contextEvaluateInObject context code length_ objectInstance objectClass uri lineNumber = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
code' <- textToCString code
maybeObjectClass <- case objectClass of
Nothing -> return nullPtr
Just jObjectClass -> do
jObjectClass' <- unsafeManagedPtrCastPtr jObjectClass
return jObjectClass'
uri' <- textToCString uri
object <- allocMem :: IO (Ptr (Ptr JavaScriptCore.Value.Value))
result <- jsc_context_evaluate_in_object context' code' length_ objectInstance maybeObjectClass uri' lineNumber object
checkUnexpectedReturnNULL "contextEvaluateInObject" result
result' <- (wrapObject JavaScriptCore.Value.Value) result
object' <- peek object
object'' <- (wrapObject JavaScriptCore.Value.Value) object'
touchManagedPtr context
whenJust objectClass touchManagedPtr
freeMem code'
freeMem uri'
freeMem object
return (result', object'')
#if ENABLE_OVERLOADING
data ContextEvaluateInObjectMethodInfo
instance (signature ~ (T.Text -> Int64 -> Ptr () -> Maybe (b) -> T.Text -> Word32 -> m ((JavaScriptCore.Value.Value, JavaScriptCore.Value.Value))), MonadIO m, IsContext a, JavaScriptCore.Class.IsClass b) => O.MethodInfo ContextEvaluateInObjectMethodInfo a signature where
overloadedMethod _ = contextEvaluateInObject
#endif
-- method Context::evaluate_with_source_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a JavaScript script to evaluate", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of @code, or -1 if @code is a nul-terminated string", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source URI", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line_number", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the starting line number", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Value"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_evaluate_with_source_uri" jsc_context_evaluate_with_source_uri ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- code : TBasicType TUTF8
Int64 -> -- length : TBasicType TInt64
CString -> -- uri : TBasicType TUTF8
Word32 -> -- line_number : TBasicType TUInt
IO (Ptr JavaScriptCore.Value.Value)
{- |
Evaluate /@code@/ in /@context@/ using /@uri@/ as the source URI. The /@lineNumber@/ is the starting line number
in /@uri@/; the value is one-based so the first line is 1. /@uri@/ and /@lineNumber@/ will be shown in exceptions and
they don\'t affect the behavior of the script.
-}
contextEvaluateWithSourceUri ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@code@/: a JavaScript script to evaluate -}
-> Int64
{- ^ /@length@/: length of /@code@/, or -1 if /@code@/ is a nul-terminated string -}
-> T.Text
{- ^ /@uri@/: the source URI -}
-> Word32
{- ^ /@lineNumber@/: the starting line number -}
-> m JavaScriptCore.Value.Value
{- ^ __Returns:__ a 'GI.JavaScriptCore.Objects.Value.Value' representing the last value generated by the script. -}
contextEvaluateWithSourceUri context code length_ uri lineNumber = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
code' <- textToCString code
uri' <- textToCString uri
result <- jsc_context_evaluate_with_source_uri context' code' length_ uri' lineNumber
checkUnexpectedReturnNULL "contextEvaluateWithSourceUri" result
result' <- (wrapObject JavaScriptCore.Value.Value) result
touchManagedPtr context
freeMem code'
freeMem uri'
return result'
#if ENABLE_OVERLOADING
data ContextEvaluateWithSourceUriMethodInfo
instance (signature ~ (T.Text -> Int64 -> T.Text -> Word32 -> m JavaScriptCore.Value.Value), MonadIO m, IsContext a) => O.MethodInfo ContextEvaluateWithSourceUriMethodInfo a signature where
overloadedMethod _ = contextEvaluateWithSourceUri
#endif
-- method Context::get_exception
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Exception"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_get_exception" jsc_context_get_exception ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
IO (Ptr JavaScriptCore.Exception.Exception)
{- |
Get the last unhandled exception thrown in /@context@/ by API functions calls.
-}
contextGetException ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> m (Maybe JavaScriptCore.Exception.Exception)
{- ^ __Returns:__ a 'GI.JavaScriptCore.Objects.Exception.Exception' or 'Nothing' if there isn\'t any
unhandled exception in the 'GI.JavaScriptCore.Objects.Context.Context'. -}
contextGetException context = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
result <- jsc_context_get_exception context'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (newObject JavaScriptCore.Exception.Exception) result'
return result''
touchManagedPtr context
return maybeResult
#if ENABLE_OVERLOADING
data ContextGetExceptionMethodInfo
instance (signature ~ (m (Maybe JavaScriptCore.Exception.Exception)), MonadIO m, IsContext a) => O.MethodInfo ContextGetExceptionMethodInfo a signature where
overloadedMethod _ = contextGetException
#endif
-- method Context::get_global_object
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Value"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_get_global_object" jsc_context_get_global_object ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
IO (Ptr JavaScriptCore.Value.Value)
{- |
Get a 'GI.JavaScriptCore.Objects.Value.Value' referencing the /@context@/ global object
-}
contextGetGlobalObject ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> m JavaScriptCore.Value.Value
{- ^ __Returns:__ a 'GI.JavaScriptCore.Objects.Value.Value' -}
contextGetGlobalObject context = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
result <- jsc_context_get_global_object context'
checkUnexpectedReturnNULL "contextGetGlobalObject" result
result' <- (wrapObject JavaScriptCore.Value.Value) result
touchManagedPtr context
return result'
#if ENABLE_OVERLOADING
data ContextGetGlobalObjectMethodInfo
instance (signature ~ (m JavaScriptCore.Value.Value), MonadIO m, IsContext a) => O.MethodInfo ContextGetGlobalObjectMethodInfo a signature where
overloadedMethod _ = contextGetGlobalObject
#endif
-- method Context::get_value
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the value name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Value"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_get_value" jsc_context_get_value ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- name : TBasicType TUTF8
IO (Ptr JavaScriptCore.Value.Value)
{- |
Get a property of /@context@/ global object with /@name@/.
-}
contextGetValue ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@name@/: the value name -}
-> m JavaScriptCore.Value.Value
{- ^ __Returns:__ a 'GI.JavaScriptCore.Objects.Value.Value' -}
contextGetValue context name = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
name' <- textToCString name
result <- jsc_context_get_value context' name'
checkUnexpectedReturnNULL "contextGetValue" result
result' <- (wrapObject JavaScriptCore.Value.Value) result
touchManagedPtr context
freeMem name'
return result'
#if ENABLE_OVERLOADING
data ContextGetValueMethodInfo
instance (signature ~ (T.Text -> m JavaScriptCore.Value.Value), MonadIO m, IsContext a) => O.MethodInfo ContextGetValueMethodInfo a signature where
overloadedMethod _ = contextGetValue
#endif
-- method Context::get_virtual_machine
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "VirtualMachine"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_get_virtual_machine" jsc_context_get_virtual_machine ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
IO (Ptr JavaScriptCore.VirtualMachine.VirtualMachine)
{- |
Get the 'GI.JavaScriptCore.Objects.VirtualMachine.VirtualMachine' where /@context@/ was created.
-}
contextGetVirtualMachine ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> m JavaScriptCore.VirtualMachine.VirtualMachine
{- ^ __Returns:__ the 'GI.JavaScriptCore.Objects.VirtualMachine.VirtualMachine' where the 'GI.JavaScriptCore.Objects.Context.Context' was created. -}
contextGetVirtualMachine context = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
result <- jsc_context_get_virtual_machine context'
checkUnexpectedReturnNULL "contextGetVirtualMachine" result
result' <- (newObject JavaScriptCore.VirtualMachine.VirtualMachine) result
touchManagedPtr context
return result'
#if ENABLE_OVERLOADING
data ContextGetVirtualMachineMethodInfo
instance (signature ~ (m JavaScriptCore.VirtualMachine.VirtualMachine), MonadIO m, IsContext a) => O.MethodInfo ContextGetVirtualMachineMethodInfo a signature where
overloadedMethod _ = contextGetVirtualMachine
#endif
-- method Context::pop_exception_handler
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_pop_exception_handler" jsc_context_pop_exception_handler ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
IO ()
{- |
Remove the last 'GI.JavaScriptCore.Callbacks.ExceptionHandler' previously pushed to /@context@/ with
'GI.JavaScriptCore.Objects.Context.contextPushExceptionHandler'.
-}
contextPopExceptionHandler ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> m ()
contextPopExceptionHandler context = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
jsc_context_pop_exception_handler context'
touchManagedPtr context
return ()
#if ENABLE_OVERLOADING
data ContextPopExceptionHandlerMethodInfo
instance (signature ~ (m ()), MonadIO m, IsContext a) => O.MethodInfo ContextPopExceptionHandlerMethodInfo a signature where
overloadedMethod _ = contextPopExceptionHandler
#endif
-- method Context::push_exception_handler
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "handler", argType = TInterface (Name {namespace = "JavaScriptCore", name = "ExceptionHandler"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCExceptionHandler", sinceVersion = Nothing}, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data to pass to @handler", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy_notify", argType = TInterface (Name {namespace = "GLib", name = "DestroyNotify"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "destroy notifier for @user_data", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_push_exception_handler" jsc_context_push_exception_handler ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
FunPtr JavaScriptCore.Callbacks.C_ExceptionHandler -> -- handler : TInterface (Name {namespace = "JavaScriptCore", name = "ExceptionHandler"})
Ptr () -> -- user_data : TBasicType TPtr
FunPtr GLib.Callbacks.C_DestroyNotify -> -- destroy_notify : TInterface (Name {namespace = "GLib", name = "DestroyNotify"})
IO ()
{- |
Push an exception handler in /@context@/. Whenever a JavaScript exception happens in
the 'GI.JavaScriptCore.Objects.Context.Context', the given /@handler@/ will be called. The default 'GI.JavaScriptCore.Callbacks.ExceptionHandler'
simply calls 'GI.JavaScriptCore.Objects.Context.contextThrowException' to throw the exception to the 'GI.JavaScriptCore.Objects.Context.Context'.
If you don\'t want to catch the exception, but only get notified about it, call
'GI.JavaScriptCore.Objects.Context.contextThrowException' in /@handler@/ like the default one does.
The last exception handler pushed is the only one used by the 'GI.JavaScriptCore.Objects.Context.Context', use
'GI.JavaScriptCore.Objects.Context.contextPopExceptionHandler' to remove it and set the previous one. When /@handler@/
is removed from the context, /@destroyNotify@/ i called with /@userData@/ as parameter.
-}
contextPushExceptionHandler ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> JavaScriptCore.Callbacks.ExceptionHandler
{- ^ /@handler@/: a 'GI.JavaScriptCore.Callbacks.ExceptionHandler' -}
-> m ()
contextPushExceptionHandler context handler = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
handler' <- JavaScriptCore.Callbacks.mk_ExceptionHandler (JavaScriptCore.Callbacks.wrap_ExceptionHandler Nothing (JavaScriptCore.Callbacks.drop_closures_ExceptionHandler handler))
let userData = castFunPtrToPtr handler'
let destroyNotify = safeFreeFunPtrPtr
jsc_context_push_exception_handler context' handler' userData destroyNotify
touchManagedPtr context
return ()
#if ENABLE_OVERLOADING
data ContextPushExceptionHandlerMethodInfo
instance (signature ~ (JavaScriptCore.Callbacks.ExceptionHandler -> m ()), MonadIO m, IsContext a) => O.MethodInfo ContextPushExceptionHandlerMethodInfo a signature where
overloadedMethod _ = contextPushExceptionHandler
#endif
-- method Context::register_class
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the class name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "parent_class", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Class"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #JSCClass or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "vtable", argType = TInterface (Name {namespace = "JavaScriptCore", name = "ClassVTable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "an optional #JSCClassVTable or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy_notify", argType = TInterface (Name {namespace = "GLib", name = "DestroyNotify"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a destroy notifier for class instances", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Class"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_register_class" jsc_context_register_class ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- name : TBasicType TUTF8
Ptr JavaScriptCore.Class.Class -> -- parent_class : TInterface (Name {namespace = "JavaScriptCore", name = "Class"})
Ptr JavaScriptCore.ClassVTable.ClassVTable -> -- vtable : TInterface (Name {namespace = "JavaScriptCore", name = "ClassVTable"})
FunPtr GLib.Callbacks.C_DestroyNotify -> -- destroy_notify : TInterface (Name {namespace = "GLib", name = "DestroyNotify"})
IO (Ptr JavaScriptCore.Class.Class)
{- |
Register a custom class in /@context@/ using the given /@name@/. If the new class inherits from
another 'GI.JavaScriptCore.Objects.Class.Class', the parent should be passed as /@parentClass@/, otherwise 'Nothing' should be
used. The optional /@vtable@/ parameter allows to provide a custom implementation for handling
the class, for example, to handle external properties not added to the prototype.
When an instance of the 'GI.JavaScriptCore.Objects.Class.Class' is cleared in the context, /@destroyNotify@/ is called with
the instance as parameter.
-}
contextRegisterClass ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a, JavaScriptCore.Class.IsClass b) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@name@/: the class name -}
-> Maybe (b)
{- ^ /@parentClass@/: a 'GI.JavaScriptCore.Objects.Class.Class' or 'Nothing' -}
-> Maybe (JavaScriptCore.ClassVTable.ClassVTable)
{- ^ /@vtable@/: an optional 'GI.JavaScriptCore.Structs.ClassVTable.ClassVTable' or 'Nothing' -}
-> Maybe (GLib.Callbacks.DestroyNotify)
{- ^ /@destroyNotify@/: a destroy notifier for class instances -}
-> m JavaScriptCore.Class.Class
{- ^ __Returns:__ a 'GI.JavaScriptCore.Objects.Class.Class' -}
contextRegisterClass context name parentClass vtable destroyNotify = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
name' <- textToCString name
maybeParentClass <- case parentClass of
Nothing -> return nullPtr
Just jParentClass -> do
jParentClass' <- unsafeManagedPtrCastPtr jParentClass
return jParentClass'
maybeVtable <- case vtable of
Nothing -> return nullPtr
Just jVtable -> do
jVtable' <- unsafeManagedPtrGetPtr jVtable
return jVtable'
maybeDestroyNotify <- case destroyNotify of
Nothing -> return (castPtrToFunPtr nullPtr)
Just jDestroyNotify -> do
ptrdestroyNotify <- callocMem :: IO (Ptr (FunPtr GLib.Callbacks.C_DestroyNotify))
jDestroyNotify' <- GLib.Callbacks.mk_DestroyNotify (GLib.Callbacks.wrap_DestroyNotify (Just ptrdestroyNotify) jDestroyNotify)
poke ptrdestroyNotify jDestroyNotify'
return jDestroyNotify'
result <- jsc_context_register_class context' name' maybeParentClass maybeVtable maybeDestroyNotify
checkUnexpectedReturnNULL "contextRegisterClass" result
result' <- (newObject JavaScriptCore.Class.Class) result
touchManagedPtr context
whenJust parentClass touchManagedPtr
whenJust vtable touchManagedPtr
freeMem name'
return result'
#if ENABLE_OVERLOADING
data ContextRegisterClassMethodInfo
instance (signature ~ (T.Text -> Maybe (b) -> Maybe (JavaScriptCore.ClassVTable.ClassVTable) -> Maybe (GLib.Callbacks.DestroyNotify) -> m JavaScriptCore.Class.Class), MonadIO m, IsContext a, JavaScriptCore.Class.IsClass b) => O.MethodInfo ContextRegisterClassMethodInfo a signature where
overloadedMethod _ = contextRegisterClass
#endif
-- method Context::set_value
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the value name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Value"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCValue", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_set_value" jsc_context_set_value ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- name : TBasicType TUTF8
Ptr JavaScriptCore.Value.Value -> -- value : TInterface (Name {namespace = "JavaScriptCore", name = "Value"})
IO ()
{- |
Set a property of /@context@/ global object with /@name@/ and /@value@/.
-}
contextSetValue ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a, JavaScriptCore.Value.IsValue b) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@name@/: the value name -}
-> b
{- ^ /@value@/: a 'GI.JavaScriptCore.Objects.Value.Value' -}
-> m ()
contextSetValue context name value = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
name' <- textToCString name
value' <- unsafeManagedPtrCastPtr value
jsc_context_set_value context' name' value'
touchManagedPtr context
touchManagedPtr value
freeMem name'
return ()
#if ENABLE_OVERLOADING
data ContextSetValueMethodInfo
instance (signature ~ (T.Text -> b -> m ()), MonadIO m, IsContext a, JavaScriptCore.Value.IsValue b) => O.MethodInfo ContextSetValueMethodInfo a signature where
overloadedMethod _ = contextSetValue
#endif
-- method Context::throw
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "error_message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an error message", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_throw" jsc_context_throw ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- error_message : TBasicType TUTF8
IO ()
{- |
Throw an exception to /@context@/ using the given error message. The created 'GI.JavaScriptCore.Objects.Exception.Exception'
can be retrieved with 'GI.JavaScriptCore.Objects.Context.contextGetException'.
-}
contextThrow ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@errorMessage@/: an error message -}
-> m ()
contextThrow context errorMessage = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
errorMessage' <- textToCString errorMessage
jsc_context_throw context' errorMessage'
touchManagedPtr context
freeMem errorMessage'
return ()
#if ENABLE_OVERLOADING
data ContextThrowMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsContext a) => O.MethodInfo ContextThrowMethodInfo a signature where
overloadedMethod _ = contextThrow
#endif
-- method Context::throw_exception
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "exception", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Exception"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCException", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_throw_exception" jsc_context_throw_exception ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
Ptr JavaScriptCore.Exception.Exception -> -- exception : TInterface (Name {namespace = "JavaScriptCore", name = "Exception"})
IO ()
{- |
Throw /@exception@/ to /@context@/.
-}
contextThrowException ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a, JavaScriptCore.Exception.IsException b) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> b
{- ^ /@exception@/: a 'GI.JavaScriptCore.Objects.Exception.Exception' -}
-> m ()
contextThrowException context exception = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
exception' <- unsafeManagedPtrCastPtr exception
jsc_context_throw_exception context' exception'
touchManagedPtr context
touchManagedPtr exception
return ()
#if ENABLE_OVERLOADING
data ContextThrowExceptionMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsContext a, JavaScriptCore.Exception.IsException b) => O.MethodInfo ContextThrowExceptionMethodInfo a signature where
overloadedMethod _ = contextThrowException
#endif
-- method Context::throw_with_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "JavaScriptCore", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #JSCContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "error_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the error name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "error_message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an error message", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_throw_with_name" jsc_context_throw_with_name ::
Ptr Context -> -- context : TInterface (Name {namespace = "JavaScriptCore", name = "Context"})
CString -> -- error_name : TBasicType TUTF8
CString -> -- error_message : TBasicType TUTF8
IO ()
{- |
Throw an exception to /@context@/ using the given error name and message. The created 'GI.JavaScriptCore.Objects.Exception.Exception'
can be retrieved with 'GI.JavaScriptCore.Objects.Context.contextGetException'.
-}
contextThrowWithName ::
(B.CallStack.HasCallStack, MonadIO m, IsContext a) =>
a
{- ^ /@context@/: a 'GI.JavaScriptCore.Objects.Context.Context' -}
-> T.Text
{- ^ /@errorName@/: the error name -}
-> T.Text
{- ^ /@errorMessage@/: an error message -}
-> m ()
contextThrowWithName context errorName errorMessage = liftIO $ do
context' <- unsafeManagedPtrCastPtr context
errorName' <- textToCString errorName
errorMessage' <- textToCString errorMessage
jsc_context_throw_with_name context' errorName' errorMessage'
touchManagedPtr context
freeMem errorName'
freeMem errorMessage'
return ()
#if ENABLE_OVERLOADING
data ContextThrowWithNameMethodInfo
instance (signature ~ (T.Text -> T.Text -> m ()), MonadIO m, IsContext a) => O.MethodInfo ContextThrowWithNameMethodInfo a signature where
overloadedMethod _ = contextThrowWithName
#endif
-- method Context::get_current
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "JavaScriptCore", name = "Context"}))
-- throws : False
-- Skip return : False
foreign import ccall "jsc_context_get_current" jsc_context_get_current ::
IO (Ptr Context)
{- |
Get the 'GI.JavaScriptCore.Objects.Context.Context' that is currently executing a function. This should only be
called within a function or method callback, otherwise 'Nothing' will be returned.
-}
contextGetCurrent ::
(B.CallStack.HasCallStack, MonadIO m) =>
m (Maybe Context)
{- ^ __Returns:__ the 'GI.JavaScriptCore.Objects.Context.Context' that is currently executing. -}
contextGetCurrent = liftIO $ do
result <- jsc_context_get_current
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (newObject Context) result'
return result''
return maybeResult
#if ENABLE_OVERLOADING
#endif