#! /bin/sh
version="$1"
class="$2"
case "$3" in
"")
  previous=`expr $version - 1`
  ;;
*)
  previous=$3
esac

case $class in
FrVect)
sed -e s/%version%/$version/ \
  -e s/%previous%/$previous/ \
  -e s/%class%/$class/ << EOF > "${class}.hh"
#ifndef FrameCPP__VERSION_%version%__%class%_HH
#define FrameCPP__VERSION_%version%__%class%_HH

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

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

#if defined(__cplusplus)
namespace FrameCPP
{
  namespace Version_%version%
  {
    using Previous::Dimension;
    using Previous::FrVectDataTypes;
    using Previous::%class%;
  } // namespace - Version_%version%
} // namespace - FrameCPP

#endif /* FrameCPP__VERSION_%version%__%class%_HH */
#endif /* defined(__cplusplus) */
EOF
;;
STRING)
sed -e s/%version%/$version/ \
  -e s/%previous%/$previous/ \
  -e s/%class%/$class/ << EOF > "${class}.hh"
#ifndef FrameCPP__VERSION_%version%__%class%_HH
#define FrameCPP__VERSION_%version%__%class%_HH

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

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

#if defined(__cplusplus)
#if !defined(SWIG)
namespace FrameCPP
{
  namespace Version_%version%
  {
    using Previous::%class%;
    using Previous::%class%_SHADOW;
  } // namespace - Version_%version%
} // namespace - FrameCPP
#endif /* ! defined(SWIG) */
#endif /* defined(__cplusplus) */

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

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

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

#if defined(__cplusplus)
#if !defined(SWIG)
namespace FrameCPP
{
  namespace Version_%version%
  {
    using Previous::%class%;
  } // namespace - Version_%version%
} // namespace - FrameCPP
#endif /* ! defined(SWIG) */
#endif /* defined(__cplusplus) */

#endif /* FrameCPP__VERSION_%version%__%class%_HH */
EOF
;;
esac
