source: MML/trunk/applications/doc_html/applications/common/subfuns.html @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 14.0 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of subfuns</title>
6  <meta name="keywords" content="subfuns">
7  <meta name="description" content="SUBFUNS lists all function declaration lines in specified MFILE.">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../../index.html">Home</a> &gt;  <a href="#">applications</a> &gt; <a href="index.html">common</a> &gt; subfuns.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../../index.html"><img alt="<" border="0" src="../../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for applications/common&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>subfuns
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
24<div class="box"><strong>SUBFUNS lists all function declaration lines in specified MFILE.</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
27<div class="box"><strong>function SubFuns(mFile) </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
30<div class="fragment"><pre class="comment">SUBFUNS lists all function declaration lines in specified MFILE.
31   SUBFUNS(MFILE) displays list to Command Window.
32
33Example:
34   SubFuns SubFuns
35
36Note:
37   This utility uses both subfunctions and a nested function, both of
38   which are supported.
39
40See also FUNCTION.</pre></div>
41
42<!-- crossreference -->
43<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
44This function calls:
45<ul style="list-style-image:url(../../matlabicon.gif)">
46</ul>
47This function is called by:
48<ul style="list-style-image:url(../../matlabicon.gif)">
49</ul>
50<!-- crossreference -->
51
52<h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
53<ul style="list-style-image:url(../../matlabicon.gif)">
54<li><a href="#_sub1" class="code">function name = FunctionName(txt)</a></li><li><a href="#_sub2" class="code">function txt = NoLeadBlanks(txt)</a></li><li><a href="#_sub3" class="code">function html = OpenLink(mFile,lineNum)</a></li></ul>
55<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
56<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function SubFuns(mFile)</a>
570002 <span class="comment">%SUBFUNS lists all function declaration lines in specified MFILE.</span>
580003 <span class="comment">%   SUBFUNS(MFILE) displays list to Command Window.</span>
590004 <span class="comment">%</span>
600005 <span class="comment">%Example:</span>
610006 <span class="comment">%   SubFuns SubFuns</span>
620007 <span class="comment">%</span>
630008 <span class="comment">%Note:</span>
640009 <span class="comment">%   This utility uses both subfunctions and a nested function, both of</span>
650010 <span class="comment">%   which are supported.</span>
660011 <span class="comment">%</span>
670012 <span class="comment">%See also FUNCTION.</span>
680013
690014 <span class="comment">%   Copyright 2004 The MathWorks, Inc.</span>
700015 <span class="comment">%   rbemis@mathworks.com</span>
710016
720017 error(nargchk(1,1,nargin))
730018 error(nargoutchk(0,0,nargout))
740019
750020 <span class="comment">%make sure m-file exists (on path)</span>
760021 <span class="keyword">if</span> ~exist(mFile)
770022   error([<span class="string">'Unable to find m-file '</span> mFile])
780023 <span class="keyword">end</span>
790024
800025 <span class="comment">%open m-file (read access)</span>
810026 fid = fopen(which(mFile));
820027
830028 <span class="comment">%find all lines starting with 'function' signature</span>
840029 subFunList = {};
850030 lineNum = 0;
860031 <span class="keyword">while</span> ~feof(fid) <span class="comment">%check one line at a time</span>
870032   lineNum = lineNum+1; <span class="comment">%advance line pointer</span>
880033   <span class="keyword">try</span> <span class="comment">%read line</span>
890034     txt = fgetl(fid);
900035   <span class="keyword">catch</span> <span class="comment">%file read error</span>
910036     disp([<span class="string">'Tried reading file '</span> mFile])
920037     error(sprintf(<span class="string">'Unable to read line %d'</span>,lineNum))
930038   <span class="keyword">end</span>
940039   name = <a href="#_sub1" class="code" title="subfunction name = FunctionName(txt)">FunctionName</a>(txt);
950040   <span class="keyword">if</span> ~isempty(name) <span class="comment">%found one, add to list</span>
960041     subFunList(end+1,1:2) = {lineNum,name};
970042   <span class="keyword">end</span>
980043 <span class="keyword">end</span>
990044
1000045 <span class="comment">%close file when done</span>
1010046 fclose(fid);
1020047
1030048 <span class="comment">%display results</span>
1040049 <span class="keyword">if</span> ~isempty(subFunList)
1050050   <span class="comment">%honor loose preference</span>
1060051   <span class="keyword">if</span> strcmp(<span class="string">'loose'</span>,get(0,<span class="string">'FormatSpacing'</span>))
1070052     fprintf(<span class="string">'\n'</span>);
1080053   <span class="keyword">end</span>
1090054
1100055   <span class="comment">%table header</span>
1110056   fprintf(<span class="string">'   Line:   Function:\n'</span>);
1120057
1130058   <span class="comment">%row/col entries</span>
1140059   <span class="keyword">for</span> i=1:size(subFunList,1)
1150060     lineNum = subFunList{i,1};
1160061     <span class="comment">%fprintf('   %d',lineNum);</span>
1170062     html = <a href="#_sub3" class="code" title="subfunction html = OpenLink(mFile,lineNum)">OpenLink</a>(mFile,lineNum);
1180063     fprintf(<span class="string">'   %s'</span>,html);
1190064     fprintf(blanks(7-floor(log10(lineNum))));
1200065     name = subFunList{i,2};
1210066     fprintf(<span class="string">'%s\n'</span>,name);
1220067   <span class="keyword">end</span>
1230068
1240069   <span class="comment">%extra blank line after list before prompt</span>
1250070   fprintf(<span class="string">'\n'</span>);
1260071 <span class="keyword">end</span> <span class="comment">%if (list empty or not)</span>
1270072
1280073 <span class="keyword">end</span> <span class="comment">%SubFuns (main)</span>
1290074
1300075
1310076 <span class="comment">%sub-------------------------------------------------------------------</span>
1320077 <a name="_sub1" href="#_subfunctions" class="code">function name = FunctionName(txt)</a>
1330078 <span class="comment">%FUNCTIONNAME returns name of subfunction.</span>
1340079 <span class="comment">%   Returns empty if line does not contain valid function name.</span>
1350080 <span class="comment">%</span>
1360081 <span class="comment">%Usage:</span>
1370082 <span class="comment">%   name = FunctionName(txt)</span>
1380083
1390084 <span class="comment">%TODO List:</span>
1400085 <span class="comment">%   1. double check that algorithm worked correctly</span>
1410086
1420087 <span class="comment">%Note: MATLAB 7 includes a new TODO/FIXME tool to help maintain your code.</span>
1430088 <span class="comment">%   It's one of several new Directory Reports available from the Current</span>
1440089 <span class="comment">%   Directory Browser on the MATLAB Desktop.  You can also access the</span>
1450090 <span class="comment">%   TODO/FIXME Report tool from the menu bar when the Current Directory is</span>
1460091 <span class="comment">%   selected using View, Directory Reports.</span>
1470092
1480093 error(nargchk(1,1,nargin))
1490094 error(nargoutchk(1,1,nargout))
1500095
1510096 <span class="comment">%remove leading blanks</span>
1520097 txt = <a href="#_sub2" class="code" title="subfunction txt = NoLeadBlanks(txt)              ">NoLeadBlanks</a>(txt);
1530098
1540099   <span class="comment">%nested---------------------------------------%</span>
1550100   <span class="keyword">function</span> txt = <a href="#_sub2" class="code" title="subfunction txt = NoLeadBlanks(txt)              ">NoLeadBlanks</a>(txt)              <span class="comment">%</span>
1560101   <span class="comment">%NOLEADBLANK removes leading spaces.          %</span>
1570102     done = false;                               <span class="comment">%</span>
1580103     <span class="keyword">while</span> ~done                                 <span class="comment">%</span>
1590104       <span class="keyword">if</span> isempty(txt)                           <span class="comment">%</span>
1600105         <span class="keyword">return</span>                                  <span class="comment">%</span>
1610106       <span class="keyword">elseif</span> txt(1)==<span class="string">' '</span> <span class="comment">%leading blank         %</span>
1620107         txt(1) = []; <span class="comment">%remove                    %</span>
1630108       <span class="keyword">else</span> <span class="comment">%done (nonblank first character)     %</span>
1640109         done = true;                            <span class="comment">%</span>
1650110       <span class="keyword">end</span>                                       <span class="comment">%</span>
1660111     <span class="keyword">end</span> <span class="comment">%while (done or not)                    %</span>
1670112   <span class="keyword">end</span> <span class="comment">%NoLeadBlanks (nested function)-----------%</span>
1680113
1690114   <span class="comment">%{</span>
1700115     Notes:
1710116      (1) This use of a nested <span class="keyword">function</span> was contrived. There is no advantage
1720117          over a subfunction in terms of variable scope/sharing. Its value
1730118          here was just to provide a self referential example to show a
1740119          nested fuction.
1750120      (2) This is also an example of a block comment (new <span class="keyword">for</span> MATLAB 7).
1760121   <span class="comment">%}</span>
1770122   
1780123 <span class="keyword">if</span> length(txt)&lt;8 <span class="comment">%line too short</span>
1790124   name = []; <span class="comment">%return empty (no valid function here)</span>
1800125   <span class="keyword">return</span>;
1810126 <span class="keyword">end</span>
1820127
1830128 <span class="keyword">if</span> strcmp(<span class="string">'function'</span>,txt(1:8)) <span class="comment">%function line</span>
1840129   <span class="comment">%strip off function keyword at beginning</span>
1850130   txt(1:8) = [];
1860131
1870132   <span class="comment">%ignore outputs</span>
1880133   <span class="keyword">if</span> strfind(txt,<span class="string">'='</span>) <span class="comment">%outputs defined</span>
1890134     loc = strfind(txt,<span class="string">'='</span>);     <span class="comment">%LHS before =</span>
1900135     txt(1:loc) = [];            <span class="comment">%ignore outputs</span>
1910136   <span class="keyword">end</span>
1920137
1930138   <span class="comment">%remove leading blanks before name</span>
1940139   txt = <a href="#_sub2" class="code" title="subfunction txt = NoLeadBlanks(txt)              ">NoLeadBlanks</a>(txt);
1950140
1960141   <span class="comment">%ignore EOL comments</span>
1970142   <span class="keyword">if</span> strfind(txt,<span class="string">'%'</span>)
1980143     loc = strfind(txt,<span class="string">'%'</span>);     <span class="comment">%comment from % on</span>
1990144     txt(loc:end) = [];          <span class="comment">%ignore inputs</span>
2000145   <span class="keyword">end</span>
2010146   
2020147   <span class="comment">%ignore inputs</span>
2030148   <span class="keyword">if</span> strfind(txt,<span class="string">'('</span>)
2040149     loc = strfind(txt,<span class="string">'('</span>);     <span class="comment">%inputs after (</span>
2050150     txt(loc:end) = [];          <span class="comment">%ignore inputs</span>
2060151   <span class="keyword">end</span>
2070152
2080153   <span class="comment">%remove trailing blanks after function name</span>
2090154   <span class="keyword">while</span> txt(end)==<span class="string">' '</span>
2100155     txt(end) = [];
2110156   <span class="keyword">end</span>
2120157
2130158   <span class="comment">%for legal function names, only thing left must be function name</span>
2140159   name  = txt;
2150160 <span class="keyword">else</span> <span class="comment">%not function line</span>
2160161   name = []; <span class="comment">%return empty</span>
2170162 <span class="keyword">end</span>
2180163
2190164 <span class="keyword">end</span> <span class="comment">%FunctionName (subfunction)</span>
2200165
2210166
2220167 <span class="comment">%sub-------------------------------------------------------------------</span>
2230168 <a name="_sub2" href="#_subfunctions" class="code">function html = OpenLink(mFile,lineNum)</a>
2240169 <span class="comment">%OPENLINK generates hyperlink to open MFILE to LINENUM.</span>
2250170 <span class="comment">%   HTML = OPENLINK(MFILE,LINENUM) returns HTML code to generate hyperlink.</span>
2260171 <span class="comment">%   Displays line number. Link invokes command to open specified MFILE to</span>
2270172 <span class="comment">%   LINENUM.</span>
2280173 <span class="comment">%</span>
2290174 <span class="comment">%Example:</span>
2300175 <span class="comment">%   html = OpenLink(mFile,lineNum);</span>
2310176
2320177 error(nargchk(2,2,nargin))
2330178 error(nargoutchk(1,1,nargout))
2340179
2350180 <span class="comment">%make m-file location explicit</span>
2360181 mFile = which(mFile);
2370182
2380183 <span class="comment">%Java function</span>
2390184 javaFcn = <span class="string">'com.mathworks.mlservices.MLEditorServices.openDocumentToLine'</span>;
2400185
2410186 <span class="comment">%calling syntax</span>
2420187 cmd = sprintf(<span class="string">'matlab: %s(''%s'',%d,1,1)'</span>,javaFcn,mFile,lineNum);
2430188
2440189 <span class="comment">%hyperlink HTML script</span>
2450190 html = sprintf(<span class="string">'&lt;a href=&quot;%s&quot;&gt;%d&lt;/a&gt;'</span>,cmd,lineNum);
2460191
2470192 <span class="keyword">end</span> <span class="comment">%OpenLink (subfunction)</span></pre></div>
248<hr><address>Generated on Mon 21-May-2007 15:32:41 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
249</body>
250</html>
Note: See TracBrowser for help on using the repository browser.