From: Paul K. <pki...@us...> - 2004-11-16 06:56:57
|
Update of /cvsroot/octave/octave-forge/extra/mex In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11449/extra/mex Modified Files: Makefile mex.in Added Files: myfeval.m Log Message: [with Dan McMahill] Use doc string from .m file if available --- NEW FILE: myfeval.m --- function myfeval, #% [...] = myfeval('fn',...) % call feval on 'fn' error('mex version of myfeval isn't available'); %this is not part of the message Index: Makefile =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/mex/Makefile,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- Makefile 9 Sep 2004 11:53:25 -0000 1.11 +++ Makefile 16 Nov 2004 06:56:42 -0000 1.12 @@ -24,7 +24,8 @@ $(MKOCTFILE) -c $(HAVE_OCTAVE_MAP_INDEX) -o $(MEXLIB) mex.cc mex: mex.in - cat mex.in | sed -e "s:@MKOCTFILE@:$(MKOCTFILE):;s:@LIBPATH@:$(LIBPATH):g;s:@MEXLIB@:$(MEXLIB):g" > mex + cat mex.in | sed -e "s:@MKOCTFILE@:$(MKOCTFILE):;s:@LIBPATH@:$(LIBPATH):g;s:@MEXLIB@:$(MEXLIB):g" \ + -e 's;@_AWK_@;${AWK};g' > mex chmod a+x mex install: Index: mex.in =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/mex/mex.in,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- mex.in 9 Sep 2004 11:48:44 -0000 1.12 +++ mex.in 16 Nov 2004 06:56:43 -0000 1.13 @@ -34,6 +34,7 @@ fi # default the name of the octave function from the first filename +dir=`dirname $first` first=`basename $first` #echo "first= $first" ext=`echo $first | sed 's;.*\.;.;g'` @@ -52,6 +53,16 @@ ;; esac +# search for a .m file which will be used for the help string +# in the mex function. +if test -f $dir/$name.m ; then + mfile=$dir/$name.m +elif test -f ./$name.m ; then + mfile=./$name.m +else + mfile="" +fi + cat <<EOF > mex_$name.cc #include <octave/oct.h> @@ -63,10 +74,29 @@ const char *mexFunctionName = "$name"; } ; -DEFUN_DLD($name, args, nargout, "\ +DEFUN_DLD($name, args, nargout, +EOF + +if test "X$mfile" = "X" ; then + cat <<EOF >> mex_$name.cc +"\ $name not directly documented. Try the following:\n\ type(file_in_loadpath('$name.m'))\n\ ") +EOF +else + @_AWK_@ 'BEGIN{print "\"\\";printing=0;} + /^[ \t]*[%#]/ {printing=1; + gsub(/^[ \t]*[%#]*/,""); + gsub(/\\/,"\\\\"); + gsub(/"/,"\\\""); + print $0 "\\n\\"; next} + {if (printing) exit;} + END{print "\")"}' \ + $mfile >> mex_$name.cc +fi + +cat <<EOF >> mex_$name.cc { octave_value_list $invoke(const octave_value_list &, const int); return $invoke(args, nargout); |