GNU Octave  4.4.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
ov-java.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2007-2018 Michael Goffioul
4 
5 This file is part of Octave.
6 
7 Octave is free software: you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Octave; see the file COPYING. If not, see
19 <https://www.gnu.org/licenses/>.
20 
21 */
22 
23 #if ! defined (octave_ov_java_h)
24 #define octave_ov_java_h 1
25 
26 #include "octave-config.h"
27 
28 #include "ov.h"
29 #include "ovl.h"
30 
31 namespace octave
32 {
33  class type_info;
34 }
35 
36 typedef void *voidptr;
37 
38 class OCTINTERP_API octave_java : public octave_base_value
39 {
40 public:
41 
42  octave_java (void);
43 
44  octave_java (const voidptr& obj, void *cls = nullptr);
45 
46  octave_java (const octave_java& jobj)
47  : octave_base_value (jobj), java_object (nullptr), java_class (nullptr)
48  {
49  init (jobj.java_object, jobj.java_class);
50  }
51 
52  ~octave_java (void) { release (); }
53 
54  void * to_java (void) const { return java_object; }
55  void * to_class (void) const { return java_class; }
56 
57  std::string java_class_name (void) const { return java_classname; }
58 
59  octave_base_value * clone (void) const { return new octave_java (*this); }
60  octave_base_value * empty_clone (void) const { return new octave_java (); }
61 
62  bool is_instance_of (const std::string&) const;
63 
64  bool is_defined (void) const { return true; }
65 
66  bool is_constant (void) const { return true; }
67 
68  bool isstruct (void) const { return false; }
69 
70  bool isjava (void) const { return true; }
71 
72  string_vector map_keys (void) const;
73 
74  dim_vector dims (void) const;
75 
76  void print (std::ostream& os, bool pr_as_read_syntax = false);
77 
78  void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const;
79 
80  bool save_ascii (std::ostream& os);
81 
82  bool load_ascii (std::istream& is);
83 
84  bool save_binary (std::ostream& os, bool& save_as_floats);
85 
86  bool load_binary (std::istream& is, bool swap,
88 
89  bool save_hdf5 (octave_hdf5_id loc_id, const char *name,
90  bool save_as_floats);
91 
92  bool load_hdf5 (octave_hdf5_id loc_id, const char *name);
93 
95  subsref (const std::string& type,
96  const std::list<octave_value_list>& idx, int nargout);
97 
99  subsref (const std::string& type, const std::list<octave_value_list>& idx)
100  {
101  octave_value_list retval = subsref (type, idx, 1);
102  return (retval.length () > 0 ? retval(0) : octave_value ());
103  }
104 
106  const std::list<octave_value_list>& idx,
107  const octave_value& rhs);
108 
109  octave_value convert_to_str_internal (bool pad, bool force, char type) const;
110 
111  bool is_java_string (void) const;
112 
113  octave_value do_javaMethod (void *jni_env, const std::string& name,
114  const octave_value_list& args);
115 
117  do_javaMethod (const std::string& name, const octave_value_list& args);
118 
119  static octave_value
120  do_javaMethod (void *jni_env, const std::string& class_name,
121  const std::string& name, const octave_value_list& args);
122 
123  static octave_value
124  do_javaMethod (const std::string& class_name, const std::string& name,
125  const octave_value_list& args);
126 
127  static octave_value
128  do_javaObject (void *jni_env, const std::string& name,
129  const octave_value_list& args);
130 
131  static octave_value
132  do_javaObject (const std::string& name, const octave_value_list& args);
133 
134  octave_value do_java_get (void *jni_env, const std::string& name);
135 
136  octave_value do_java_get (const std::string& name);
137 
138  static octave_value
139  do_java_get (void *jni_env, const std::string& class_name,
140  const std::string& name);
141 
142  static octave_value
143  do_java_get (const std::string& class_name, const std::string& name);
144 
145  octave_value do_java_set (void *jni_env, const std::string& name,
146  const octave_value& val);
147 
148  octave_value do_java_set (const std::string& name, const octave_value& val);
149 
150  static octave_value
151  do_java_set (void *jni_env, const std::string& class_name,
152  const std::string& name, const octave_value& val);
153 
154  static octave_value
155  do_java_set (const std::string& class_name, const std::string& name,
156  const octave_value& val);
157 
158 private:
159 
160  void init (void *jobj, void *jcls);
161 
162  void release (void);
163 
164 private:
165 
166  void *java_object;
167 
168  void *java_class;
169 
171 
172 public:
173 
174  int type_id (void) const { return t_id; }
175  std::string type_name (void) const { return t_name; }
176  std::string class_name (void) const { return java_classname; }
177 
178  static int static_type_id (void) { return t_id; }
179  static std::string static_type_name (void) { return t_name; }
180  static std::string static_class_name (void) { return "<unknown>"; }
181  static void register_type (octave::type_info&);
182 
183 private:
184 
185  static int t_id;
186  static const std::string t_name;
187 };
188 
189 extern OCTINTERP_API bool Vjava_matrix_autoconversion;
190 
191 extern OCTINTERP_API bool Vjava_unsigned_autoconversion;
192 
193 extern OCTINTERP_API bool Vdebug_java;
194 
195 #endif
void * to_java(void) const
Definition: ov-java.h:54
static std::string static_class_name(void)
Definition: ov-java.h:180
virtual bool save_binary(std::ostream &os, bool &save_as_floats)
Definition: ov-base.cc:943
~octave_java(void)
Definition: ov-java.h:52
void * to_class(void) const
Definition: ov-java.h:55
identity matrix If supplied two scalar respectively For allows like xample val
Definition: data.cc:4986
bool is_defined(void) const
Definition: ov-java.h:64
static std::string static_type_name(void)
Definition: ov-java.h:179
OCTINTERP_API bool Vjava_unsigned_autoconversion
Definition: ov-java.cc:205
static int static_type_id(void)
Definition: ov-java.h:178
bool isjava(void) const
Definition: ov-java.h:70
virtual dim_vector dims(void) const
Definition: ov-base.h:314
std::string type_name(void) const
Definition: ov-java.h:175
bool isstruct(void) const
Definition: ov-java.h:68
virtual bool save_ascii(std::ostream &os)
Definition: ov-base.cc:931
virtual octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
Definition: ov-base.cc:199
std::string java_class_name(void) const
Definition: ov-java.h:57
virtual octave_value subsasgn(const std::string &type, const std::list< octave_value_list > &idx, const octave_value &rhs)
Definition: ov-base.cc:238
virtual void print(std::ostream &os, bool pr_as_read_syntax=false)
Definition: ov-base.cc:401
bool swap
Definition: load-save.cc:738
nd deftypefn *std::string name
Definition: sysdep.cc:647
octave_java(const octave_java &jobj)
Definition: ov-java.h:46
OCTAVE_EXPORT octave_value_list return the number of command line arguments passed to Octave If called with the optional argument the function xample nargout(@histc)
Definition: ov-usr-fcn.cc:997
std::string class_name(void) const
Definition: ov-java.h:176
void * java_object
Definition: ov-java.h:166
bool save_as_floats
Definition: load-save.cc:1617
virtual octave_value convert_to_str_internal(bool pad, bool force, char type) const
Definition: ov-base.cc:387
static int t_id
Definition: ov-base.h:876
static const std::string t_name
Definition: ov-base.h:876
octave_base_value * empty_clone(void) const
Definition: ov-java.h:60
octave_value retval
Definition: data.cc:6246
int64_t octave_hdf5_id
int type_id(void) const
Definition: ov-java.h:174
idx type
Definition: ov.cc:3114
static void register_type(void)
Definition: ov-base.cc:97
virtual bool save_hdf5(octave_hdf5_id loc_id, const char *name, bool save_as_floats)
Definition: ov-base.cc:956
virtual bool load_hdf5(octave_hdf5_id loc_id, const char *name)
Definition: ov-base.cc:962
friend class octave_value
Definition: ov-base.h:228
OCTINTERP_API bool Vdebug_java
Definition: ov-java.cc:206
static const std::string t_name
Definition: ov-java.h:186
octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
Definition: ov-java.h:99
void * voidptr
Definition: ov-java.h:36
virtual bool load_ascii(std::istream &is)
Definition: ov-base.cc:937
std::string java_classname
Definition: ov-java.h:170
OCTINTERP_API bool Vjava_matrix_autoconversion
Definition: ov-java.cc:204
virtual bool is_instance_of(const std::string &) const
Definition: ov-base.h:620
static int t_id
Definition: ov-java.h:185
void * java_class
Definition: ov-java.h:168
octave_base_value * clone(void) const
Definition: ov-java.h:59
virtual bool load_binary(std::istream &is, bool swap, octave::mach_info::float_format fmt)
Definition: ov-base.cc:949
octave_idx_type length(void) const
write the output to stdout if nargout is
Definition: load-save.cc:1612
void release(void)
Definition: ov-base.h:826
virtual void print_raw(std::ostream &os, bool pr_as_read_syntax=false) const
Definition: ov-base.cc:407
Vector representing the dimensions (size) of an Array.
Definition: dim-vector.h:87
bool is_constant(void) const
Definition: ov-java.h:66
virtual string_vector map_keys(void) const
Definition: ov-base.cc:836
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
Definition: utils.cc:888
octave::stream os
Definition: file-io.cc:627