packages feed

gi-glib-0.2.46.15: GI/GLib/Structs/Scanner.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

The data structure representing a lexical scanner.

You should set @input_name after creating the scanner, since
it is used by the default message handler when displaying
warnings and errors. If you are scanning a file, the filename
would be a good choice.

The @user_data and @max_parse_errors fields are not used.
If you need to associate extra data with the scanner you
can place them here.

If you want to use your own message handler you can set the
@msg_handler field. The type of the message handler function
is declared by #GScannerMsgFunc.
-}

module GI.GLib.Structs.Scanner
    ( 

-- * Exported types
    Scanner(..)                             ,
    newZeroScanner                          ,
    noScanner                               ,


 -- * Methods
-- ** scannerCurLine
    ScannerCurLineMethodInfo                ,
    scannerCurLine                          ,


-- ** scannerCurPosition
    ScannerCurPositionMethodInfo            ,
    scannerCurPosition                      ,


-- ** scannerCurToken
    ScannerCurTokenMethodInfo               ,
    scannerCurToken                         ,


-- ** scannerDestroy
    ScannerDestroyMethodInfo                ,
    scannerDestroy                          ,


-- ** scannerEof
    ScannerEofMethodInfo                    ,
    scannerEof                              ,


-- ** scannerGetNextToken
    ScannerGetNextTokenMethodInfo           ,
    scannerGetNextToken                     ,


-- ** scannerInputFile
    ScannerInputFileMethodInfo              ,
    scannerInputFile                        ,


-- ** scannerInputText
    ScannerInputTextMethodInfo              ,
    scannerInputText                        ,


-- ** scannerPeekNextToken
    ScannerPeekNextTokenMethodInfo          ,
    scannerPeekNextToken                    ,


-- ** scannerScopeAddSymbol
    ScannerScopeAddSymbolMethodInfo         ,
    scannerScopeAddSymbol                   ,


-- ** scannerScopeRemoveSymbol
    ScannerScopeRemoveSymbolMethodInfo      ,
    scannerScopeRemoveSymbol                ,


-- ** scannerSetScope
    ScannerSetScopeMethodInfo               ,
    scannerSetScope                         ,


-- ** scannerSyncFileOffset
    ScannerSyncFileOffsetMethodInfo         ,
    scannerSyncFileOffset                   ,


-- ** scannerUnexpToken
    ScannerUnexpTokenMethodInfo             ,
    scannerUnexpToken                       ,




 -- * Properties
-- ** Config
    scannerClearConfig                      ,
    scannerConfig                           ,
    scannerReadConfig                       ,
    scannerWriteConfig                      ,


-- ** InputName
    scannerClearInputName                   ,
    scannerInputName                        ,
    scannerReadInputName                    ,
    scannerWriteInputName                   ,


-- ** Line
    scannerLine                             ,
    scannerReadLine                         ,
    scannerWriteLine                        ,


-- ** MaxParseErrors
    scannerMaxParseErrors                   ,
    scannerReadMaxParseErrors               ,
    scannerWriteMaxParseErrors              ,


-- ** NextLine
    scannerNextLine                         ,
    scannerReadNextLine                     ,
    scannerWriteNextLine                    ,


-- ** NextPosition
    scannerNextPosition                     ,
    scannerReadNextPosition                 ,
    scannerWriteNextPosition                ,


-- ** NextToken
    scannerNextToken                        ,
    scannerReadNextToken                    ,
    scannerWriteNextToken                   ,


-- ** NextValue
    scannerClearNextValue                   ,
    scannerNextValue                        ,
    scannerReadNextValue                    ,
    scannerWriteNextValue                   ,


-- ** ParseErrors
    scannerParseErrors                      ,
    scannerReadParseErrors                  ,
    scannerWriteParseErrors                 ,


-- ** Position
    scannerPosition                         ,
    scannerReadPosition                     ,
    scannerWritePosition                    ,


-- ** Qdata
    scannerClearQdata                       ,
    scannerQdata                            ,
    scannerReadQdata                        ,
    scannerWriteQdata                       ,


-- ** Token
    scannerReadToken                        ,
    scannerToken                            ,
    scannerWriteToken                       ,


-- ** UserData
    scannerClearUserData                    ,
    scannerReadUserData                     ,
    scannerUserData                         ,
    scannerWriteUserData                    ,


-- ** Value
    scannerClearValue                       ,
    scannerReadValue                        ,
    scannerValue                            ,
    scannerWriteValue                       ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.GLib.Types
import GI.GLib.Callbacks

newtype Scanner = Scanner (ForeignPtr Scanner)
instance WrappedPtr Scanner where
    wrappedPtrCalloc = callocBytes 144
    wrappedPtrCopy = copyPtr 144
    wrappedPtrFree = Just ptr_to_g_free

-- | Construct a `Scanner` struct initialized to zero.
newZeroScanner :: MonadIO m => m Scanner
newZeroScanner = liftIO $ wrappedPtrCalloc >>= wrapPtr Scanner

instance tag ~ 'AttrSet => Constructible Scanner tag where
    new _ attrs = do
        o <- newZeroScanner
        GI.Attributes.set o attrs
        return o


noScanner :: Maybe Scanner
noScanner = Nothing

scannerReadUserData :: MonadIO m => Scanner -> m (Ptr ())
scannerReadUserData s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr ())
    return val

