Mercurial > hg > octave-nkf
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 |
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 |