| | 258 | |
|---|
| | 259 | template <class FieldT> |
|---|
| | 260 | class DynamicEditSFCPointerFieldHandle : public EditSFCPointerFieldBaseHandle |
|---|
| | 261 | { |
|---|
| | 262 | /*========================== PUBLIC =================================*/ |
|---|
| | 263 | public: |
|---|
| | 264 | /*---------------------------------------------------------------------*/ |
|---|
| | 265 | /*! \name Public Type Information */ |
|---|
| | 266 | /*! \{ */ |
|---|
| | 267 | |
|---|
| | 268 | typedef EditSFCPointerFieldBaseHandle Inherited; |
|---|
| | 269 | typedef DynamicEditSFCPointerFieldHandle<FieldT> Self; |
|---|
| | 270 | typedef boost::shared_ptr<Self> Ptr; |
|---|
| | 271 | |
|---|
| | 272 | typedef FieldT HandledFieldType; |
|---|
| | 273 | typedef typename HandledFieldType::Description HandledFieldDesc; |
|---|
| | 274 | typedef typename HandledFieldType::ValueType HandledFieldValueType; |
|---|
| | 275 | typedef typename HandledFieldType::ArgumentType ArgumentType; |
|---|
| | 276 | |
|---|
| | 277 | typedef boost::function<void (ArgumentType)> SFSetFunction; |
|---|
| | 278 | |
|---|
| | 279 | /*! \} */ |
|---|
| | 280 | /*---------------------------------------------------------------------*/ |
|---|
| | 281 | /*! \name Constructors */ |
|---|
| | 282 | /*! \{ */ |
|---|
| | 283 | |
|---|
| | 284 | DynamicEditSFCPointerFieldHandle(Self const &source ); |
|---|
| | 285 | DynamicEditSFCPointerFieldHandle(Field *pField, |
|---|
| | 286 | FieldDescriptionBase const *pDescription); |
|---|
| | 287 | |
|---|
| | 288 | /*! \} */ |
|---|
| | 289 | /*---------------------------------------------------------------------*/ |
|---|
| | 290 | /*! \name Destructor */ |
|---|
| | 291 | /*! \{ */ |
|---|
| | 292 | |
|---|
| | 293 | virtual ~DynamicEditSFCPointerFieldHandle(void); |
|---|
| | 294 | |
|---|
| | 295 | /*! \} */ |
|---|
| | 296 | /*---------------------------------------------------------------------*/ |
|---|
| | 297 | /*! \name Type Query */ |
|---|
| | 298 | /*! \{ */ |
|---|
| | 299 | |
|---|
| | 300 | virtual FieldType const &getType(void) const; |
|---|
| | 301 | |
|---|
| | 302 | /*! \} */ |
|---|
| | 303 | /*---------------------------------------------------------------------*/ |
|---|
| | 304 | /*! \name Stream IO */ |
|---|
| | 305 | /*! \{ */ |
|---|
| | 306 | |
|---|
| | 307 | virtual void pushValueToStream (OutStream &str) const; |
|---|
| | 308 | virtual void pushSizeToStream (OutStream &str) const; |
|---|
| | 309 | |
|---|
| | 310 | virtual void pushValueFromCString(Char8 const *str); |
|---|
| | 311 | |
|---|
| | 312 | /*! \} */ |
|---|
| | 313 | /*---------------------------------------------------------------------*/ |
|---|
| | 314 | /*! \name Generic Operations */ |
|---|
| | 315 | /*! \{ */ |
|---|
| | 316 | |
|---|
| | 317 | virtual bool equal (EditFieldHandlePtr rhs ); |
|---|
| | 318 | |
|---|
| | 319 | virtual void copyValues (GetFieldHandlePtr source); |
|---|
| | 320 | virtual void shareValues(GetFieldHandlePtr source); |
|---|
| | 321 | |
|---|
| | 322 | virtual void cloneValues( |
|---|
| | 323 | GetFieldHandlePtr pSrc, |
|---|
| | 324 | TypePtrVector const &shareTypes = TypePtrVector(), |
|---|
| | 325 | TypePtrVector const &ignoreTypes = TypePtrVector(), |
|---|
| | 326 | TypeIdVector const &shareGroupIds = TypeIdVector (), |
|---|
| | 327 | TypeIdVector const &ignoreGroupIds = TypeIdVector ()) const; |
|---|
| | 328 | |
|---|
| | 329 | /*! \} */ |
|---|
| | 330 | /*---------------------------------------------------------------------*/ |
|---|
| | 331 | /*! \name Operations */ |
|---|
| | 332 | /*! \{ */ |
|---|
| | 333 | |
|---|
| | 334 | virtual FieldContainer *get(void ) const; |
|---|
| | 335 | virtual void set(FieldContainer * const pNewValue); |
|---|
| | 336 | |
|---|
| | 337 | /*! \} */ |
|---|
| | 338 | /*---------------------------------------------------------------------*/ |
|---|
| | 339 | /*! \name Typed Operations */ |
|---|
| | 340 | /*! \{ */ |
|---|
| | 341 | |
|---|
| | 342 | HandledFieldType *operator->(void) const; |
|---|
| | 343 | HandledFieldType &operator* (void) const; |
|---|
| | 344 | |
|---|
| | 345 | HandledFieldType const *getField (void) const; |
|---|
| | 346 | HandledFieldType *editField (void); |
|---|
| | 347 | |
|---|
| | 348 | /*! \} */ |
|---|
| | 349 | /*========================= PROTECTED ===============================*/ |
|---|
| | 350 | protected: |
|---|
| | 351 | /*---------------------------------------------------------------------*/ |
|---|
| | 352 | /*! \name Helper */ |
|---|
| | 353 | /*! \{ */ |
|---|
| | 354 | |
|---|
| | 355 | HandledFieldType *castFieldDown(void ) const; |
|---|
| | 356 | FieldContainer *castPtrUp (HandledFieldValueType ptr) const; |
|---|
| | 357 | |
|---|
| | 358 | /*! \} */ |
|---|
| | 359 | /*========================== PRIVATE ================================*/ |
|---|
| | 360 | private: |
|---|
| | 361 | }; |
|---|
| | 362 | |
|---|