deargui-vpl/applications/nodehub/core/ParameterIn.cpp
2026-02-03 18:25:25 +01:00

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);
}