1<html><head><base target=k-main></head><body bgcolor=white>
2
3<font face=Times size=3>
4
5Views act like pointers to the actual collections, setting a view to a new
6value does not alter the collection to which this view pointed previously.
7<P>
8
9The protocol used for this class mimics the way many other collection
10classes are defined. For example, when used with MFC, you will see member
11definitions such as <A HREF="c4_View.html" >c4_View</A>::GetSize, <A HREF="c4_View.html" >c4_View</A>::GetAt, <A HREF="c4_View.html" >c4_View</A>::InsertAt.
12<P>
13
14The elements of views can be referred to by their 0-based index, which
15produces a row-reference of type <A HREF="c4_RowRef.html" >c4_RowRef</A>.  These row references can
16be copied, used to get or set properties, or dereferenced (in which case
17an object of class <A HREF="c4_Row.html" >c4_Row</A> is returned).  Taking the address of a row
18reference produces a <A HREF="c4_Cursor.html" >c4_Cursor</A>, which acts very much like a pointer.
19<P>
20
21The following code creates a view with 1 row and 2 properties:
22<P>
23
24
25<PRE>    <A HREF="c4_StringProp.html" >c4_StringProp</A> pName ("Name");
26    <A HREF="c4_IntProp.html" >c4_IntProp</A> pAge ("Age");</PRE>
27<P>
28
29
30<PRE>    <A HREF="c4_Row.html" >c4_Row</A> data;
31    pName (data) = "John Williams";
32    pAge (data) = 43;</PRE>
33<P>
34
35
36<PRE>    <A HREF="c4_View.html" >c4_View</A> myView;
37    myView.Add(row);
38</PRE>
39<P>
40
41
42
43<hr size=1>
44
45<dl>
46  
47  <if !private>
48	<a name="c4_View_Add_const__"><dt>
49	  <nobr>
50	  int 
51	  <b>Add</b> (const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; row_);
52	  </nobr>
53	<dd>
54	  
55	  
56	  <font face=Helvetica size=-1>Add a new entry, same as "SetAtGrow(GetSize(), ...)".</font>
57	<p>
58  
59  
60  <if !private>
61	<a name="c4_View_AddProperty_const__"><dt>
62	  <nobr>
63	  int 
64	  <b>AddProperty</b> (const <A HREF="c4_Property.html" >c4_Property</A>&#38; property_);
65	  </nobr>
66	<dd>
67	  
68	  
69	  <font face=Helvetica size=-1>Adds a property column to a view if not already present</font>
70	<p>
71  
72  
73  <if !private>
74	<a name="c4_View_Clone___const"><dt>
75	  <nobr>
76	  <A HREF="c4_View.html" >c4_View</A> 
77	  <b>Clone</b> () <i>const</i>;
78	  </nobr>
79	<dd>
80	  
81	  
82	  <font face=Helvetica size=-1>Construct a new view with the same structure but no data</font>
83	<p>
84  
85  
86  <if !private>
87	<a name="c4_View_Compare_const__const"><dt>
88	  <nobr>
89	  int 
90	  <b>Compare</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
91	  </nobr>
92	<dd>
93	  
94	  
95	  <font face=Helvetica size=-1></font>
96	<p>
97  
98  
99  <if !private>
100	<a name="c4_View_Concat_const__const"><dt>
101	  <nobr>
102	  <A HREF="c4_View.html" >c4_View</A> 
103	  <b>Concat</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
104	  </nobr>
105	<dd>
106	  
107	   Constructs a view which has all rows of this view, and all rows
108 of the second view appended. The structure of the second view
109 is assumed to be identical to this one. This operation is a bit
110 similar to appending all rows from the second view, but it does
111 not actually store the result anywhere, it just looks like it.
112<br>
113	  
114	<p>
115  
116  
117  <if !private>
118	<a name="c4_View_Counts_constconst__const"><dt>
119	  <nobr>
120	  <A HREF="c4_View.html" >c4_View</A> 
121	  <b>Counts</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; keys_, const <A HREF="c4_IntProp.html" >c4_IntProp</A>&#38; name_) <i>const</i>;
122	  </nobr>
123	<dd>
124	  <ul><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
125<TR><TD><B><FONT FACE=Helvetica SIZE=2>keys_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>the properties in this view determine the grouping</FONT></I></TD></TR>
126<TR><TD><B><FONT FACE=Helvetica SIZE=2>name_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>name of the new count property defined in result</FONT></I></TD></TR>
127</TABLE>
128</ul>
129	   This is similar to <A HREF="c4_View.html" >c4_View</A>::GroupBy, but it determines only the
130 number of rows in each group and does not create a nested view.
131<br>
132	  
133	<p>
134  
135  
136  <if !private>
137	<a name="c4_View_Describe___const"><dt>
138	  <nobr>
139	  const char* 
140	  <b>Describe</b> () <i>const</i>;
141	  </nobr>
142	<dd>
143	  
144	  
145	  <font face=Helvetica size=-1>Return a description of the structure</font>
146	<p>
147  
148  
149  <if !private>
150	<a name="c4_View_Description_const__"><dt>
151	  <nobr>
152	  static const char* 
153	  <b>Description</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_);
154	  </nobr>
155	<dd>
156	  
157	  
158	  <font face=Helvetica size=-1>Return a homogenized description of this view</font>
159	<p>
160  
161  
162  <if !private>
163	<a name="c4_View_Different_const__const"><dt>
164	  <nobr>
165	  <A HREF="c4_View.html" >c4_View</A> 
166	  <b>Different</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
167	  </nobr>
168	<dd>
169	  
170	   Calculates the "XOR" of two sets. This will only work if both
171 input views are sets, i.e. they have no duplicate rows in them.
172<br>
173	  
174	<p>
175  
176  
177  <if !private>
178	<a name="c4_View_Duplicate_bool__const"><dt>
179	  <nobr>
180	  <A HREF="c4_View.html" >c4_View</A> 
181	  <b>Duplicate</b> (bool deepCopy_ =false) <i>const</i>;
182	  </nobr>
183	<dd>
184	  
185	  
186	  <font face=Helvetica size=-1>Construct a new view with a copy of the data</font>
187	<p>
188  
189  
190  <if !private>
191	<a name="c4_View_ElementAt_int__"><dt>
192	  <nobr>
193	  <A HREF="c4_RowRef.html" >c4_RowRef</A> 
194	  <b>ElementAt</b> (int index_);
195	  </nobr>
196	<dd>
197	  
198	  
199	  <font face=Helvetica size=-1>Element access, for use as RHS or LHS</font>
200	<p>
201  
202  
203  <if !private>
204	<a name="c4_View_Find_constint__const"><dt>
205	  <nobr>
206	  int 
207	  <b>Find</b> (const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; key_, int start_ =0) <i>const</i>;
208	  </nobr>
209	<dd>
210	  
211	  
212	  <font face=Helvetica size=-1>Find index of the the next entry matching the specified key</font>
213	<p>
214  
215  
216  <if !private>
217	<a name="c4_View_FindPropIndexByName_const__const"><dt>
218	  <nobr>
219	  int 
220	  <b>FindPropIndexByName</b> (const char* name_) <i>const</i>;
221	  </nobr>
222	<dd>
223	  
224	  
225	  <font face=Helvetica size=-1>Find the index of a property, given its name</font>
226	<p>
227  
228  
229  <if !private>
230	<a name="c4_View_FindProperty_int__"><dt>
231	  <nobr>
232	  int 
233	  <b>FindProperty</b> (int id_);
234	  </nobr>
235	<dd>
236	  
237	  
238	  <font face=Helvetica size=-1>Find the index of a property, given its id</font>
239	<p>
240  
241  
242  <if !private>
243	<a name="c4_View_GetAt_int__const"><dt>
244	  <nobr>
245	  <A HREF="c4_RowRef.html" >c4_RowRef</A> 
246	  <b>GetAt</b> (int index_) <i>const</i>;
247	  </nobr>
248	<dd>
249	  
250	  
251	  <font face=Helvetica size=-1>Return a reference to specified entry</font>
252	<p>
253  
254  
255  <if !private>
256	<a name="c4_View_GetIndexOf_const__const"><dt>
257	  <nobr>
258	  int 
259	  <b>GetIndexOf</b> (const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; row_) <i>const</i>;
260	  </nobr>
261	<dd>
262	  
263	  
264	  <font face=Helvetica size=-1>Return the index of the specified row in this view (or -1)</font>
265	<p>
266  
267  
268  <if !private>
269	<a name="c4_View_GetItem_intintc4_Bytes___const"><dt>
270	  <nobr>
271	  bool 
272	  <b>GetItem</b> (int row_, int col_, <A HREF="c4_Bytes.html" >c4_Bytes</A>&#38; buf_) <i>const</i>;
273	  </nobr>
274	<dd>
275	  <ul><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
276<TR><TD><B><FONT FACE=Helvetica SIZE=2>row_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>row index, range [0 .. GetSize())</FONT></I></TD></TR>
277<TR><TD><B><FONT FACE=Helvetica SIZE=2>col_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>property index, range [0 .. NumProperties())</FONT></I></TD></TR>
278<TR><TD><B><FONT FACE=Helvetica SIZE=2>buf_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>buffer for the result</FONT></I></TD></TR>
279</TABLE>
280</ul>
281	   This can be used to access view data in a generalized way.
282 Useful for c4_CustomViewers which are based on other views.
283<br>
284	  
285	<p>
286  
287  
288  <if !private>
289	<a name="c4_View_GetSize___const"><dt>
290	  <nobr>
291	  int 
292	  <b>GetSize</b> () <i>const</i>;
293	  </nobr>
294	<dd>
295	  
296	  
297	  <font face=Helvetica size=-1>Return the number of entries</font>
298	<p>
299  
300  
301  <if !private>
302	<a name="c4_View_GetUpperBound___const"><dt>
303	  <nobr>
304	  int 
305	  <b>GetUpperBound</b> () <i>const</i>;
306	  </nobr>
307	<dd>
308	  
309	  
310	  <font face=Helvetica size=-1>Return highest index (size - 1)</font>
311	<p>
312  
313  
314  <if !private>
315	<a name="c4_View_GroupBy_constconst__const"><dt>
316	  <nobr>
317	  <A HREF="c4_View.html" >c4_View</A> 
318	  <b>GroupBy</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; keys_, const <A HREF="c4_ViewProp.html" >c4_ViewProp</A>&#38; name_) <i>const</i>;
319	  </nobr>
320	<dd>
321	  <ul><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
322<TR><TD><B><FONT FACE=Helvetica SIZE=2>keys_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>the properties in this view determine the grouping</FONT></I></TD></TR>
323<TR><TD><B><FONT FACE=Helvetica SIZE=2>name_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>name of the new subview defined in result</FONT></I></TD></TR>
324</TABLE>
325</ul>
326	   This operation is similar to the SQL 'GROUP BY', but it takes
327 advantage of the fact that Metakit supports nested views. The
328 view returned from this member has one row per distinct group,
329 with an extra view property holding the remaining properties.
330 If there are N rows in the original view matching key X, then
331 the result is a row for key X, with a subview of N rows. The
332 properties of the subview are all the properties not in the key.
333<br>
334	  
335	<p>
336  
337  
338  <if !private>
339	<a name="c4_View_InsertAt_intconst__"><dt>
340	  <nobr>
341	  void 
342	  <b>InsertAt</b> (int index_, const <A HREF="c4_View.html" >c4_View</A>&#38; view_);
343	  </nobr>
344	<dd>
345	  
346	  
347	  <font face=Helvetica size=-1>Insert a copy of the contents of another view</font>
348	<p>
349  
350  
351  <if !private>
352	<a name="c4_View_InsertAt_intconstint__"><dt>
353	  <nobr>
354	  void 
355	  <b>InsertAt</b> (int index_, const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; row_, int count_ =1);
356	  </nobr>
357	<dd>
358	  
359	  
360	  <font face=Helvetica size=-1>Insert one or more copies of an entry</font>
361	<p>
362  
363  
364  <if !private>
365	<a name="c4_View_Intersect_const__const"><dt>
366	  <nobr>
367	  <A HREF="c4_View.html" >c4_View</A> 
368	  <b>Intersect</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
369	  </nobr>
370	<dd>
371	  
372	   Calculates the set intersection. This will only work if both
373 input views are sets, i.e. they have no duplicate rows in them.
374<br>
375	  
376	<p>
377  
378  
379  <if !private>
380	<a name="c4_View_Join_constconstbool__const"><dt>
381	  <nobr>
382	  <A HREF="c4_View.html" >c4_View</A> 
383	  <b>Join</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; keys_, const <A HREF="c4_View.html" >c4_View</A>&#38; view_, bool outer_ =false) <i>const</i>;
384	  </nobr>
385	<dd>
386	  <ul><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
387<TR><TD><B><FONT FACE=Helvetica SIZE=2>keys_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>the properties in this view determine the join</FONT></I></TD></TR>
388<TR><TD><B><FONT FACE=Helvetica SIZE=2>view_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>second view participating in the join</FONT></I></TD></TR>
389<TR><TD><B><FONT FACE=Helvetica SIZE=2>outer_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>true: keep rows with no match in second view</FONT></I></TD></TR>
390</TABLE>
391</ul>
392	  
393	  
394	<p>
395  
396  
397  <if !private>
398	<a name="c4_View_JoinProp_constbool__const"><dt>
399	  <nobr>
400	  <A HREF="c4_View.html" >c4_View</A> 
401	  <b>JoinProp</b> (const <A HREF="c4_ViewProp.html" >c4_ViewProp</A>&#38; sub_, bool outer_ =false) <i>const</i>;
402	  </nobr>
403	<dd>
404	  <ul><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
405<TR><TD><B><FONT FACE=Helvetica SIZE=2>sub_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>name of the subview to expand</FONT></I></TD></TR>
406<TR><TD><B><FONT FACE=Helvetica SIZE=2>outer_</FONT></B></TD><TD width=20></TD><TD><I><FONT FACE=Helvetica SIZE=2>true: keep rows with empty subviews</FONT></I></TD></TR>
407</TABLE>
408</ul>
409	   This operation is the inverse of <A HREF="c4_View.html" >c4_View</A>::GroupBy, expanding
410 all rows in specified subview and returning a view which looks
411 as if the rows in each subview were "expanded in place".
412<br>
413	  
414	<p>
415  
416  
417  <if !private>
418	<a name="c4_View_Minus_const__const"><dt>
419	  <nobr>
420	  <A HREF="c4_View.html" >c4_View</A> 
421	  <b>Minus</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
422	  </nobr>
423	<dd>
424	  
425	   Calculates set-difference of this view minus arg view. Result
426 is a subset, unlike <A HREF="c4_View.html" >c4_View</A>::Different. Will only work if both
427 input views are sets, i.e. they have no duplicate rows in them.
428<br>
429	  
430	<p>
431  
432  
433  <if !private>
434	<a name="c4_View_NthProperty_int__const"><dt>
435	  <nobr>
436	  const <A HREF="c4_Property.html" >c4_Property</A>&#38; 
437	  <b>NthProperty</b> (int column_) <i>const</i>;
438	  </nobr>
439	<dd>
440	  
441	  
442	  <font face=Helvetica size=-1>Return the id of the N-th property</font>
443	<p>
444  
445  
446  <if !private>
447	<a name="c4_View_NumProperties___const"><dt>
448	  <nobr>
449	  int 
450	  <b>NumProperties</b> () <i>const</i>;
451	  </nobr>
452	<dd>
453	  
454	  
455	  <font face=Helvetica size=-1>Return the number of properties</font>
456	<p>
457  
458  
459  <if !private>
460	<a name="c4_View_Pair_const__const"><dt>
461	  <nobr>
462	  <A HREF="c4_View.html" >c4_View</A> 
463	  <b>Pair</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
464	  </nobr>
465	<dd>
466	  
467	   This is like a row-by-row concatenation. Both views must have
468 the same number of rows, the result has all properties from
469 this view plus any other properties from the other view.
470<br>
471	  
472	<p>
473  
474  
475  <if !private>
476	<a name="c4_View_Product_const__const"><dt>
477	  <nobr>
478	  <A HREF="c4_View.html" >c4_View</A> 
479	  <b>Product</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
480	  </nobr>
481	<dd>
482	  
483	   The cartesian product is defined as every combination of rows
484 in both views. The number of entries is the product of the
485 number of entries in the two views, properties which are present
486 in both views will use the values defined in this view.
487<br>
488	  
489	<p>
490  
491  
492  <if !private>
493	<a name="c4_View_Project_const__const"><dt>
494	  <nobr>
495	  <A HREF="c4_View.html" >c4_View</A> 
496	  <b>Project</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; order_) <i>const</i>;
497	  </nobr>
498	<dd>
499	  
500	  
501	  <font face=Helvetica size=-1>Create view with the specified property arrangement</font>
502	<p>
503  
504  
505  <if !private>
506	<a name="c4_View_ProjectWithout_const__const"><dt>
507	  <nobr>
508	  <A HREF="c4_View.html" >c4_View</A> 
509	  <b>ProjectWithout</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; order_) <i>const</i>;
510	  </nobr>
511	<dd>
512	  
513	  
514	  <font face=Helvetica size=-1>Create derived view with some properties omitted</font>
515	<p>
516  
517  
518  <if !private>
519	<a name="c4_View_RelocateRows_intintc4_View_int__"><dt>
520	  <nobr>
521	  bool 
522	  <b>RelocateRows</b> (int from_, int count_, <A HREF="c4_View.html" >c4_View</A>&#38; dest_, int pos_);
523	  </nobr>
524	<dd>
525	  
526	  
527	  <font face=Helvetica size=-1>Move attached rows to somewhere else in same storage</font>
528	<p>
529  
530  
531  <if !private>
532	<a name="c4_View_RemapWith_const__const"><dt>
533	  <nobr>
534	  <A HREF="c4_View.html" >c4_View</A> 
535	  <b>RemapWith</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; order_) <i>const</i>;
536	  </nobr>
537	<dd>
538	  
539	   Remapping constructs a view with the rows indicated by another
540 view. The first property in the order_ view must be an int
541 property with index values referring to this one. The size of
542 the resulting view is determined by the order_ view and can
543 differ, for example to act as a subset selection (if smaller).
544<br>
545	  
546	<p>
547  
548  
549  <if !private>
550	<a name="c4_View_RemoveAll___"><dt>
551	  <nobr>
552	  void 
553	  <b>RemoveAll</b> ();
554	  </nobr>
555	<dd>
556	  
557	  
558	  <font face=Helvetica size=-1>Remove all entries (sets size to zero)</font>
559	<p>
560  
561  
562  <if !private>
563	<a name="c4_View_RemoveAt_intint__"><dt>
564	  <nobr>
565	  void 
566	  <b>RemoveAt</b> (int index_, int count_ =1);
567	  </nobr>
568	<dd>
569	  
570	  
571	  <font face=Helvetica size=-1>Remove entries starting at the given index</font>
572	<p>
573  
574  
575  <if !private>
576	<a name="c4_View_Rename_constconst__const"><dt>
577	  <nobr>
578	  <A HREF="c4_View.html" >c4_View</A> 
579	  <b>Rename</b> (const <A HREF="c4_Property.html" >c4_Property</A>&#38; old_, const <A HREF="c4_Property.html" >c4_Property</A>&#38; new_) <i>const</i>;
580	  </nobr>
581	<dd>
582	  
583	  
584	  <font face=Helvetica size=-1>Create view with one property renamed (must be of same type)</font>
585	<p>
586  
587  
588  <if !private>
589	<a name="c4_View_Search_const__const"><dt>
590	  <nobr>
591	  int 
592	  <b>Search</b> (const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; key_) <i>const</i>;
593	  </nobr>
594	<dd>
595	  
596	  
597	  <font face=Helvetica size=-1>Search for a key, using the native sort order of the view</font>
598	<p>
599  
600  
601  <if !private>
602	<a name="c4_View_Select_const__const"><dt>
603	  <nobr>
604	  <A HREF="c4_View.html" >c4_View</A> 
605	  <b>Select</b> (const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; criterium_) <i>const</i>;
606	  </nobr>
607	<dd>
608	  
609	  
610	  <font face=Helvetica size=-1>Create view with rows matching the specified value</font>
611	<p>
612  
613  
614  <if !private>
615	<a name="c4_View_SelectRange_constconst__const"><dt>
616	  <nobr>
617	  <A HREF="c4_View.html" >c4_View</A> 
618	  <b>SelectRange</b> (const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; rowLow_, const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; rowHigh_) <i>const</i>;
619	  </nobr>
620	<dd>
621	  
622	  
623	  <font face=Helvetica size=-1>Create view with row values within the specified range</font>
624	<p>
625  
626  
627  <if !private>
628	<a name="c4_View_SetAt_intconst__"><dt>
629	  <nobr>
630	  void 
631	  <b>SetAt</b> (int index_, const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; row_);
632	  </nobr>
633	<dd>
634	  
635	   Replace an entry with the contents of another row. If the
636 row contains subviews, they will be replaced as well, but
637 there are two cases: if this is an attached view, all the
638 subview rows will be copied (deep copy), whereas for an
639 unattached view the new subviews will be shared with the 
640 original (shallow copy).
641<br>
642	  
643	<p>
644  
645  
646  <if !private>
647	<a name="c4_View_SetAtGrow_intconst__"><dt>
648	  <nobr>
649	  void 
650	  <b>SetAtGrow</b> (int index_, const <A HREF="c4_RowRef.html" >c4_RowRef</A>&#38; row_);
651	  </nobr>
652	<dd>
653	  
654	  
655	  <font face=Helvetica size=-1>Set an entry, growing the view if needed</font>
656	<p>
657  
658  
659  <if !private>
660	<a name="c4_View_SetSize_intint__"><dt>
661	  <nobr>
662	  void 
663	  <b>SetSize</b> (int newSize_, int growBy_ =-1);
664	  </nobr>
665	<dd>
666	  
667	   Since views act like dynamic arrays, you can quickly
668 change their size. Increasing the size will append rows
669 with zero/empty values, while decreasing it will delete
670 the last rows. The growBy_ parameter is currently unused.
671<br>
672	  
673	<p>
674  
675  
676  <if !private>
677	<a name="c4_View_Slice_intintint__const"><dt>
678	  <nobr>
679	  <A HREF="c4_View.html" >c4_View</A> 
680	  <b>Slice</b> (int start_, int limit_ =-1, int step_ =1) <i>const</i>;
681	  </nobr>
682	<dd>
683	  
684	   Returns a view which is a subset, either a contiguous range, or
685 a "slice" with element taken from every step_ entries. If the
686 step is negative, the same entries are returned, but in reverse
687 order (start_ is still lower index, it'll then be returned last).
688<br>
689	  
690	<p>
691  
692  
693  <if !private>
694	<a name="c4_View_Sort___const"><dt>
695	  <nobr>
696	  <A HREF="c4_View.html" >c4_View</A> 
697	  <b>Sort</b> () <i>const</i>;
698	  </nobr>
699	<dd>
700	  
701	  
702	  <font face=Helvetica size=-1>Create view with all rows in natural (property-wise) order</font>
703	<p>
704  
705  
706  <if !private>
707	<a name="c4_View_SortOn_const__const"><dt>
708	  <nobr>
709	  <A HREF="c4_View.html" >c4_View</A> 
710	  <b>SortOn</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; order_) <i>const</i>;
711	  </nobr>
712	<dd>
713	  
714	  
715	  <font face=Helvetica size=-1>Create view sorted according to the specified properties</font>
716	<p>
717  
718  
719  <if !private>
720	<a name="c4_View_SortOnReverse_constconst__const"><dt>
721	  <nobr>
722	  <A HREF="c4_View.html" >c4_View</A> 
723	  <b>SortOnReverse</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; order_, const <A HREF="c4_View.html" >c4_View</A>&#38; orderDown_) <i>const</i>;
724	  </nobr>
725	<dd>
726	  
727	  
728	  <font face=Helvetica size=-1>Create sorted view, with some properties sorted in reverse</font>
729	<p>
730  
731  
732  <if !private>
733	<a name="c4_View_Structure___const"><dt>
734	  <nobr>
735	  <A HREF="c4_View.html" >c4_View</A> 
736	  <b>Structure</b> () <i>const</i>;
737	  </nobr>
738	<dd>
739	  
740	  
741	  <font face=Helvetica size=-1>Return a view which describes the structure of this view</font>
742	<p>
743  
744  
745  <if !private>
746	<a name="c4_View_Union_const__const"><dt>
747	  <nobr>
748	  <A HREF="c4_View.html" >c4_View</A> 
749	  <b>Union</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_) <i>const</i>;
750	  </nobr>
751	<dd>
752	  
753	   Calculates the set union. This will only work if both input
754 views are sets, i.e. they have no duplicate rows in them.
755<br>
756	  
757	<p>
758  
759  
760  <if !private>
761	<a name="c4_View_Unique___const"><dt>
762	  <nobr>
763	  <A HREF="c4_View.html" >c4_View</A> 
764	  <b>Unique</b> () <i>const</i>;
765	  </nobr>
766	<dd>
767	  
768	   Returns a subset which does not contain any duplicate rows.
769<br>
770	  
771	<p>
772  
773  
774  <if !private>
775	<a name="c4_View__DecSeqRef___"><dt>
776	  <nobr>
777	  void 
778	  <b>_DecSeqRef</b> ();
779	  </nobr>
780	<dd>
781	  
782	  
783	  <font face=Helvetica size=-1></font>
784	<p>
785  
786  
787  <if !private>
788	<a name="c4_View__IncSeqRef___"><dt>
789	  <nobr>
790	  void 
791	  <b>_IncSeqRef</b> ();
792	  </nobr>
793	<dd>
794	  
795	  
796	  <font face=Helvetica size=-1></font>
797	<p>
798  
799  
800  <if !private>
801	<a name="c4_View__seq"><dt>
802	  <nobr>
803	  <A HREF="c4_Sequence.html" >c4_Sequence</A>* 
804	  <b>_seq</b>;
805	  </nobr>
806	<dd>
807	  
808	  
809	  <font face=Helvetica size=-1></font>
810	<p>
811  
812  
813  <if !private>
814	<a name="c4_View_c4_View_c4_CustomViewer__"><dt>
815	  <nobr>
816	  
817	  <b>c4_View</b> (<A HREF="c4_CustomViewer.html" >c4_CustomViewer</A>* viewer_);
818	  </nobr>
819	<dd>
820	  
821	  
822	  <font face=Helvetica size=-1>Construct a view based on a custom viewer</font>
823	<p>
824  
825  
826  <if !private>
827	<a name="c4_View_c4_View_c4_Sequence__"><dt>
828	  <nobr>
829	  
830	  <b>c4_View</b> (<A HREF="c4_Sequence.html" >c4_Sequence</A>* implementation_ =0);
831	  </nobr>
832	<dd>
833	  
834	  
835	  <font face=Helvetica size=-1>Construct a view based on a sequence</font>
836	<p>
837  
838  
839  <if !private>
840	<a name="c4_View_c4_View_const_"><dt>
841	  <nobr>
842	  
843	  <b>c4_View</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_);
844	  </nobr>
845	<dd>
846	  
847	  
848	  <font face=Helvetica size=-1>Construct an empty view with one propertyConstruct a view from another one</font>
849	<p>
850  
851  
852  <if !private>
853	<a name="c4_View_c4_View_const_"><dt>
854	  <nobr>
855	  
856	  <b>c4_View</b> (const <A HREF="c4_View.html" >c4_View</A>&#38; view_);
857	  </nobr>
858	<dd>
859	  
860	  
861	  <font face=Helvetica size=-1>Construct an empty view with one propertyConstruct a view from another one</font>
862	<p>
863  
864  
865  <if !private>
866	<a name="c4_View_operator___const__const"><dt>
867	  <nobr>
868	  <A HREF="c4_View.html" >c4_View</A> 
869	  <b>operator, </b> (const <A HREF="c4_Property.html" >c4_Property</A>&#38; property_) <i>const</i>;
870	  </nobr>
871	<dd>
872	  
873	  
874	  <font face=Helvetica size=-1>Return a view like the first, with a property appended to it</font>
875	<p>
876  
877  
878  <if !private>
879	<a name="c4_View_operator___const__"><dt>
880	  <nobr>
881	  <A HREF="c4_View.html" >c4_View</A>&#38; 
882	  <b>operator= </b> (const <A HREF="c4_View.html" >c4_View</A>&#38; source_);
883	  </nobr>
884	<dd>
885	  
886	  
887	  <font face=Helvetica size=-1>Make this view the same as another one</font>
888	<p>
889  
890  
891  <if !private>
892	<a name="c4_View_operator___int__const"><dt>
893	  <nobr>
894	  <A HREF="c4_RowRef.html" >c4_RowRef</A> 
895	  <b>operator[]</b> (int index_) <i>const</i>;
896	  </nobr>
897	<dd>
898	  
899	  
900	  <font face=Helvetica size=-1>Shorthand for <A HREF="c4_View.html" >c4_View</A>::GetAt</font>
901	<p>
902  
903  
904  <if !private>
905	<a name="c4_View__c4_View__"><dt>
906	  <nobr>
907	  
908	  <b>~c4_View</b> ();
909	  </nobr>
910	<dd>
911	  
912	  
913	  <font face=Helvetica size=-1>Destructor, decrements reference count</font>
914	<p>
915  
916  
917</dl>
918
919<hr size=1 width=50 align=left>
920class 
921<b>c4_View</b>
922</font>
923
924</body></html>
925