| | 291 | |
|---|
| | 292 | /*! \class DynamicEditSFCPointerFieldHandle<FieldT> |
|---|
| | 293 | |
|---|
| | 294 | Concrete \c EditFieldHandle for multi fields that store pointers. |
|---|
| | 295 | |
|---|
| | 296 | \dev |
|---|
| | 297 | Since a dynamically added field can not be manipulated by the container |
|---|
| | 298 | it is added to (the container lacks static type information about the |
|---|
| | 299 | field), this EditHandle does not call back into the container, but |
|---|
| | 300 | manipulates the field directly. |
|---|
| | 301 | \enddev |
|---|
| | 302 | */ |
|---|
| | 303 | |
|---|
| | 304 | /*-------------------------------------------------------------------------*/ |
|---|
| | 305 | /* DynamicEditSFCPointerFieldHandle<FieldT> */ |
|---|
| | 306 | /*-------------------------------------------------------------------------*/ |
|---|
| | 307 | |
|---|
| | 308 | /*-------------------------------------------------------------------------*/ |
|---|
| | 309 | /* Helper */ |
|---|
| | 310 | |
|---|
| | 311 | template <class FieldT> |
|---|
| | 312 | inline typename DynamicEditSFCPointerFieldHandle<FieldT>::HandledFieldType * |
|---|
| | 313 | DynamicEditSFCPointerFieldHandle<FieldT>::castFieldDown(void) const |
|---|
| | 314 | { |
|---|
| | 315 | return static_cast<HandledFieldType *>(_pField); |
|---|
| | 316 | } |
|---|
| | 317 | |
|---|
| | 318 | template <class FieldT> |
|---|
| | 319 | inline FieldContainer * |
|---|
| | 320 | DynamicEditSFCPointerFieldHandle<FieldT>::castPtrUp(HandledFieldValueType ptr) const |
|---|
| | 321 | { |
|---|
| | 322 | return static_cast<FieldContainer *>(static_cast<void *>(ptr)); |
|---|
| | 323 | } |
|---|
| | 324 | |
|---|
| | 325 | /*-------------------------------------------------------------------------*/ |
|---|
| | 326 | /* Constructors */ |
|---|
| | 327 | |
|---|
| | 328 | template <class FieldT> |
|---|
| | 329 | inline |
|---|
| | 330 | DynamicEditSFCPointerFieldHandle<FieldT>::DynamicEditSFCPointerFieldHandle( |
|---|
| | 331 | Self const &other) |
|---|
| | 332 | |
|---|
| | 333 | : Inherited (other) |
|---|
| | 334 | { |
|---|
| | 335 | } |
|---|
| | 336 | |
|---|
| | 337 | template <class FieldT> |
|---|
| | 338 | inline |
|---|
| | 339 | DynamicEditSFCPointerFieldHandle<FieldT>::DynamicEditSFCPointerFieldHandle( |
|---|
| | 340 | Field *pField, |
|---|
| | 341 | FieldDescriptionBase const *pDescription) |
|---|
| | 342 | |
|---|
| | 343 | : Inherited(pField, pDescription) |
|---|
| | 344 | { |
|---|
| | 345 | } |
|---|
| | 346 | |
|---|
| | 347 | /*-------------------------------------------------------------------------*/ |
|---|
| | 348 | /* Destructor */ |
|---|
| | 349 | |
|---|
| | 350 | template <class FieldT> |
|---|
| | 351 | inline |
|---|
| | 352 | DynamicEditSFCPointerFieldHandle<FieldT>::~DynamicEditSFCPointerFieldHandle(void) |
|---|
| | 353 | { |
|---|
| | 354 | } |
|---|
| | 355 | |
|---|
| | 356 | /*-------------------------------------------------------------------------*/ |
|---|
| | 357 | /* Type Query */ |
|---|
| | 358 | |
|---|
| | 359 | template <class FieldT> |
|---|
| | 360 | inline FieldType const & |
|---|
| | 361 | DynamicEditSFCPointerFieldHandle<FieldT>::getType(void) const |
|---|
| | 362 | { |
|---|
| | 363 | return HandledFieldType::getClassType(); |
|---|
| | 364 | } |
|---|
| | 365 | |
|---|
| | 366 | /*-------------------------------------------------------------------------*/ |
|---|
| | 367 | /* Stream IO */ |
|---|
| | 368 | |
|---|
| | 369 | template <class FieldT> |
|---|
| | 370 | inline void |
|---|
| | 371 | DynamicEditSFCPointerFieldHandle<FieldT>::pushValueToStream( |
|---|
| | 372 | OutStream &str) const |
|---|
| | 373 | { |
|---|
| | 374 | FWARNING(("DynamicEditSFCPointerFieldHandle<FieldT>::pushValueToStream(): NIY\n")); |
|---|
| | 375 | } |
|---|
| | 376 | |
|---|
| | 377 | template <class FieldT> |
|---|
| | 378 | inline void |
|---|
| | 379 | DynamicEditSFCPointerFieldHandle<FieldT>::pushSizeToStream( |
|---|
| | 380 | OutStream &str) const |
|---|
| | 381 | { |
|---|
| | 382 | FWARNING(("DynamicEditSFCPointerFieldHandle<FieldT>::pushSizeToStream(): NIY\n")); |
|---|
| | 383 | } |
|---|
| | 384 | |
|---|
| | 385 | template <class FieldT> |
|---|
| | 386 | inline void |
|---|
| | 387 | DynamicEditSFCPointerFieldHandle<FieldT>::pushValueFromCString( |
|---|
| | 388 | Char8 const *str) |
|---|
| | 389 | { |
|---|
| | 390 | FWARNING(("DynamicEditSFCPointerFieldHandle<FieldT>::pushValueFromCString()\n")); |
|---|
| | 391 | } |
|---|
| | 392 | |
|---|
| | 393 | /*-------------------------------------------------------------------------*/ |
|---|
| | 394 | /* Generic Operations */ |
|---|
| | 395 | |
|---|
| | 396 | template <class FieldT> |
|---|
| | 397 | inline bool |
|---|
| | 398 | DynamicEditSFCPointerFieldHandle<FieldT>::equal(EditFieldHandlePtr rhs) |
|---|
| | 399 | { |
|---|
| | 400 | FWARNING(("DynamicEditSFCPointerFieldHandle<FieldT>::equal(): NIY\n")); |
|---|
| | 401 | } |
|---|
| | 402 | |
|---|
| | 403 | template <class FieldT> |
|---|
| | 404 | inline void |
|---|
| | 405 | DynamicEditSFCPointerFieldHandle<FieldT>::copyValues(GetFieldHandlePtr source) |
|---|
| | 406 | { |
|---|
| | 407 | FWARNING(("DynamicEditSFCPointerFieldHandle<FieldT>::copyValues(): NIY\n")); |
|---|
| | 408 | } |
|---|
| | 409 | |
|---|
| | 410 | template <class FieldT> |
|---|
| | 411 | inline void |
|---|
| | 412 | DynamicEditSFCPointerFieldHandle<FieldT>::shareValues(GetFieldHandlePtr source) |
|---|
| | 413 | { |
|---|
| | 414 | FWARNING(("DynamicEditSFCPointerFieldHandle<FieldT>::shareValues(): NIY\n")); |
|---|
| | 415 | } |
|---|
| | 416 | |
|---|
| | 417 | template <class FieldT> |
|---|
| | 418 | inline void |
|---|
| | 419 | DynamicEditSFCPointerFieldHandle<FieldT>::cloneValues( |
|---|
| | 420 | GetFieldHandlePtr pSrc, |
|---|
| | 421 | TypePtrVector const &shareTypes, |
|---|
| | 422 | TypePtrVector const &ignoreTypes, |
|---|
| | 423 | TypeIdVector const &shareGroupIds, |
|---|
| | 424 | TypeIdVector const &ignoreGroupIds) const |
|---|
| | 425 | { |
|---|
| | 426 | FWARNING(("DynamicEditSFCPointerFieldHandle<FieldT>::cloneValues(): NIY\n")); |
|---|
| | 427 | } |
|---|
| | 428 | |
|---|
| | 429 | /*-------------------------------------------------------------------------*/ |
|---|
| | 430 | /* Operations */ |
|---|
| | 431 | |
|---|
| | 432 | template <class FieldT> |
|---|
| | 433 | inline FieldContainer * |
|---|
| | 434 | DynamicEditSFCPointerFieldHandle<FieldT>::get(void) const |
|---|
| | 435 | { |
|---|
| | 436 | return castPtrUp(castFieldDown()->getValue()); |
|---|
| | 437 | } |
|---|
| | 438 | |
|---|
| | 439 | template <class FieldT> |
|---|
| | 440 | inline void |
|---|
| | 441 | DynamicEditSFCPointerFieldHandle<FieldT>::set(FieldContainer * const pNewValue) |
|---|
| | 442 | { |
|---|
| | 443 | HandledFieldValueType pTypedNewValue = |
|---|
| | 444 | dynamic_cast<HandledFieldValueType>(pNewValue); |
|---|
| | 445 | |
|---|
| | 446 | if(pTypedNewValue != NULL) |
|---|
| | 447 | { |
|---|
| | 448 | castFieldDown()->setValue(pTypedNewValue); |
|---|
| | 449 | } |
|---|
| | 450 | } |
|---|
| | 451 | |
|---|
| | 452 | /*-------------------------------------------------------------------------*/ |
|---|
| | 453 | /* Typed Operations */ |
|---|
| | 454 | |
|---|
| | 455 | template <class FieldT> |
|---|
| | 456 | inline typename |
|---|
| | 457 | DynamicEditSFCPointerFieldHandle<FieldT>::HandledFieldType * |
|---|
| | 458 | DynamicEditSFCPointerFieldHandle<FieldT>::operator->(void) const |
|---|
| | 459 | { |
|---|
| | 460 | return castFieldDown(); |
|---|
| | 461 | } |
|---|
| | 462 | |
|---|
| | 463 | template <class FieldT> |
|---|
| | 464 | inline typename |
|---|
| | 465 | DynamicEditSFCPointerFieldHandle<FieldT>::HandledFieldType & |
|---|
| | 466 | DynamicEditSFCPointerFieldHandle<FieldT>::operator*(void) const |
|---|
| | 467 | { |
|---|
| | 468 | return *castFieldDown(); |
|---|
| | 469 | } |
|---|
| | 470 | |
|---|
| | 471 | template <class FieldT> |
|---|
| | 472 | inline typename |
|---|
| | 473 | DynamicEditSFCPointerFieldHandle<FieldT>::HandledFieldType const * |
|---|
| | 474 | DynamicEditSFCPointerFieldHandle<FieldT>::getField(void) const |
|---|
| | 475 | { |
|---|
| | 476 | return castFieldDown(); |
|---|
| | 477 | } |
|---|
| | 478 | |
|---|
| | 479 | template <class FieldT> |
|---|
| | 480 | inline typename |
|---|
| | 481 | DynamicEditSFCPointerFieldHandle<FieldT>::HandledFieldType * |
|---|
| | 482 | DynamicEditSFCPointerFieldHandle<FieldT>::editField(void) |
|---|
| | 483 | { |
|---|
| | 484 | return castFieldDown(); |
|---|
| | 485 | } |
|---|
| | 486 | |
|---|
| | 487 | |
|---|