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>& 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>& 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>& 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>& 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>& keys_, const <A HREF="c4_IntProp.html" >c4_IntProp</A>& 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>& 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>& 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>& 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>& 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>& 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>& keys_, const <A HREF="c4_ViewProp.html" >c4_ViewProp</A>& 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>& 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>& 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>& 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>& keys_, const <A HREF="c4_View.html" >c4_View</A>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& old_, const <A HREF="c4_Property.html" >c4_Property</A>& 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>& 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>& 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>& rowLow_, const <A HREF="c4_RowRef.html" >c4_RowRef</A>& 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>& 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>& 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>& 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>& order_, const <A HREF="c4_View.html" >c4_View</A>& 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>& 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>& 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>& 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>& 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>& 882 <b>operator= </b> (const <A HREF="c4_View.html" >c4_View</A>& 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