remove ODBC check from global rules; fix indentation in Poco::Any

This commit is contained in:
Aleksandar Fabijanic 2012-09-21 05:11:25 +00:00
parent f7bd6a8fec
commit f36a12d0f1
2 changed files with 97 additions and 127 deletions

View File

@ -54,117 +54,117 @@ class Any
/// by Applied Informatics. /// by Applied Informatics.
{ {
public: public:
Any(): Any():
_content(0) _content(0)
/// Creates an empty any type. /// Creates an empty any type.
{ {
} }
template <typename ValueType> template <typename ValueType>
Any(const ValueType& value): Any(const ValueType& value):
_content(new Holder<ValueType>(value)) _content(new Holder<ValueType>(value))
/// Creates an any which stores the init parameter inside. /// Creates an any which stores the init parameter inside.
/// ///
/// Example: /// Example:
/// Any a(13); /// Any a(13);
/// Any a(string("12345")); /// Any a(string("12345"));
{ {
} }
Any(const Any& other): Any(const Any& other):
_content(other._content ? other._content->clone() : 0) _content(other._content ? other._content->clone() : 0)
/// Copy constructor, works with empty Anys and initialized Any values. /// Copy constructor, works with empty Anys and initialized Any values.
{ {
} }
~Any() ~Any()
{ {
delete _content; delete _content;
} }
Any& swap(Any& rhs) Any& swap(Any& rhs)
/// Swaps the content of the two Anys. /// Swaps the content of the two Anys.
{ {
std::swap(_content, rhs._content); std::swap(_content, rhs._content);
return *this; return *this;
} }
template <typename ValueType> template <typename ValueType>
Any& operator = (const ValueType& rhs) Any& operator = (const ValueType& rhs)
/// Assignment operator for all types != Any. /// Assignment operator for all types != Any.
/// ///
/// Example: /// Example:
/// Any a = 13; /// Any a = 13;
/// Any a = string("12345"); /// Any a = string("12345");
{ {
Any(rhs).swap(*this); Any(rhs).swap(*this);
return *this; return *this;
} }
Any& operator = (const Any& rhs) Any& operator = (const Any& rhs)
/// Assignment operator for Any. /// Assignment operator for Any.
{ {
Any(rhs).swap(*this); Any(rhs).swap(*this);
return *this; return *this;
} }
bool empty() const bool empty() const
/// returns true if the Any is empty /// returns true if the Any is empty
{ {
return !_content; return !_content;
} }
const std::type_info& type() const const std::type_info& type() const
/// Returns the type information of the stored content. /// Returns the type information of the stored content.
/// If the Any is empty typeid(void) is returned. /// If the Any is empty typeid(void) is returned.
/// It is suggested to always query an Any for its type info before trying to extract /// It is suggested to always query an Any for its type info before trying to extract
/// data via an AnyCast/RefAnyCast. /// data via an AnyCast/RefAnyCast.
{ {
return _content ? _content->type() : typeid(void); return _content ? _content->type() : typeid(void);
} }
private: private:
class Placeholder class Placeholder
{ {
public: public:
virtual ~Placeholder() virtual ~Placeholder()
{ {
} }
virtual const std::type_info& type() const = 0; virtual const std::type_info& type() const = 0;
virtual Placeholder* clone() const = 0; virtual Placeholder* clone() const = 0;
}; };
template <typename ValueType> template <typename ValueType>
class Holder: public Placeholder class Holder: public Placeholder
{ {
public: public:
Holder(const ValueType& value): Holder(const ValueType& value):
_held(value) _held(value)
{ {
} }
virtual const std::type_info& type() const virtual const std::type_info& type() const
{ {
return typeid(ValueType); return typeid(ValueType);
} }
virtual Placeholder* clone() const virtual Placeholder* clone() const
{ {
return new Holder(_held); return new Holder(_held);
} }
ValueType _held; ValueType _held;
}; };
private: private:
template <typename ValueType> template <typename ValueType>
friend ValueType* AnyCast(Any*); friend ValueType* AnyCast(Any*);
template <typename ValueType> template <typename ValueType>
friend ValueType* UnsafeAnyCast(Any*); friend ValueType* UnsafeAnyCast(Any*);
Placeholder* _content; Placeholder* _content;
}; };
@ -174,12 +174,12 @@ ValueType* AnyCast(Any* operand)
/// to the stored value. /// to the stored value.
/// ///
/// Example Usage: /// Example Usage:
/// MyType* pTmp = AnyCast<MyType*>(pAny). /// MyType* pTmp = AnyCast<MyType*>(pAny).
/// Will return NULL if the cast fails, i.e. types don't match. /// Will return NULL if the cast fails, i.e. types don't match.
{ {
return operand && operand->type() == typeid(ValueType) return operand && operand->type() == typeid(ValueType)
? &static_cast<Any::Holder<ValueType>*>(operand->_content)->_held ? &static_cast<Any::Holder<ValueType>*>(operand->_content)->_held
: 0; : 0;
} }
@ -189,10 +189,10 @@ const ValueType* AnyCast(const Any* operand)
/// to the stored value. /// to the stored value.
/// ///
/// Example Usage: /// Example Usage:
/// const MyType* pTmp = AnyCast<MyType*>(pAny). /// const MyType* pTmp = AnyCast<MyType*>(pAny).
/// Will return NULL if the cast fails, i.e. types don't match. /// Will return NULL if the cast fails, i.e. types don't match.
{ {
return AnyCast<ValueType>(const_cast<Any*>(operand)); return AnyCast<ValueType>(const_cast<Any*>(operand));
} }
@ -201,15 +201,15 @@ ValueType AnyCast(const Any& operand)
/// AnyCast operator used to extract a copy of the ValueType from an const Any&. /// AnyCast operator used to extract a copy of the ValueType from an const Any&.
/// ///
/// Example Usage: /// Example Usage:
/// MyType tmp = AnyCast<MyType>(anAny). /// MyType tmp = AnyCast<MyType>(anAny).
/// Will throw a BadCastException if the cast fails. /// Will throw a BadCastException if the cast fails.
/// Dont use an AnyCast in combination with references, i.e. MyType& tmp = ... or const MyType& = ... /// Dont use an AnyCast in combination with references, i.e. MyType& tmp = ... or const MyType& = ...
/// Some compilers will accept this code although a copy is returned. Use the RefAnyCast in /// Some compilers will accept this code although a copy is returned. Use the RefAnyCast in
/// these cases. /// these cases.
{ {
ValueType* result = AnyCast<ValueType>(const_cast<Any*>(&operand)); ValueType* result = AnyCast<ValueType>(const_cast<Any*>(&operand));
if (!result) throw BadCastException("Failed to convert between const Any types"); if (!result) throw BadCastException("Failed to convert between const Any types");
return *result; return *result;
} }
@ -218,15 +218,15 @@ ValueType AnyCast(Any& operand)
/// AnyCast operator used to extract a copy of the ValueType from an Any&. /// AnyCast operator used to extract a copy of the ValueType from an Any&.
/// ///
/// Example Usage: /// Example Usage:
/// MyType tmp = AnyCast<MyType>(anAny). /// MyType tmp = AnyCast<MyType>(anAny).
/// Will throw a BadCastException if the cast fails. /// Will throw a BadCastException if the cast fails.
/// Dont use an AnyCast in combination with references, i.e. MyType& tmp = ... or const MyType& tmp = ... /// Dont use an AnyCast in combination with references, i.e. MyType& tmp = ... or const MyType& tmp = ...
/// Some compilers will accept this code although a copy is returned. Use the RefAnyCast in /// Some compilers will accept this code although a copy is returned. Use the RefAnyCast in
/// these cases. /// these cases.
{ {
ValueType* result = AnyCast<ValueType>(&operand); ValueType* result = AnyCast<ValueType>(&operand);
if (!result) throw BadCastException("Failed to convert between Any types"); if (!result) throw BadCastException("Failed to convert between Any types");
return *result; return *result;
} }
@ -235,11 +235,11 @@ const ValueType& RefAnyCast(const Any & operand)
/// AnyCast operator used to return a const reference to the internal data. /// AnyCast operator used to return a const reference to the internal data.
/// ///
/// Example Usage: /// Example Usage:
/// const MyType& tmp = RefAnyCast<MyType>(anAny); /// const MyType& tmp = RefAnyCast<MyType>(anAny);
{ {
ValueType* result = AnyCast<ValueType>(const_cast<Any*>(&operand)); ValueType* result = AnyCast<ValueType>(const_cast<Any*>(&operand));
if (!result) throw BadCastException("RefAnyCast: Failed to convert between const Any types"); if (!result) throw BadCastException("RefAnyCast: Failed to convert between const Any types");
return *result; return *result;
} }
@ -248,11 +248,11 @@ ValueType& RefAnyCast(Any& operand)
/// AnyCast operator used to return a reference to the internal data. /// AnyCast operator used to return a reference to the internal data.
/// ///
/// Example Usage: /// Example Usage:
/// MyType& tmp = RefAnyCast<MyType>(anAny); /// MyType& tmp = RefAnyCast<MyType>(anAny);
{ {
ValueType* result = AnyCast<ValueType>(&operand); ValueType* result = AnyCast<ValueType>(&operand);
if (!result) throw BadCastException("RefAnyCast: Failed to convert between Any types"); if (!result) throw BadCastException("RefAnyCast: Failed to convert between Any types");
return *result; return *result;
} }
@ -264,7 +264,7 @@ ValueType* UnsafeAnyCast(Any* operand)
/// use typeid() comparison, e.g., when our types may travel across /// use typeid() comparison, e.g., when our types may travel across
/// different shared libraries. /// different shared libraries.
{ {
return &static_cast<Any::Holder<ValueType>*>(operand->_content)->_held; return &static_cast<Any::Holder<ValueType>*>(operand->_content)->_held;
} }
@ -276,7 +276,7 @@ const ValueType* UnsafeAnyCast(const Any* operand)
/// use typeid() comparison, e.g., when our types may travel across /// use typeid() comparison, e.g., when our types may travel across
/// different shared libraries. /// different shared libraries.
{ {
return AnyCast<ValueType>(const_cast<Any*>(operand)); return AnyCast<ValueType>(const_cast<Any*>(operand));
} }

