#!/bin/bash
#
# --- GSMP-COPYRIGHT-NOTE-BEGIN ---
# 
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
# Please add additional copyright information _after_ the line containing
# the GSMP-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by
# the ./scripts/Create-CopyPatch script. Do not edit this copyright text!
# 
# GSMP: scripts/NewFile.sh
# General Sound Manipulation Program is Copyright (C) 2000 - 2004
#   Valentin Ziegler and René Rebe
# 
# This program 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; version 2. A copy of the GNU General
# Public License can be found in the file LICENSE.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT-
# ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
# 
# --- GSMP-COPYRIGHT-NOTE-END ---

filename=`basename $1`
directory=`dirname $1`
extention=`echo $filename | sed -e "s,[^.]*\(.*\)$,\1,"`
base=`echo $filename | sed -e "s,\([^.]*\).*$,\1,"`

test -d $directory || (echo "directory $directory does not exist." && exit)
test -z "$filename" && echo "no filename was given." && exit
test -f $1 && echo "file $1 already exists." && exit

case $directory in
    dam*) namespace="DAM" ; project="DAM" ;;
    utility*) namespace="Utility" ; project="UTILITY" ;;
    lowlevel*) namespace="GSMP" ; project="LOWLEVEL" ;;
    lab*) namespace="lab" ; project="LAB" ;;
    *) echo "namspace/projectname unknown for directory $directory" && exit
esac


incLock=$project"__"`echo $base | tr [:lower:] [:upper:]`"_HH__"
templGuard=$project"__"`echo $base | tr [:lower:] [:upper:]`"_TMPL__"

#echo "$namespace $project $incLock $templGuard"

case $extention in
    .cc) cat > $1 <<EOF

#include "$base.hh"

using namespace $namespace;

EOF
    ;;
    .hh) cat > $1 <<EOF

#ifndef $incLock
#define $incLock

namespace $namespace
{


} // end namespace $namespace

/* include template implementation */
#define $templGuard
#include "template/$base.tcc"
#undef $templGuard

#endif // $incLock
EOF
    ;;
    .tcc) cat > $1 <<EOF

// -*- c++ -*-

#ifndef $templGuard
#error "This file is included by $base.hh"
#error "Include that file instead."
#endif


namespace $namespace
{


} // end namespace $namespace
EOF
    ;;
    *) echo "unknown extention $extention" && exit
esac