scannerWriteUserData :: MonadIO m => Scanner -> Ptr () -> m ()
scannerWriteUserData s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: Ptr ())

scannerClearUserData :: MonadIO m => Scanner -> m ()
scannerClearUserData s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (nullPtr :: Ptr ())

data ScannerUserDataFieldInfo
instance AttrInfo ScannerUserDataFieldInfo where
    type AttrAllowedOps ScannerUserDataFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ScannerUserDataFieldInfo = (~) (Ptr ())
    type AttrBaseTypeConstraint ScannerUserDataFieldInfo = (~) Scanner
    type AttrGetType ScannerUserDataFieldInfo = Ptr ()
    type AttrLabel ScannerUserDataFieldInfo = "user_data"
    attrGet _ = scannerReadUserData
    attrSet _ = scannerWriteUserData
    attrConstruct = undefined
    attrClear _ = scannerClearUserData

scannerUserData :: AttrLabelProxy "userData"
scannerUserData = AttrLabelProxy


scannerReadMaxParseErrors :: MonadIO m => Scanner -> m Word32
scannerReadMaxParseErrors s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO Word32
    return val

scannerWriteMaxParseErrors :: MonadIO m => Scanner -> Word32 -> m ()
scannerWriteMaxParseErrors s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (val :: Word32)

data ScannerMaxParseErrorsFieldInfo
instance AttrInfo ScannerMaxParseErrorsFieldInfo where
    type AttrAllowedOps ScannerMaxParseErrorsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerMaxParseErrorsFieldInfo = (~) Word32
    type AttrBaseTypeConstraint ScannerMaxParseErrorsFieldInfo = (~) Scanner
    type AttrGetType ScannerMaxParseErrorsFieldInfo = Word32
    type AttrLabel ScannerMaxParseErrorsFieldInfo = "max_parse_errors"
    attrGet _ = scannerReadMaxParseErrors
    attrSet _ = scannerWriteMaxParseErrors
    attrConstruct = undefined
    attrClear _ = undefined

scannerMaxParseErrors :: AttrLabelProxy "maxParseErrors"
scannerMaxParseErrors = AttrLabelProxy


scannerReadParseErrors :: MonadIO m => Scanner -> m Word32
scannerReadParseErrors s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 12) :: IO Word32
    return val

scannerWriteParseErrors :: MonadIO m => Scanner -> Word32 -> m ()
scannerWriteParseErrors s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 12) (val :: Word32)

