packages feed

LibClang-0.0.8: test/Test_ChildVisitor.hs

import System(getArgs)
import Data.Maybe(maybe)
import Control.Monad((<=<))
import Control.Applicative((<$>))
import Clang.TranslationUnit(withCreateIndex, withParse, TranslationUnitFlags(..))
import Clang.Traversal(visitChildren, ChildVisitResult(..))
import Clang.Cursor(getTranslationUnitCursor)
import Clang.Traversal(ChildVisitor, ChildVisitResult(..))
import qualified Clang.FFI as FFI
import Foreign.Ptr(nullPtr)

visitor :: ChildVisitor
visitor c p d = do
  tk <- FFI.getTypeKind <$> FFI.getCursorType c
  str <- (FFI.getCString <=< FFI.getTypeKindSpelling) tk
  putStrLn $ "Type:" ++ str
  return ChildVisit_Continue

test tu = visitChildren (getTranslationUnitCursor tu) visitor nullPtr

main = do
  (arg:args) <- getArgs
  withCreateIndex False False $ \index -> 
      withParse index (Just arg) args [] [TranslationUnit_None] test (error "No TXUnit!")