#! /bin/sh
#
# LDASTools frameCPP - A library implementing the LIGO/Virgo frame specification
#
# Copyright (C) 2018 California Institute of Technology
#
# LDASTools frameCPP is free software; you may redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 (GPLv2) of the
# License or at your discretion, any later version.
#
# LDASTools frameCPP is distributed in the hope that it will be useful, but
# without any warranty or even the implied warranty of merchantability
# or fitness for a particular purpose. See the GNU General Public
# License (GPLv2) for more details.
#
# Neither the names of the California Institute of Technology (Caltech),
# The Massachusetts Institute of Technology (M.I.T), The Laser
# Interferometer Gravitational-Wave Observatory (LIGO), nor the names
# of its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# You should have received a copy of the licensing terms for this
# software included in the file LICENSE located in the top-level
# directory of this package. If you did not, you can view a copy at
# http://dcc.ligo.org/M1500244/LICENSE
#
version="$1"
class="$2"
shift
shift
comment="$*"

case $class in
FrameStream)
sed -e s/%version%/"${version}"/g \
  -e s/%comment%/"${comment}"/g \
  -e s/%class%/"${class}"/g << EOF > "${class}.hh"
#ifndef FRAME_CPP_INTERFACE__%class%_HH
#define FRAME_CPP_INTERFACE__%class%_HH

#include "framecpp/FrameCPP.hh"

#include "framecpp/Version%version%/%class%.hh"

#if defined(__cplusplus)
#if !defined(SWIG)
namespace FrameCPP
{
  /**
   * \brief %comment%
   */
  typedef Version::I%class% I%class%;
  typedef Common::O%class% O%class%;
}
#endif /* !defined(SWIG) */
#endif /* defined(__cplusplus) */

#endif /* FRAME_CPP_INTERFACE__%class%_HH */
EOF
;;
*)
sed -e s/%version%/"${version}"/g \
  -e s/%comment%/"${comment}"/g \
  -e s/%class%/"${class}"/g << EOF > "${class}.hh"
#ifndef FRAME_CPP_INTERFACE__%class%_HH
#define FRAME_CPP_INTERFACE__%class%_HH

#include "framecpp/FrameCPP.hh"

#include "framecpp/Version%version%/%class%.hh"

#if defined(__cplusplus)
#if !defined(SWIG)
namespace FrameCPP
{
  /**
   * \brief %comment%
   */
  typedef Version::%class% %class%;
}
#endif /* !defined(SWIG) */
#endif /* defined(__cplusplus) */

#endif /* FRAME_CPP_INTERFACE__%class%_HH */
EOF
;;
esac
