82 lines
2.3 KiB
C++
82 lines
2.3 KiB
C++
#include "./ParameterIn.h"
|
|
#include "./Context.h"
|
|
#include "ParameterManager.h"
|
|
|
|
NH_ParameterIn::NH_ParameterIn(int id, NH_CSTRING name) : NH_Parameter(id, name) {
|
|
m_ObjectFlags &= ~NH_PARAMETERIN_SHARED;
|
|
m_DirectSource = nullptr;
|
|
}
|
|
|
|
NH_Parameter* NH_ParameterIn::GetRealSource() {
|
|
if (m_ObjectFlags & NH_PARAMETERIN_SHARED) {
|
|
if (m_SharedSource) return m_SharedSource->GetRealSource();
|
|
} else {
|
|
return m_DirectSource;
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
NH_Parameter* NH_ParameterIn::GetDirectSource() {
|
|
if (m_ObjectFlags & NH_PARAMETERIN_SHARED) return nullptr;
|
|
return m_DirectSource;
|
|
}
|
|
|
|
NH_ERROR NH_ParameterIn::SetDirectSource(NH_Parameter* param) {
|
|
m_ObjectFlags &= ~NH_PARAMETERIN_SHARED;
|
|
m_DirectSource = param;
|
|
return E_OK;
|
|
}
|
|
|
|
NH_ParameterIn* NH_ParameterIn::GetSharedSource() {
|
|
if (!(m_ObjectFlags & NH_PARAMETERIN_SHARED)) return nullptr;
|
|
return m_SharedSource;
|
|
}
|
|
|
|
NH_ERROR NH_ParameterIn::ShareSourceWith(NH_ParameterIn* param) {
|
|
m_ObjectFlags |= NH_PARAMETERIN_SHARED;
|
|
m_SharedSource = param;
|
|
return E_OK;
|
|
}
|
|
|
|
NH_ERROR NH_ParameterIn::GetValue(void* buf, NH_BOOL update) {
|
|
// Stub implementation
|
|
NH_Parameter* src = GetRealSource();
|
|
if (!src) return E_FAIL;
|
|
return src->GetValue(buf, update);
|
|
}
|
|
|
|
void* NH_ParameterIn::GetReadDataPtr(NH_BOOL update) {
|
|
// Stub implementation
|
|
NH_Parameter* src = GetRealSource();
|
|
if (!src) return nullptr;
|
|
return src->GetReadDataPtr(update);
|
|
}
|
|
|
|
NH_ERROR NH_ParameterIn::SetValue(const void* buf, int size) {
|
|
// Input parameters are read-only
|
|
return E_ACCESSDENIED;
|
|
}
|
|
|
|
void* NH_ParameterIn::GetWriteDataPtr() {
|
|
// Input parameters are read-only
|
|
return nullptr;
|
|
}
|
|
|
|
NH_ERROR NH_ParameterIn::CopyValue(NH_Parameter* param, NH_BOOL UpdateParam) {
|
|
NH_Parameter* src = GetRealSource();
|
|
if (!src || !param) return E_FAIL;
|
|
return src->CopyValue(param, UpdateParam);
|
|
}
|
|
|
|
NH_ERROR NH_ParameterIn::SetStringValue(NH_STRING Value) {
|
|
NH_Parameter* src = GetRealSource();
|
|
if (!src) return E_FAIL;
|
|
return src->SetStringValue(Value);
|
|
}
|
|
|
|
int NH_ParameterIn::GetStringValue(NH_STRING Value, NH_BOOL update) {
|
|
NH_Parameter* src = GetRealSource();
|
|
if (!src) return E_FAIL;
|
|
return src->GetStringValue(Value, update);
|
|
}
|