-- Copyright (c) Microsoft. All rights reserved. -- Licensed under the MIT license. See LICENSE file in the project root for full license information. {-# LANGUAGE QuasiQuotes, OverloadedStrings, RecordWildCards #-} module Language.Bond.Codegen.Cpp.Grpc_cpp (grpc_cpp) where import Data.Monoid import Prelude import Data.Text.Lazy (Text) import Text.Shakespeare.Text import Language.Bond.Syntax.Types import Language.Bond.Codegen.TypeMapping import Language.Bond.Codegen.Util import qualified Language.Bond.Codegen.Cpp.Util as CPP -- | Codegen template for generating /base_name/_grpc.cpp containing -- definitions of helper functions and schema metadata static variables. grpc_cpp :: MappingContext -> String -> [Import] -> [Declaration] -> (String, Text) grpc_cpp cpp file _imports declarations = ("_grpc.cpp", [lt| #include "#{file}_reflection.h" #include "#{file}_grpc.h" #{CPP.openNamespace cpp} #{doubleLineSepEnd 1 statics declarations} #{CPP.closeNamespace cpp} |]) where -- definitions of Schema statics for non-generic services statics s@Service {..} = if null declParams then CPP.schemaMetadata cpp s else mempty statics _ = mempty