few more POCO_NO_SOO compile fixes

This commit is contained in:
aleks-f 2013-04-03 21:05:22 -05:00
Родитель acbcfc140a
Коммит 5873c8e362
1 изменённых файлов: 45 добавлений и 6 удалений

Просмотреть файл

@ -59,12 +59,9 @@ template <class> class VarHolderImpl;
} }
template <typename PlaceholderT
#ifndef POCO_NO_SOO #ifndef POCO_NO_SOO
, unsigned int SizeV = POCO_SMALL_OBJECT_SIZE
#endif template <typename PlaceholderT, unsigned int SizeV = POCO_SMALL_OBJECT_SIZE>
>
union Placeholder union Placeholder
/// ValueHolder union (used by Poco::Any and Poco::Dynamic::Var for small /// ValueHolder union (used by Poco::Any and Poco::Dynamic::Var for small
/// object optimization). /// object optimization).
@ -112,7 +109,7 @@ public:
// MSVC71,80 won't extend friendship to nested class (Any::Holder) // MSVC71,80 won't extend friendship to nested class (Any::Holder)
#if !defined(POCO_MSVC_VERSION) || (defined(POCO_MSVC_VERSION) && (POCO_MSVC_VERSION > 80)) #if !defined(POCO_MSVC_VERSION) || (defined(POCO_MSVC_VERSION) && (POCO_MSVC_VERSION > 80))
// private: private:
#endif #endif
PlaceholderT* pHolder; PlaceholderT* pHolder;
@ -127,6 +124,48 @@ public:
}; };
#else // !POCO_NO_SOO
template <typename PlaceholderT>
union Placeholder
/// ValueHolder union (used by Poco::Any and Poco::Dynamic::Var for small
/// object optimization).
///
/// If Holder<Type> fits into POCO_SMALL_OBJECT_SIZE bytes of storage,
/// it will be placement-new-allocated into the local buffer
/// (i.e. there will be no heap-allocation). The local buffer size is one byte
/// larger - [POCO_SMALL_OBJECT_SIZE + 1], additional byte value indicating
/// where the object was allocated (0 => heap, 1 => local).
{
public:
Placeholder ()
{
}
PlaceholderT* content() const
{
return pHolder;
}
// MSVC71,80 won't extend friendship to nested class (Any::Holder)
#if !defined(POCO_MSVC_VERSION) || (defined(POCO_MSVC_VERSION) && (POCO_MSVC_VERSION > 80))
private:
#endif
PlaceholderT* pHolder;
friend class Any;
friend class Dynamic::Var;
friend class Dynamic::VarHolder;
template <class> friend class Dynamic::VarHolderImpl;
};
#endif // POCO_NO_SOO
class Any class Any
/// An Any class represents a general type and is capable of storing any type, supporting type-safe extraction /// An Any class represents a general type and is capable of storing any type, supporting type-safe extraction
/// of the internally stored data. /// of the internally stored data.