data ScannerParseErrorsFieldInfo
instance AttrInfo ScannerParseErrorsFieldInfo where
    type AttrAllowedOps ScannerParseErrorsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerParseErrorsFieldInfo = (~) Word32
    type AttrBaseTypeConstraint ScannerParseErrorsFieldInfo = (~) Scanner
    type AttrGetType ScannerParseErrorsFieldInfo = Word32
    type AttrLabel ScannerParseErrorsFieldInfo = "parse_errors"
    attrGet _ = scannerReadParseErrors
    attrSet _ = scannerWriteParseErrors
    attrConstruct = undefined
    attrClear _ = undefined

scannerParseErrors :: AttrLabelProxy "parseErrors"
scannerParseErrors = AttrLabelProxy


scannerReadInputName :: MonadIO m => Scanner -> m (Maybe T.Text)
scannerReadInputName s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

scannerWriteInputName :: MonadIO m => Scanner -> CString -> m ()
scannerWriteInputName s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: CString)

scannerClearInputName :: MonadIO m => Scanner -> m ()
scannerClearInputName s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (nullPtr :: CString)

data ScannerInputNameFieldInfo
instance AttrInfo ScannerInputNameFieldInfo where
    type AttrAllowedOps ScannerInputNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ScannerInputNameFieldInfo = (~) CString
    type AttrBaseTypeConstraint ScannerInputNameFieldInfo = (~) Scanner
    type AttrGetType ScannerInputNameFieldInfo = Maybe T.Text
    type AttrLabel ScannerInputNameFieldInfo = "input_name"
    attrGet _ = scannerReadInputName
    attrSet _ = scannerWriteInputName
    attrConstruct = undefined
    attrClear _ = scannerClearInputName

scannerInputName :: AttrLabelProxy "inputName"
scannerInputName = AttrLabelProxy


scannerReadQdata :: MonadIO m => Scanner -> m (Maybe Data)
scannerReadQdata s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr Data)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr Data) val'
        return val''
    return result

scannerWriteQdata :: MonadIO m => Scanner -> Ptr Data -> m ()
scannerWriteQdata s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (val :: Ptr Data)

scannerClearQdata :: MonadIO m => Scanner -> m ()
scannerClearQdata s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (nullPtr :: Ptr Data)

data ScannerQdataFieldInfo
instance AttrInfo ScannerQdataFieldInfo where
    type AttrAllowedOps ScannerQdataFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ScannerQdataFieldInfo = (~) (Ptr Data)
    type AttrBaseTypeConstraint ScannerQdataFieldInfo = (~) Scanner
    type AttrGetType ScannerQdataFieldInfo = Maybe Data
    type AttrLabel ScannerQdataFieldInfo = "qdata"
    attrGet _ = scannerReadQdata
    attrSet _ = scannerWriteQdata
    attrConstruct = undefined
    attrClear _ = scannerClearQdata

scannerQdata :: AttrLabelProxy "qdata"
scannerQdata = AttrLabelProxy


scannerReadConfig :: MonadIO m => Scanner -> m (Maybe ScannerConfig)
scannerReadConfig s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr ScannerConfig)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr ScannerConfig) val'
        return val''
    return result

scannerWriteConfig :: MonadIO m => Scanner -> Ptr ScannerConfig -> m ()
scannerWriteConfig s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 32) (val :: Ptr ScannerConfig)

scannerClearConfig :: MonadIO m => Scanner -> m ()
scannerClearConfig s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 32) (nullPtr :: Ptr ScannerConfig)

data ScannerConfigFieldInfo
instance AttrInfo ScannerConfigFieldInfo where
    type AttrAllowedOps ScannerConfigFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ScannerConfigFieldInfo = (~) (Ptr ScannerConfig)
    type AttrBaseTypeConstraint ScannerConfigFieldInfo = (~) Scanner
    type AttrGetType ScannerConfigFieldInfo = Maybe ScannerConfig
    type AttrLabel ScannerConfigFieldInfo = "config"
    attrGet _ = scannerReadConfig
    attrSet _ = scannerWriteConfig
    attrConstruct = undefined
    attrClear _ = scannerClearConfig

scannerConfig :: AttrLabelProxy "config"
scannerConfig = AttrLabelProxy


scannerReadToken :: MonadIO m => Scanner -> m TokenType
scannerReadToken s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

