Skip to content

sco_widgets_v1.set_panel

Atomically adds/replaces an owned complete preorder tree. ID/title <=63 bytes; 1..256 nodes, aligned stride >=80 and node size within stride. Unique nonzero node IDs, parent 0 or preceding active ROW/COLUMN; all subtrees contiguous. Copies valid UTF-8 labels/text/items <=255 bytes; 256 items/node and 16 table columns. Zero unused fields; finite/ranged numeric values and valid selections. Failure preserves old tree/callback.

sco_result (*)(sco_plugin *, const char *, const char *, const sco_widget_node *, uint32_t, uint32_t, sco_widget_event_fn, void *)

Service index

Property Value
Symbol sco_widgets_v1.set_panel
Record ID sco-widgets-v1-set-panel
Service sco.widgets
Table sco_widgets_v1
Version macro SCO_WIDGETS_VERSION_1_1
Packed table version 65537
Since / availability size &gt;= 16; 1.0
Complete member extent (x64 bytes) 16
Table size (x64 bytes) 48

Header source

sco_result (*set_panel)(sco_plugin* self, const char* id, const char* title, const sco_widget_node* nodes, uint32_t count, uint32_t node_stride, sco_widget_event_fn fn, void* ctx);
Atomically adds/replaces an owned complete preorder tree. ID/title <=63 bytes; 1..256 nodes, aligned stride >=80 and node size within stride. Unique nonzero node IDs, parent 0 or preceding active ROW/COLUMN; all subtrees contiguous. Copies valid UTF-8 labels/text/items <=255 bytes; 256 items/node and 16 table columns. Zero unused fields; finite/ranged numeric values and valid selections. Failure preserves old tree/callback.

OK; WRONG_THREAD off game thread; UNAVAILABLE stopped service/host; BAD_ARG malformed owner/ID/title/tree/size/stride/data; TOO_MANY limits or allocation failure. Failure atomic.

query_service NOT_FOUND absent service; UNAVAILABLE incompatible version. No game capability or renderer requirement.

Host deep-copies tree/strings on success; fn/ctx borrowed until successful replacement/removal or ordinary owner release. No allocation transfer.

Game thread only; WRONG_THREAD elsewhere. Callbacks game thread under owner callout guard.

Event, text and panel ID borrowed during callback only; callback ctx is plugin-owned.

Callbacks may invoke commands or replace/remove own panel; generation change drops remaining stale events, new tree renders next pass. Registry lock not held during plugin code.

Successful replacement/removal and ordinary owner release discard stale-generation events and end borrowed callbacks. Fault guard stops delivery; retained-provider faults skip ordinary resource release until restart. No separate cancel token.

Status labels are copied verbatim from the catalogue: direct is native access; typed-wrapper is wrapper-backed; restricted is a subset/adaptation; unsupported means no supported route is established. No status implies universal safety.

Language Catalogue status Source evidence / wrapper tokens
c direct include/sco_widgets.h
(*set_panel)
cpp typed-wrapper include/scosdk/widgets.hpp
return table_->set_panel(self_, id, title, nodes, count, stride, fn, ctx);
csharp typed-wrapper sdk/csharp/Sco.Sdk/Widgets.cs
_t->set_panel(_plugin.SelfPtr
sdk/csharp/Sco.Sdk/Widgets.cs
_t->remove_panel(_plugin.SelfPtr
sdk/csharp/Sco.Sdk/WidgetsInterop.cs
public unsafe struct ScoWidgetsV1
lua typed-wrapper plugins/lua/sco_lua.c
t->set_panel(s->self
plugins/lua/sco_lua.c
t->remove_panel(s->self

ABI pins prove layout, not semantic behavior or a live game session.