content: module JavaScript.Object.Internal
      ( Object(..)
      , create
  --    , allProps
      , listProps
      , getProp
      , unsafeGetProp
      , setProp
      , unsafeSetProp
  --    , isInstanceOf
      ) where
  
  import Language.Javascript.JSaddle.Types (JSM, JSVal, Object(..), JSString)
  import Language.Javascript.JSaddle.Native.Internal
         (newEmptyObject, propertyNames, getPropertyByName, setPropertyByName)
  
  -- | create an empty object
  create :: JSM Object
  create = newEmptyObject
  {-# INLINE create #-}
  
  --allProps :: Object -> JSM JSArray
  --allProps o = js_allProps o
  --{-# INLINE allProps #-}
  
  listProps :: Object -> JSM [JSString]
  listProps = propertyNames
  {-# INLINE listProps #-}
  
  {- | get a property from an object. If accessing the property results in
       an exception, the exception is converted to a JSException. Since exception
       handling code prevents some optimizations in some JS engines, you may want
       to use unsafeGetProp instead
   -}
  getProp :: JSString -> Object -> JSM JSVal
  getProp = unsafeGetProp
  {-# INLINE getProp #-}
  
  unsafeGetProp :: JSString -> Object -> JSM JSVal
  unsafeGetProp = getPropertyByName
  {-# INLINE unsafeGetProp #-}
  
  setProp :: JSString -> JSVal -> Object -> JSM ()
  setProp = unsafeSetProp
  {-# INLINE setProp #-}
  
  unsafeSetProp :: JSString -> JSVal -> Object -> JSM ()
  unsafeSetProp = setPropertyByName
  {-# INLINE unsafeSetProp #-}
  
  --isInstanceOf :: Object -> JSVal -> GHCJSPure Bool
  --isInstanceOf o s = js_isInstanceOf o s
  --{-# INLINE isInstanceOf #-}
  