scannerWriteToken :: MonadIO m => Scanner -> TokenType -> m ()
scannerWriteToken s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 40) (val' :: CUInt)

data ScannerTokenFieldInfo
instance AttrInfo ScannerTokenFieldInfo where
    type AttrAllowedOps ScannerTokenFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerTokenFieldInfo = (~) TokenType
    type AttrBaseTypeConstraint ScannerTokenFieldInfo = (~) Scanner
    type AttrGetType ScannerTokenFieldInfo = TokenType
    type AttrLabel ScannerTokenFieldInfo = "token"
    attrGet _ = scannerReadToken
    attrSet _ = scannerWriteToken
    attrConstruct = undefined
    attrClear _ = undefined

scannerToken :: AttrLabelProxy "token"
scannerToken = AttrLabelProxy


scannerReadValue :: MonadIO m => Scanner -> m (Maybe TokenValue)
scannerReadValue s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO (Ptr TokenValue)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr TokenValue) val'
        return val''
    return result

scannerWriteValue :: MonadIO m => Scanner -> Ptr TokenValue -> m ()
scannerWriteValue s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 48) (val :: Ptr TokenValue)

scannerClearValue :: MonadIO m => Scanner -> m ()
scannerClearValue s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 48) (nullPtr :: Ptr TokenValue)

data ScannerValueFieldInfo
instance AttrInfo ScannerValueFieldInfo where
    type AttrAllowedOps ScannerValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ScannerValueFieldInfo = (~) (Ptr TokenValue)
    type AttrBaseTypeConstraint ScannerValueFieldInfo = (~) Scanner
    type AttrGetType ScannerValueFieldInfo = Maybe TokenValue
    type AttrLabel ScannerValueFieldInfo = "value"
    attrGet _ = scannerReadValue
    attrSet _ = scannerWriteValue
    attrConstruct = undefined
    attrClear _ = scannerClearValue

scannerValue :: AttrLabelProxy "value"
scannerValue = AttrLabelProxy


scannerReadLine :: MonadIO m => Scanner -> m Word32
scannerReadLine s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO Word32
    return val

scannerWriteLine :: MonadIO m => Scanner -> Word32 -> m ()
scannerWriteLine s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 56) (val :: Word32)

data ScannerLineFieldInfo
instance AttrInfo ScannerLineFieldInfo where
    type AttrAllowedOps ScannerLineFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerLineFieldInfo = (~) Word32
    type AttrBaseTypeConstraint ScannerLineFieldInfo = (~) Scanner
    type AttrGetType ScannerLineFieldInfo = Word32
    type AttrLabel ScannerLineFieldInfo = "line"
    attrGet _ = scannerReadLine
    attrSet _ = scannerWriteLine
    attrConstruct = undefined
    attrClear _ = undefined

scannerLine :: AttrLabelProxy "line"
scannerLine = AttrLabelProxy


scannerReadPosition :: MonadIO m => Scanner -> m Word32
scannerReadPosition s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 60) :: IO Word32
    return val

scannerWritePosition :: MonadIO m => Scanner -> Word32 -> m ()
scannerWritePosition s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 60) (val :: Word32)

data ScannerPositionFieldInfo
instance AttrInfo ScannerPositionFieldInfo where
    type AttrAllowedOps ScannerPositionFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerPositionFieldInfo = (~) Word32
    type AttrBaseTypeConstraint ScannerPositionFieldInfo = (~) Scanner
    type AttrGetType ScannerPositionFieldInfo = Word32
    type AttrLabel ScannerPositionFieldInfo = "position"
    attrGet _ = scannerReadPosition
    attrSet _ = scannerWritePosition
    attrConstruct = undefined
    attrClear _ = undefined

scannerPosition :: AttrLabelProxy "position"
scannerPosition = AttrLabelProxy


scannerReadNextToken :: MonadIO m => Scanner -> m TokenType
scannerReadNextToken s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

