1234567891011121314151617181920212223242526272829303132333435 |
- #ifndef SERIALIZE_PTR_INL_H_
- #error "Direct inclusion of this file is not allowed, include serialize.h"
- // For the sake of sane code completion.
- #include "serialize.h"
- #endif
- #include "new.h"
- ////////////////////////////////////////////////////////////////////////////////
- template <class T>
- void TSerializer<NYT::TIntrusivePtr<T>>::Save(IOutputStream* output, const NYT::TIntrusivePtr<T>& ptr)
- {
- bool hasValue = ptr.operator bool();
- ::Save(output, hasValue);
- if (hasValue) {
- ::Save(output, *ptr);
- }
- }
- template <class T>
- void TSerializer<NYT::TIntrusivePtr<T>>::Load(IInputStream* input, NYT::TIntrusivePtr<T>& ptr)
- {
- bool hasValue;
- ::Load(input, hasValue);
- if (hasValue) {
- auto tmp = NYT::New<T>();
- ::Load(input, *tmp);
- ptr = std::move(tmp);
- } else {
- ptr.Reset();
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
|