{-# LANGUAGE TemplateHaskell, TypeOperators #-}
module ABI.Itanium (
  DecodedName(..),
  CVQualifier(..),
  CXXType(..),
  Name(..),
  Prefix(..),
  UnqualifiedName(..),
  CtorDtor(..),
  Operator(..),
  Expression(..),
  CallOffset(..),
  Substitution(..),
  UName(..),
  demangleName,
  mangleName,
  cxxNameToString,
  cxxNameToText,
  -- * Generated parsers
  rUnqualifiedPrefix,
  rConst,
  rSourceName,
  rUName,
  rNestedName,
  rUnscopedName
  ) where

import Prelude hiding ( (.) )
import Control.Category ( (.) )
import Data.Char
import Text.Boomerang
import Text.Boomerang.String
import Text.Boomerang.TH

import ABI.Itanium.Pretty
import ABI.Itanium.Types

$(makeBoomerangs ''DecodedName)
$(makeBoomerangs ''Name)
$(makeBoomerangs ''CVQualifier)
$(makeBoomerangs ''CXXType)
$(makeBoomerangs ''Operator)
$(makeBoomerangs ''CtorDtor)
$(makeBoomerangs ''UnqualifiedName)
$(makeBoomerangs ''Prefix)
$(makeBoomerangs ''CallOffset)
$(makeBoomerangs ''Substitution)
$(makeBoomerangs ''UName)
$(makeBoomerangs ''TemplateArg)
$(makeBoomerangs ''TemplateParam)
$(makeBoomerangs ''ExprPrimary)

-- | Demangle a name into a structured representation (or an error
-- string)
demangleName :: String -> Either String DecodedName
demangleName :: String -> Either String DecodedName
demangleName String
s =
  case StringBoomerang () (DecodedName :- ())
-> String -> Either StringError DecodedName
forall r.
StringBoomerang () (r :- ()) -> String -> Either StringError r
parseString StringBoomerang () (DecodedName :- ())
itaniumName String
s of
    Right DecodedName
n -> DecodedName -> Either String DecodedName
forall a b. b -> Either a b
Right DecodedName
n
    Left StringError
e -> String -> Either String DecodedName
forall a b. a -> Either a b
Left (StringError -> String
forall a. Show a => a -> String
show StringError
e)

-- | Re-mangle a name
mangleName :: DecodedName -> Maybe String
mangleName :: DecodedName -> Maybe String
mangleName = StringBoomerang () (DecodedName :- ())
-> DecodedName -> Maybe String
forall r. StringBoomerang () (r :- ()) -> r -> Maybe String
unparseString StringBoomerang () (DecodedName :- ())
itaniumName

itaniumName :: StringBoomerang () (DecodedName :- ())
itaniumName :: StringBoomerang () (DecodedName :- ())
itaniumName = String -> StringBoomerang (DecodedName :- ()) (DecodedName :- ())
forall r. String -> StringBoomerang r r
lit String
"_Z" StringBoomerang (DecodedName :- ()) (DecodedName :- ())
-> StringBoomerang () (DecodedName :- ())
-> StringBoomerang () (DecodedName :- ())
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. StringBoomerang () (DecodedName :- ())
forall a. Boomerang StringError String a (DecodedName :- a)
topLevelEntity

topLevelEntity :: Boomerang StringError String a (DecodedName :- a)
topLevelEntity :: forall a. Boomerang StringError String a (DecodedName :- a)
topLevelEntity =
  ( Boomerang StringError String (CXXType :- a) (DecodedName :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (DecodedName :- r)
rVirtualTable Boomerang StringError String (CXXType :- a) (DecodedName :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"TV" StringBoomerang (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang StringError String (CXXType :- a) (DecodedName :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (DecodedName :- r)
rVTTStructure Boomerang StringError String (CXXType :- a) (DecodedName :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"TT" StringBoomerang (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang StringError String (CXXType :- a) (DecodedName :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (DecodedName :- r)
rTypeInfo Boomerang StringError String (CXXType :- a) (DecodedName :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"TI" StringBoomerang (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang StringError String (CXXType :- a) (DecodedName :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (DecodedName :- r)
rTypeInfoName Boomerang StringError String (CXXType :- a) (DecodedName :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"TS" StringBoomerang (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang StringError String (Name :- a) (DecodedName :- a)
forall tok e r. Boomerang e tok (Name :- r) (DecodedName :- r)
rGuardVariable Boomerang StringError String (Name :- a) (DecodedName :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (Name :- a) (Name :- a)
forall r. String -> StringBoomerang r r
lit String
"GV" StringBoomerang (Name :- a) (Name :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Name :- a)
forall a. Boomerang StringError String a (Name :- a)
name Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang
  StringError
  String
  (CallOffset :- (DecodedName :- a))
  (DecodedName :- a)
forall tok e r.
Boomerang
  e tok (CallOffset :- (DecodedName :- r)) (DecodedName :- r)
rOverrideThunk Boomerang
  StringError
  String
  (CallOffset :- (DecodedName :- a))
  (DecodedName :- a)
-> Boomerang
     StringError String a (CallOffset :- (DecodedName :- a))
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     (CallOffset :- (DecodedName :- a))
     (CallOffset :- (DecodedName :- a))
forall r. String -> StringBoomerang r r
lit String
"T" StringBoomerang
  (CallOffset :- (DecodedName :- a))
  (CallOffset :- (DecodedName :- a))
-> Boomerang
     StringError String a (CallOffset :- (DecodedName :- a))
-> Boomerang
     StringError String a (CallOffset :- (DecodedName :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  (DecodedName :- a)
  (CallOffset :- (DecodedName :- a))
forall a. Boomerang StringError String a (CallOffset :- a)
callOffset Boomerang
  StringError
  String
  (DecodedName :- a)
  (CallOffset :- (DecodedName :- a))
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang
     StringError String a (CallOffset :- (DecodedName :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (DecodedName :- a)
forall a. Boomerang StringError String a (DecodedName :- a)
topLevelEntity Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang
  StringError
  String
  (CallOffset :- (CallOffset :- (DecodedName :- a)))
  (DecodedName :- a)
forall tok e r.
Boomerang
  e
  tok
  (CallOffset :- (CallOffset :- (DecodedName :- r)))
  (DecodedName :- r)
rOverrideThunkCovariant Boomerang
  StringError
  String
  (CallOffset :- (CallOffset :- (DecodedName :- a)))
  (DecodedName :- a)
-> Boomerang
     StringError
     String
     a
     (CallOffset :- (CallOffset :- (DecodedName :- a)))
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     (CallOffset :- (CallOffset :- (DecodedName :- a)))
     (CallOffset :- (CallOffset :- (DecodedName :- a)))
forall r. String -> StringBoomerang r r
lit String
"Tc" StringBoomerang
  (CallOffset :- (CallOffset :- (DecodedName :- a)))
  (CallOffset :- (CallOffset :- (DecodedName :- a)))
-> Boomerang
     StringError
     String
     a
     (CallOffset :- (CallOffset :- (DecodedName :- a)))
-> Boomerang
     StringError
     String
     a
     (CallOffset :- (CallOffset :- (DecodedName :- a)))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  (CallOffset :- (DecodedName :- a))
  (CallOffset :- (CallOffset :- (DecodedName :- a)))
forall a. Boomerang StringError String a (CallOffset :- a)
callOffset Boomerang
  StringError
  String
  (CallOffset :- (DecodedName :- a))
  (CallOffset :- (CallOffset :- (DecodedName :- a)))
-> Boomerang
     StringError String a (CallOffset :- (DecodedName :- a))
-> Boomerang
     StringError
     String
     a
     (CallOffset :- (CallOffset :- (DecodedName :- a)))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  (DecodedName :- a)
  (CallOffset :- (DecodedName :- a))
forall a. Boomerang StringError String a (CallOffset :- a)
callOffset Boomerang
  StringError
  String
  (DecodedName :- a)
  (CallOffset :- (DecodedName :- a))
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang
     StringError String a (CallOffset :- (DecodedName :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (DecodedName :- a)
forall a. Boomerang StringError String a (DecodedName :- a)
topLevelEntity Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang
  StringError String (UnqualifiedName :- a) (DecodedName :- a)
forall tok e r.
Boomerang e tok (UnqualifiedName :- r) (DecodedName :- r)
rConstStructData Boomerang
  StringError String (UnqualifiedName :- a) (DecodedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang (UnqualifiedName :- a) (UnqualifiedName :- a)
forall r. String -> StringBoomerang r r
lit String
"L" StringBoomerang (UnqualifiedName :- a) (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (UnqualifiedName :- a)
forall a. Boomerang StringError String a (UnqualifiedName :- a)
unqualifiedName Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>

    -- The following is a "static" function definition, but c++filt
    -- doesn't reproduce the "static" part.
    Boomerang
  StringError String (Name :- ([CXXType] :- a)) (DecodedName :- a)
forall tok e r.
Boomerang e tok (Name :- ([CXXType] :- r)) (DecodedName :- r)
rFunction Boomerang
  StringError String (Name :- ([CXXType] :- a)) (DecodedName :- a)
-> Boomerang StringError String a (Name :- ([CXXType] :- a))
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     (Name :- ([CXXType] :- a)) (Name :- ([CXXType] :- a))
forall r. String -> StringBoomerang r r
lit String
"L" StringBoomerang
  (Name :- ([CXXType] :- a)) (Name :- ([CXXType] :- a))
-> Boomerang StringError String a (Name :- ([CXXType] :- a))
-> Boomerang StringError String a (Name :- ([CXXType] :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError String ([CXXType] :- a) (Name :- ([CXXType] :- a))
forall a. Boomerang StringError String a (Name :- a)
name Boomerang
  StringError String ([CXXType] :- a) (Name :- ([CXXType] :- a))
-> Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a (Name :- ([CXXType] :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([CXXType] :- a)
forall a. Boomerang StringError String a ([CXXType] :- a)
bareFunctionType Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>

    Boomerang
  StringError String (Name :- ([CXXType] :- a)) (DecodedName :- a)
forall tok e r.
Boomerang e tok (Name :- ([CXXType] :- r)) (DecodedName :- r)
rFunction Boomerang
  StringError String (Name :- ([CXXType] :- a)) (DecodedName :- a)
-> Boomerang StringError String a (Name :- ([CXXType] :- a))
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError String ([CXXType] :- a) (Name :- ([CXXType] :- a))
forall a. Boomerang StringError String a (Name :- a)
name Boomerang
  StringError String ([CXXType] :- a) (Name :- ([CXXType] :- a))
-> Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a (Name :- ([CXXType] :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([CXXType] :- a)
forall a. Boomerang StringError String a ([CXXType] :- a)
bareFunctionType Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall a. Semigroup a => a -> a -> a
<>
    Boomerang StringError String (Name :- a) (DecodedName :- a)
forall tok e r. Boomerang e tok (Name :- r) (DecodedName :- r)
rData Boomerang StringError String (Name :- a) (DecodedName :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (DecodedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Name :- a)
forall a. Boomerang StringError String a (Name :- a)
name
  )


-- | Equivalent to the <type> production in the Itanium ABI spec
--
-- FIXME: Add support for unnamed types and decltypes
--
-- <unnamed-type-name> ::= Ut [ <nonnegative number> ] _
-- <decltype>  ::= Dt <expression> E  # decltype of an id-expression or class member access (C++0x)
--             ::= DT <expression> E  # decltype of an expression (C++0x)
cxxType :: Boomerang StringError String a (CXXType :- a)
cxxType :: forall a. Boomerang StringError String a (CXXType :- a)
cxxType = ( Boomerang
  StringError String ([CVQualifier] :- (CXXType :- a)) (CXXType :- a)
forall tok e r.
Boomerang e tok ([CVQualifier] :- (CXXType :- r)) (CXXType :- r)
rQualifiedType Boomerang
  StringError String ([CVQualifier] :- (CXXType :- a)) (CXXType :- a)
-> Boomerang StringError String a ([CVQualifier] :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError String (CXXType :- a) (CVQualifier :- (CXXType :- a))
-> Boomerang
     StringError String (CXXType :- a) ([CVQualifier] :- (CXXType :- a))
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList1 Boomerang
  StringError String (CXXType :- a) (CVQualifier :- (CXXType :- a))
forall a. Boomerang StringError String a (CVQualifier :- a)
cvQualifier Boomerang
  StringError String (CXXType :- a) ([CVQualifier] :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a ([CVQualifier] :- (CXXType :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (CXXType :- r)
rPointerToType Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"P" Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (CXXType :- r)
rReferenceToType Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"R" Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (CXXType :- r)
rRValueReferenceToType Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"O" Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (CXXType :- r)
rComplexPairType Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"C" Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<> -- C99
            Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (CXXType :- r)
rImaginaryType Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"G" Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<> -- C99
            Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (CXXType :- r)
rParameterPack Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"Dp" Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType  Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<> -- C++11 parameter pack
            Boomerang
  StringError String (String :- (CXXType :- a)) (CXXType :- a)
forall tok e r.
Boomerang e tok (String :- (CXXType :- r)) (CXXType :- r)
rVendorTypeQualifier Boomerang
  StringError String (String :- (CXXType :- a)) (CXXType :- a)
-> Boomerang StringError String a (String :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     (String :- (CXXType :- a)) (String :- (CXXType :- a))
forall r. String -> StringBoomerang r r
lit String
"U" StringBoomerang
  (String :- (CXXType :- a)) (String :- (CXXType :- a))
-> Boomerang StringError String a (String :- (CXXType :- a))
-> Boomerang StringError String a (String :- (CXXType :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError String (CXXType :- a) (String :- (CXXType :- a))
forall a. Boomerang StringError String a (String :- a)
sourceName Boomerang
  StringError String (CXXType :- a) (String :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (String :- (CXXType :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rVoidType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"v" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rWchar_tType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"w" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rBoolType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"b" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rCharType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"c" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rSignedCharType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"a" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rUnsignedCharType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"h" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rShortType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"s" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rUnsignedShortType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"t" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rIntType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"i" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rUnsignedIntType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"j" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rLongType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"l" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rUnsignedLongType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"m" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rLongLongType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"x" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rUnsignedLongLongType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"y" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rInt128Type Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"n" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rUnsignedInt128Type Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"o" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rFloatType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"f" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rDoubleType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"d" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rLongDoubleType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"e" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rFloat128Type Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"g" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rEllipsisType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"z" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rChar32Type Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Di" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rChar16Type Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Ds" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rAutoType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Da" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String a (CXXType :- a)
forall tok e r. Boomerang e tok r (CXXType :- r)
rNullPtrType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Dn" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String (String :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (String :- r) (CXXType :- r)
rVendorBuiltinType Boomerang StringError String (String :- a) (CXXType :- a)
-> Boomerang StringError String a (String :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (String :- a) (String :- a)
forall r. String -> StringBoomerang r r
lit String
"u" StringBoomerang (String :- a) (String :- a)
-> Boomerang StringError String a (String :- a)
-> Boomerang StringError String a (String :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (String :- a)
forall a. Boomerang StringError String a (String :- a)
sourceName Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String ([CXXType] :- a) (CXXType :- a)
forall tok e r. Boomerang e tok ([CXXType] :- r) (CXXType :- r)
rExternCFunctionType Boomerang StringError String ([CXXType] :- a) (CXXType :- a)
-> Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang ([CXXType] :- a) ([CXXType] :- a)
forall r. String -> StringBoomerang r r
lit String
"FY" StringBoomerang ([CXXType] :- a) ([CXXType] :- a)
-> Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a ([CXXType] :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([CXXType] :- a)
forall a. Boomerang StringError String a ([CXXType] :- a)
bareFunctionType Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a ([CXXType] :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"E" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String ([CXXType] :- a) (CXXType :- a)
forall tok e r. Boomerang e tok ([CXXType] :- r) (CXXType :- r)
rFunctionType Boomerang StringError String ([CXXType] :- a) (CXXType :- a)
-> Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang ([CXXType] :- a) ([CXXType] :- a)
forall r. String -> StringBoomerang r r
lit String
"F" StringBoomerang ([CXXType] :- a) ([CXXType] :- a)
-> Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a ([CXXType] :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([CXXType] :- a)
forall a. Boomerang StringError String a ([CXXType] :- a)
bareFunctionType Boomerang StringError String a ([CXXType] :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a ([CXXType] :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"E" Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang
  StringError String (Maybe Int :- (CXXType :- a)) (CXXType :- a)
forall tok e r.
Boomerang e tok (Maybe Int :- (CXXType :- r)) (CXXType :- r)
rArrayTypeN Boomerang
  StringError String (Maybe Int :- (CXXType :- a)) (CXXType :- a)
-> Boomerang StringError String a (Maybe Int :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     (Maybe Int :- (CXXType :- a)) (Maybe Int :- (CXXType :- a))
forall r. String -> StringBoomerang r r
lit String
"A" StringBoomerang
  (Maybe Int :- (CXXType :- a)) (Maybe Int :- (CXXType :- a))
-> Boomerang StringError String a (Maybe Int :- (CXXType :- a))
-> Boomerang StringError String a (Maybe Int :- (CXXType :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String (CXXType :- a) (Int :- (CXXType :- a))
-> Boomerang
     StringError String (CXXType :- a) (Maybe Int :- (CXXType :- a))
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r (Maybe a :- r)
rMaybe Boomerang StringError String (CXXType :- a) (Int :- (CXXType :- a))
forall r. StringBoomerang r (Int :- r)
int Boomerang
  StringError String (CXXType :- a) (Maybe Int :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (Maybe Int :- (CXXType :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> Boomerang StringError String (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"_" Boomerang StringError String (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang
  StringError String (CXXType :- (CXXType :- a)) (CXXType :- a)
forall tok e r.
Boomerang e tok (CXXType :- (CXXType :- r)) (CXXType :- r)
rPtrToMemberType Boomerang
  StringError String (CXXType :- (CXXType :- a)) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     (CXXType :- (CXXType :- a)) (CXXType :- (CXXType :- a))
forall r. String -> StringBoomerang r r
lit String
"M" StringBoomerang
  (CXXType :- (CXXType :- a)) (CXXType :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- (CXXType :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError String (CXXType :- a) (CXXType :- (CXXType :- a))
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang
  StringError String (CXXType :- a) (CXXType :- (CXXType :- a))
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- (CXXType :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>

            Boomerang StringError String (Substitution :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (Substitution :- r) (CXXType :- r)
rSubstitutionType Boomerang StringError String (Substitution :- a) (CXXType :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Substitution :- a)
forall a. Boomerang StringError String a (Substitution :- a)
substitution Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String (Name :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (Name :- r) (CXXType :- r)
rClassEnumType Boomerang StringError String (Name :- a) (CXXType :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Name :- a)
forall a. Boomerang StringError String a (Name :- a)
name Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall a. Semigroup a => a -> a -> a
<>
            Boomerang StringError String (TemplateParam :- a) (CXXType :- a)
forall tok e r. Boomerang e tok (TemplateParam :- r) (CXXType :- r)
rTemplateParamType Boomerang StringError String (TemplateParam :- a) (CXXType :- a)
-> Boomerang StringError String a (TemplateParam :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (TemplateParam :- a)
forall a. Boomerang StringError String a (TemplateParam :- a)
templateParam

            -- Still need: array-type (E), decltype
          )

bareFunctionType :: Boomerang StringError String a ([CXXType] :- a)
bareFunctionType :: forall a. Boomerang StringError String a ([CXXType] :- a)
bareFunctionType = Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a ([CXXType] :- a)
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList1 Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType

callOffset :: Boomerang StringError String a (CallOffset :- a)
callOffset :: forall a. Boomerang StringError String a (CallOffset :- a)
callOffset = ( Boomerang StringError String (Int :- (Int :- a)) (CallOffset :- a)
forall tok e r.
Boomerang e tok (Int :- (Int :- r)) (CallOffset :- r)
rVirtualOffset Boomerang StringError String (Int :- (Int :- a)) (CallOffset :- a)
-> Boomerang StringError String a (Int :- (Int :- a))
-> Boomerang StringError String a (CallOffset :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (Int :- (Int :- a)) (Int :- (Int :- a))
forall r. String -> StringBoomerang r r
lit String
"v" StringBoomerang (Int :- (Int :- a)) (Int :- (Int :- a))
-> Boomerang StringError String a (Int :- (Int :- a))
-> Boomerang StringError String a (Int :- (Int :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String (Int :- a) (Int :- (Int :- a))
forall r. StringBoomerang r (Int :- r)
abiInt Boomerang StringError String (Int :- a) (Int :- (Int :- a))
-> Boomerang StringError String a (Int :- a)
-> Boomerang StringError String a (Int :- (Int :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (Int :- a) (Int :- a)
forall r. String -> StringBoomerang r r
lit String
"_" StringBoomerang (Int :- a) (Int :- a)
-> Boomerang StringError String a (Int :- a)
-> Boomerang StringError String a (Int :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Int :- a)
forall r. StringBoomerang r (Int :- r)
abiInt Boomerang StringError String a (Int :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Int :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"_" Boomerang StringError String a (CallOffset :- a)
-> Boomerang StringError String a (CallOffset :- a)
-> Boomerang StringError String a (CallOffset :- a)
forall a. Semigroup a => a -> a -> a
<>
               Boomerang StringError String (Int :- a) (CallOffset :- a)
forall tok e r. Boomerang e tok (Int :- r) (CallOffset :- r)
rNonVirtualOffset Boomerang StringError String (Int :- a) (CallOffset :- a)
-> Boomerang StringError String a (Int :- a)
-> Boomerang StringError String a (CallOffset :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (Int :- a) (Int :- a)
forall r. String -> StringBoomerang r r
lit String
"h" StringBoomerang (Int :- a) (Int :- a)
-> Boomerang StringError String a (Int :- a)
-> Boomerang StringError String a (Int :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Int :- a)
forall r. StringBoomerang r (Int :- r)
abiInt Boomerang StringError String a (Int :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Int :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"_"
             )

cvQualifier :: Boomerang StringError String a (CVQualifier :- a)
cvQualifier :: forall a. Boomerang StringError String a (CVQualifier :- a)
cvQualifier = ( Boomerang StringError String a (CVQualifier :- a)
forall tok e r. Boomerang e tok r (CVQualifier :- r)
rRestrict Boomerang StringError String a (CVQualifier :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CVQualifier :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"r" Boomerang StringError String a (CVQualifier :- a)
-> Boomerang StringError String a (CVQualifier :- a)
-> Boomerang StringError String a (CVQualifier :- a)
forall a. Semigroup a => a -> a -> a
<>
                Boomerang StringError String a (CVQualifier :- a)
forall tok e r. Boomerang e tok r (CVQualifier :- r)
rVolatile Boomerang StringError String a (CVQualifier :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CVQualifier :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"V" Boomerang StringError String a (CVQualifier :- a)
-> Boomerang StringError String a (CVQualifier :- a)
-> Boomerang StringError String a (CVQualifier :- a)
forall a. Semigroup a => a -> a -> a
<>
                Boomerang StringError String a (CVQualifier :- a)
forall tok e r. Boomerang e tok r (CVQualifier :- r)
rConst Boomerang StringError String a (CVQualifier :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CVQualifier :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"K"
              )

operator :: Boomerang StringError String a (Operator :- a)
operator :: forall a. Boomerang StringError String a (Operator :- a)
operator = ( Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpNew Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"nw" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpNewArray Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"na" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpDelete Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"dl" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpDeleteArray Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"da" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpUPlus Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ps" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpUMinus Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ng" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpAddressOf Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ad" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpDeref Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"de" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpBitNot Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"co" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpPlus Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"pl" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpMinus Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"mi" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpMul Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ml" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpDiv Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"dv" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpMod Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"rm" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpBitAnd Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"an" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpBitOr Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"or" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpBitXor Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"eo" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"aS" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpPlusAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"pL" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpMinusAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"mI" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpMulAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"mL" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpDivAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"dV" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpModAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"rM" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpAndAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"aN" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpOrAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"oR" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpXorAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"eO" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpShl Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ls" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpShr Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"rs" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpShlAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"lS" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpShrAssign Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"rS" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpEquals Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"eq" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpNotEquals Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ne" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpLt Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"lt" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpGt Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"gt" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpLte Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"le" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpGte Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ge" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpNot Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"nt" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpAnd Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"aa" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpOr Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"oo" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpPlusPlus Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"pp" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpMinusMinus Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"mm" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpComma Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"cm" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpArrowStar Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"pm" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpArrow Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"pt" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpCall Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"cl" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpIndex Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"ix" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpQuestion Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"qu" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpSizeofType Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"st" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpSizeofExpr Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"sz" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpAlignofType Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"at" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (Operator :- a)
forall tok e r. Boomerang e tok r (Operator :- r)
rOpAlignofExpr Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"az" Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String (CXXType :- a) (Operator :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (Operator :- r)
rOpCast Boomerang StringError String (CXXType :- a) (Operator :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (CXXType :- a) (CXXType :- a)
forall r. String -> StringBoomerang r r
lit String
"cv" StringBoomerang (CXXType :- a) (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (CXXType :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (Operator :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String (Int :- (String :- a)) (Operator :- a)
forall tok e r.
Boomerang e tok (Int :- (String :- r)) (Operator :- r)
rOpVendor Boomerang StringError String (Int :- (String :- a)) (Operator :- a)
-> Boomerang StringError String a (Int :- (String :- a))
-> Boomerang StringError String a (Operator :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang (Int :- (String :- a)) (Int :- (String :- a))
forall r. String -> StringBoomerang r r
lit String
"v" StringBoomerang (Int :- (String :- a)) (Int :- (String :- a))
-> Boomerang StringError String a (Int :- (String :- a))
-> Boomerang StringError String a (Int :- (String :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String (String :- a) (Int :- (String :- a))
forall r. StringBoomerang r (Int :- r)
abiInt Boomerang StringError String (String :- a) (Int :- (String :- a))
-> Boomerang StringError String a (String :- a)
-> Boomerang StringError String a (Int :- (String :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (String :- a)
forall a. Boomerang StringError String a (String :- a)
sourceName
           )

ctorDtor :: Boomerang StringError String a (CtorDtor :- a)
ctorDtor :: forall a. Boomerang StringError String a (CtorDtor :- a)
ctorDtor = ( Boomerang StringError String a (CtorDtor :- a)
forall tok e r. Boomerang e tok r (CtorDtor :- r)
rC1 Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CtorDtor :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"C1" Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (CtorDtor :- a)
forall tok e r. Boomerang e tok r (CtorDtor :- r)
rC2 Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CtorDtor :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"C2" Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (CtorDtor :- a)
forall tok e r. Boomerang e tok r (CtorDtor :- r)
rC3 Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CtorDtor :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"C3" Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (CtorDtor :- a)
forall tok e r. Boomerang e tok r (CtorDtor :- r)
rD0 Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CtorDtor :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"D0" Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (CtorDtor :- a)
forall tok e r. Boomerang e tok r (CtorDtor :- r)
rD1 Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CtorDtor :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"D1" Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (CtorDtor :- a)
forall a. Semigroup a => a -> a -> a
<>
             Boomerang StringError String a (CtorDtor :- a)
forall tok e r. Boomerang e tok r (CtorDtor :- r)
rD2 Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (CtorDtor :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"D2"
           )

unqualifiedName :: Boomerang StringError String a (UnqualifiedName :- a)
unqualifiedName :: forall a. Boomerang StringError String a (UnqualifiedName :- a)
unqualifiedName = ( Boomerang StringError String (Operator :- a) (UnqualifiedName :- a)
forall tok e r.
Boomerang e tok (Operator :- r) (UnqualifiedName :- r)
rOperatorName Boomerang StringError String (Operator :- a) (UnqualifiedName :- a)
-> Boomerang StringError String a (Operator :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Operator :- a)
forall a. Boomerang StringError String a (Operator :- a)
operator Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
forall a. Semigroup a => a -> a -> a
<>
                    Boomerang StringError String (CtorDtor :- a) (UnqualifiedName :- a)
forall tok e r.
Boomerang e tok (CtorDtor :- r) (UnqualifiedName :- r)
rCtorDtorName Boomerang StringError String (CtorDtor :- a) (UnqualifiedName :- a)
-> Boomerang StringError String a (CtorDtor :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CtorDtor :- a)
forall a. Boomerang StringError String a (CtorDtor :- a)
ctorDtor Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
forall a. Semigroup a => a -> a -> a
<>
                    Boomerang StringError String (String :- a) (UnqualifiedName :- a)
forall tok e r.
Boomerang e tok (String :- r) (UnqualifiedName :- r)
rSourceName Boomerang StringError String (String :- a) (UnqualifiedName :- a)
-> Boomerang StringError String a (String :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (String :- a)
forall a. Boomerang StringError String a (String :- a)
sourceName
                  )

prefix :: Boomerang StringError String a (Prefix :- a)
prefix :: forall a. Boomerang StringError String a (Prefix :- a)
prefix = ( Boomerang StringError String (String :- a) (Prefix :- a)
forall tok e r. Boomerang e tok (String :- r) (Prefix :- r)
rDataMemberPrefix Boomerang StringError String (String :- a) (Prefix :- a)
-> Boomerang StringError String a (String :- a)
-> Boomerang StringError String a (Prefix :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (String :- a)
forall a. Boomerang StringError String a (String :- a)
sourceName Boomerang StringError String a (String :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (String :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"M" Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
forall a. Semigroup a => a -> a -> a
<>
           Boomerang StringError String (UnqualifiedName :- a) (Prefix :- a)
forall tok e r.
Boomerang e tok (UnqualifiedName :- r) (Prefix :- r)
rUnqualifiedPrefix Boomerang StringError String (UnqualifiedName :- a) (Prefix :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (Prefix :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (UnqualifiedName :- a)
forall a. Boomerang StringError String a (UnqualifiedName :- a)
unqualifiedName Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
forall a. Semigroup a => a -> a -> a
<>
           Boomerang StringError String (Substitution :- a) (Prefix :- a)
forall tok e r. Boomerang e tok (Substitution :- r) (Prefix :- r)
rSubstitutionPrefix Boomerang StringError String (Substitution :- a) (Prefix :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Prefix :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Substitution :- a)
forall a. Boomerang StringError String a (Substitution :- a)
substitution Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
forall a. Semigroup a => a -> a -> a
<>
           Boomerang StringError String (Substitution :- a) (Prefix :- a)
forall tok e r. Boomerang e tok (Substitution :- r) (Prefix :- r)
rSubstitutionPrefix Boomerang StringError String (Substitution :- a) (Prefix :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Prefix :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Substitution :- a)
forall tok e r. Boomerang e tok r (Substitution :- r)
rSubStdNamespace Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"St" Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
forall a. Semigroup a => a -> a -> a
<>
           Boomerang StringError String (TemplateParam :- a) (Prefix :- a)
forall tok e r. Boomerang e tok (TemplateParam :- r) (Prefix :- r)
rTemplateParamPrefix Boomerang StringError String (TemplateParam :- a) (Prefix :- a)
-> Boomerang StringError String a (TemplateParam :- a)
-> Boomerang StringError String a (Prefix :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (TemplateParam :- a)
forall a. Boomerang StringError String a (TemplateParam :- a)
templateParam Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
-> Boomerang StringError String a (Prefix :- a)
forall a. Semigroup a => a -> a -> a
<>
           Boomerang StringError String ([TemplateArg] :- a) (Prefix :- a)
forall tok e r. Boomerang e tok ([TemplateArg] :- r) (Prefix :- r)
rTemplateArgsPrefix Boomerang StringError String ([TemplateArg] :- a) (Prefix :- a)
-> Boomerang StringError String a ([TemplateArg] :- a)
-> Boomerang StringError String a (Prefix :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([TemplateArg] :- a)
forall a. Boomerang StringError String a ([TemplateArg] :- a)
templateArgs
         )

name :: Boomerang StringError String a (Name :- a)
name :: forall a. Boomerang StringError String a (Name :- a)
name = ( Boomerang
  StringError
  String
  ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
  (Name :- a)
forall tok e r.
Boomerang
  e
  tok
  ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- r)))
  (Name :- r)
rNestedName Boomerang
  StringError
  String
  ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
  (Name :- a)
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
-> Boomerang StringError String a (Name :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
     ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
forall r. String -> StringBoomerang r r
lit String
"N" StringBoomerang
  ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
  ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  ([Prefix] :- (UnqualifiedName :- a))
  (CVQualifier :- ([Prefix] :- (UnqualifiedName :- a)))
-> Boomerang
     StringError
     String
     ([Prefix] :- (UnqualifiedName :- a))
     ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList Boomerang
  StringError
  String
  ([Prefix] :- (UnqualifiedName :- a))
  (CVQualifier :- ([Prefix] :- (UnqualifiedName :- a)))
forall a. Boomerang StringError String a (CVQualifier :- a)
cvQualifier Boomerang
  StringError
  String
  ([Prefix] :- (UnqualifiedName :- a))
  ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
-> Boomerang
     StringError String a ([Prefix] :- (UnqualifiedName :- a))
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- (UnqualifiedName :- a)))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  (UnqualifiedName :- a)
  (Prefix :- (UnqualifiedName :- a))
-> Boomerang
     StringError
     String
     (UnqualifiedName :- a)
     ([Prefix] :- (UnqualifiedName :- a))
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList1 Boomerang
  StringError
  String
  (UnqualifiedName :- a)
  (Prefix :- (UnqualifiedName :- a))
forall a. Boomerang StringError String a (Prefix :- a)
prefix Boomerang
  StringError
  String
  (UnqualifiedName :- a)
  ([Prefix] :- (UnqualifiedName :- a))
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang
     StringError String a ([Prefix] :- (UnqualifiedName :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (UnqualifiedName :- a)
forall a. Boomerang StringError String a (UnqualifiedName :- a)
unqualifiedName Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (UnqualifiedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"E" Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
forall a. Semigroup a => a -> a -> a
<>
         Boomerang
  StringError
  String
  ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
  (Name :- a)
forall tok e r.
Boomerang
  e
  tok
  ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- r)))
  (Name :- r)
rNestedTemplateName Boomerang
  StringError
  String
  ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
  (Name :- a)
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
-> Boomerang StringError String a (Name :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang
     ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
     ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
forall r. String -> StringBoomerang r r
lit String
"N" StringBoomerang
  ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
  ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  ([Prefix] :- ([TemplateArg] :- a))
  (CVQualifier :- ([Prefix] :- ([TemplateArg] :- a)))
-> Boomerang
     StringError
     String
     ([Prefix] :- ([TemplateArg] :- a))
     ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList Boomerang
  StringError
  String
  ([Prefix] :- ([TemplateArg] :- a))
  (CVQualifier :- ([Prefix] :- ([TemplateArg] :- a)))
forall a. Boomerang StringError String a (CVQualifier :- a)
cvQualifier Boomerang
  StringError
  String
  ([Prefix] :- ([TemplateArg] :- a))
  ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
-> Boomerang
     StringError String a ([Prefix] :- ([TemplateArg] :- a))
-> Boomerang
     StringError
     String
     a
     ([CVQualifier] :- ([Prefix] :- ([TemplateArg] :- a)))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  ([TemplateArg] :- a)
  (Prefix :- ([TemplateArg] :- a))
-> Boomerang
     StringError
     String
     ([TemplateArg] :- a)
     ([Prefix] :- ([TemplateArg] :- a))
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList1 Boomerang
  StringError
  String
  ([TemplateArg] :- a)
  (Prefix :- ([TemplateArg] :- a))
forall a. Boomerang StringError String a (Prefix :- a)
prefix Boomerang
  StringError
  String
  ([TemplateArg] :- a)
  ([Prefix] :- ([TemplateArg] :- a))
-> Boomerang StringError String a ([TemplateArg] :- a)
-> Boomerang
     StringError String a ([Prefix] :- ([TemplateArg] :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([TemplateArg] :- a)
forall a. Boomerang StringError String a ([TemplateArg] :- a)
templateArgs Boomerang StringError String a ([TemplateArg] :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a ([TemplateArg] :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"E" Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
forall a. Semigroup a => a -> a -> a
<>
         Boomerang
  StringError String (UName :- ([TemplateArg] :- a)) (Name :- a)
forall tok e r.
Boomerang e tok (UName :- ([TemplateArg] :- r)) (Name :- r)
rUnscopedTemplateName Boomerang
  StringError String (UName :- ([TemplateArg] :- a)) (Name :- a)
-> Boomerang StringError String a (UName :- ([TemplateArg] :- a))
-> Boomerang StringError String a (Name :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  ([TemplateArg] :- a)
  (UName :- ([TemplateArg] :- a))
forall a. Boomerang StringError String a (UName :- a)
unscopedName Boomerang
  StringError
  String
  ([TemplateArg] :- a)
  (UName :- ([TemplateArg] :- a))
-> Boomerang StringError String a ([TemplateArg] :- a)
-> Boomerang StringError String a (UName :- ([TemplateArg] :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([TemplateArg] :- a)
forall a. Boomerang StringError String a ([TemplateArg] :- a)
templateArgs Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
forall a. Semigroup a => a -> a -> a
<>
         Boomerang
  StringError
  String
  (Substitution :- ([TemplateArg] :- a))
  (Name :- a)
forall tok e r.
Boomerang e tok (Substitution :- ([TemplateArg] :- r)) (Name :- r)
rUnscopedTemplateSubstitution Boomerang
  StringError
  String
  (Substitution :- ([TemplateArg] :- a))
  (Name :- a)
-> Boomerang
     StringError String a (Substitution :- ([TemplateArg] :- a))
-> Boomerang StringError String a (Name :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang
  StringError
  String
  ([TemplateArg] :- a)
  (Substitution :- ([TemplateArg] :- a))
forall a. Boomerang StringError String a (Substitution :- a)
substitution Boomerang
  StringError
  String
  ([TemplateArg] :- a)
  (Substitution :- ([TemplateArg] :- a))
-> Boomerang StringError String a ([TemplateArg] :- a)
-> Boomerang
     StringError String a (Substitution :- ([TemplateArg] :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a ([TemplateArg] :- a)
forall a. Boomerang StringError String a ([TemplateArg] :- a)
templateArgs Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
-> Boomerang StringError String a (Name :- a)
forall a. Semigroup a => a -> a -> a
<>
         Boomerang StringError String (UName :- a) (Name :- a)
forall tok e r. Boomerang e tok (UName :- r) (Name :- r)
rUnscopedName Boomerang StringError String (UName :- a) (Name :- a)
-> Boomerang StringError String a (UName :- a)
-> Boomerang StringError String a (Name :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (UName :- a)
forall a. Boomerang StringError String a (UName :- a)
unscopedName
       )

substitution :: Boomerang StringError String a (Substitution :- a)
substitution :: forall a. Boomerang StringError String a (Substitution :- a)
substitution = (
                 Boomerang
  StringError String (Maybe String :- a) (Substitution :- a)
forall tok e r.
Boomerang e tok (Maybe String :- r) (Substitution :- r)
rSubstitution Boomerang
  StringError String (Maybe String :- a) (Substitution :- a)
-> Boomerang StringError String a (Maybe String :- a)
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (Maybe String :- a) (Maybe String :- a)
forall r. String -> StringBoomerang r r
lit String
"S" StringBoomerang (Maybe String :- a) (Maybe String :- a)
-> Boomerang StringError String a (Maybe String :- a)
-> Boomerang StringError String a (Maybe String :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (String :- a)
-> Boomerang StringError String a (Maybe String :- a)
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r (Maybe a :- r)
rMaybe Boomerang StringError String a (String :- a)
forall a. Boomerang StringError String a (String :- a)
seq_id Boomerang StringError String a (Maybe String :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Maybe String :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"_" Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
forall a. Semigroup a => a -> a -> a
<>
                 -- rSubStdNamespace . lit "St" <> -- this one is not standalone, but must be a prefix
                 Boomerang StringError String a (Substitution :- a)
forall tok e r. Boomerang e tok r (Substitution :- r)
rSubStdAllocator Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Sa" Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
forall a. Semigroup a => a -> a -> a
<>
                 Boomerang StringError String a (Substitution :- a)
forall tok e r. Boomerang e tok r (Substitution :- r)
rSubBasicString Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Sb" Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
forall a. Semigroup a => a -> a -> a
<>
                 Boomerang StringError String a (Substitution :- a)
forall tok e r. Boomerang e tok r (Substitution :- r)
rSubBasicStringArgs Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Ss" Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
forall a. Semigroup a => a -> a -> a
<>
                 Boomerang StringError String a (Substitution :- a)
forall tok e r. Boomerang e tok r (Substitution :- r)
rSubBasicIstream Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Si" Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
forall a. Semigroup a => a -> a -> a
<>
                 Boomerang StringError String a (Substitution :- a)
forall tok e r. Boomerang e tok r (Substitution :- r)
rSubBasicOstream Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"So" Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a (Substitution :- a)
forall a. Semigroup a => a -> a -> a
<>
                 Boomerang StringError String a (Substitution :- a)
forall tok e r. Boomerang e tok r (Substitution :- r)
rSubBasicIostream Boomerang StringError String a (Substitution :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Substitution :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"Sd"
               )

-- | Reads the sequence ID of a Substitution parameter or Template
-- Argument parameter
seq_id :: Boomerang StringError String a ([Char] :- a)
seq_id :: forall a. Boomerang StringError String a (String :- a)
seq_id = Boomerang StringError String a (Char :- a)
-> Boomerang StringError String a (String :- a)
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList1 ((Char -> Bool) -> Boomerang StringError String a (Char :- a)
forall r. (Char -> Bool) -> StringBoomerang r (Char :- r)
satisfy (\Char
c -> [Bool] -> Bool
forall (t :: * -> *). Foldable t => t Bool -> Bool
and [ Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
/= Char
'_'
                                    , (Char -> Bool
isAsciiUpper Char
c Bool -> Bool -> Bool
|| Char -> Bool
isDigit Char
c)
                                    ]))

unscopedName :: Boomerang StringError String a (UName :- a)
unscopedName :: forall a. Boomerang StringError String a (UName :- a)
unscopedName = ( Boomerang StringError String (UnqualifiedName :- a) (UName :- a)
forall tok e r. Boomerang e tok (UnqualifiedName :- r) (UName :- r)
rUStdName Boomerang StringError String (UnqualifiedName :- a) (UName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String
-> StringBoomerang (UnqualifiedName :- a) (UnqualifiedName :- a)
forall r. String -> StringBoomerang r r
lit String
"St" StringBoomerang (UnqualifiedName :- a) (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (UnqualifiedName :- a)
forall a. Boomerang StringError String a (UnqualifiedName :- a)
unqualifiedName Boomerang StringError String a (UName :- a)
-> Boomerang StringError String a (UName :- a)
-> Boomerang StringError String a (UName :- a)
forall a. Semigroup a => a -> a -> a
<>
                 Boomerang StringError String (UnqualifiedName :- a) (UName :- a)
forall tok e r. Boomerang e tok (UnqualifiedName :- r) (UName :- r)
rUName Boomerang StringError String (UnqualifiedName :- a) (UName :- a)
-> Boomerang StringError String a (UnqualifiedName :- a)
-> Boomerang StringError String a (UName :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (UnqualifiedName :- a)
forall a. Boomerang StringError String a (UnqualifiedName :- a)
unqualifiedName
               )

templateArgs :: Boomerang StringError String a ([TemplateArg] :- a)
templateArgs :: forall a. Boomerang StringError String a ([TemplateArg] :- a)
templateArgs = String -> StringBoomerang ([TemplateArg] :- a) ([TemplateArg] :- a)
forall r. String -> StringBoomerang r r
lit String
"I" StringBoomerang ([TemplateArg] :- a) ([TemplateArg] :- a)
-> Boomerang StringError String a ([TemplateArg] :- a)
-> Boomerang StringError String a ([TemplateArg] :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (TemplateArg :- a)
-> Boomerang StringError String a ([TemplateArg] :- a)
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r ([a] :- r)
rList1 Boomerang StringError String a (TemplateArg :- a)
forall a. Boomerang StringError String a (TemplateArg :- a)
templateArg Boomerang StringError String a ([TemplateArg] :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a ([TemplateArg] :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"E"

templateArg :: Boomerang StringError String a (TemplateArg :- a)
templateArg :: forall a. Boomerang StringError String a (TemplateArg :- a)
templateArg = (Boomerang StringError String (CXXType :- a) (TemplateArg :- a)
forall tok e r. Boomerang e tok (CXXType :- r) (TemplateArg :- r)
rTypeTemplateArg Boomerang StringError String (CXXType :- a) (TemplateArg :- a)
-> Boomerang StringError String a (CXXType :- a)
-> Boomerang StringError String a (TemplateArg :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (CXXType :- a)
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String a (TemplateArg :- a)
-> Boomerang StringError String a (TemplateArg :- a)
-> Boomerang StringError String a (TemplateArg :- a)
forall a. Semigroup a => a -> a -> a
<>
               String -> StringBoomerang (TemplateArg :- a) (TemplateArg :- a)
forall r. String -> StringBoomerang r r
lit String
"L" StringBoomerang (TemplateArg :- a) (TemplateArg :- a)
-> Boomerang StringError String a (TemplateArg :- a)
-> Boomerang StringError String a (TemplateArg :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String (ExprPrimary :- a) (TemplateArg :- a)
forall tok e r.
Boomerang e tok (ExprPrimary :- r) (TemplateArg :- r)
rExprPrimaryTemplateArg Boomerang StringError String (ExprPrimary :- a) (TemplateArg :- a)
-> Boomerang StringError String a (ExprPrimary :- a)
-> Boomerang StringError String a (TemplateArg :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (ExprPrimary :- a)
forall a. Boomerang StringError String a (ExprPrimary :- a)
exprPrimary Boomerang StringError String a (ExprPrimary :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (ExprPrimary :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"E"
              )

exprPrimary :: Boomerang (ParserError MajorMinorPos) String a (ExprPrimary :- a)
exprPrimary :: forall a. Boomerang StringError String a (ExprPrimary :- a)
exprPrimary = (Boomerang
  StringError String (CXXType :- (Int :- a)) (ExprPrimary :- a)
forall tok e r.
Boomerang e tok (CXXType :- (Int :- r)) (ExprPrimary :- r)
rExprIntLit Boomerang
  StringError String (CXXType :- (Int :- a)) (ExprPrimary :- a)
-> Boomerang StringError String a (CXXType :- (Int :- a))
-> Boomerang StringError String a (ExprPrimary :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String (Int :- a) (CXXType :- (Int :- a))
forall a. Boomerang StringError String a (CXXType :- a)
cxxType Boomerang StringError String (Int :- a) (CXXType :- (Int :- a))
-> Boomerang StringError String a (Int :- a)
-> Boomerang StringError String a (CXXType :- (Int :- a))
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (Int :- a)
forall r. StringBoomerang r (Int :- r)
abiInt )


templateParam :: Boomerang StringError String a (TemplateParam :- a)
templateParam :: forall a. Boomerang StringError String a (TemplateParam :- a)
templateParam = ( Boomerang
  StringError String (Maybe String :- a) (TemplateParam :- a)
forall tok e r.
Boomerang e tok (Maybe String :- r) (TemplateParam :- r)
rTemplateParam Boomerang
  StringError String (Maybe String :- a) (TemplateParam :- a)
-> Boomerang StringError String a (Maybe String :- a)
-> Boomerang StringError String a (TemplateParam :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> StringBoomerang (Maybe String :- a) (Maybe String :- a)
forall r. String -> StringBoomerang r r
lit String
"T" StringBoomerang (Maybe String :- a) (Maybe String :- a)
-> Boomerang StringError String a (Maybe String :- a)
-> Boomerang StringError String a (Maybe String :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Boomerang StringError String a (String :- a)
-> Boomerang StringError String a (Maybe String :- a)
forall e tok r a.
Boomerang e tok r (a :- r) -> Boomerang e tok r (Maybe a :- r)
rMaybe Boomerang StringError String a (String :- a)
forall a. Boomerang StringError String a (String :- a)
seq_id Boomerang StringError String a (Maybe String :- a)
-> Boomerang StringError String a a
-> Boomerang StringError String a (Maybe String :- a)
forall b c a.
Boomerang StringError String b c
-> Boomerang StringError String a b
-> Boomerang StringError String a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Boomerang StringError String a a
forall r. String -> StringBoomerang r r
lit String
"_" )

-- | Parse a length-prefixed string (does not handle newlines)
sourceName :: Boomerang (ParserError MajorMinorPos) String a (String :- a)
sourceName :: forall a. Boomerang StringError String a (String :- a)
sourceName = Parser StringError String String
-> (String -> [String -> String])
-> Boomerang StringError String a (String :- a)
forall e tok a r.
Parser e tok a -> (a -> [tok -> tok]) -> Boomerang e tok r (a :- r)
val Parser StringError String String
pf String -> [String -> String]
sf
  where
    pf :: Parser StringError String String
pf = (String
 -> Pos StringError
 -> [Either StringError ((String, String), Pos StringError)])
-> Parser StringError String String
forall e tok a.
(tok -> Pos e -> [Either e ((a, tok), Pos e)]) -> Parser e tok a
Parser ((String
  -> Pos StringError
  -> [Either StringError ((String, String), Pos StringError)])
 -> Parser StringError String String)
-> (String
    -> Pos StringError
    -> [Either StringError ((String, String), Pos StringError)])
-> Parser StringError String String
forall a b. (a -> b) -> a -> b
$ \String
tok Pos StringError
pos ->
      case String
tok of
        [] -> MajorMinorPos
-> [ErrorMsg]
-> [Either StringError ((String, String), MajorMinorPos)]
forall pos a. pos -> [ErrorMsg] -> [Either (ParserError pos) a]
mkParserError MajorMinorPos
Pos StringError
pos [String -> ErrorMsg
EOI String
"input", String -> ErrorMsg
Expect String
"number"]
        String
_ ->
          case String -> Maybe (Int, String)
parseInt String
tok of
            Maybe (Int, String)
Nothing -> MajorMinorPos
-> [ErrorMsg]
-> [Either StringError ((String, String), MajorMinorPos)]
forall pos a. pos -> [ErrorMsg] -> [Either (ParserError pos) a]
mkParserError MajorMinorPos
Pos StringError
pos [String -> ErrorMsg
Expect String
"length-prefixed string"]
            Just (Int
len, String
rest1) ->
              let (String
s, String
rest2) = Int -> String -> (String, String)
forall a. Int -> [a] -> ([a], [a])
splitAt Int
len String
rest1
                  pos' :: MajorMinorPos
pos' = Int -> MajorMinorPos -> MajorMinorPos
forall i. Integral i => i -> MajorMinorPos -> MajorMinorPos
incMinor (String -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length (Int -> String
forall a. Show a => a -> String
show Int
len) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ String -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s) MajorMinorPos
Pos StringError
pos
              in case String -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
len of
                Bool
True -> [((String, String), MajorMinorPos)
-> Either StringError ((String, String), MajorMinorPos)
forall a b. b -> Either a b
Right ((String
s, String
rest2), MajorMinorPos
pos')]
                Bool
False -> MajorMinorPos
-> [ErrorMsg]
-> [Either StringError ((String, String), MajorMinorPos)]
forall pos a. pos -> [ErrorMsg] -> [Either (ParserError pos) a]
mkParserError MajorMinorPos
Pos StringError
pos [String -> ErrorMsg
EOI String
"input", String -> ErrorMsg
Expect String
"length-prefixed string"]
    sf :: String -> [String -> String]
sf String
b = [ (\String
string -> [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [ Int -> String
forall a. Show a => a -> String
show (String -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
b), String
b, String
string ]) ]

parseInt :: String -> Maybe (Int, String)
parseInt :: String -> Maybe (Int, String)
parseInt String
s =
  case ReadS Int
forall a. Read a => ReadS a
reads String
s of
    [(Int
i, String
rest)] -> (Int, String) -> Maybe (Int, String)
forall a. a -> Maybe a
Just (Int
i, String
rest)
    [(Int, String)]
_ -> Maybe (Int, String)
forall a. Maybe a
Nothing

-- | In the Itanium ABI, negative numbers are prefixed by 'n' instead
-- of a negative sign.  This is an alternate parser to be used instead
-- of the 'int' parser that comes with boomerang.
abiInt :: Boomerang (ParserError MajorMinorPos) String a (Int :- a)
abiInt :: forall r. StringBoomerang r (Int :- r)
abiInt = Parser StringError String Int
-> (Int -> [String -> String])
-> Boomerang StringError String a (Int :- a)
forall e tok a r.
Parser e tok a -> (a -> [tok -> tok]) -> Boomerang e tok r (a :- r)
val Parser StringError String Int
pf Int -> [String -> String]
forall {a}. (Ord a, Num a, Show a) => a -> [String -> String]
sf
  where
    pf :: Parser StringError String Int
pf = (String
 -> Pos StringError
 -> [Either StringError ((Int, String), Pos StringError)])
-> Parser StringError String Int
forall e tok a.
(tok -> Pos e -> [Either e ((a, tok), Pos e)]) -> Parser e tok a
Parser ((String
  -> Pos StringError
  -> [Either StringError ((Int, String), Pos StringError)])
 -> Parser StringError String Int)
-> (String
    -> Pos StringError
    -> [Either StringError ((Int, String), Pos StringError)])
-> Parser StringError String Int
forall a b. (a -> b) -> a -> b
$ \String
tok Pos StringError
pos ->
      case String
tok of
        [] -> MajorMinorPos
-> [ErrorMsg]
-> [Either StringError ((Int, String), MajorMinorPos)]
forall pos a. pos -> [ErrorMsg] -> [Either (ParserError pos) a]
mkParserError MajorMinorPos
Pos StringError
pos [String -> ErrorMsg
EOI String
"input", String -> ErrorMsg
Expect String
"abi number"]
        Char
'n' : String
rest1 ->
          case String -> Maybe (Int, String)
parseInt String
rest1 of
            Maybe (Int, String)
Nothing -> MajorMinorPos
-> [ErrorMsg]
-> [Either StringError ((Int, String), MajorMinorPos)]
forall pos a. pos -> [ErrorMsg] -> [Either (ParserError pos) a]
mkParserError MajorMinorPos
Pos StringError
pos [String -> ErrorMsg
Expect String
"abi number"]
            Just (Int
num, String
rest2) ->
              let pos' :: MajorMinorPos
pos' = Int -> MajorMinorPos -> MajorMinorPos
forall i. Integral i => i -> MajorMinorPos -> MajorMinorPos
incMinor (String -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length (Int -> String
forall a. Show a => a -> String
show Int
num) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) MajorMinorPos
Pos StringError
pos
              in [((Int, String), MajorMinorPos)
-> Either StringError ((Int, String), MajorMinorPos)
forall a b. b -> Either a b
Right ((Int -> Int
forall a. Num a => a -> a
negate Int
num, String
rest2), MajorMinorPos
pos')]
        String
_ ->
          case String -> Maybe (Int, String)
parseInt String
tok of
            Maybe (Int, String)
Nothing -> MajorMinorPos
-> [ErrorMsg]
-> [Either StringError ((Int, String), MajorMinorPos)]
forall pos a. pos -> [ErrorMsg] -> [Either (ParserError pos) a]
mkParserError MajorMinorPos
Pos StringError
pos [String -> ErrorMsg
Expect String
"abi number"]
            Just (Int
num, String
rest2) ->
              let pos' :: MajorMinorPos
pos' = Int -> MajorMinorPos -> MajorMinorPos
forall i. Integral i => i -> MajorMinorPos -> MajorMinorPos
incMinor (String -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length (Int -> String
forall a. Show a => a -> String
show Int
num)) MajorMinorPos
Pos StringError
pos
              in [((Int, String), MajorMinorPos)
-> Either StringError ((Int, String), MajorMinorPos)
forall a b. b -> Either a b
Right ((Int
num, String
rest2), MajorMinorPos
pos')]
    sf :: a -> [String -> String]
sf a
b | a
b a -> a -> Bool
forall a. Ord a => a -> a -> Bool
>= a
0 = [ (\String
string -> [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [ a -> String
forall a. Show a => a -> String
show a
b, String
string ]) ]
         | Bool
otherwise = [ (\String
string -> [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [ String
"n", a -> String
forall a. Show a => a -> String
show a
b, String
string ]) ]