Differences From Artifact [c5cc8a3a52]:
- Executable file
mttroot/mtt/bin/trans/mtt_header
— part of check-in
[d9e3b30dc2]
at
2002-05-15 14:22:26
on branch origin/master
— Code for Simulink S-function target written direct to sfun.cc instead of
calling .mexglx files. This eliminates the sfun dependency on Octave
ColumnVectors. sys_sfun.cc should build directly on a MS Windows machine
(can't test this yet).added sfun.zip target to create source code to export. (user: geraint@users.sourceforge.net, size: 20771) [annotate] [blame] [check-ins using] [more...]
To Artifact [60dbd07829]:
- Executable file
mttroot/mtt/bin/trans/mtt_header
— part of check-in
[062029b187]
at
2002-05-19 13:01:22
on branch origin/master
— Numerical solution of algebraic equations implemented for S-function target.
Equation solving requires the Matlab Optimization Toolbox to be installed.
Code has been changed from C++ to C to allow mex files to be built with LCC,
the compiler bundled with Matlab.Parameters are now obtained from numpar.c instead of a dialogue box.
`mtt <sys> sfun zip` creates all necessary files for building the model mex files. (user: geraint@users.sourceforge.net, size: 21290) [annotate] [blame] [check-ins using] [more...]
︙ | ︙ | |||
8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.49 2002/05/11 01:14:17 geraint ## Fix for [ 553218 ] simpar.oct and simpar.m different. ## Translation added between ColumnVector in base .cc and Octave_map in .oct. ## ## Revision 1.48 2002/05/08 14:51:03 geraint ## Moved matlab/octave data type conversion functions to a separate file. ## | > > > > > > > > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.50 2002/05/15 14:22:25 geraint ## Code for Simulink S-function target written direct to sfun.cc instead of ## calling .mexglx files. This eliminates the sfun dependency on Octave ## ColumnVectors. sys_sfun.cc should build directly on a MS Windows machine ## (can't test this yet). ## ## added sfun.zip target to create source code to export. ## ## Revision 1.49 2002/05/11 01:14:17 geraint ## Fix for [ 553218 ] simpar.oct and simpar.m different. ## Translation added between ColumnVector in base .cc and Octave_map in .oct. ## ## Revision 1.48 2002/05/08 14:51:03 geraint ## Moved matlab/octave data type conversion functions to a separate file. ## |
︙ | ︙ | |||
206 207 208 209 210 211 212 213 214 215 216 217 218 219 | # Arguments system=$1 rep=$2 language=$3 fun_name=${1}_${2} other=$4 # Anything else eg stdin if [ -z "$system" ]; then echo 'Usage: mtt_header sys rep lang [stdin]' exit fi | > > > | 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | # Arguments system=$1 rep=$2 language=$3 fun_name=${1}_${2} other=$4 # Anything else eg stdin insertor=\<\< # help emacs sh-mode out with C++ lines if [ -z "$system" ]; then echo 'Usage: mtt_header sys rep lang [stdin]' exit fi |
︙ | ︙ | |||
465 466 467 468 469 470 471 | oct_header=yes; constant_declaration="const double " var_declaration="double " minusone="-1" map="_map" declaredummies=yes ;; | < > | | | < < | 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 | oct_header=yes; constant_declaration="const double " var_declaration="double " minusone="-1" map="_map" declaredummies=yes ;; c) modeline="/* -*-c-*- Put Emacs into c-mode */"; Lc='/*' Rc='*/' Lb='[' Rb=']' constant_declaration="const double " var_declaration="double " minusone="-1" ;; *) echo Language $language not supported - sorry; exit 1 esac |
︙ | ︙ | |||
849 850 851 852 853 854 855 | ColumnVector | Matrix | *) printf " ${arg_type}\t${w}\t= args(${j}).%s ();\n" ${vector_value} ;; esac done } | | | | | 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 | ColumnVector | Matrix | *) printf " ${arg_type}\t${w}\t= args(${j}).%s ();\n" ${vector_value} ;; esac done } map_mex_cc_inputs () { s=${1:-""} # comma separated input list if [ -z ${s:-""} ];then return; fi c=`get_field ${s} 0` # count of inputs i=0 cat <<EOF if (${c} != nrhs) { std::cerr $insertor "${fun_name} expected " $insertor ${c} $insertor " argument(s): ${s}" $insertor std::endl; return; } EOF while [ ${i} -lt ${c} ]; do j=${i} i=`expr ${i} + 1` w=`get_field ${s} ${i}` # argument name get_arg_specific_stuff ${w} case ${arg_type} in "const double") printf " ${arg_type}\t${w}\t= mtt_double (prhs [${j}]);\n" ;; ColumnVector | Matrix | *) printf " ${arg_type}\t${w}\t= mtt_${arg_type} (prhs [${j}]);\n" |
︙ | ︙ | |||
904 905 906 907 908 909 910 | return retval; } #endif // (CODEGENTARGET == OCTAVEDLD) EOF } | | | | 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 | return retval; } #endif // (CODEGENTARGET == OCTAVEDLD) EOF } write_mex_cc () { func=${1:-"<insert function name>"} args=${2:-""} cat <<EOF #if (CODEGENTARGET == MATLABMEX) #include <mtt_matlab_octave.hh> extern "C" { void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { EOF map_mex_cc_inputs ${args} cat <<EOF plhs[0] = mtt_mxArray (${func} (${args})); } } #endif EOF |
︙ | ︙ | |||
951 952 953 954 955 956 957 | if [ ${language} = "oct" ];then # standalone write_cc_header array2constant write_cc_footer # oct and mex code write_oct ${system}_${rep} ${args} | | > > > > > > | 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 | if [ ${language} = "oct" ];then # standalone write_cc_header array2constant write_cc_footer # oct and mex code write_oct ${system}_${rep} ${args} write_mex_cc ${system}_${rep} ${args} elif [ $language = "c" ]; then array2constant cat <<EOF /* BEGIN Code */ /* END Code */ EOF else if [ -n "$noglobals" ]; then cat<<EOF ## Horrible fudge to make mtt_m2p work global ... |
︙ | ︙ |