1 /* 2 * This file generated automatically from present.xml by c_client.py. 3 * Edit at your peril. 4 */ 5 6 /** 7 * @defgroup XCB_Present_API XCB Present API 8 * @brief Present XCB Protocol Implementation. 9 * @{ 10 **/ 11 12 #ifndef __PRESENT_H 13 #define __PRESENT_H 14 15 #include "xcb.h" 16 #include "xproto.h" 17 #include "randr.h" 18 #include "xfixes.h" 19 #include "sync.h" 20 #include "dri3.h" 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 #define XCB_PRESENT_MAJOR_VERSION 1 27 #define XCB_PRESENT_MINOR_VERSION 4 28 29 extern xcb_extension_t xcb_present_id; 30 31 typedef enum xcb_present_event_enum_t { 32 XCB_PRESENT_EVENT_CONFIGURE_NOTIFY = 0, 33 XCB_PRESENT_EVENT_COMPLETE_NOTIFY = 1, 34 XCB_PRESENT_EVENT_IDLE_NOTIFY = 2, 35 XCB_PRESENT_EVENT_REDIRECT_NOTIFY = 3 36 } xcb_present_event_enum_t; 37 38 typedef enum xcb_present_event_mask_t { 39 XCB_PRESENT_EVENT_MASK_NO_EVENT = 0, 40 XCB_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY = 1, 41 XCB_PRESENT_EVENT_MASK_COMPLETE_NOTIFY = 2, 42 XCB_PRESENT_EVENT_MASK_IDLE_NOTIFY = 4, 43 XCB_PRESENT_EVENT_MASK_REDIRECT_NOTIFY = 8 44 } xcb_present_event_mask_t; 45 46 typedef enum xcb_present_option_t { 47 XCB_PRESENT_OPTION_NONE = 0, 48 XCB_PRESENT_OPTION_ASYNC = 1, 49 XCB_PRESENT_OPTION_COPY = 2, 50 XCB_PRESENT_OPTION_UST = 4, 51 XCB_PRESENT_OPTION_SUBOPTIMAL = 8, 52 XCB_PRESENT_OPTION_ASYNC_MAY_TEAR = 16 53 } xcb_present_option_t; 54 55 typedef enum xcb_present_capability_t { 56 XCB_PRESENT_CAPABILITY_NONE = 0, 57 XCB_PRESENT_CAPABILITY_ASYNC = 1, 58 XCB_PRESENT_CAPABILITY_FENCE = 2, 59 XCB_PRESENT_CAPABILITY_UST = 4, 60 XCB_PRESENT_CAPABILITY_ASYNC_MAY_TEAR = 8, 61 XCB_PRESENT_CAPABILITY_SYNCOBJ = 16 62 } xcb_present_capability_t; 63 64 typedef enum xcb_present_complete_kind_t { 65 XCB_PRESENT_COMPLETE_KIND_PIXMAP = 0, 66 XCB_PRESENT_COMPLETE_KIND_NOTIFY_MSC = 1 67 } xcb_present_complete_kind_t; 68 69 typedef enum xcb_present_complete_mode_t { 70 XCB_PRESENT_COMPLETE_MODE_COPY = 0, 71 XCB_PRESENT_COMPLETE_MODE_FLIP = 1, 72 XCB_PRESENT_COMPLETE_MODE_SKIP = 2, 73 XCB_PRESENT_COMPLETE_MODE_SUBOPTIMAL_COPY = 3 74 } xcb_present_complete_mode_t; 75 76 /** 77 * @brief xcb_present_notify_t 78 **/ 79 typedef struct xcb_present_notify_t { 80 xcb_window_t window; 81 uint32_t serial; 82 } xcb_present_notify_t; 83 84 /** 85 * @brief xcb_present_notify_iterator_t 86 **/ 87 typedef struct xcb_present_notify_iterator_t { 88 xcb_present_notify_t *data; 89 int rem; 90 int index; 91 } xcb_present_notify_iterator_t; 92 93 /** 94 * @brief xcb_present_query_version_cookie_t 95 **/ 96 typedef struct xcb_present_query_version_cookie_t { 97 unsigned int sequence; 98 } xcb_present_query_version_cookie_t; 99 100 /** Opcode for xcb_present_query_version. */ 101 #define XCB_PRESENT_QUERY_VERSION 0 102 103 /** 104 * @brief xcb_present_query_version_request_t 105 **/ 106 typedef struct xcb_present_query_version_request_t { 107 uint8_t major_opcode; 108 uint8_t minor_opcode; 109 uint16_t length; 110 uint32_t major_version; 111 uint32_t minor_version; 112 } xcb_present_query_version_request_t; 113 114 /** 115 * @brief xcb_present_query_version_reply_t 116 **/ 117 typedef struct xcb_present_query_version_reply_t { 118 uint8_t response_type; 119 uint8_t pad0; 120 uint16_t sequence; 121 uint32_t length; 122 uint32_t major_version; 123 uint32_t minor_version; 124 } xcb_present_query_version_reply_t; 125 126 /** Opcode for xcb_present_pixmap. */ 127 #define XCB_PRESENT_PIXMAP 1 128 129 /** 130 * @brief xcb_present_pixmap_request_t 131 **/ 132 typedef struct xcb_present_pixmap_request_t { 133 uint8_t major_opcode; 134 uint8_t minor_opcode; 135 uint16_t length; 136 xcb_window_t window; 137 xcb_pixmap_t pixmap; 138 uint32_t serial; 139 xcb_xfixes_region_t valid; 140 xcb_xfixes_region_t update; 141 int16_t x_off; 142 int16_t y_off; 143 xcb_randr_crtc_t target_crtc; 144 xcb_sync_fence_t wait_fence; 145 xcb_sync_fence_t idle_fence; 146 uint32_t options; 147 uint8_t pad0[4]; 148 uint64_t target_msc; 149 uint64_t divisor; 150 uint64_t remainder; 151 } xcb_present_pixmap_request_t; 152 153 /** Opcode for xcb_present_notify_msc. */ 154 #define XCB_PRESENT_NOTIFY_MSC 2 155 156 /** 157 * @brief xcb_present_notify_msc_request_t 158 **/ 159 typedef struct xcb_present_notify_msc_request_t { 160 uint8_t major_opcode; 161 uint8_t minor_opcode; 162 uint16_t length; 163 xcb_window_t window; 164 uint32_t serial; 165 uint8_t pad0[4]; 166 uint64_t target_msc; 167 uint64_t divisor; 168 uint64_t remainder; 169 } xcb_present_notify_msc_request_t; 170 171 typedef uint32_t xcb_present_event_t; 172 173 /** 174 * @brief xcb_present_event_iterator_t 175 **/ 176 typedef struct xcb_present_event_iterator_t { 177 xcb_present_event_t *data; 178 int rem; 179 int index; 180 } xcb_present_event_iterator_t; 181 182 /** Opcode for xcb_present_select_input. */ 183 #define XCB_PRESENT_SELECT_INPUT 3 184 185 /** 186 * @brief xcb_present_select_input_request_t 187 **/ 188 typedef struct xcb_present_select_input_request_t { 189 uint8_t major_opcode; 190 uint8_t minor_opcode; 191 uint16_t length; 192 xcb_present_event_t eid; 193 xcb_window_t window; 194 uint32_t event_mask; 195 } xcb_present_select_input_request_t; 196 197 /** 198 * @brief xcb_present_query_capabilities_cookie_t 199 **/ 200 typedef struct xcb_present_query_capabilities_cookie_t { 201 unsigned int sequence; 202 } xcb_present_query_capabilities_cookie_t; 203 204 /** Opcode for xcb_present_query_capabilities. */ 205 #define XCB_PRESENT_QUERY_CAPABILITIES 4 206 207 /** 208 * @brief xcb_present_query_capabilities_request_t 209 **/ 210 typedef struct xcb_present_query_capabilities_request_t { 211 uint8_t major_opcode; 212 uint8_t minor_opcode; 213 uint16_t length; 214 uint32_t target; 215 } xcb_present_query_capabilities_request_t; 216 217 /** 218 * @brief xcb_present_query_capabilities_reply_t 219 **/ 220 typedef struct xcb_present_query_capabilities_reply_t { 221 uint8_t response_type; 222 uint8_t pad0; 223 uint16_t sequence; 224 uint32_t length; 225 uint32_t capabilities; 226 } xcb_present_query_capabilities_reply_t; 227 228 /** Opcode for xcb_present_pixmap_synced. */ 229 #define XCB_PRESENT_PIXMAP_SYNCED 5 230 231 /** 232 * @brief xcb_present_pixmap_synced_request_t 233 **/ 234 typedef struct xcb_present_pixmap_synced_request_t { 235 uint8_t major_opcode; 236 uint8_t minor_opcode; 237 uint16_t length; 238 xcb_window_t window; 239 xcb_pixmap_t pixmap; 240 uint32_t serial; 241 xcb_xfixes_region_t valid; 242 xcb_xfixes_region_t update; 243 int16_t x_off; 244 int16_t y_off; 245 xcb_randr_crtc_t target_crtc; 246 xcb_dri3_syncobj_t acquire_syncobj; 247 xcb_dri3_syncobj_t release_syncobj; 248 uint64_t acquire_point; 249 uint64_t release_point; 250 uint32_t options; 251 uint8_t pad0[4]; 252 uint64_t target_msc; 253 uint64_t divisor; 254 uint64_t remainder; 255 } xcb_present_pixmap_synced_request_t; 256 257 /** Opcode for xcb_present_generic. */ 258 #define XCB_PRESENT_GENERIC 0 259 260 /** 261 * @brief xcb_present_generic_event_t 262 **/ 263 typedef struct xcb_present_generic_event_t { 264 uint8_t response_type; 265 uint8_t extension; 266 uint16_t sequence; 267 uint32_t length; 268 uint16_t evtype; 269 uint8_t pad0[2]; 270 xcb_present_event_t event; 271 } xcb_present_generic_event_t; 272 273 /** Opcode for xcb_present_configure_notify. */ 274 #define XCB_PRESENT_CONFIGURE_NOTIFY 0 275 276 /** 277 * @brief xcb_present_configure_notify_event_t 278 **/ 279 typedef struct xcb_present_configure_notify_event_t { 280 uint8_t response_type; 281 uint8_t extension; 282 uint16_t sequence; 283 uint32_t length; 284 uint16_t event_type; 285 uint8_t pad0[2]; 286 xcb_present_event_t event; 287 xcb_window_t window; 288 int16_t x; 289 int16_t y; 290 uint16_t width; 291 uint16_t height; 292 int16_t off_x; 293 int16_t off_y; 294 uint32_t full_sequence; 295 uint16_t pixmap_width; 296 uint16_t pixmap_height; 297 uint32_t pixmap_flags; 298 } xcb_present_configure_notify_event_t; 299 300 /** Opcode for xcb_present_complete_notify. */ 301 #define XCB_PRESENT_COMPLETE_NOTIFY 1 302 303 /** 304 * @brief xcb_present_complete_notify_event_t 305 **/ 306 typedef struct xcb_present_complete_notify_event_t { 307 uint8_t response_type; 308 uint8_t extension; 309 uint16_t sequence; 310 uint32_t length; 311 uint16_t event_type; 312 uint8_t kind; 313 uint8_t mode; 314 xcb_present_event_t event; 315 xcb_window_t window; 316 uint32_t serial; 317 uint64_t ust; 318 uint32_t full_sequence; 319 uint64_t msc; 320 } XCB_PACKED xcb_present_complete_notify_event_t; 321 322 /** Opcode for xcb_present_idle_notify. */ 323 #define XCB_PRESENT_IDLE_NOTIFY 2 324 325 /** 326 * @brief xcb_present_idle_notify_event_t 327 **/ 328 typedef struct xcb_present_idle_notify_event_t { 329 uint8_t response_type; 330 uint8_t extension; 331 uint16_t sequence; 332 uint32_t length; 333 uint16_t event_type; 334 uint8_t pad0[2]; 335 xcb_present_event_t event; 336 xcb_window_t window; 337 uint32_t serial; 338 xcb_pixmap_t pixmap; 339 xcb_sync_fence_t idle_fence; 340 uint32_t full_sequence; 341 } xcb_present_idle_notify_event_t; 342 343 /** Opcode for xcb_present_redirect_notify. */ 344 #define XCB_PRESENT_REDIRECT_NOTIFY 3 345 346 /** 347 * @brief xcb_present_redirect_notify_event_t 348 **/ 349 typedef struct xcb_present_redirect_notify_event_t { 350 uint8_t response_type; 351 uint8_t extension; 352 uint16_t sequence; 353 uint32_t length; 354 uint16_t event_type; 355 uint8_t update_window; 356 uint8_t pad0; 357 xcb_present_event_t event; 358 xcb_window_t event_window; 359 xcb_window_t window; 360 xcb_pixmap_t pixmap; 361 uint32_t serial; 362 uint32_t full_sequence; 363 xcb_xfixes_region_t valid_region; 364 xcb_xfixes_region_t update_region; 365 xcb_rectangle_t valid_rect; 366 xcb_rectangle_t update_rect; 367 int16_t x_off; 368 int16_t y_off; 369 xcb_randr_crtc_t target_crtc; 370 xcb_sync_fence_t wait_fence; 371 xcb_sync_fence_t idle_fence; 372 uint32_t options; 373 uint8_t pad1[4]; 374 uint64_t target_msc; 375 uint64_t divisor; 376 uint64_t remainder; 377 } XCB_PACKED xcb_present_redirect_notify_event_t; 378 379 /** 380 * Get the next element of the iterator 381 * @param i Pointer to a xcb_present_notify_iterator_t 382 * 383 * Get the next element in the iterator. The member rem is 384 * decreased by one. The member data points to the next 385 * element. The member index is increased by sizeof(xcb_present_notify_t) 386 */ 387 void 388 xcb_present_notify_next (xcb_present_notify_iterator_t *i); 389 390 /** 391 * Return the iterator pointing to the last element 392 * @param i An xcb_present_notify_iterator_t 393 * @return The iterator pointing to the last element 394 * 395 * Set the current element in the iterator to the last element. 396 * The member rem is set to 0. The member data points to the 397 * last element. 398 */ 399 xcb_generic_iterator_t 400 xcb_present_notify_end (xcb_present_notify_iterator_t i); 401 402 /** 403 * 404 * @param c The connection 405 * @return A cookie 406 * 407 * Delivers a request to the X server. 408 * 409 */ 410 xcb_present_query_version_cookie_t 411 xcb_present_query_version (xcb_connection_t *c, 412 uint32_t major_version, 413 uint32_t minor_version); 414 415 /** 416 * 417 * @param c The connection 418 * @return A cookie 419 * 420 * Delivers a request to the X server. 421 * 422 * This form can be used only if the request will cause 423 * a reply to be generated. Any returned error will be 424 * placed in the event queue. 425 */ 426 xcb_present_query_version_cookie_t 427 xcb_present_query_version_unchecked (xcb_connection_t *c, 428 uint32_t major_version, 429 uint32_t minor_version); 430 431 /** 432 * Return the reply 433 * @param c The connection 434 * @param cookie The cookie 435 * @param e The xcb_generic_error_t supplied 436 * 437 * Returns the reply of the request asked by 438 * 439 * The parameter @p e supplied to this function must be NULL if 440 * xcb_present_query_version_unchecked(). is used. 441 * Otherwise, it stores the error if any. 442 * 443 * The returned value must be freed by the caller using free(). 444 */ 445 xcb_present_query_version_reply_t * 446 xcb_present_query_version_reply (xcb_connection_t *c, 447 xcb_present_query_version_cookie_t cookie /**< */, 448 xcb_generic_error_t **e); 449 450 int 451 xcb_present_pixmap_sizeof (const void *_buffer, 452 uint32_t notifies_len); 453 454 /** 455 * 456 * @param c The connection 457 * @return A cookie 458 * 459 * Delivers a request to the X server. 460 * 461 * This form can be used only if the request will not cause 462 * a reply to be generated. Any returned error will be 463 * saved for handling by xcb_request_check(). 464 */ 465 xcb_void_cookie_t 466 xcb_present_pixmap_checked (xcb_connection_t *c, 467 xcb_window_t window, 468 xcb_pixmap_t pixmap, 469 uint32_t serial, 470 xcb_xfixes_region_t valid, 471 xcb_xfixes_region_t update, 472 int16_t x_off, 473 int16_t y_off, 474 xcb_randr_crtc_t target_crtc, 475 xcb_sync_fence_t wait_fence, 476 xcb_sync_fence_t idle_fence, 477 uint32_t options, 478 uint64_t target_msc, 479 uint64_t divisor, 480 uint64_t remainder, 481 uint32_t notifies_len, 482 const xcb_present_notify_t *notifies); 483 484 /** 485 * 486 * @param c The connection 487 * @return A cookie 488 * 489 * Delivers a request to the X server. 490 * 491 */ 492 xcb_void_cookie_t 493 xcb_present_pixmap (xcb_connection_t *c, 494 xcb_window_t window, 495 xcb_pixmap_t pixmap, 496 uint32_t serial, 497 xcb_xfixes_region_t valid, 498 xcb_xfixes_region_t update, 499 int16_t x_off, 500 int16_t y_off, 501 xcb_randr_crtc_t target_crtc, 502 xcb_sync_fence_t wait_fence, 503 xcb_sync_fence_t idle_fence, 504 uint32_t options, 505 uint64_t target_msc, 506 uint64_t divisor, 507 uint64_t remainder, 508 uint32_t notifies_len, 509 const xcb_present_notify_t *notifies); 510 511 xcb_present_notify_t * 512 xcb_present_pixmap_notifies (const xcb_present_pixmap_request_t *R); 513 514 int 515 xcb_present_pixmap_notifies_length (const xcb_present_pixmap_request_t *R); 516 517 xcb_present_notify_iterator_t 518 xcb_present_pixmap_notifies_iterator (const xcb_present_pixmap_request_t *R); 519 520 /** 521 * 522 * @param c The connection 523 * @return A cookie 524 * 525 * Delivers a request to the X server. 526 * 527 * This form can be used only if the request will not cause 528 * a reply to be generated. Any returned error will be 529 * saved for handling by xcb_request_check(). 530 */ 531 xcb_void_cookie_t 532 xcb_present_notify_msc_checked (xcb_connection_t *c, 533 xcb_window_t window, 534 uint32_t serial, 535 uint64_t target_msc, 536 uint64_t divisor, 537 uint64_t remainder); 538 539 /** 540 * 541 * @param c The connection 542 * @return A cookie 543 * 544 * Delivers a request to the X server. 545 * 546 */ 547 xcb_void_cookie_t 548 xcb_present_notify_msc (xcb_connection_t *c, 549 xcb_window_t window, 550 uint32_t serial, 551 uint64_t target_msc, 552 uint64_t divisor, 553 uint64_t remainder); 554 555 /** 556 * Get the next element of the iterator 557 * @param i Pointer to a xcb_present_event_iterator_t 558 * 559 * Get the next element in the iterator. The member rem is 560 * decreased by one. The member data points to the next 561 * element. The member index is increased by sizeof(xcb_present_event_t) 562 */ 563 void 564 xcb_present_event_next (xcb_present_event_iterator_t *i); 565 566 /** 567 * Return the iterator pointing to the last element 568 * @param i An xcb_present_event_iterator_t 569 * @return The iterator pointing to the last element 570 * 571 * Set the current element in the iterator to the last element. 572 * The member rem is set to 0. The member data points to the 573 * last element. 574 */ 575 xcb_generic_iterator_t 576 xcb_present_event_end (xcb_present_event_iterator_t i); 577 578 /** 579 * 580 * @param c The connection 581 * @return A cookie 582 * 583 * Delivers a request to the X server. 584 * 585 * This form can be used only if the request will not cause 586 * a reply to be generated. Any returned error will be 587 * saved for handling by xcb_request_check(). 588 */ 589 xcb_void_cookie_t 590 xcb_present_select_input_checked (xcb_connection_t *c, 591 xcb_present_event_t eid, 592 xcb_window_t window, 593 uint32_t event_mask); 594 595 /** 596 * 597 * @param c The connection 598 * @return A cookie 599 * 600 * Delivers a request to the X server. 601 * 602 */ 603 xcb_void_cookie_t 604 xcb_present_select_input (xcb_connection_t *c, 605 xcb_present_event_t eid, 606 xcb_window_t window, 607 uint32_t event_mask); 608 609 /** 610 * 611 * @param c The connection 612 * @return A cookie 613 * 614 * Delivers a request to the X server. 615 * 616 */ 617 xcb_present_query_capabilities_cookie_t 618 xcb_present_query_capabilities (xcb_connection_t *c, 619 uint32_t target); 620 621 /** 622 * 623 * @param c The connection 624 * @return A cookie 625 * 626 * Delivers a request to the X server. 627 * 628 * This form can be used only if the request will cause 629 * a reply to be generated. Any returned error will be 630 * placed in the event queue. 631 */ 632 xcb_present_query_capabilities_cookie_t 633 xcb_present_query_capabilities_unchecked (xcb_connection_t *c, 634 uint32_t target); 635 636 /** 637 * Return the reply 638 * @param c The connection 639 * @param cookie The cookie 640 * @param e The xcb_generic_error_t supplied 641 * 642 * Returns the reply of the request asked by 643 * 644 * The parameter @p e supplied to this function must be NULL if 645 * xcb_present_query_capabilities_unchecked(). is used. 646 * Otherwise, it stores the error if any. 647 * 648 * The returned value must be freed by the caller using free(). 649 */ 650 xcb_present_query_capabilities_reply_t * 651 xcb_present_query_capabilities_reply (xcb_connection_t *c, 652 xcb_present_query_capabilities_cookie_t cookie /**< */, 653 xcb_generic_error_t **e); 654 655 int 656 xcb_present_pixmap_synced_sizeof (const void *_buffer, 657 uint32_t notifies_len); 658 659 /** 660 * 661 * @param c The connection 662 * @return A cookie 663 * 664 * Delivers a request to the X server. 665 * 666 * This form can be used only if the request will not cause 667 * a reply to be generated. Any returned error will be 668 * saved for handling by xcb_request_check(). 669 */ 670 xcb_void_cookie_t 671 xcb_present_pixmap_synced_checked (xcb_connection_t *c, 672 xcb_window_t window, 673 xcb_pixmap_t pixmap, 674 uint32_t serial, 675 xcb_xfixes_region_t valid, 676 xcb_xfixes_region_t update, 677 int16_t x_off, 678 int16_t y_off, 679 xcb_randr_crtc_t target_crtc, 680 xcb_dri3_syncobj_t acquire_syncobj, 681 xcb_dri3_syncobj_t release_syncobj, 682 uint64_t acquire_point, 683 uint64_t release_point, 684 uint32_t options, 685 uint64_t target_msc, 686 uint64_t divisor, 687 uint64_t remainder, 688 uint32_t notifies_len, 689 const xcb_present_notify_t *notifies); 690 691 /** 692 * 693 * @param c The connection 694 * @return A cookie 695 * 696 * Delivers a request to the X server. 697 * 698 */ 699 xcb_void_cookie_t 700 xcb_present_pixmap_synced (xcb_connection_t *c, 701 xcb_window_t window, 702 xcb_pixmap_t pixmap, 703 uint32_t serial, 704 xcb_xfixes_region_t valid, 705 xcb_xfixes_region_t update, 706 int16_t x_off, 707 int16_t y_off, 708 xcb_randr_crtc_t target_crtc, 709 xcb_dri3_syncobj_t acquire_syncobj, 710 xcb_dri3_syncobj_t release_syncobj, 711 uint64_t acquire_point, 712 uint64_t release_point, 713 uint32_t options, 714 uint64_t target_msc, 715 uint64_t divisor, 716 uint64_t remainder, 717 uint32_t notifies_len, 718 const xcb_present_notify_t *notifies); 719 720 xcb_present_notify_t * 721 xcb_present_pixmap_synced_notifies (const xcb_present_pixmap_synced_request_t *R); 722 723 int 724 xcb_present_pixmap_synced_notifies_length (const xcb_present_pixmap_synced_request_t *R); 725 726 xcb_present_notify_iterator_t 727 xcb_present_pixmap_synced_notifies_iterator (const xcb_present_pixmap_synced_request_t *R); 728 729 int 730 xcb_present_redirect_notify_sizeof (const void *_buffer, 731 uint32_t notifies_len); 732 733 xcb_present_notify_t * 734 xcb_present_redirect_notify_notifies (const xcb_present_redirect_notify_event_t *R); 735 736 int 737 xcb_present_redirect_notify_notifies_length (const xcb_present_redirect_notify_event_t *R); 738 739 xcb_present_notify_iterator_t 740 xcb_present_redirect_notify_notifies_iterator (const xcb_present_redirect_notify_event_t *R); 741 742 743 #ifdef __cplusplus 744 } 745 #endif 746 747 #endif 748 749 /** 750 * @} 751 */ 752