annotate scripts/java/javaclasspath.m @ 19093:93805f9256a9

javaclasspath: refactor to avoid duplication and skip check of nargout. * scripts/java/javaclasspath.m: check nargout to first decide between return cells or 'pretty print' to reduce code duplication in separate blocks. In addition, do not check for correct number of nargout. Previous implementation would simply return nothing if nargout was 3.
author Carnë Draug <carandraug@octave.org>
date Tue, 08 Jul 2014 20:45:50 +0100
parents d63878346099
children 0e1f5a750d00
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17744
d63878346099 maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents: 17281
diff changeset
1 ## Copyright (C) 2007, 2013 Michael Goffioul
d63878346099 maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents: 17281
diff changeset
2 ## Copyright (C) 2010, 2013 Martin Hepperle
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
3 ##
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
4 ## This file is part of Octave.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5 ##
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
6 ## Octave is free software; you can redistribute it and/or modify it
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
7 ## under the terms of the GNU General Public License as published by
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
8 ## the Free Software Foundation; either version 3 of the License, or (at
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
9 ## your option) any later version.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10 ##
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
11 ## Octave is distributed in the hope that it will be useful, but
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
14 ## General Public License for more details.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15 ##
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 ## You should have received a copy of the GNU General Public License
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
17 ## along with Octave; see the file COPYING. If not, see
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15625
diff changeset
18 ## <http://www.gnu.org/licenses/>.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20 ## -*- texinfo -*-
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
21 ## @deftypefn {Function File} {} javaclasspath ()
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
22 ## @deftypefnx {Function File} {@var{dpath} =} javaclasspath ()
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
23 ## @deftypefnx {Function File} {[@var{dpath}, @var{spath}] =} javaclasspath ()
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
24 ## @deftypefnx {Function File} {@var{clspath} =} javaclasspath (@var{what})
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
25 ## Return the class path of the Java virtual machine in the form of a cell
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
26 ## array of strings.
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
27 ##
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
28 ## If called with no inputs:
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29 ##
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30 ## @itemize
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
31 ## @item If no output is requested, the dynamic and static classpaths are printed
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
32 ## to the standard output.
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
33 ##
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
34 ## @item If one output value @var{dpath} is requested, the result is
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
35 ## the dynamic classpath.
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
36 ##
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
37 ## @item If two output values@var{dpath} and @var{spath} are
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
38 ## requested, the first variable will contain the dynamic classpath and
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
39 ## the second will be contain the static classpath.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40 ## @end itemize
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41 ##
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
42 ## If called with a single input parameter @var{what}:
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
43 ##
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
44 ## @table @asis
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 16724
diff changeset
45 ## @item @qcode{"-dynamic"}
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
46 ## Return the dynamic classpath.
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
47 ##
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 16724
diff changeset
48 ## @item @qcode{"-static"}
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
49 ## Return the static classpath.
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
50 ##
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 16724
diff changeset
51 ## @item @qcode{"-all"}
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
52 ## Return both the static and dynamic classpath in a single cellstr.
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
53 ## @end table
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
54 ## @seealso{javaaddpath, javarmpath}
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
55 ## @end deftypefn
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
56
19093
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
57 function [path1, path2] = javaclasspath (which)
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
58
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
59 if (nargin > 1)
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
60 print_usage ();
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
61 endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
63 ## dynamic classpath
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15772
diff changeset
64 dynamic_path = javaMethod ("getClassPath", "org.octave.ClassHelper");
16724
b7667fcb9fbc Substitute ostrsplit() for strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
65 dynamic_path_list = ostrsplit (dynamic_path, pathsep ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
67 ## static classpath
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15772
diff changeset
68 static_path = javaMethod ("getProperty", "java.lang.System", "java.class.path");
16724
b7667fcb9fbc Substitute ostrsplit() for strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
69 static_path_list = ostrsplit (static_path, pathsep ());
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
70 if (numel (static_path_list) > 1)
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
71 ## remove first element (which is .../octave.jar)
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
72 static_path_list(1) = [];
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
73 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74 static_path_list = {};
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
75 endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
76
19093
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
77 if (nargout == 0)
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
78 if (! nargin)
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
79 which = "-all";
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
80 endif
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
81 switch (tolower (which))
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
82 case "-dynamic", disp_path_list ("DYNAMIC", dynamic_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
83 case "-static", disp_path_list ("STATIC", static_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
84 case "-all"
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
85 disp_path_list ("STATIC", static_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
86 disp ("");
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
87 disp_path_list ("DYNAMIC", dynamic_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
88 otherwise
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
89 error ("javaclasspath: invalid value for WHAT");
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
90 endswitch
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
91
19093
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
92 else
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
93 if (! nargin)
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
94 ## This is to allow retrieval of both paths in separate variables with
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
95 ## a single call to javaclasspath(). Matlab returns only the -dynamic
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
96 ## path in this case but this won't break compatibility.
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
97 path1 = cellstr (dynamic_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
98 path2 = cellstr (static_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
99 else
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
100 switch (tolower (which))
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
101 case "-all", path1 = cellstr ([static_path_list, dynamic_path_list]);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
102 case "-dynamic", path1 = cellstr (dynamic_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
103 case "-static", path1 = cellstr (static_path_list);
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
104 otherwise
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
105 error ("javaclasspath: invalid value for WHAT");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
106 endswitch
19093
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
107 endif
93805f9256a9 javaclasspath: refactor to avoid duplication and skip check of nargout.
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
108 endif
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
109
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
110 endfunction
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
111
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
112 ## Display cell array of paths
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
113
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
114 function disp_path_list (which, path_list)
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
115 printf (" %s JAVA PATH\n\n", which);
15750
05c781cca57e use numel instead of length in newly imported java functions
John W. Eaton <jwe@octave.org>
parents: 15748
diff changeset
116 if (numel (path_list) > 0)
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
117 printf (" %s\n", path_list{:});
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
118 else
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
119 printf (" - empty -\n");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
120 endif
15748
54e8c2527a9e style and doc fixes for newly imported Java package .m files
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
121 endfunction
15772
0f1a143e5002 Overhaul scripts/java directory to conform to Octave core.
Rik <rik@octave.org>
parents: 15750
diff changeset
122