#! /bin/sh
# =============================================================================
#
# = DESCRIPTION
#     Front end to awk script for generating Frame mml from classinfo
#     files.
#
# = AUTHOR(S)
#     Graham Dumpleton
#     K. Dorn
# 
# = COPYRIGHT
#     Copyright 1991 OTC LIMITED
#     Copyright 1994 DUMPLETON SOFTWARE CONSULTING PTY LIMITED
#
# =============================================================================

OSE_HOST=

OSE_RELEASE_NAME=
export OSE_RELEASE_NAME

OSE_ROOT=${OSE_ROOT-$WRAPPER_ROOT}
export OSE_ROOT

OSE_VERSION_ROOT=$OSE_ROOT/$OSE_RELEASE_NAME
export OSE_VERSION_ROOT

BINDIR="$OSE_VERSION_ROOT/$OSE_HOST/bin"
LIBDIR=${CLASSINFOLIBDIR-"$OSE_VERSION_ROOT/bin"}

AWK="${AWK-nawk}"

if test "$AWK" = "nawk"
then
  VARG="-v"
fi

EXT="mml"

#
# Error.
#
ERROR()
{
  echo "`basename $0`: $1" >&2
  shift
  while test $# != "0"
  do
    echo $1 >&2
    shift
  done
  exit 1
}

#
# Usage message.
#
USAGE()
{
  ERROR "Usage: `basename $0` file.ci"
} 

#
# Check usage.
#
if test $# != "1" -o "'basename $1 .ci'" = "$1"
then
  USAGE
fi

#
# Check for awk file etc.
#
INFO2MAN=$LIBDIR/info2doc.awk
HIDINGFMT=$LIBDIR/hiding.fmt
MANFMT=$LIBDIR/info2doc.fmt


if test ! -f $HIDINGFMT
then
  ERROR "Can't find $HIDINGFMT"
fi

if test ! -f $INFO2MAN
then
  ERROR "Can't find $INFO2MAN"
fi

if test ! -f $MANFMT
then
  ERROR "Can't find $MANFMT"
fi

ADTS=`$AWK '
BEGIN {
  FS="\n"; RS=""
}
$1 ~ "^(CLASS|STRUCT|UNION)$" && $2 !~ "(::|<)" {
  printf( "%s\n", $2 )
}
$1 ~ "^TEMPLATE$" && $3 !~ "::" {
  printf( "%s\n", $3 )
}' $1`


VCSA=`$AWK '
BEGIN {
  FS="\n"; RS=""
}
$1 ~ "^CSAHEADER$" {
 if ( $2 ~ "on" )
  printf("%s","csaprintheader=off");
 else
  printf("%s","csaprintheader=off");
}' $HIDINGFMT`

VPUBL=`$AWK '
BEGIN {
  FS="\n"; RS=""
}
$1 ~ "^PUBLIC$" {
 if ( $2 ~ "on" )
  printf("%s","publ=on");
 else
  printf("%s","publ=");
}' $HIDINGFMT`

VPROT=`$AWK '
BEGIN {
  FS="\n"; RS=""
}
$1 ~ "^PROTECTED$" {
 if ( $2 ~ "on" )
  printf("%s","prot=on");
 else
  printf("%s","prot=");
}' $HIDINGFMT`

VPRIV=`$AWK '
BEGIN {
  FS="\n"; RS=""
}
$1 ~ "^PRIVATE$" {
 if ( $2 ~ "on" )
  printf("%s","priv=on");
 else
  printf("%s","priv=");
}' $HIDINGFMT`

echo " $VPUBL   $VPROT    $VPRIV    $VCSA "



if test ! -z "$ADTS"
then
  for ADT in $ADTS
  do
    echo "$ADT"

    $AWK -f $INFO2MAN \
     $VARG $VPUBL $VARG $VPROT $VARG $VPRIV $VARG $VCSA \
     $VARG pass=0 $VARG device=mml $VARG infile=$1 \
     $VARG class=$ADT $MANFMT $MANFMT > $ADT.$EXT
  done
fi
