view src/mkgendoc @ 3321:6923abb04e16

[project @ 1999-10-26 18:15:30 by jwe]
author jwe
date Tue, 26 Oct 1999 18:15:41 +0000
parents 35a6d027772c
children fac05a83b4c5
line wrap: on
line source

#! /bin/sh

if test $# -ne 1; then
  echo "usage: mkgendoc f1" 1>&2
  exit 1
fi

DOC_FILES=`cat $1`

if test -z "$DOC_FILES"; then
  echo "mkgendoc: DOC_FILES is empty!" 1>&2
  exit 1
fi

cat << \EOF
// DO NOT EDIT!  Generated automatically by mkbuiltins.

#include <iostream.h>
#include <string>

#define XDEFUN_INTERNAL(name, args_name, nargout_name, is_text_fcn, doc) \
  print_doc_string (#name, doc);

#define XDEFALIAS_INTERNAL(alias, name)

#define XDEFVAR_INTERNAL(name, sname, defn, protect, chg_fcn, doc) \
  print_doc_string (#name, doc);

#define XDEFCONST_INTERNAL(name, defn, doc) \
  print_doc_string (#name, doc);

#define XDEFUN_MAPPER_INTERNAL(name, ch_map, d_b_map, c_b_map, d_d_map, \
			       d_c_map, c_c_map, lo, hi, \
			       can_ret_cmplx_for_real, doc) \
  print_doc_string (#name, doc);

static void
print_doc_string (const string& name, const string& doc)
{
  cout << "";

  size_t len = name.length ();

  if (name[0] == '"' && name[len-1] == '"')
    cout << name.substr (1, len-2);
  else
    cout << name;

  cout << "\n" << doc << "\n";
}

EOF

for file in $DOC_FILES; do
  fcn=`echo $file | sed 's,^\./,,; s/\.df//; s/-/_/g'`
  echo "static void"
  echo "print_${fcn}_doc_strings (void)"
  echo "{"
  cat $file
  echo "}"
  echo ""
done

cat << \EOF

int
main (void)
{
EOF

for file in $DOC_FILES; do
  fcn=`echo $file | sed 's,^\./,,; s/\.df//; s/-/_/g'`
  echo "  print_${fcn}_doc_strings ();"
done

cat << \EOF

  return 0;
}
EOF

exit 0