module Qtc.Classes.Script (
qScriptEngine, evaluate, newObject, globalObject, newQObject, newQMetaObject, toScriptValue, fromScriptValue, toScriptQObjectValue, fromScriptQObjectValue
, construct, call, setScriptProperty, scriptProperty, qScriptValue_delete
, toScriptInt, toBool, toScriptString
, fromScriptInt, fromBool, fromScriptString
, argument, argumentCount, thisObject, qScriptContext_delete
, qNsfContainer
, registerDsSignal, dsSignal_nll, dsSignal_int, dsSignal_bool, dsSignal_ptr, connectDynamic, connectDynamicSlot
, scriptSlot_nll, scriptSlot_int, scriptSlot_bool, scriptSlot_ptr
)
where
import Foreign.C.Types
import Qtc.Classes.Base
import Qtc.ClassTypes.Core
import Qtc.Core.Base
import Qtc.ClassTypes.Script
import Data.List
class QqScriptEngine x1 where
qScriptEngine :: x1 -> IO (QScriptEngine ())
instance QqScriptEngine (()) where
qScriptEngine ()
= withQScriptEngineResult $
qtc_QScriptEngine
foreign import ccall "qtc_QScriptEngine" qtc_QScriptEngine :: IO (Ptr (TQScriptEngine ()))
instance QqScriptEngine ((QObject a)) where
qScriptEngine _qobj
= withQScriptEngineResult $
withObjectPtr _qobj $ \cobj_qobj ->
qtc_QScriptEngine1 cobj_qobj
foreign import ccall "qtc_QScriptEngine1" qtc_QScriptEngine1 :: Ptr (TQObject a) -> IO (Ptr (TQScriptEngine ()))
evaluate :: QScriptEngine a -> String -> IO (QScriptValue ())
evaluate _qsce _sdat
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
withCWString _sdat $ \cstr_sdat ->
qtc_QScriptEngine_evaluate cobj_qsce cstr_sdat
foreign import ccall "qtc_QScriptEngine_evaluate" qtc_QScriptEngine_evaluate :: Ptr (TQScriptEngine a) -> CWString -> IO (Ptr (TQScriptValue ()))
newObject :: QScriptEngine a -> IO (QScriptValue ())
newObject _qsce
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
qtc_QScriptEngine_newObject cobj_qsce
foreign import ccall "qtc_QScriptEngine_newObject" qtc_QScriptEngine_newObject :: Ptr (TQScriptEngine a) -> IO (Ptr (TQScriptValue ()))
globalObject :: QScriptEngine a -> IO (QScriptValue ())
globalObject _qsce
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
qtc_QScriptEngine_globalObject cobj_qsce
foreign import ccall "qtc_QScriptEngine_globalObject" qtc_QScriptEngine_globalObject :: Ptr (TQScriptEngine a) -> IO (Ptr (TQScriptValue ()))
newQObject :: QScriptEngine a -> QObject b -> IO (QScriptValue ())
newQObject _qsce _qobj
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
withObjectPtr _qobj $ \cobj_qobj ->
qtc_QScriptEngine_newQObject cobj_qsce cobj_qobj
foreign import ccall "qtc_QScriptEngine_newQObject" qtc_QScriptEngine_newQObject :: Ptr (TQScriptEngine a) -> Ptr (TQObject b) -> IO (Ptr (TQScriptValue ()))
newQMetaObject :: QScriptEngine a -> QMetaObject b -> IO (QScriptValue ())
newQMetaObject _qsce _qobj
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
withObjectPtr _qobj $ \cobj_qobj ->
qtc_QScriptEngine_newQMetaObject cobj_qsce cobj_qobj
foreign import ccall "qtc_QScriptEngine_newQMetaObject" qtc_QScriptEngine_newQMetaObject :: Ptr (TQScriptEngine a) -> Ptr (TQMetaObject b) -> IO (Ptr (TQScriptValue ()))
toScriptValue :: String -> QScriptEngine a -> Object b -> IO (QScriptValue ())
toScriptValue _qtyp _qsce _qobj
= withQScriptValueResult $
withCWString _qtyp $ \cstr_qtyp ->
withObjectPtr _qsce $ \cobj_qsce ->
withObjectPtr _qobj $ \cobj_qobj ->
qtc_QScriptEngine_toScriptValue cstr_qtyp cobj_qsce cobj_qobj
foreign import ccall "qtc_QScriptEngine_toScriptValue" qtc_QScriptEngine_toScriptValue :: CWString -> Ptr (TQScriptEngine a) -> Ptr b -> IO (Ptr (TQScriptValue ()))
toScriptQObjectValue :: String -> QScriptEngine a -> QObject b -> IO (QScriptValue ())
toScriptQObjectValue _qtyp _qsce _qobj
= withQScriptValueResult $
withCWString _qtyp $ \cstr_qtyp ->
withObjectPtr _qsce $ \cobj_qsce ->
withObjectPtr _qobj $ \cobj_qobj ->
qtc_QScriptEngine_toScriptQObjectValue cstr_qtyp cobj_qsce cobj_qobj
foreign import ccall "qtc_QScriptEngine_toScriptQObjectValue" qtc_QScriptEngine_toScriptQObjectValue :: CWString -> Ptr (TQScriptEngine a) -> Ptr (TQObject b) -> IO (Ptr (TQScriptValue ()))
fromScriptValue :: String -> QScriptEngine a -> QScriptValue () -> IO (Object ())
fromScriptValue _qtyp _qsce _qscv
= withObjectRefResult $
withCWString _qtyp $ \cstr_qtyp ->
withObjectPtr _qsce $ \cobj_qsce ->
withObjectPtr _qscv $ \cobj_qscv ->
qtc_QScriptEngine_fromScriptValue cstr_qtyp cobj_qsce cobj_qscv
foreign import ccall "qtc_QScriptEngine_fromScriptValue" qtc_QScriptEngine_fromScriptValue :: CWString -> Ptr (TQScriptEngine a) -> Ptr (TQScriptValue b) -> IO (Ptr ())
fromScriptQObjectValue :: String -> QScriptEngine a -> QScriptValue () -> IO (QObject ())
fromScriptQObjectValue _qtyp _qsce _qscv
= withQObjectResult $
withCWString _qtyp $ \cstr_qtyp ->
withObjectPtr _qsce $ \cobj_qsce ->
withObjectPtr _qscv $ \cobj_qscv ->
qtc_QScriptEngine_fromScriptQObjectValue cstr_qtyp cobj_qsce cobj_qscv
foreign import ccall "qtc_QScriptEngine_fromScriptQObjectValue" qtc_QScriptEngine_fromScriptQObjectValue :: CWString -> Ptr (TQScriptEngine a) -> Ptr (TQScriptValue b) -> IO (Ptr (TQObject ()))
construct :: QScriptValue () -> [QScriptValue ()] -> IO (QScriptValue ())
construct _qsvl _qsva
= withQScriptValueResult $
withObjectPtr _qsvl $ \cobj_qsvl ->
withQListObject _qsva $ \cqlistlen_qsva cqlistobj_qsva ->
qtc_QScriptValue_construct cobj_qsvl cqlistlen_qsva cqlistobj_qsva
foreign import ccall "qtc_QScriptValue_construct" qtc_QScriptValue_construct :: Ptr (TQScriptValue ()) -> CInt -> Ptr (Ptr (TQScriptValue ())) -> IO (Ptr (TQScriptValue ()))
call :: QScriptValue () -> QScriptValue () -> [QScriptValue ()] -> IO (QScriptValue ())
call _qsvl _qsvt _qsva
= withQScriptValueResult $
withObjectPtr _qsvl $ \cobj_qsvl ->
withObjectPtr _qsvt $ \cobj_qsvt ->
withQListObject _qsva $ \cqlistlen_qsva cqlistobj_qsva ->
qtc_QScriptValue_call cobj_qsvl cobj_qsvt cqlistlen_qsva cqlistobj_qsva
foreign import ccall "qtc_QScriptValue_call" qtc_QScriptValue_call :: Ptr (TQScriptValue ()) -> Ptr (TQScriptValue ()) -> CInt -> Ptr (Ptr (TQScriptValue ())) -> IO (Ptr (TQScriptValue ()))
setScriptProperty :: QScriptValue () -> String -> QScriptValue () -> IO ()
setScriptProperty _qsvl _sprp _qstv
= withObjectPtr _qsvl $ \cobj_qsvl ->
withCWString _sprp $ \cstr_sprp ->
withObjectPtr _qstv $ \cobj_qstv ->
qtc_QScriptValue_setProperty cobj_qsvl cstr_sprp cobj_qstv
foreign import ccall "qtc_QScriptValue_setProperty" qtc_QScriptValue_setProperty :: Ptr (TQScriptValue ()) -> CWString -> Ptr (TQScriptValue ()) -> IO ()
scriptProperty :: QScriptValue () -> String -> IO (QScriptValue ())
scriptProperty _qsvl _sprp
= withQScriptValueResult $
withObjectPtr _qsvl $ \cobj_qsvl ->
withCWString _sprp $ \cstr_sprp ->
qtc_QScriptValue_property cobj_qsvl cstr_sprp
foreign import ccall "qtc_QScriptValue_property" qtc_QScriptValue_property :: Ptr (TQScriptValue ()) -> CWString -> IO (Ptr (TQScriptValue ()))
qScriptValue_delete :: QScriptValue () -> IO ()
qScriptValue_delete _qsvl
= withObjectPtr _qsvl $ \cobj_qsvl ->
qtc_QScriptValue_delete cobj_qsvl
foreign import ccall "qtc_QScriptValue_delete" qtc_QScriptValue_delete :: Ptr (TQScriptValue ()) -> IO ()
toScriptInt :: QScriptValue () -> IO (Int)
toScriptInt _qsvl
= withIntResult $
withObjectPtr _qsvl $ \cobj_qsvl ->
qtc_QScriptValue_toInt cobj_qsvl
foreign import ccall "qtc_QScriptValue_toInt" qtc_QScriptValue_toInt :: Ptr (TQScriptValue ()) -> IO (CInt)
toBool :: QScriptValue () -> IO (Bool)
toBool _qsvl
= withBoolResult $
withObjectPtr _qsvl $ \cobj_qsvl ->
qtc_QScriptValue_toBool cobj_qsvl
foreign import ccall "qtc_QScriptValue_toBool" qtc_QScriptValue_toBool :: Ptr (TQScriptValue ()) -> IO (CBool)
toScriptString :: QScriptValue () -> IO (String)
toScriptString _qsvl
= withStringResult $
withObjectPtr _qsvl $ \cobj_qsvl ->
qtc_QScriptValue_toString cobj_qsvl
foreign import ccall "qtc_QScriptValue_toString" qtc_QScriptValue_toString :: Ptr (TQScriptValue ()) -> IO (Ptr (TQString ()))
fromScriptInt :: QScriptEngine () -> Int -> IO (QScriptValue ())
fromScriptInt _qsce _aind
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
qtc_QScriptValue_fromInt cobj_qsce (toCInt _aind)
foreign import ccall "qtc_QScriptValue_fromInt" qtc_QScriptValue_fromInt :: Ptr (TQScriptEngine ()) -> CInt -> IO (Ptr (TQScriptValue ()))
fromBool :: QScriptEngine () -> Bool -> IO (QScriptValue ())
fromBool _qsce _abool
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
qtc_QScriptValue_fromBool cobj_qsce (toCBool _abool)
foreign import ccall "qtc_QScriptValue_fromBool" qtc_QScriptValue_fromBool :: Ptr (TQScriptEngine ()) -> CBool -> IO (Ptr (TQScriptValue ()))
fromScriptString :: QScriptEngine () -> String -> IO (QScriptValue ())
fromScriptString _qsce _astr
= withQScriptValueResult $
withObjectPtr _qsce $ \cobj_qsce ->
withCWString _astr $ \cstr_a ->
qtc_QScriptValue_fromString cobj_qsce cstr_a
foreign import ccall "qtc_QScriptValue_fromString" qtc_QScriptValue_fromString :: Ptr (TQScriptEngine ()) -> CWString -> IO (Ptr (TQScriptValue ()))
argumentCount :: QScriptContext () -> IO (Int)
argumentCount _qctx
= withIntResult $
withObjectPtr _qctx $ \cobj_qctx ->
qtc_QScriptContext_argumentCount cobj_qctx
foreign import ccall "qtc_QScriptContext_argumentCount" qtc_QScriptContext_argumentCount :: Ptr (TQScriptContext ()) -> IO (CInt)
argument :: QScriptContext () -> Int -> IO (QScriptValue ())
argument _qctx _aind
= withQScriptValueResult $
withObjectPtr _qctx $ \cobj_qctx ->
qtc_QScriptContext_argument cobj_qctx (toCInt _aind)
foreign import ccall "qtc_QScriptContext_argument" qtc_QScriptContext_argument :: Ptr (TQScriptContext ()) -> CInt -> IO (Ptr (TQScriptValue ()))
thisObject :: QScriptContext () -> IO (QScriptValue ())
thisObject _qctx
= withQScriptValueResult $
withObjectPtr _qctx $ \cobj_qctx ->
qtc_QScriptContext_thisObject cobj_qctx
foreign import ccall "qtc_QScriptContext_thisObject" qtc_QScriptContext_thisObject :: Ptr (TQScriptContext ()) -> IO (Ptr (TQScriptValue ()))
qScriptContext_delete :: QScriptContext () -> IO ()
qScriptContext_delete _qctx
= withObjectPtr _qctx $ \cobj_qctx ->
qtc_QScriptContext_delete cobj_qctx
foreign import ccall "qtc_QScriptContext_delete" qtc_QScriptContext_delete :: Ptr (TQScriptContext ()) -> IO ()
class QqNsfContainer x1 where
qNsfContainer :: x1 -> IO (QNsfContainer ())
instance QqNsfContainer ((QScriptContext () -> IO ())) where
qNsfContainer (_qnsf)
= do
funptr <- wrapNsfHandler2 nsfHandlerWrapper2
stptr <- newStablePtr (Wrap _qnsf)
withQNsfContainerResult $
qtc_QNsfContainer (toCFunPtr funptr) (castStablePtrToPtr stptr)
where
nsfHandlerWrapper2 :: Ptr fun -> Ptr () -> Ptr (TQScriptContext ()) -> IO ()
nsfHandlerWrapper2 funptr stptr x0
= do x0obj <- objectFromPtr_nf x0
if (objectIsNull x0obj)
then do when (stptr/=ptrNull)
(freeStablePtr (castPtrToStablePtr stptr))
when (funptr/=ptrNull)
(freeHaskellFunPtr (castPtrToFunPtr funptr))
else _qnsf x0obj
return ()
foreign import ccall "qtc_QNsfContainer" qtc_QNsfContainer :: Ptr (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()) -> Ptr () -> IO (Ptr (TQNsfContainer ()))
foreign import ccall "wrapper" wrapNsfHandler2 :: (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()) -> IO (FunPtr (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()))
instance QqNsfContainer (QObject a, (QScriptContext () -> IO ())) where
qNsfContainer (_parent, _qnsf)
= do
funptr <- wrapNsfHandler3 nsfHandlerWrapper3
stptr <- newStablePtr (Wrap _qnsf)
withQNsfContainerResult $
withObjectPtr _parent $ \cobj_parent ->
qtc_QNsfContainer1 cobj_parent (toCFunPtr funptr) (castStablePtrToPtr stptr)
where
nsfHandlerWrapper3 :: Ptr fun -> Ptr () -> Ptr (TQScriptContext ()) -> IO ()
nsfHandlerWrapper3 funptr stptr x0
= do x0obj <- objectFromPtr_nf x0
if (objectIsNull x0obj)
then do when (stptr/=ptrNull)
(freeStablePtr (castPtrToStablePtr stptr))
when (funptr/=ptrNull)
(freeHaskellFunPtr (castPtrToFunPtr funptr))
else _qnsf x0obj
return ()
foreign import ccall "qtc_QNsfContainer1" qtc_QNsfContainer1 :: Ptr (TQObject a) -> Ptr (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()) -> Ptr () -> IO (Ptr (TQNsfContainer ()))
foreign import ccall "wrapper" wrapNsfHandler3 :: (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()) -> IO (FunPtr (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()))
instance QqNsfContainer (QObject a, String, (QScriptContext () -> IO ())) where
qNsfContainer (_parent, _cnam, _qnsf)
= do
funptr <- wrapNsfHandler4 nsfHandlerWrapper4
stptr <- newStablePtr (Wrap _qnsf)
withQNsfContainerResult $
withObjectPtr _parent $ \cobj_parent ->
withCWString _cnam $ \cstr_cnam ->
qtc_QNsfContainer2 cobj_parent cstr_cnam (toCFunPtr funptr) (castStablePtrToPtr stptr)
where
nsfHandlerWrapper4 :: Ptr fun -> Ptr () -> Ptr (TQScriptContext ()) -> IO ()
nsfHandlerWrapper4 funptr stptr x0
= do x0obj <- objectFromPtr_nf x0
if (objectIsNull x0obj)
then do when (stptr/=ptrNull)
(freeStablePtr (castPtrToStablePtr stptr))
when (funptr/=ptrNull)
(freeHaskellFunPtr (castPtrToFunPtr funptr))
else _qnsf x0obj
return ()
foreign import ccall "qtc_QNsfContainer2" qtc_QNsfContainer2 :: Ptr (TQObject a) -> CWString -> Ptr (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()) -> Ptr () -> IO (Ptr (TQNsfContainer ()))
foreign import ccall "wrapper" wrapNsfHandler4 :: (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()) -> IO (FunPtr (Ptr fun -> Ptr state -> Ptr (TQScriptContext ()) -> IO ()))
registerDsSignal :: QObject a -> QScriptEngine () -> QObject b -> String -> IO ()
registerDsSignal _this _eng _dom _sig
| isSuffixOf "()" _sig
= do
let nam = take ((length _sig) 2) _sig
qNsfContainer (_dom, nam, dsSignal_nll _this _sig)
return ()
| isSuffixOf "(int)" _sig
= do
let nam = take ((length _sig) 5) _sig
qNsfContainer (_dom, nam, dsSignal_int _this _sig)
return ()
| isSuffixOf "(bool)" _sig
= do
let nam = take ((length _sig) 6) _sig
qNsfContainer (_dom, nam, dsSignal_bool _this _sig)
return ()
| isPtrSuffix _sig
= do
let nam = take ((length _sig) 7) _sig
qNsfContainer (_dom, nam, dsSignal_ptr _this _eng _sig)
return ()
| otherwise
= return ()
dsSignal_nll :: QObject a -> String -> QScriptContext () -> IO ()
dsSignal_nll _this _sig _ctx
= emitSignal _this _sig ()
dsSignal_int :: QObject a -> String -> QScriptContext () -> IO ()
dsSignal_int _this _sig _ctx
= emitSignal _this _sig =<< toScriptInt =<< argument _ctx 0
dsSignal_bool :: QObject a -> String -> QScriptContext () -> IO ()
dsSignal_bool _this _sig _ctx
= emitSignal _this _sig =<< toBool =<< argument _ctx 0
dsSignal_ptr :: QObject a -> QScriptEngine () -> String -> QScriptContext () -> IO ()
dsSignal_ptr _this _eng _sig _ctx
= do
ptr <- fromScriptValue (getSigPtrTyp _sig) _eng =<< argument _ctx 0
emitSignal _this _sig ptr
connectDynamic :: QObject a -> QScriptEngine () -> QScriptContext () -> IO ()
connectDynamic _this _eng _ctx
= do
sfv <- argument _ctx 3
stv <- argument _ctx 1
sig_nam <- toScriptString =<< argument _ctx 0
slt_nam <- toScriptString =<< argument _ctx 2
connectDynamicSlot _this _eng sig_nam slt_nam sfv stv
connectDynamicSlot :: QObject a -> QScriptEngine () -> String -> String -> QScriptValue () -> QScriptValue () -> IO ()
connectDynamicSlot _this _eng _sig_nam _slt_nam _sfv _stv
| (isSuffixOf "()" _sig_nam) && (isSuffixOf "()" _slt_nam)
= connectSlot _this _sig_nam _this _slt_nam $ scriptSlot_nll _eng _sfv _stv
| (isSuffixOf "(int)" _sig_nam) && (isSuffixOf "(int)" _slt_nam)
= connectSlot _this _sig_nam _this _slt_nam $ scriptSlot_int _eng _sfv _stv
| (isSuffixOf "(bool)" _sig_nam) && (isSuffixOf "(bool)" _slt_nam)
= connectSlot _this _sig_nam _this _slt_nam $ scriptSlot_bool _eng _sfv _stv
| (isPtrSuffix _sig_nam) && (isPtrSuffix _slt_nam)
= connectSlot _this _sig_nam _this _slt_nam $ scriptSlot_ptr _eng _sfv _stv $ getSigPtrTyp _sig_nam
| otherwise
= return ()
scriptSlot_nll :: QScriptEngine() -> QScriptValue () -> QScriptValue () -> QObject () -> IO ()
scriptSlot_nll _eng _sfv _stv _this
= do
rfv <- call _sfv _stv []
return ()
scriptSlot_int :: QScriptEngine() -> QScriptValue () -> QScriptValue () -> QObject () -> Int -> IO ()
scriptSlot_int _eng _sfv _stv _this _int
= do
dso <- fromScriptInt _eng _int
rfv <- call _sfv _stv [dso]
return ()
scriptSlot_bool :: QScriptEngine() -> QScriptValue () -> QScriptValue () -> QObject () -> Bool -> IO ()
scriptSlot_bool _eng _sfv _stv _this _bool
= do
dso <- fromBool _eng _bool
rfv <- call _sfv _stv [dso]
return ()
scriptSlot_ptr :: QScriptEngine() -> QScriptValue () -> QScriptValue () -> String -> QObject () -> Object a -> IO ()
scriptSlot_ptr _eng _sfv _stv _spt _this _ptr
= do
dso <- toScriptValue _spt _eng _ptr
rfv <- call _sfv _stv [dso]
return ()
isPtrSuffix :: String -> Bool
isPtrSuffix sig
= if (t1 == [])
then False
else
if (((last t1) == ')') && ((last (init t1)) == '*'))
then True
else False
where
t1 = dropWhile ('('/=) sig
getSigPtrTyp :: String -> String
getSigPtrTyp sig
= "<" ++ (init $ tail $ dropWhile ('('/=) sig) ++ ">"