scannerWriteNextToken :: MonadIO m => Scanner -> TokenType -> m ()
scannerWriteNextToken s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 64) (val' :: CUInt)

data ScannerNextTokenFieldInfo
instance AttrInfo ScannerNextTokenFieldInfo where
    type AttrAllowedOps ScannerNextTokenFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerNextTokenFieldInfo = (~) TokenType
    type AttrBaseTypeConstraint ScannerNextTokenFieldInfo = (~) Scanner
    type AttrGetType ScannerNextTokenFieldInfo = TokenType
    type AttrLabel ScannerNextTokenFieldInfo = "next_token"
    attrGet _ = scannerReadNextToken
    attrSet _ = scannerWriteNextToken
    attrConstruct = undefined
    attrClear _ = undefined

scannerNextToken :: AttrLabelProxy "nextToken"
scannerNextToken = AttrLabelProxy


scannerReadNextValue :: MonadIO m => Scanner -> m (Maybe TokenValue)
scannerReadNextValue s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO (Ptr TokenValue)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr TokenValue) val'
        return val''
    return result

scannerWriteNextValue :: MonadIO m => Scanner -> Ptr TokenValue -> m ()
scannerWriteNextValue s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 72) (val :: Ptr TokenValue)

scannerClearNextValue :: MonadIO m => Scanner -> m ()
scannerClearNextValue s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 72) (nullPtr :: Ptr TokenValue)

data ScannerNextValueFieldInfo
instance AttrInfo ScannerNextValueFieldInfo where
    type AttrAllowedOps ScannerNextValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ScannerNextValueFieldInfo = (~) (Ptr TokenValue)
    type AttrBaseTypeConstraint ScannerNextValueFieldInfo = (~) Scanner
    type AttrGetType ScannerNextValueFieldInfo = Maybe TokenValue
    type AttrLabel ScannerNextValueFieldInfo = "next_value"
    attrGet _ = scannerReadNextValue
    attrSet _ = scannerWriteNextValue
    attrConstruct = undefined
    attrClear _ = scannerClearNextValue

scannerNextValue :: AttrLabelProxy "nextValue"
scannerNextValue = AttrLabelProxy


scannerReadNextLine :: MonadIO m => Scanner -> m Word32
scannerReadNextLine s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 80) :: IO Word32
    return val

scannerWriteNextLine :: MonadIO m => Scanner -> Word32 -> m ()
scannerWriteNextLine s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 80) (val :: Word32)

data ScannerNextLineFieldInfo
instance AttrInfo ScannerNextLineFieldInfo where
    type AttrAllowedOps ScannerNextLineFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerNextLineFieldInfo = (~) Word32
    type AttrBaseTypeConstraint ScannerNextLineFieldInfo = (~) Scanner
    type AttrGetType ScannerNextLineFieldInfo = Word32
    type AttrLabel ScannerNextLineFieldInfo = "next_line"
    attrGet _ = scannerReadNextLine
    attrSet _ = scannerWriteNextLine
    attrConstruct = undefined
    attrClear _ = undefined

scannerNextLine :: AttrLabelProxy "nextLine"
scannerNextLine = AttrLabelProxy


scannerReadNextPosition :: MonadIO m => Scanner -> m Word32
scannerReadNextPosition s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 84) :: IO Word32
    return val

scannerWriteNextPosition :: MonadIO m => Scanner -> Word32 -> m ()
scannerWriteNextPosition s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 84) (val :: Word32)

data ScannerNextPositionFieldInfo
instance AttrInfo ScannerNextPositionFieldInfo where
    type AttrAllowedOps ScannerNextPositionFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ScannerNextPositionFieldInfo = (~) Word32
    type AttrBaseTypeConstraint ScannerNextPositionFieldInfo = (~) Scanner
    type AttrGetType ScannerNextPositionFieldInfo = Word32
    type AttrLabel ScannerNextPositionFieldInfo = "next_position"
    attrGet _ = scannerReadNextPosition
    attrSet _ = scannerWriteNextPosition
    attrConstruct = undefined
    attrClear _ = undefined

scannerNextPosition :: AttrLabelProxy "nextPosition"
scannerNextPosition = AttrLabelProxy


