view src/mkgendoc @ 14360:97883071e8e4

doc: Correct off-by-1 spacings in all .cc docstrings * __makeinfo__.m: Only remove space at beginning of new line for docstrings from scripts/ directory where this is the convention. * besselj.cc, betainc.cc, cellfun.cc, dot.cc, fftw.cc, filter.cc, find.cc, gammainc.cc, gcd.cc, givens.cc, hex2num.cc, kron.cc, lu.cc, max.cc, qr.cc, quadcc.cc, qz.cc, regexp.cc, strfind.cc, sub2ind.cc, syl.cc, time.cc, typecast.cc, urlwrite.cc, data.cc, dirfns.cc, file-io.cc, help.cc, load-path.cc, mappers.cc, oct-parse.yy, ov-base.cc, ov-cell.cc, ov-struct.cc, ov.cc, pr-output.cc, pt-mat.cc, strfns.cc, syscalls.cc, variables.cc: Improve appearance of docstring spacing of @example code.
author Rik <octave@nomad.inbox5.com>
date Mon, 13 Feb 2012 07:42:56 -0800
parents 72c96de7a403
children
line wrap: on
line source

#! /bin/sh
#
# Copyright (C) 1999-2012 John W. Eaton
#
# This file is part of Octave.
# 
# Octave 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; either version 3 of the License, or (at
# your option) any later version.
# 
# Octave is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Octave; see the file COPYING.  If not, see
# <http://www.gnu.org/licenses/>.

SED=${SED:-'sed'}

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 mkgendoc

#if defined (__DECCXX)
#define __USE_STD_IOSTREAM
#endif

#include <iostream>
#include <string>

#define XDEFUN_FILE_NAME(name) \
  std::string file_name = name;

#define XDEFUN_DLD_INTERNAL(name, args_name, nargout_name, doc) \
  print_doc_string (#name, file_name, doc);

#define XDEFUNX_DLD_INTERNAL(name, fname, args_name, nargout_name, doc) \
  print_doc_string (name, file_name, doc);

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

#define XDEFCONSTFUN_INTERNAL(name, args_name, nargout_name, doc) \
  print_doc_string (#name, file_name, doc);

#define XDEFUNX_INTERNAL(name, fname, args_name, nargout_name, doc) \
  print_doc_string (name, file_name, doc);

#define XDEFALIAS_INTERNAL(alias, name)

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

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

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

  size_t len = name.length ();

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

  std::cout << "@c " << name << " " << file_name << "\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)
{
  std::cout
    << "### DO NOT EDIT!\n"
    << "###\n"
    << "### This file is generated automatically from the Octave sources.\n"
    << "### Edit those files instead and run make to update this file.\n"
    << std::endl;

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