annotate liboctave/idx-vector.h @ 1882:1281a23a34dd

[project @ 1996-02-05 18:11:52 by jwe]
author jwe
date Mon, 05 Feb 1996 18:11:52 +0000
parents 1b43d3c06c04
children 1b57120c997b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
520
40d30877f838 [project @ 1994-07-19 14:42:19 by jwe]
jwe
parents: 453
diff changeset
1 // idx-vector.h -*- C++ -*-
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
3
1882
1281a23a34dd [project @ 1996-02-05 18:11:52 by jwe]
jwe
parents: 1879
diff changeset
4 Copyright (C) 1996 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 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
9 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
10 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
11 later version.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 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
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 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
16 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
18 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
19 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
20 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
21
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
23
383
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 240
diff changeset
24 #if !defined (octave_idx_vector_h)
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 240
diff changeset
25 #define octave_idx_vector_h 1
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
26
1297
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1135
diff changeset
27 #if defined (__GNUG__)
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1135
diff changeset
28 #pragma interface
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1135
diff changeset
29 #endif
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1135
diff changeset
30
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
31 class ostream;
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
32 class ColumnVector;
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
33 class Matrix;
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
34 class Range;
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
35
453
393e95f46b51 [project @ 1994-06-06 00:05:20 by jwe]
jwe
parents: 434
diff changeset
36 class
393e95f46b51 [project @ 1994-06-06 00:05:20 by jwe]
jwe
parents: 434
diff changeset
37 idx_vector
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
38 {
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
39 private:
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
40
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
41 class
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
42 idx_vector_rep
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
43 {
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
44 public:
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
45
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
46 idx_vector_rep::idx_vector_rep (void)
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
47 {
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
48 colon = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
49 len = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
50 num_zeros = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
51 num_ones = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
52 one_zero = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
53 orig_nr = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
54 orig_nc = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
55 initialized = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
56 frozen = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
57 colon_equiv_checked = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
58 colon_equiv = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
59 data = 0;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
60 }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
61
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
62 idx_vector_rep (const ColumnVector& v);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
63
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
64 idx_vector_rep (const Matrix& m);
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
65
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
66 idx_vector_rep (const Range& r);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
67
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
68 idx_vector_rep (char c);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
69
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
70 idx_vector_rep (const idx_vector_rep& a);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
71
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
72 idx_vector_rep::~idx_vector_rep (void) { delete [] data; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
73
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
74 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
75
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
76 int ok (void) { return initialized; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
77
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
78 int capacity (void) const { return len; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
79 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
80
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
81 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
82
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
83 int checkelem (int n) const;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
84 int operator () (int n) const { return checkelem (n); }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
85
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
86 int max (void) const { return max_val; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
87 int min (void) const { return min_val; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
88
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
89 int one_zero_only (void) const { return one_zero; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
90 int zeros_count (void) const { return num_zeros; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
91 int ones_count (void) const { return num_ones; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
92
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
93 int is_colon (void) const { return colon; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
94 int is_colon_equiv (int n, int sort);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
95
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
96 int orig_rows (void) const { return orig_nr; }
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
97 int orig_columns (void) const { return orig_nc; }
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
98
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
99 // other stuff
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
100
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
101 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
102
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
103 int freeze (int z_len, const char *tag, int prefer_zero_one,
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
104 int resize_ok);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
105
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
106 // i/o
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
107
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
108 ostream& print (ostream& os) const;
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
109
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
110 int *data;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
111 int len;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
112 int num_zeros;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
113 int num_ones;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
114 int max_val;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
115 int min_val;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
116 int orig_nr;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
117 int orig_nc;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
118 int count;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
119 int frozen_at_z_len;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
120 int frozen_len;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
121 unsigned int colon : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
122 unsigned int one_zero : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
123 unsigned int initialized : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
124 unsigned int frozen : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
125 unsigned int colon_equiv_checked : 1;
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
126 unsigned int colon_equiv : 1;
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
127
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
128 void init_state (void);
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
129
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
130 void maybe_convert_one_zero_to_idx (int z_len, int prefer_zero_one);
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1560
diff changeset
131 };
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
132
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
133 public:
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
134
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
135 idx_vector::idx_vector (void)
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
136 {
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
137 rep = new idx_vector_rep ();
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
138 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
139 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
140
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
141 idx_vector (const ColumnVector& v)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
142 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
143 rep = new idx_vector_rep (v);
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
144 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
145 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
146
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
147 idx_vector (const Matrix& m)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
148 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
149 rep = new idx_vector_rep (m);
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
150 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
151 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
152
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
153 idx_vector (const Range& r)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
154 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
155 rep = new idx_vector_rep (r);
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
156 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
157 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
158
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
159 idx_vector (char c)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
160 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
161 rep = new idx_vector_rep (c);
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
162 rep->count = 1;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
163 }
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 idx_vector (const idx_vector& a)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
166 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
167 rep = a.rep;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
168 rep->count++;
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
169 }
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
170
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
171 idx_vector::~idx_vector (void)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
172 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
173 if (--rep->count <= 0)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
174 delete rep;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
175 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
176
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
177 idx_vector& operator = (const idx_vector& a)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
178 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
179 if (this != &a)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
180 {
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
181 if (--rep->count <= 0)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
182 delete rep;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
183
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
184 rep = a.rep;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
185 rep->count++;
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
186 }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
187 return *this;
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
188 }
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
189
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
190 idx_vector::operator void * () const { return (void *) rep->ok (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
191
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
192 int idx_vector::capacity (void) const { return rep->capacity (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
193 int idx_vector::length (int cl) const { return rep->length (cl); }
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 164
diff changeset
194
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
195 int idx_vector::elem (int n) const { return rep->elem (n); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
196 int idx_vector::checkelem (int n) const { return rep->checkelem (n); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
197 int idx_vector::operator () (int n) const { return rep->operator () (n); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
198
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
199 int idx_vector::max (void) const { return rep->max (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
200 int idx_vector::min (void) const { return rep->min (); }
1551
8f63ee44726c [project @ 1995-10-08 23:19:55 by jwe]
jwe
parents: 1315
diff changeset
201
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
202 int idx_vector::one_zero_only (void) const { return rep->one_zero_only (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
203 int idx_vector::zeros_count (void) const { return rep->zeros_count (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
204 int idx_vector::ones_count (void) const { return rep->ones_count (); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
205
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
206 int is_colon (void) const { return rep->is_colon (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
207 int is_colon_equiv (int n, int sort = 0) const
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
208 { return rep->is_colon_equiv (n, sort); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
209
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
210 int orig_rows (void) const { return rep->orig_rows (); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
211 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
212
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
213 // Unsafe. Avoid at all cost.
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
214 void shorten (int n) { rep->shorten (n); }
434
ec2a6ad30162 [project @ 1994-05-25 21:00:20 by jwe]
jwe
parents: 416
diff changeset
215
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
216 // i/o
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
217
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
218 int freeze (int z_len, const char *tag, int prefer_zero_one = 0,
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
219 int resize_ok = 0)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
220 { return rep->freeze (z_len, tag, prefer_zero_one, resize_ok); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
221
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
222 ostream& print (ostream& os) const { return rep->print (os); }
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
223
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
224 friend ostream& operator << (ostream& os, const idx_vector& a)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
225 { return a.print (os); }
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 void maybe_convert_one_zero_to_idx (int z_len, int prefer_zero_one = 0)
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
228 { rep->maybe_convert_one_zero_to_idx (z_len, prefer_zero_one); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
229
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
230 private:
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
231
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
232 idx_vector_rep *rep;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
233
1560
27a03373de41 [project @ 1995-10-12 07:22:26 by jwe]
jwe
parents: 1553
diff changeset
234 void init_state (void) { rep->init_state (); }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
235 };
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
236
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
237 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
238
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
239 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
240 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
241 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
242 ;;; page-delimiter: "^/\\*" ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
243 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
244 */