//****************************************
// GENERATED BY MAKO : DO NOT EDIT
//****************************************
/*******************************************************************************
 *
 * TRIQS: a Toolbox for Research in Interacting Quantum Systems
 *
 * Copyright (C) 2015-2016 by O. Parcollet
 *
 * TRIQS is free software: you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * TRIQS. If not, see <http://www.gnu.org/licenses/>.
 *
 ******************************************************************************/
#pragma once
#include <triqs/gfs/block/map.hpp>

namespace triqs {
  namespace gfs {

    template <typename M, typename T> auto inverse(block_gf<M, T> &g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto inverse(block_gf<M, T> const &g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto inverse(block_gf_view<M, T> g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto inverse(block_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto inverse(block2_gf<M, T> &g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto inverse(block2_gf<M, T> const &g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto inverse(block2_gf_view<M, T> g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto inverse(block2_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return inverse(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block_gf<M, T> &g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block_gf<M, T> const &g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block_gf_view<M, T> g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block2_gf<M, T> &g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block2_gf<M, T> const &g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block2_gf_view<M, T> g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto reinterpret_scalar_valued_gf_as_matrix_valued(block2_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return reinterpret_scalar_valued_gf_as_matrix_valued(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block_gf<M, T> &g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block_gf<M, T> const &g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block_gf_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block2_gf<M, T> &g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block2_gf<M, T> const &g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block2_gf_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_fourier(block2_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block_gf<M, T> &g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block_gf<M, T> const &g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block_gf_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block2_gf<M, T> &g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block2_gf<M, T> const &g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block2_gf_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

    template <typename M, typename T> auto make_gf_from_inverse_fourier(block2_gf_const_view<M, T> g) {
      auto l = [](auto &&x) { return make_gf_from_inverse_fourier(x); };
      return map_block_gf(l, g);
    }

  } // namespace gfs
} // namespace triqs
