| 467 | | |
|---|
| 468 | | namespace detail |
|---|
| 469 | | { |
|---|
| 470 | | template <class TypeT> |
|---|
| 471 | | struct ExtractHandledSInternalField |
|---|
| 472 | | { |
|---|
| 473 | | typedef typename TypeT::HandledSInternalField type; |
|---|
| 474 | | }; |
|---|
| 475 | | |
|---|
| 476 | | template <class TypeT> |
|---|
| 477 | | struct ExtractHandledSChildField |
|---|
| 478 | | { |
|---|
| 479 | | typedef typename TypeT::HandledSChildField type; |
|---|
| 480 | | }; |
|---|
| 481 | | |
|---|
| 482 | | template <class TypeT> |
|---|
| 483 | | struct ExtractHandledSParentField |
|---|
| 484 | | { |
|---|
| 485 | | typedef typename TypeT::HandledSParentField type; |
|---|
| 486 | | }; |
|---|
| 487 | | |
|---|
| 488 | | template <class TypeT> |
|---|
| 489 | | struct ExtractHandledSWeakField |
|---|
| 490 | | { |
|---|
| 491 | | typedef typename TypeT::HandledSWeakField type; |
|---|
| 492 | | }; |
|---|
| 493 | | |
|---|
| 494 | | |
|---|
| 495 | | template <class TypeT> |
|---|
| 496 | | struct ExtractHandledMInternalField |
|---|
| 497 | | { |
|---|
| 498 | | typedef typename TypeT::HandledMInternalField type; |
|---|
| 499 | | }; |
|---|
| 500 | | |
|---|
| 501 | | template <class TypeT> |
|---|
| 502 | | struct ExtractHandledMChildField |
|---|
| 503 | | { |
|---|
| 504 | | typedef typename TypeT::HandledMChildField type; |
|---|
| 505 | | }; |
|---|
| 506 | | |
|---|
| 507 | | template <class TypeT> |
|---|
| 508 | | struct ExtractHandledMParentField |
|---|
| 509 | | { |
|---|
| 510 | | typedef typename TypeT::HandledMParentField type; |
|---|
| 511 | | }; |
|---|
| 512 | | |
|---|
| 513 | | template <class TypeT> |
|---|
| 514 | | struct ExtractHandledMWeakField |
|---|
| 515 | | { |
|---|
| 516 | | typedef typename TypeT::HandledMWeakField type; |
|---|
| 517 | | }; |
|---|
| 518 | | } // namespace detail |
|---|
| 519 | | |
|---|
| 535 | | FieldCardE, |
|---|
| 536 | | FieldCatE > Self; |
|---|
| 537 | | typedef typename DescT::FieldDescParent Inherited; |
|---|
| 538 | | |
|---|
| 539 | | typedef typename EvalSwitch5< |
|---|
| 540 | | FieldCatE == DataField, |
|---|
| 541 | | boost::mpl::identity<SField<typename DescT::ValueType, |
|---|
| 542 | | DescT::iNamespace> >, |
|---|
| 543 | | FieldCatE == InternalPointerField, |
|---|
| 544 | | detail::ExtractHandledSInternalField<DescT>, |
|---|
| 545 | | FieldCatE == ChildPointerField, |
|---|
| 546 | | detail::ExtractHandledSChildField <DescT>, |
|---|
| 547 | | FieldCatE == ParentPointerField, |
|---|
| 548 | | detail::ExtractHandledSParentField <DescT>, |
|---|
| 549 | | FieldCatE == WeakPointerField, |
|---|
| 550 | | detail::ExtractHandledSWeakField <DescT>, |
|---|
| 551 | | boost::mpl::identity<void> >::type HandledSField; |
|---|
| 552 | | |
|---|
| 553 | | typedef typename EvalSwitch5< |
|---|
| 554 | | FieldCatE == DataField, |
|---|
| 555 | | boost::mpl::identity<MField<typename DescT::ValueType, |
|---|
| 556 | | DescT::iNamespace, |
|---|
| 557 | | typename DescT::MFAlloc > >, |
|---|
| 558 | | FieldCatE == InternalPointerField, |
|---|
| 559 | | detail::ExtractHandledMInternalField<DescT>, |
|---|
| 560 | | FieldCatE == ChildPointerField, |
|---|
| 561 | | detail::ExtractHandledMChildField <DescT>, |
|---|
| 562 | | FieldCatE == ParentPointerField, |
|---|
| 563 | | detail::ExtractHandledMParentField <DescT>, |
|---|
| 564 | | FieldCatE == WeakPointerField, |
|---|
| 565 | | detail::ExtractHandledMWeakField <DescT>, |
|---|
| 566 | | boost::mpl::identity<void> >::type HandledMField; |
|---|
| 567 | | |
|---|
| 568 | | typedef typename |
|---|
| 569 | | boost::mpl::if_c<FieldCardE == SingleField, |
|---|
| 570 | | HandledSField, |
|---|
| 571 | | HandledMField >::type HandledField; |
|---|
| 572 | | |
|---|
| 573 | | typedef typename HandledField::GetHandle GetHandle; |
|---|
| 574 | | typedef typename HandledField::GetHandlePtr GetHandlePtr; |
|---|
| 575 | | |
|---|
| 576 | | typedef typename HandledField::EditHandle EditHandle; |
|---|
| 577 | | typedef typename HandledField::EditHandlePtr EditHandlePtr; |
|---|
| 578 | | |
|---|
| 579 | | struct SFieldFunctions |
|---|
| 580 | | { |
|---|
| 581 | | static void beginEdit(HandledField *pField, |
|---|
| 582 | | UInt32 uiAspect, |
|---|
| 583 | | AspectOffsetStore &oOffsets); |
|---|
| 584 | | |
|---|
| 585 | | static bool isShared (HandledField *pField ); |
|---|
| 586 | | }; |
|---|
| 587 | | |
|---|
| 588 | | struct MFieldFunctions |
|---|
| 589 | | { |
|---|
| 590 | | static void beginEdit(HandledField *pField, |
|---|
| 591 | | UInt32 uiAspect, |
|---|
| 592 | | AspectOffsetStore &oOffsets); |
|---|
| 593 | | |
|---|
| 594 | | static bool isShared (HandledField *pField ); |
|---|
| 595 | | }; |
|---|
| | 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 | |
|---|
| | 494 | typedef typename HandledField::EditHandle EditHandle; |
|---|
| | 495 | typedef typename HandledField::EditHandlePtr EditHandlePtr; |
|---|