-- XXX Skipped attribute for "Scanner:msg_handler" :: Not implemented: "Wrapping foreign callbacks is not supported yet"

type instance AttributeList Scanner = ScannerAttributeList
type ScannerAttributeList = ('[ '("userData", ScannerUserDataFieldInfo), '("maxParseErrors", ScannerMaxParseErrorsFieldInfo), '("parseErrors", ScannerParseErrorsFieldInfo), '("inputName", ScannerInputNameFieldInfo), '("qdata", ScannerQdataFieldInfo), '("config", ScannerConfigFieldInfo), '("token", ScannerTokenFieldInfo), '("value", ScannerValueFieldInfo), '("line", ScannerLineFieldInfo), '("position", ScannerPositionFieldInfo), '("nextToken", ScannerNextTokenFieldInfo), '("nextValue", ScannerNextValueFieldInfo), '("nextLine", ScannerNextLineFieldInfo), '("nextPosition", ScannerNextPositionFieldInfo)] :: [(Symbol, *)])

-- method Scanner::cur_line
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_cur_line" g_scanner_cur_line :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO Word32


scannerCurLine ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m Word32                             -- result
scannerCurLine _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_scanner_cur_line _obj'
    touchManagedPtr _obj
    return result

data ScannerCurLineMethodInfo
instance (signature ~ (m Word32), MonadIO m) => MethodInfo ScannerCurLineMethodInfo Scanner signature where
    overloadedMethod _ = scannerCurLine

-- method Scanner::cur_position
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_cur_position" g_scanner_cur_position :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO Word32


scannerCurPosition ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m Word32                             -- result
scannerCurPosition _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_scanner_cur_position _obj'
    touchManagedPtr _obj
    return result

data ScannerCurPositionMethodInfo
instance (signature ~ (m Word32), MonadIO m) => MethodInfo ScannerCurPositionMethodInfo Scanner signature where
    overloadedMethod _ = scannerCurPosition

-- method Scanner::cur_token
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "GLib" "TokenType")
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_cur_token" g_scanner_cur_token :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO CUInt


scannerCurToken ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m TokenType                          -- result
scannerCurToken _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_scanner_cur_token _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

data ScannerCurTokenMethodInfo
instance (signature ~ (m TokenType), MonadIO m) => MethodInfo ScannerCurTokenMethodInfo Scanner signature where
    overloadedMethod _ = scannerCurToken

-- method Scanner::destroy
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_destroy" g_scanner_destroy :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO ()


scannerDestroy ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m ()                                 -- result
scannerDestroy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_scanner_destroy _obj'
    touchManagedPtr _obj
    return ()

data ScannerDestroyMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo ScannerDestroyMethodInfo Scanner signature where
    overloadedMethod _ = scannerDestroy

-- method Scanner::eof
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_eof" g_scanner_eof :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO CInt


scannerEof ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m Bool                               -- result
scannerEof _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_scanner_eof _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data ScannerEofMethodInfo
instance (signature ~ (m Bool), MonadIO m) => MethodInfo ScannerEofMethodInfo Scanner signature where
    overloadedMethod _ = scannerEof

-- method Scanner::get_next_token
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "GLib" "TokenType")
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_get_next_token" g_scanner_get_next_token :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO CUInt


scannerGetNextToken ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m TokenType                          -- result
scannerGetNextToken _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_scanner_get_next_token _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

data ScannerGetNextTokenMethodInfo
instance (signature ~ (m TokenType), MonadIO m) => MethodInfo ScannerGetNextTokenMethodInfo Scanner signature where
    overloadedMethod _ = scannerGetNextToken

-- method Scanner::input_file
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "input_fd", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_input_file" g_scanner_input_file :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    Int32 ->                                -- input_fd : TBasicType TInt
    IO ()


scannerInputFile ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> Int32                                -- inputFd
    -> m ()                                 -- result
scannerInputFile _obj inputFd = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_scanner_input_file _obj' inputFd
    touchManagedPtr _obj
    return ()

data ScannerInputFileMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m) => MethodInfo ScannerInputFileMethodInfo Scanner signature where
    overloadedMethod _ = scannerInputFile

