comparison libinterp/octave-value/ov-ch-mat.h @ 15195:2fc554ffbc28

split libinterp from src * libinterp: New directory. Move all files from src directory here except Makefile.am, main.cc, main-cli.cc, mkoctfile.in.cc, mkoctfilr.in.sh, octave-config.in.cc, octave-config.in.sh. * libinterp/Makefile.am: New file, extracted from src/Makefile.am. * src/Makefile.am: Delete everything except targets and definitions needed to build and link main and utility programs. * Makefile.am (SUBDIRS): Include libinterp in the list. * autogen.sh: Run config-module.sh in libinterp/dldfcn directory, not src/dldfcn directory. * configure.ac (AC_CONFIG_SRCDIR): Use libinterp/octave.cc, not src/octave.cc. (DL_LDFLAGS, LIBOCTINTERP): Use libinterp, not src. (AC_CONFIG_FILES): Include libinterp/Makefile in the list. * find-docstring-files.sh: Look in libinterp, not src. * gui/src/Makefile.am (liboctgui_la_CPPFLAGS): Find header files in libinterp, not src.
author John W. Eaton <jwe@octave.org>
date Sat, 18 Aug 2012 16:23:39 -0400
parents src/octave-value/ov-ch-mat.h@46b19589b593
children d63878346099
comparison
equal deleted inserted replaced
15194:0f0b795044c3 15195:2fc554ffbc28
1 /*
2
3 Copyright (C) 1996-2012 John W. Eaton
4 Copyright (C) 2009-2010 VZLU Prague
5
6 This file is part of Octave.
7
8 Octave is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 3 of the License, or (at your
11 option) any later version.
12
13 Octave is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with Octave; see the file COPYING. If not, see
20 <http://www.gnu.org/licenses/>.
21
22 */
23
24 #if !defined (octave_char_matrix_h)
25 #define octave_char_matrix_h 1
26
27 #include <cstdlib>
28
29 #include <iosfwd>
30 #include <string>
31
32 #include "mx-base.h"
33 #include "oct-alloc.h"
34 #include "str-vec.h"
35
36 #include "error.h"
37 #include "ov.h"
38 #include "ov-base.h"
39 #include "ov-base-mat.h"
40 #include "ov-re-mat.h"
41 #include "ov-typeinfo.h"
42
43 class octave_value_list;
44
45 class tree_walker;
46
47 // Character matrix values.
48
49 class
50 octave_char_matrix : public octave_base_matrix<charNDArray>
51 {
52 protected:
53
54 octave_char_matrix (void)
55 : octave_base_matrix<charNDArray> () { }
56
57 octave_char_matrix (const charMatrix& chm)
58 : octave_base_matrix<charNDArray> (chm) { }
59
60 octave_char_matrix (const charNDArray& chm)
61 : octave_base_matrix<charNDArray> (chm) { }
62
63 octave_char_matrix (const Array<char>& chm)
64 : octave_base_matrix<charNDArray> (chm) { }
65
66 octave_char_matrix (char c)
67 : octave_base_matrix<charNDArray> (c) { }
68
69 octave_char_matrix (const char *s)
70 : octave_base_matrix<charNDArray> (s) { }
71
72 octave_char_matrix (const std::string& s)
73 : octave_base_matrix<charNDArray> (s) { }
74
75 octave_char_matrix (const string_vector& s)
76 : octave_base_matrix<charNDArray> (s) { }
77
78 octave_char_matrix (const octave_char_matrix& chm)
79 : octave_base_matrix<charNDArray> (chm) { }
80
81 public:
82
83 ~octave_char_matrix (void) { }
84
85 octave_base_value *clone (void) const { return new octave_char_matrix (*this); }
86 octave_base_value *empty_clone (void) const { return new octave_char_matrix (); }
87
88 idx_vector index_vector (void) const;
89
90 builtin_type_t builtin_type (void) const { return btyp_char; }
91
92 bool is_char_matrix (void) const { return true; }
93 bool is_real_matrix (void) const { return true; }
94
95 bool is_real_type (void) const { return true; }
96
97 double double_value (bool = false) const;
98
99 float float_value (bool = false) const;
100
101 double scalar_value (bool frc_str_conv = false) const
102 { return double_value (frc_str_conv); }
103
104 float float_scalar_value (bool frc_str_conv = false) const
105 { return float_value (frc_str_conv); }
106
107 Matrix matrix_value (bool = false) const
108 { return Matrix (matrix.matrix_value ()); }
109
110 FloatMatrix float_matrix_value (bool = false) const
111 { return FloatMatrix (matrix.matrix_value ()); }
112
113 NDArray array_value (bool = false) const
114 { return NDArray (matrix); }
115
116 FloatNDArray float_array_value (bool = false) const
117 { return FloatNDArray (matrix); }
118
119 Complex complex_value (bool = false) const;
120
121 FloatComplex float_complex_value (bool = false) const;
122
123 ComplexMatrix complex_matrix_value (bool = false) const
124 { return ComplexMatrix (matrix.matrix_value ()); }
125
126 FloatComplexMatrix float_complex_matrix_value (bool = false) const
127 { return FloatComplexMatrix (matrix.matrix_value ()); }
128
129 ComplexNDArray complex_array_value (bool = false) const
130 { return ComplexNDArray (matrix); }
131
132 FloatComplexNDArray float_complex_array_value (bool = false) const
133 { return FloatComplexNDArray (matrix); }
134
135 charMatrix char_matrix_value (bool = false) const
136 { return matrix.matrix_value (); }
137
138 charNDArray char_array_value (bool = false) const
139 { return matrix; }
140
141 octave_value convert_to_str_internal (bool, bool, char type) const
142 { return octave_value (matrix, type); }
143
144 void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const;
145
146 // Unsafe. This function exists to support the MEX interface.
147 // You should not use it anywhere else.
148 void *mex_get_data (void) const { return matrix.mex_get_data (); }
149
150 mxArray *as_mxArray (void) const;
151
152 octave_value map (unary_mapper_t umap) const;
153 };
154
155 #endif