module Clang.Token
(
 FFI.Token
,Clang.Token.getKind
,getSpelling
,Clang.Token.getLocation
,getExtent
,tokenize
) where

import System.IO.Unsafe(unsafePerformIO)

import Clang.Type
import Clang.Source
import qualified Clang.FFI as FFI

getKind = unsafePerformIO . FFI.getTokenKind
getSpelling t tk = unsafePerformIO (FFI.getTokenSpelling t tk)
getLocation t tk = unsafePerformIO (FFI.getTokenLocation t tk)
getExtent t tk = unsafePerformIO (FFI.getTokenExtent t tk)
tokenize :: FFI.TranslationUnit -> FFI.SourceRange -> [FFI.Token]
tokenize t sr = unsafePerformIO (FFI.tokenize t sr)