-- method Scanner::input_text
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text_len", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_input_text" g_scanner_input_text :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    CString ->                              -- text : TBasicType TUTF8
    Word32 ->                               -- text_len : TBasicType TUInt
    IO ()


scannerInputText ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> T.Text                               -- text
    -> Word32                               -- textLen
    -> m ()                                 -- result
scannerInputText _obj text textLen = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    text' <- textToCString text
    g_scanner_input_text _obj' text' textLen
    touchManagedPtr _obj
    freeMem text'
    return ()

data ScannerInputTextMethodInfo
instance (signature ~ (T.Text -> Word32 -> m ()), MonadIO m) => MethodInfo ScannerInputTextMethodInfo Scanner signature where
    overloadedMethod _ = scannerInputText

-- method Scanner::peek_next_token
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "GLib" "TokenType")
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_peek_next_token" g_scanner_peek_next_token :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO CUInt


scannerPeekNextToken ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m TokenType                          -- result
scannerPeekNextToken _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_scanner_peek_next_token _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

data ScannerPeekNextTokenMethodInfo
instance (signature ~ (m TokenType), MonadIO m) => MethodInfo ScannerPeekNextTokenMethodInfo Scanner signature where
    overloadedMethod _ = scannerPeekNextToken

-- method Scanner::scope_add_symbol
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scope_id", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_scope_add_symbol" g_scanner_scope_add_symbol :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    Word32 ->                               -- scope_id : TBasicType TUInt
    CString ->                              -- symbol : TBasicType TUTF8
    Ptr () ->                               -- value : TBasicType TPtr
    IO ()


scannerScopeAddSymbol ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> Word32                               -- scopeId
    -> T.Text                               -- symbol
    -> Ptr ()                               -- value
    -> m ()                                 -- result
scannerScopeAddSymbol _obj scopeId symbol value = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    symbol' <- textToCString symbol
    g_scanner_scope_add_symbol _obj' scopeId symbol' value
    touchManagedPtr _obj
    freeMem symbol'
    return ()

data ScannerScopeAddSymbolMethodInfo
instance (signature ~ (Word32 -> T.Text -> Ptr () -> m ()), MonadIO m) => MethodInfo ScannerScopeAddSymbolMethodInfo Scanner signature where
    overloadedMethod _ = scannerScopeAddSymbol

-- method Scanner::scope_remove_symbol
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scope_id", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_scope_remove_symbol" g_scanner_scope_remove_symbol :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    Word32 ->                               -- scope_id : TBasicType TUInt
    CString ->                              -- symbol : TBasicType TUTF8
    IO ()


scannerScopeRemoveSymbol ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> Word32                               -- scopeId
    -> T.Text                               -- symbol
    -> m ()                                 -- result
scannerScopeRemoveSymbol _obj scopeId symbol = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    symbol' <- textToCString symbol
    g_scanner_scope_remove_symbol _obj' scopeId symbol'
    touchManagedPtr _obj
    freeMem symbol'
    return ()

data ScannerScopeRemoveSymbolMethodInfo
instance (signature ~ (Word32 -> T.Text -> m ()), MonadIO m) => MethodInfo ScannerScopeRemoveSymbolMethodInfo Scanner signature where
    overloadedMethod _ = scannerScopeRemoveSymbol

-- method Scanner::set_scope
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scope_id", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_set_scope" g_scanner_set_scope :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    Word32 ->                               -- scope_id : TBasicType TUInt
    IO Word32


scannerSetScope ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> Word32                               -- scopeId
    -> m Word32                             -- result
scannerSetScope _obj scopeId = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_scanner_set_scope _obj' scopeId
    touchManagedPtr _obj
    return result

data ScannerSetScopeMethodInfo
instance (signature ~ (Word32 -> m Word32), MonadIO m) => MethodInfo ScannerSetScopeMethodInfo Scanner signature where
    overloadedMethod _ = scannerSetScope

-- method Scanner::sync_file_offset
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_sync_file_offset" g_scanner_sync_file_offset :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    IO ()


