Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions source/MaterialXCore/Library.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
#pragma warning(disable : 4661)
#define MATERIALX_SYMBOL_EXPORT __declspec(dllexport)
#define MATERIALX_SYMBOL_IMPORT __declspec(dllimport)
#define MATERIALX_EXPORT_EXTERN_TEMPLATE(...) template class MATERIALX_SYMBOL_EXPORT __VA_ARGS__
#define MATERIALX_IMPORT_EXTERN_TEMPLATE(...) extern template class MATERIALX_SYMBOL_IMPORT __VA_ARGS__
#define MATERIALX_EXPORT_EXTERN_TEMPLATE(...) template class __VA_ARGS__
#define MATERIALX_IMPORT_EXTERN_TEMPLATE(...) extern template class __VA_ARGS__
#else
#define MATERIALX_SYMBOL_EXPORT __attribute__((__visibility__("default")))
#define MATERIALX_SYMBOL_IMPORT __attribute__((__visibility__("default")))
Expand Down
18 changes: 9 additions & 9 deletions source/MaterialXCore/Value.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -449,15 +449,15 @@ template <class T> class ValueRegistry
// Template instantiations
//

#define INSTANTIATE_TYPE(T, name) \
template <> const string TypedValue<T>::TYPE = name; \
template <> const string& TypedValue<T>::getTypeString() const { return TYPE; } \
template <> string TypedValue<T>::getValueString() const { return toValueString<T>(_data); } \
template MX_CORE_API bool Value::isA<T>() const; \
template MX_CORE_API const T& Value::asA<T>() const; \
template MX_CORE_API const string& getTypeString<T>(); \
template MX_CORE_API string toValueString(const T& data); \
template MX_CORE_API T fromValueString(const string& value); \
#define INSTANTIATE_TYPE(T, name) \
template <> MX_CORE_API const string TypedValue<T>::TYPE = name; \
template <> MX_CORE_API const string& TypedValue<T>::getTypeString() const { return TYPE; } \
template <> MX_CORE_API string TypedValue<T>::getValueString() const { return toValueString<T>(_data); } \
template MX_CORE_API bool Value::isA<T>() const; \
template MX_CORE_API const T& Value::asA<T>() const; \
template MX_CORE_API const string& getTypeString<T>(); \
template MX_CORE_API string toValueString(const T& data); \
template MX_CORE_API T fromValueString(const string& value); \
ValueRegistry<T> registry##T;

// Base types
Expand Down
26 changes: 13 additions & 13 deletions source/MaterialXCore/Value.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,51 +124,51 @@ class MX_CORE_API Value
};

/// The class template for typed subclasses of Value
template <class T> class MX_CORE_API TypedValue : public Value
template <class T> class TypedValue : public Value
{
public:
TypedValue() :
MX_CORE_API TypedValue() :
_data{}
{
}
explicit TypedValue(const T& value) :
MX_CORE_API explicit TypedValue(const T& value) :
_data(value)
{
}
virtual ~TypedValue() { }
MX_CORE_API virtual ~TypedValue() { }

/// Create a deep copy of the value.
ValuePtr copy() const override
MX_CORE_API ValuePtr copy() const override
{
return Value::createValue<T>(_data);
}

/// Set stored data object.
void setData(const T& value)
MX_CORE_API void setData(const T& value)
{
_data = value;
}

/// Set stored data object.
void setData(const TypedValue<T>& value)
MX_CORE_API void setData(const TypedValue<T>& value)
{
_data = value._data;
}

/// Return stored data object.
const T& getData() const
MX_CORE_API const T& getData() const
{
return _data;
}

/// Return type string.
const string& getTypeString() const override;
MX_CORE_API const string& getTypeString() const override;

/// Return value string.
string getValueString() const override;
MX_CORE_API string getValueString() const override;

// Returns true if value data matches.
bool isEqual(ConstValuePtr other) const override
MX_CORE_API bool isEqual(ConstValuePtr other) const override
{
if (!other || !other->isA<T>())
{
Expand All @@ -184,10 +184,10 @@ template <class T> class MX_CORE_API TypedValue : public Value
/// Create a new value of this type from a value string.
/// @return A shared pointer to a typed value, or an empty shared pointer
/// if the conversion to the given data type cannot be performed.
static ValuePtr createFromString(const string& value);
MX_CORE_API static ValuePtr createFromString(const string& value);

public:
static const string TYPE;
MX_CORE_API static const string TYPE;

private:
T _data;
Expand Down