Skip to content

sco_ui_v1.register_tab

Adds tab id with its title (1-63 bytes) at order: the product shows tabs by ascending order, ties in registration order. SCO_BAD_ARG: a bad or taken id, an id outside this plugin, a bad title, draw NULL. SCO_TOO_MANY: the host’s tab table is full.

sco_result (*)(sco_plugin *, const char *, const char *, int32_t, sco_ui_draw_fn, void *)

Service index

Property Value
Symbol sco_ui_v1.register_tab
Record ID sco-ui-v1-register-tab
Service sco.ui
Table sco_ui_v1
Version macro SCO_UI_VERSION_1_0
Packed table version 65536
Since / availability size >= 16; 1.0
Complete member extent (x64 bytes) 16
Table size (x64 bytes) 80

Header source

sco_result (*register_tab)(sco_plugin* self, const char* id, const char* title, int32_t order, sco_ui_draw_fn draw, void* ctx);
Adds tab id with its title (1-63 bytes) at order: the product shows tabs by ascending order, ties in registration order. SCO_BAD_ARG: a bad or taken id, an id outside this plugin, a bad title, draw NULL. SCO_TOO_MANY: the host’s tab table is full.

Absent table: query_service NOT_FOUND; stopped self-taking methods: UNAVAILABLE; invalid/released self: BAD_ARG; allocation exceptions: TOO_MANY. Additional failures/output state unspecified unless described in the buffer contract.

Absent table: query_service NOT_FOUND

Strings/arguments copied; draw/ctx borrowed until unregister/unload. Host owns registry; no allocation transfer.

Any thread; draw callbacks game thread. Other recursive reentrancy unspecified.

draw callbacks game thread.

unspecified

unregister_tab/ordinary unload/non-retained crash cleanup ends draws; off-thread unregister does not join an already-running draw. Retained-provider faults skip owner resource-release hooks and require restart; backing resources remain retained, not safe for cached calls. Guarded draws stop, but snapshots and chord reservations remain.

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_ui.h
(*register_tab)
cpp typed-wrapper include/scosdk/ui.hpp
return detail::CanCall(t_, &sco_ui_v1::register_tab) && detail::CanCall(t_, &sco_ui_v1::unregister_tab)
? t_->register_tab(self_, id, title, order, draw, ctx) : SCO_UNAVAILABLE;
csharp typed-wrapper sdk/csharp/Sco.Sdk/Ui.cs
r = _t->register_tab(Self, i, t, order, &DrawTrampoline, (void*)key);
lua unsupported docs/ui.md
Scripts bind hotkeys; tabs and overlays need draw callbacks from Lua

None identified in the catalogue; this is not proof none can exist.

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