namespace PineScriptV6
{
///
/// Pine Script의 var 선언 변수 및 := 재할당 변수를 저장합니다.
/// 봉 간에 상태가 유지됩니다 (inLong, inShort 등).
///
public static class PineStateVars
{
private static readonly Dictionary _vars = new();
///
/// var 선언 전용 — 최초 1회만 초기화 (이미 존재하면 무시)
///
public static void Declare(string name, object? initialValue)
{
if (!_vars.ContainsKey(name))
_vars[name] = initialValue;
}
/// 일반 대입 / := 재할당 모두 사용
public static void Set(string name, object? value) => _vars[name] = value;
public static object? Get(string name) =>
_vars.TryGetValue(name, out var v) ? v : null;
public static bool Has(string name) => _vars.ContainsKey(name);
/// 단일 딕셔너리 조회 — Has+Get 이중 조회 대신 사용
public static bool TryGet(string name, out object? value) =>
_vars.TryGetValue(name, out value);
/// 전체 초기화 (재실행 시)
public static void Clear() => _vars.Clear();
}
}