annotate liboctave/idx-vector.h @ 4650:623f6262a8e9

[project @ 2003-11-23 23:17:46 by jwe]
author jwe
date Sun, 23 Nov 2003 23:17:47 +0000
parents f6a61399bc5c
children 14ab7b05a572
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2830
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
10 later version.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
1315
611d403c7f3d [project @ 1995-06-25 19:56:32 by jwe]
jwe
parents: 1297
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22
383
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 240
diff changeset
23 #if !defined (octave_idx_vector_h)
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 240
diff changeset
24 #define octave_idx_vector_h 1
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
25
4192
5719210fff4c [project @ 2002-11-20 16:56:47 by jwe]
jwe
parents: 4066
diff changeset
26 #if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)
1297
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1135
diff changeset
27 #pragma interface
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1135
diff changeset
28 #endif
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1135
diff changeset
29
3503
d14c483b3c12 [project @ 2000-02-01 04:06:07 by jwe]
jwe
parents: 3145
diff changeset
30 #include <iostream>
d14c483b3c12 [project @ 2000-02-01 04:06:07 by jwe]
jwe
parents: 3145
diff changeset
31
4504
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
32 #include "Array.h"
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
33
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
34 class ColumnVector;
4650
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
35 class boolNDArray;
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
36 class NDArray;
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
37 class Range;
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
38
453
393e95f46b51 [project @ 1994-06-06 00:05:20 by jwe]
jwe
parents: 434
diff changeset
39 class
393e95f46b51 [project @ 1994-06-06 00:05:20 by jwe]
jwe
parents: 434
diff changeset
40 idx_vector
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
41 {
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
42 private:
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
43
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
44 class
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
45 idx_vector_rep
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
46 {
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
47 public:
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
48
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
49 idx_vector_rep (void)
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
50 {
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
51 colon = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
52 len = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
53 num_zeros = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
54 num_ones = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
55 one_zero = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
56 orig_nr = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
57 orig_nc = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
58 initialized = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
59 frozen = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
60 colon_equiv_checked = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
61 colon_equiv = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
62 data = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
63 }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
64
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
65 idx_vector_rep (const ColumnVector& v);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
66
4650
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
67 idx_vector_rep (const NDArray& nda);
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
68
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
69 idx_vector_rep (const Range& r);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
70
2386
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
71 idx_vector_rep (double d);
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
72
3928
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
73 idx_vector_rep (int i);
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
74
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
75 idx_vector_rep (char c);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
76
2828
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
77 idx_vector_rep (bool b);
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
78
4650
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
79 idx_vector_rep (const boolNDArray& bnda);
2828
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
80
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
81 idx_vector_rep (const idx_vector_rep& a);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
82
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
83 ~idx_vector_rep (void) { delete [] data; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
84
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
85 idx_vector_rep& operator = (const idx_vector_rep& a);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
86
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
87 int ok (void) { return initialized; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
88
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
89 int capacity (void) const { return len; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
90 int length (int colon_len) const { return colon ? colon_len : len; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
91
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
92 int elem (int n) const { return colon ? n : data[n]; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
93
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
94 int checkelem (int n) const;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
95 int operator () (int n) const { return checkelem (n); }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
96
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
97 int max (void) const { return max_val; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
98 int min (void) const { return min_val; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
99
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
100 int one_zero_only (void) const { return one_zero; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
101 int zeros_count (void) const { return num_zeros; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
102 int ones_count (void) const { return num_ones; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
103
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
104 int is_colon (void) const { return colon; }
2356
de9eb7bd4405 [project @ 1996-08-21 02:40:06 by jwe]
jwe
parents: 1993
diff changeset
105 int is_colon_equiv (int n, int sort_uniq);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
106
3079
eb827eb9b8ff [project @ 1997-08-03 20:44:07 by jwe]
jwe
parents: 2847
diff changeset
107 void sort (bool uniq);
eb827eb9b8ff [project @ 1997-08-03 20:44:07 by jwe]
jwe
parents: 2847
diff changeset
108
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
109 int orig_rows (void) const { return orig_nr; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
110 int orig_columns (void) const { return orig_nc; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
111
4504
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
112 Array<int> orig_dimensions (void) const { return orig_dims; }
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
113
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
114 // other stuff
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
115
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
116 void shorten (int n); // Unsafe. Avoid at all cost.
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
117
4461
af308ca1a354 [project @ 2003-07-11 22:21:17 by jwe]
jwe
parents: 4192
diff changeset
118 int freeze (int z_len, const char *tag, bool resize_ok, bool warn_resize);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
119
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
120 // i/o
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
121
3504
5eef8a2294bd [project @ 2000-02-01 10:06:51 by jwe]
jwe
parents: 3503
diff changeset
122 std::ostream& print (std::ostream& os) const;
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
123
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
124 int *data;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
125 int len;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
126 int num_zeros;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
127 int num_ones;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
128 int max_val;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
129 int min_val;
4504
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
130
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
131 // XXX FIXME XXX -- with the introduction of orig_dims, these two
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
132 // variables are not neccessary. orig_dims(0) and orig_dims(1)
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
133 // should replace them in the code.
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
134
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
135 int orig_nr;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
136 int orig_nc;
4504
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
137
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
138 Array<int> orig_dims;
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
139
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
140 int count;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
141 int frozen_at_z_len;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
142 int frozen_len;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
143 unsigned int colon : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
144 unsigned int one_zero : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
145 unsigned int initialized : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
146 unsigned int frozen : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
147 unsigned int colon_equiv_checked : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
148 unsigned int colon_equiv : 1;
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
149
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
150 void init_state (void);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
151
2828
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
152 void maybe_convert_one_zero_to_idx (int z_len);
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
153 };
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
154
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
155 public:
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
156
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
157 idx_vector (void)
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
158 {
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
159 rep = new idx_vector_rep ();
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
160 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
161 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
162
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
163 idx_vector (const ColumnVector& v)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
164 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
165 rep = new idx_vector_rep (v);
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
166 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
167 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
168
4650
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
169 idx_vector (const NDArray& nda)
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
170 {
4650
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
171 rep = new idx_vector_rep (nda);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
172 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
173 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
174
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
175 idx_vector (const Range& r)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
176 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
177 rep = new idx_vector_rep (r);
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
178 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
179 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
180
2386
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
181 idx_vector (double d)
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
182 {
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
183 rep = new idx_vector_rep (d);
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
184 rep->count = 1;
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
185 }
4fc9fd1424a9 [project @ 1996-10-12 18:31:34 by jwe]
jwe
parents: 2356
diff changeset
186
3928
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
187 idx_vector (int i)
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
188 {
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
189 rep = new idx_vector_rep (i);
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
190 rep->count = 1;
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
191 }
e8627dc4bdf2 [project @ 2002-05-03 19:56:01 by jwe]
jwe
parents: 3504
diff changeset
192
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
193 idx_vector (char c)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
194 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
195 rep = new idx_vector_rep (c);
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
196 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
197 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
198
2828
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
199 idx_vector (bool b)
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
200 {
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
201 rep = new idx_vector_rep (b);
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
202 rep->count = 1;
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
203 }
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
204
4650
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
205 idx_vector (const boolNDArray& bnda)
2828
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
206 {
4650
623f6262a8e9 [project @ 2003-11-23 23:17:46 by jwe]
jwe
parents: 4504
diff changeset
207 rep = new idx_vector_rep (bnda);
2828
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
208 rep->count = 1;
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
209 }
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
210
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
211 idx_vector (const idx_vector& a)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
212 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
213 rep = a.rep;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
214 rep->count++;
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
215 }
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
216
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
217 ~idx_vector (void)
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
218 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
219 if (--rep->count <= 0)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
220 delete rep;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
221 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
222
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
223 idx_vector& operator = (const idx_vector& a)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
224 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
225 if (this != &a)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
226 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
227 if (--rep->count <= 0)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
228 delete rep;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
229
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
230 rep = a.rep;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
231 rep->count++;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
232 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
233 return *this;
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
234 }
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
235
3145
0d640dc625c7 [project @ 1998-02-05 08:44:59 by jwe]
jwe
parents: 3079
diff changeset
236 operator bool () const { return rep->ok (); }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
237
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
238 int capacity (void) const { return rep->capacity (); }
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
239 int length (int cl) const { return rep->length (cl); }
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 164
diff changeset
240
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
241 int elem (int n) const { return rep->elem (n); }
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
242 int checkelem (int n) const { return rep->checkelem (n); }
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
243 int operator () (int n) const { return rep->operator () (n); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
244
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
245 int max (void) const { return rep->max (); }
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
246 int min (void) const { return rep->min (); }
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
247
2802
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
248 int one_zero_only (void) const { return rep->one_zero_only (); }
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
249 int zeros_count (void) const { return rep->zeros_count (); }
bca5fbab2e52 [project @ 1997-03-09 11:02:27 by jwe]
jwe
parents: 2800
diff changeset
250 int ones_count (void) const { return rep->ones_count (); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
251
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
252 int is_colon (void) const { return rep->is_colon (); }
2356
de9eb7bd4405 [project @ 1996-08-21 02:40:06 by jwe]
jwe
parents: 1993
diff changeset
253 int is_colon_equiv (int n, int sort_uniq = 0) const
de9eb7bd4405 [project @ 1996-08-21 02:40:06 by jwe]
jwe
parents: 1993
diff changeset
254 { return rep->is_colon_equiv (n, sort_uniq); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
255
3079
eb827eb9b8ff [project @ 1997-08-03 20:44:07 by jwe]
jwe
parents: 2847
diff changeset
256 void sort (bool uniq = false) { rep->sort (uniq); }
eb827eb9b8ff [project @ 1997-08-03 20:44:07 by jwe]
jwe
parents: 2847
diff changeset
257
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
258 int orig_rows (void) const { return rep->orig_rows (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
259 int orig_columns (void) const { return rep->orig_columns (); }
208
380cb9ccc889 [project @ 1993-11-12 10:35:05 by jwe]
jwe
parents: 191
diff changeset
260
4504
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
261 Array<int> orig_dimensions (void) const { return rep->orig_dimensions (); }
f6a61399bc5c [project @ 2003-09-09 17:48:00 by jwe]
jwe
parents: 4461
diff changeset
262
2663
00b2eff19bf5 [project @ 1997-02-08 21:58:49 by jwe]
jwe
parents: 2386
diff changeset
263 int orig_empty (void) const
00b2eff19bf5 [project @ 1997-02-08 21:58:49 by jwe]
jwe
parents: 2386
diff changeset
264 {
00b2eff19bf5 [project @ 1997-02-08 21:58:49 by jwe]
jwe
parents: 2386
diff changeset
265 return (! is_colon ()
00b2eff19bf5 [project @ 1997-02-08 21:58:49 by jwe]
jwe
parents: 2386
diff changeset
266 && (orig_rows () == 0 || orig_columns () == 0));
00b2eff19bf5 [project @ 1997-02-08 21:58:49 by jwe]
jwe
parents: 2386
diff changeset
267 }
00b2eff19bf5 [project @ 1997-02-08 21:58:49 by jwe]
jwe
parents: 2386
diff changeset
268
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
269 // Unsafe. Avoid at all cost.
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
270 void shorten (int n) { rep->shorten (n); }
434
ec2a6ad30162 [project @ 1994-05-25 21:00:20 by jwe]
jwe
parents: 416
diff changeset
271
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
272 // i/o
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
273
4461
af308ca1a354 [project @ 2003-07-11 22:21:17 by jwe]
jwe
parents: 4192
diff changeset
274 int freeze (int z_len, const char *tag, bool resize_ok = false,
af308ca1a354 [project @ 2003-07-11 22:21:17 by jwe]
jwe
parents: 4192
diff changeset
275 bool warn_resize = false)
af308ca1a354 [project @ 2003-07-11 22:21:17 by jwe]
jwe
parents: 4192
diff changeset
276 { return rep->freeze (z_len, tag, resize_ok, warn_resize); }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
277
3504
5eef8a2294bd [project @ 2000-02-01 10:06:51 by jwe]
jwe
parents: 3503
diff changeset
278 std::ostream& print (std::ostream& os) const { return rep->print (os); }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
279
3504
5eef8a2294bd [project @ 2000-02-01 10:06:51 by jwe]
jwe
parents: 3503
diff changeset
280 friend std::ostream& operator << (std::ostream& os, const idx_vector& a)
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
281 { return a.print (os); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
282
2828
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
283 void maybe_convert_one_zero_to_idx (int z_len)
92826d6e8bd9 [project @ 1997-03-25 23:41:41 by jwe]
jwe
parents: 2802
diff changeset
284 { rep->maybe_convert_one_zero_to_idx (z_len); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
285
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
286 private:
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
287
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
288 idx_vector_rep *rep;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
289
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
290 void init_state (void) { rep->init_state (); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
291 };
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
292
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
293 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
294
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
295 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
296 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
297 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
298 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
299 */