-- Copyright (c) Microsoft. All rights reserved.

-- Licensed under the MIT license. See LICENSE file in the project root for full license information.



{-# OPTIONS_GHC -fno-warn-unused-imports #-}



{-|
Copyright   : (c) Microsoft
License     : MIT
Maintainer  : adamsap@microsoft.com
Stability   : provisional
Portability : portable

The module exports the built-in code generation templates.
-}



module Language.Bond.Codegen.Templates

    ( -- * Templates

      -- | All codegen templates take at least the following arguments:

      --

      -- * 'MappingContext' which determines mapping of Bond types to types in

      --   the target language

      --

      -- * base file name, typically the name of the schema definition file

      --   without the extension

      --

      -- * list of 'Import's from the parsed schema definition

      --

      -- * list of 'Declaration's from the parsed schema definition

      --

      -- Some templates are parameterized with additional options for

      -- customizing the generated code.

      --

      -- The templates return the name suffix for the target file and lazy

      -- 'Text' with the generated code.



      -- ** C++

      types_h

    , types_cpp

    , reflection_h

    , enum_h

    , apply_h

    , apply_cpp

    ,  Protocol(..)

    , grpc_h

    , grpc_cpp

      -- ** C#

    , FieldMapping(..)

    , StructMapping(..)

    , ConstructorOptions(..)

    , types_cs

    , grpc_cs

      -- ** Java

    , JavaFieldMapping(..)

    , class_java

    , enum_java

    )

    where



import Language.Bond.Codegen.Cpp.Apply_cpp

import Language.Bond.Codegen.Cpp.Apply_h

import Language.Bond.Codegen.Cpp.ApplyOverloads

import Language.Bond.Codegen.Cpp.Enum_h

import Language.Bond.Codegen.Cpp.Reflection_h

import Language.Bond.Codegen.Cpp.Types_cpp

import Language.Bond.Codegen.Cpp.Types_h

import Language.Bond.Codegen.Cpp.Grpc_cpp

import Language.Bond.Codegen.Cpp.Grpc_h

import Language.Bond.Codegen.Cs.Types_cs

import Language.Bond.Codegen.Cs.Grpc_cs

import Language.Bond.Codegen.Java.Class_java

import Language.Bond.Codegen.Java.Enum_java

-- redundant imports for haddock

import Language.Bond.Codegen.TypeMapping

import Language.Bond.Syntax.Types

import Data.Text.Lazy