scannerSyncFileOffset ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> m ()                                 -- result
scannerSyncFileOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_scanner_sync_file_offset _obj'
    touchManagedPtr _obj
    return ()

data ScannerSyncFileOffsetMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo ScannerSyncFileOffsetMethodInfo Scanner signature where
    overloadedMethod _ = scannerSyncFileOffset

-- method Scanner::unexp_token
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Scanner", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "expected_token", argType = TInterface "GLib" "TokenType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "identifier_spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol_spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symbol_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "is_error", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_scanner_unexp_token" g_scanner_unexp_token :: 
    Ptr Scanner ->                          -- _obj : TInterface "GLib" "Scanner"
    CUInt ->                                -- expected_token : TInterface "GLib" "TokenType"
    CString ->                              -- identifier_spec : TBasicType TUTF8
    CString ->                              -- symbol_spec : TBasicType TUTF8
    CString ->                              -- symbol_name : TBasicType TUTF8
    CString ->                              -- message : TBasicType TUTF8
    Int32 ->                                -- is_error : TBasicType TInt
    IO ()


scannerUnexpToken ::
    (MonadIO m) =>
    Scanner                                 -- _obj
    -> TokenType                            -- expectedToken
    -> T.Text                               -- identifierSpec
    -> T.Text                               -- symbolSpec
    -> T.Text                               -- symbolName
    -> T.Text                               -- message
    -> Int32                                -- isError
    -> m ()                                 -- result
scannerUnexpToken _obj expectedToken identifierSpec symbolSpec symbolName message isError = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let expectedToken' = (fromIntegral . fromEnum) expectedToken
    identifierSpec' <- textToCString identifierSpec
    symbolSpec' <- textToCString symbolSpec
    symbolName' <- textToCString symbolName
    message' <- textToCString message
    g_scanner_unexp_token _obj' expectedToken' identifierSpec' symbolSpec' symbolName' message' isError
    touchManagedPtr _obj
    freeMem identifierSpec'
    freeMem symbolSpec'
    freeMem symbolName'
    freeMem message'
    return ()

data ScannerUnexpTokenMethodInfo
instance (signature ~ (TokenType -> T.Text -> T.Text -> T.Text -> T.Text -> Int32 -> m ()), MonadIO m) => MethodInfo ScannerUnexpTokenMethodInfo Scanner signature where
    overloadedMethod _ = scannerUnexpToken

type family ResolveScannerMethod (t :: Symbol) (o :: *) :: * where
    ResolveScannerMethod "curLine" o = ScannerCurLineMethodInfo
    ResolveScannerMethod "curPosition" o = ScannerCurPositionMethodInfo
    ResolveScannerMethod "curToken" o = ScannerCurTokenMethodInfo
    ResolveScannerMethod "destroy" o = ScannerDestroyMethodInfo
    ResolveScannerMethod "eof" o = ScannerEofMethodInfo
    ResolveScannerMethod "inputFile" o = ScannerInputFileMethodInfo
    ResolveScannerMethod "inputText" o = ScannerInputTextMethodInfo
    ResolveScannerMethod "peekNextToken" o = ScannerPeekNextTokenMethodInfo
    ResolveScannerMethod "scopeAddSymbol" o = ScannerScopeAddSymbolMethodInfo
    ResolveScannerMethod "scopeRemoveSymbol" o = ScannerScopeRemoveSymbolMethodInfo
    ResolveScannerMethod "syncFileOffset" o = ScannerSyncFileOffsetMethodInfo
    ResolveScannerMethod "unexpToken" o = ScannerUnexpTokenMethodInfo
    ResolveScannerMethod "getNextToken" o = ScannerGetNextTokenMethodInfo
    ResolveScannerMethod "setScope" o = ScannerSetScopeMethodInfo
    ResolveScannerMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveScannerMethod t Scanner, MethodInfo info Scanner p) => IsLabelProxy t (Scanner -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveScannerMethod t Scanner, MethodInfo info Scanner p) => IsLabel t (Scanner -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif