| 478 | | |
|---|
| 479 | | typedef FieldDescription<DescT, |
|---|
| 480 | | FieldCardE> Self; |
|---|
| 481 | | typedef typename DescT::FieldDescParent Inherited; |
|---|
| 482 | | |
|---|
| 483 | | typedef typename boost::mpl::if_c< |
|---|
| 484 | | FieldCardE == FieldType::SINGLE_FIELD, |
|---|
| 485 | | SField<typename DescT::ValueType, |
|---|
| 486 | | DescT::iNamespace>, |
|---|
| 487 | | MField<typename DescT::ValueType, |
|---|
| 488 | | DescT::iNamespace, |
|---|
| 489 | | typename DescT::MFAlloc > >::type HandledField; |
|---|
| 490 | | |
|---|
| 491 | | typedef typename HandledField::GetHandle GetHandle; |
|---|
| 492 | | typedef typename HandledField::GetHandlePtr GetHandlePtr; |
|---|
| 493 | | typedef typename HandledField::EditHandle EditHandle; |
|---|
| 494 | | typedef typename HandledField::EditHandlePtr EditHandlePtr; |
|---|
| 495 | | |
|---|
| 496 | | typedef typename HandledField::DynamicGetHandle DynamicGetHandle; |
|---|
| 497 | | typedef typename HandledField::DynamicGetHandlePtr DynamicGetHandlePtr; |
|---|
| 498 | | typedef typename HandledField::DynamicEditHandle DynamicEditHandle; |
|---|
| 499 | | typedef typename HandledField::DynamicEditHandlePtr DynamicEditHandlePtr; |
|---|
| | 489 | template <class DescT> |
|---|
| | 490 | struct DataSFieldSelector |
|---|
| | 491 | { |
|---|
| | 492 | typedef typename DescT::DataSField type; |
|---|
| | 493 | }; |
|---|
| | 494 | |
|---|
| | 495 | template <class DescT> |
|---|
| | 496 | struct DataMFieldSelector |
|---|
| | 497 | { |
|---|
| | 498 | typedef typename DescT::DataMField type; |
|---|
| | 499 | }; |
|---|
| | 500 | |
|---|
| | 501 | template <class DescT> |
|---|
| | 502 | struct ChildSFieldSelector |
|---|
| | 503 | { |
|---|
| | 504 | typedef typename DescT::ChildSField type; |
|---|
| | 505 | }; |
|---|
| | 506 | |
|---|
| | 507 | template <class DescT> |
|---|
| | 508 | struct ChildMFieldSelector |
|---|
| | 509 | { |
|---|
| | 510 | typedef typename DescT::ChildMField type; |
|---|
| | 511 | }; |
|---|
| | 512 | |
|---|
| | 513 | template <class DescT> |
|---|
| | 514 | struct ParentSFieldSelector |
|---|
| | 515 | { |
|---|
| | 516 | typedef typename DescT::ParentSField type; |
|---|
| | 517 | }; |
|---|
| | 518 | |
|---|
| | 519 | template <class DescT> |
|---|
| | 520 | struct ParentMFieldSelector |
|---|
| | 521 | { |
|---|
| | 522 | typedef typename DescT::ParentMField type; |
|---|
| | 523 | }; |
|---|
| | 524 | |
|---|
| | 525 | template <class DescT> |
|---|
| | 526 | struct UnrecordedSFieldSelector |
|---|
| | 527 | { |
|---|
| | 528 | typedef typename DescT::UnrecordedSField type; |
|---|
| | 529 | }; |
|---|
| | 530 | |
|---|
| | 531 | template <class DescT> |
|---|
| | 532 | struct UnrecordedMFieldSelector |
|---|
| | 533 | { |
|---|
| | 534 | typedef typename DescT::UnrecordedMField type; |
|---|
| | 535 | }; |
|---|
| | 536 | |
|---|
| | 537 | template <class DescT> |
|---|
| | 538 | struct WeakSFieldSelector |
|---|
| | 539 | { |
|---|
| | 540 | typedef typename DescT::WeakSField type; |
|---|
| | 541 | }; |
|---|
| | 542 | |
|---|
| | 543 | template <class DescT> |
|---|
| | 544 | struct WeakMFieldSelector |
|---|
| | 545 | { |
|---|
| | 546 | typedef typename DescT::WeakMField type; |
|---|
| | 547 | }; |
|---|
| | 548 | |
|---|
| | 549 | /*========================== PUBLIC =================================*/ |
|---|
| | 550 | public: |
|---|
| | 551 | /*---------------------------------------------------------------------*/ |
|---|
| | 552 | /*! \name Public Types */ |
|---|
| | 553 | /*! \{ */ |
|---|
| | 554 | |
|---|
| | 555 | typedef typename boost::mpl::eval_if_c< |
|---|
| | 556 | FieldClassE == FieldType::DATA_FIELD, |
|---|
| | 557 | boost::mpl::eval_if_c< |
|---|
| | 558 | FieldCardE == FieldType::SINGLE_FIELD, |
|---|
| | 559 | DataSFieldSelector<DescType>, |
|---|
| | 560 | DataMFieldSelector<DescType> >, |
|---|
| | 561 | boost::mpl::eval_if_c< |
|---|
| | 562 | FieldClassE == FieldType::CHILD_POINTER_FIELD, |
|---|
| | 563 | boost::mpl::eval_if_c< |
|---|
| | 564 | FieldCardE == FieldType::SINGLE_FIELD, |
|---|
| | 565 | ChildSFieldSelector<DescType>, |
|---|
| | 566 | ChildMFieldSelector<DescType> >, |
|---|
| | 567 | boost::mpl::eval_if_c< |
|---|
| | 568 | FieldClassE == FieldType::PARENT_POINTER_FIELD, |
|---|
| | 569 | boost::mpl::eval_if_c< |
|---|
| | 570 | FieldCardE == FieldType::SINGLE_FIELD, |
|---|
| | 571 | ParentSFieldSelector<DescType>, |
|---|
| | 572 | ParentMFieldSelector<DescType> >, |
|---|
| | 573 | boost::mpl::eval_if_c< |
|---|
| | 574 | FieldClassE == FieldType::UNRECORDED_POINTER_FIELD, |
|---|
| | 575 | boost::mpl::eval_if_c< |
|---|
| | 576 | FieldCardE == FieldType::SINGLE_FIELD, |
|---|
| | 577 | UnrecordedSFieldSelector<DescType>, |
|---|
| | 578 | UnrecordedMFieldSelector<DescType> >, |
|---|
| | 579 | boost::mpl::eval_if_c< |
|---|
| | 580 | FieldClassE == FieldType::WEAK_POINTER_FIELD, |
|---|
| | 581 | boost::mpl::eval_if_c< |
|---|
| | 582 | FieldCardE == FieldType::SINGLE_FIELD, |
|---|
| | 583 | WeakSFieldSelector<DescType>, |
|---|
| | 584 | WeakMFieldSelector<DescType> >, |
|---|
| | 585 | boost::mpl::identity<void> |
|---|
| | 586 | > |
|---|
| | 587 | > |
|---|
| | 588 | > |
|---|
| | 589 | > |
|---|
| | 590 | >::type HandledFieldType; |
|---|
| | 591 | |
|---|
| | 592 | typedef typename HandledFieldType::GetHandle GetHandle; |
|---|
| | 593 | typedef typename HandledFieldType::GetHandlePtr GetHandlePtr; |
|---|
| | 594 | typedef typename HandledFieldType::EditHandle EditHandle; |
|---|
| | 595 | typedef typename HandledFieldType::EditHandlePtr EditHandlePtr; |
|---|
| | 596 | |
|---|
| | 597 | typedef typename HandledFieldType::DynamicGetHandle DynamicGetHandle; |
|---|
| | 598 | typedef typename HandledFieldType::DynamicGetHandlePtr DynamicGetHandlePtr; |
|---|
| | 599 | typedef typename HandledFieldType::DynamicEditHandle DynamicEditHandle; |
|---|
| | 600 | typedef typename HandledFieldType::DynamicEditHandlePtr DynamicEditHandlePtr; |
|---|