#!/bin/sh
# --------------------------------------------------------------------------
# Copyright 1992 by Forschungszentrum Informatik (FZI)
#
# You can use and distribute this software under the terms of the license
# version 1 you should have received along with this software.
# If not or if you want additional information, write to
# Forschungszentrum Informatik, "STONE", Haid-und-Neu-Strasse 10-14,
# D-76131 Karlsruhe, Germany.
# --------------------------------------------------------------------------
# 'obst-gen - 27:02:91 - Jochen'
#
# obst-gen [-I] [-L <language>] <schema>
#
# Interface to the OBST host language generators. 
# The generator operates on the meta-schema to produce a host language 
# interface to the classes and types defined in the schema
#
# The "-L" option specifies the host language interface to be generated. Up to
# now there exists only a C++ binding, which is also the default.
#
# <file_prefix> may be:
#    "^"	   : The first phase is not carried out.
#    "-"	   : Input is read from stdin.
#    another string: Input is read from "<file_prefix>.obst".
#
# <schema> may be:
#    "^"	   : The second phase is not carried out.
#    another string: Output is generated for the named <schema>.
#		     The output is written to the current working directory.
# If <schema> is not given then <file_prefix> is also used as schema name. This
# is not possible if <file_prefix> is "^" or "-".
#
 self='obst-gen'
usage='[-I] [-L language] <schema-name>'

[ -n "$OBSTdir" ] || { OBSTdir="`cd \`dirname $0\`;pwd`/"; export OBSTdir; }

if [ -z "$OBSTCONTAINER" -a -z "$SOSCONTAINER" ] ; then
  echo >&2 "*** $self: environment variable OBSTCONTAINER not defined"
  exit 1
fi

language='CC'

while [ $# -gt 0 ]
do
   case $1 in
      -I) genopt='-I'	;;
      -L) shift
	  language="$1"	;;
       *) break		;;
   esac
   shift
done

generator="gen$language"

if [ $# -eq 1 ] ; then
   [ "$1" = '^' -o "$1" = '-' ] && {
      echo >&2 "*** $self: no implicit schema name" ; exit 1
      }
   infile="$1".obst
   schema="`basename $1`"
elif [ $# -eq 2 ] ; then
   if [ "$1" = '-'  -o "$1" = '^' ] ; then
      infile="$1"
   else
      infile="$1".obst
   fi
   schema="$2"
else
   echo >&2 "*** usage: $self $usage"
   exit 1
fi

[ "$schema" == '^' ] || {
   genfiles="${schema}_obst.c ${schema}_obst.h ${schema}_use.h"
   rm -f $genfiles
   ${OBSTdir}$generator $genopt $schema || exit 1
}
exit 0
