<commit_before>{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE RankNTypes #-}

{-|
Module      :  Language.C.Clang.Cursor.Typed
Copyright   :  (C) 2016 <NAME>

This module contains a typed version of "Language.C.Clang.Cursor".
Here, we keep track of `CursorKind`s at type-level, which means
that you don't need to check whether a `Cursor` has a given property at runtime.
-}
module Language.C.Clang.Cursor.Typed
  ( Cursor
  , CursorK(..)
  , matchKind

  , translationUnitCursor

  , cursorType

  , cursorChildrenF
  , cursorChildren

  , cursorExtent

  , cursorSpelling

  , HasType
  , HasChildren
  , HasExtent
  , HasSpelling
  , CursorKind(..)
  ) where

import qualified Data.ByteString as BS
import           Data.Functor.Contravariant
import           Data.Maybe
import           Data.Singletons
import           Lens.Micro.Contra

import qualified Language.C.Clang.Cursor as UT<commit_msg>Don't expose the CursorK constructor.<commit_after>{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE RankNTypes #-}

{-|
Module      :  Language.C.Clang.Cursor.Typed
Copyright   :  (C) 2016 <NAME>

This module contains a typed version of "Language.C.Clang.Cursor".
Here, we keep track of `CursorKind`s at type-level, which means
that you don't need to check whether a `Cursor` has a given property at runtime.
-}
module Language.C.Clang.Cursor.Typed
  ( Cursor
  , CursorK()
  , withoutKind
  , matchKind

  , translationUnitCursor

  , cursorType

  , cursorChildrenF
  , cursorChildren

  , cursorExtent

  , cursorSpelling

  , HasType
  , HasChildren
  , HasExtent
  , HasSpelling
  , CursorKind(..)
  ) where

import qualified Data.ByteString as BS
import           Data.Functor.Contravariant
import           Data.Maybe
import           Data.Singletons
import           Lens.Micro.Contra

import qualified Language.C.Clang.Cursor as UT
{'fraction_non_alphanumeric': 0.09722222222222222, 'fraction_numerical': 0.00411522633744856, 'mean_word_length': 3.069037656903766, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4211756', 'n_tokens_mistral': 666, 'n_tokens_neox': 636, 'n_words': 170}