#! /bin/sh
######################################
##### Model Transformation Tools #####
######################################
# Bourne shell script: abg2sub_m2sh
######################################
##### Model Transformation Tools #####
######################################
###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.4 2002/04/22 10:25:47 gawthrop
## Handles unnamed components & ingnores artwork
##
## Revision 1.3 2001/10/15 14:27:34 gawthrop
## Now handles [1:N] style port labels
##
## Revision 1.2 2001/07/23 23:26:23 gawthrop
## Removed some boring user feedback
##
## Revision 1.1 2001/06/11 19:47:49 gawthrop
## Makes the sub.sh file directly from the abg.fig file
## Used for making lbl files (abg2lbl_fig2txt)
##
##
###############################################################
# Copyright (C) 1996--2002 by Peter J. Gawthrop
get_valid_components()
{
gawk '
function modulo10(x) {
return x-int(x/10)*10
}
BEGIN{
polyline = 2;
text = 4;
compound_object = 6;
}
{
object = $1;
zero_depth = (modulo10($4)==0)&&(object==text);
if (zero_depth) print $0
}' < $1_abg.fig
}
#if [ -f "$1_sub.sh" ]; then
# echo Using "$1_sub.sh"
# exit
#else
#Inform user
echo Creating $1_sub.sh
#fi
echo '# Commands to generate subsystem representations'> $1_sub.sh
echo "# File $1_sub.sh" >> $1_sub.sh
echo "# Generated by MTT on `date`." >> $1_sub.sh
echo >> $1_sub.sh
# Get a list of all components from the _abg file
get_valid_components $1 |\
grep -v '\[[0-9]*:[0-9]*\]' |\
grep -v '\[.*\]' |\
gawk '{if ($1==4) split($14,a,":"); print a[1]}' |\
sed 's/\\001//' |\
sort -u > mtt_tmp1
# Remove all components starting with 0 or 1
grep -v '^[01]' < mtt_tmp1 > mtt_tmp4
# Get a list of all standard simple components
ls $MTT_LIB/comp/simple |\
gawk '/_cause.m/{split($1,a,"_");print(a[1])}' >mtt_tmp2
# Get a list of all standard compound components
#ls $MTTPATH/comp/compound |\
# gawk '/_abg.m/{split($1,a,"_");print(a[1])}' >> mtt_tmp2
# Sorted combined list
cat mtt_tmp2 | \
sed 's/^zero$/0/' |\
sed 's/^one$/1/' |\
sort -u >mtt_tmp3
# Print the non-standard components
comm mtt_tmp4 mtt_tmp3 |\
gawk 'BEGIN{FS="\t"}{if (length($1)>0) print "$1" $1 "$2"}' \
>>$1_sub.sh
# Clean up mtt_tmp files
#rm -f mtt_tmp?