feat(c-abi): expose warmup_period / is_ready across the C ABI bindings (#297)
* feat(c-abi): expose warmup_period / is_ready across the C ABI bindings The C ABI hub exposed new/update/batch/reset/free per indicator but not the Indicator::warmup_period / is_ready queries that the native (Python/Node/WASM) bindings already had, so C/C#/Go/Java/R callers could not ask an indicator whether it was warmed up without feeding it and watching for NaN. Regenerated from the ScriptHelpers capi + language generators: - bindings/c: wickra_<ind>_warmup_period (size_t) and wickra_<ind>_is_ready (bool) for every indicator (504; the 10 alt-chart bar builders are excluded by design). wickra.h regenerated via cbindgen (additive only). - bindings/csharp: int WarmupPeriod() / bool IsReady() on each wrapper. - bindings/go: WarmupPeriod() int / IsReady() bool. - bindings/java: int warmupPeriod() / boolean isReady(). - bindings/r: C glue + registration; hand-written warmup_period() / is_ready() S3 generics in methods.R, plus NAMESPACE exports. Tests: C-ABI Rust unit tests, the C examples/archetypes.c suite, and the C#, Go, Java and R archetype suites all gain a warmup/is_ready transition check. * build(go): sync vendored wickra.h with the C ABI header The Go binding vendors bindings/c/include/wickra.h; refresh it with the new warmup_period / is_ready declarations so the CI sync check passes.
This commit is contained in:
@@ -76,3 +76,45 @@ reset.wickra_indicator <- function(object) {
|
||||
.Call(paste0("wk_", object$prefix, "_reset"), object$ptr, PACKAGE = "wickra")
|
||||
invisible(object)
|
||||
}
|
||||
|
||||
#' Number of updates an indicator needs before it produces a value
|
||||
#'
|
||||
#' Not available for the alt-chart bar builders ([RenkoBars()], [KagiBars()],
|
||||
#' [PointAndFigureBars()], …), which have no warmup.
|
||||
#'
|
||||
#' @param object A `wickra_indicator`.
|
||||
#' @return A single integer: the warmup period.
|
||||
#' @examples
|
||||
#' warmup_period(Sma(14)) # 14
|
||||
#' @export
|
||||
warmup_period <- function(object) {
|
||||
UseMethod("warmup_period")
|
||||
}
|
||||
|
||||
#' @rdname warmup_period
|
||||
#' @export
|
||||
warmup_period.wickra_indicator <- function(object) {
|
||||
.Call(paste0("wk_", object$prefix, "_warmup_period"), object$ptr, PACKAGE = "wickra")
|
||||
}
|
||||
|
||||
#' Whether an indicator has consumed enough input to emit a value
|
||||
#'
|
||||
#' Not available for the alt-chart bar builders, which have no warmup.
|
||||
#'
|
||||
#' @param object A `wickra_indicator`.
|
||||
#' @return A single logical.
|
||||
#' @examples
|
||||
#' sma <- Sma(3)
|
||||
#' is_ready(sma) # FALSE
|
||||
#' for (x in c(1, 2, 3)) update(sma, x)
|
||||
#' is_ready(sma) # TRUE
|
||||
#' @export
|
||||
is_ready <- function(object) {
|
||||
UseMethod("is_ready")
|
||||
}
|
||||
|
||||
#' @rdname is_ready
|
||||
#' @export
|
||||
is_ready.wickra_indicator <- function(object) {
|
||||
.Call(paste0("wk_", object$prefix, "_is_ready"), object$ptr, PACKAGE = "wickra")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user