View File

@ -270,36 +270,6 @@ INCLUDE = $(foreach p,$(POCO_ADD_INCLUDE),-I$(p)) -Iinclude $(foreach p,$(COMPON
# #
LIBRARY = $(foreach p,$(POCO_ADD_LIBRARY),-L$(p)) -L$(LIBPATH) $(POCO_LIBRARY) LIBRARY = $(foreach p,$(POCO_ADD_LIBRARY),-L$(p)) -L$(LIBPATH) $(POCO_LIBRARY)
#
# Build ODBC Include directory List if not supplied from config
#
ifndef POCO_ODBC_INCLUDE
POCO_ODBC_INCLUDE = -I/usr/local/include -I/usr/include -I/usr/include/odbc -I/usr/local/include/odbc
endif
#
# Build ODBC library directory if not supplied from config
#
ifndef POCO_NO_ODBC
ifndef POCO_ODBC_LIBRARY
ifeq (0, $(shell test -e $/usr/lib/libodbc$(LIBLINKEXT); echo $$?))
POCO_ODBC_LIBRARY = /usr/lib$(LIB64SUFFIX)
else
ifeq (0, $(shell test -e $/usr/local/lib/libodbc$(LIBLINKEXT); echo $$?))
POCO_ODBC_LIBRARY = /usr/local/lib$(LIB64SUFFIX)
else
ifeq (0, $(shell test -e $/usr/local/lib/libodbc$(LIBLINKEXT); echo $$?))
POCO_ODBC_LIBRARY = /usr/lib$(LIB64SUFFIX)/odbc
else
ifeq (0, $(shell test -e $/usr/local/lib/libodbc$(LIBLINKEXT); echo $$?))
POCO_ODBC_LIBRARY = /usr/local/lib$(LIB64SUFFIX)/odbc
endif
endif
endif
endif
endif
endif
# #
# Strip Command definition # Strip Command definition
# #