xo-procedure2: work on Primitive.apply_nocheck() + ARuntimeContext [WIP]

This commit is contained in:
Roland Conybeare 2026-01-25 19:07:23 -05:00
commit f2139feafb
22 changed files with 667 additions and 25 deletions

View file

@ -0,0 +1,17 @@
{
mode: "implementation",
includes: [
"<xo/procedure2/RuntimeContext.hpp>",
"<xo/procedure2/detail/IRuntimeContext_Xfer.hpp>",
"<xo/procedure2/Procedure.hpp>",
"<xo/procedure2/detail/IProcedure_Xfer.hpp>",
],
local_types: [ ],
namespace1: "xo",
namespace2: "scm",
facet_idl: "idl/Procedure.json5",
brief: "provide AProcedure interface for Primitive (gco x gco) -> gco",
using_doxygen: true,
repr: "DPrimitive_gco_2_gco_gco",
doc: [ "implement AProcedure for DPrimitive (gco x gco) -> gco" ],
}

View file

@ -2,14 +2,19 @@
mode: "facet",
// includes in ASyntaxStateMachine.hpp
includes: [
"\"RuntimeContext.hpp\"",
"<xo/gc/GCObject.hpp>",
],
// extra includes in SyntaxStateMachine.hpp, if any
// extra includes in Procedure.hpp, if any
user_hpp_includes: [
],
namespace1: "xo",
namespace2: "scm",
// text after includes, before ASyntaxStateMachine
pretext: [ "// {pretex} here" ],
pretext: [
//"namespace xo { namespace scm { class ARuntimeContext; } }",
"namespace xo { namespace scm { class DArray; } }",
],
facet: "Procedure",
detail_subdir: "detail",
brief: "abstraction for a schematika procedure i.e. something callable",
@ -18,9 +23,10 @@
"Abstraction for a schematika procedure"
],
types: [
{ name: "AGCObject",
definition: "xo::mm::AGCObject",
doc: [ "a gc-aware object" ],
{
name: "AGCObject",
definition: "xo::mm::AGCObject",
doc: [ "a gc-aware object" ],
},
// { name: string, doc: [ string ], definition: string },
],
@ -50,7 +56,7 @@
doc: ["invoke procedure; assume arguments satisfy type system" ],
return_type: "obj<AGCObject>",
args: [
{type: "obj<AAllocator>", name: "mm"},
{type: "obj<ARuntimeContext>", name: "rcx"},
{type: "const DArray *", name: "args"},
]
}

43
idl/RuntimeContext.json5 Normal file
View file

@ -0,0 +1,43 @@
{
mode: "facet",
// includes in ARuntimeContext.hpp
includes: [
"<xo/alloc2/Allocator.hpp>"
],
// extra includes in RuntimeContext.hpp, if any
user_hpp_includes: [
],
namespace1: "xo",
namespace2: "scm",
// text after includes, before ARuntimeContext
pretext: [
//"namespace xo { namespace mm { class AAllocator; } }",
],
facet: "RuntimeContext",
detail_subdir: "detail",
brief: "runtime context for application code. At minimum provides allocator",
using_doxygen: true,
doc: [
"Runtime application context"
],
types: [
{
name: "AAllocator",
definition: "xo::mm::AAllocator",
doc: [ "xo memory allocator" ],
},
],
const_methods: [
{
name: "allocator",
doc: [ "default allocator to use for objects" ],
return_type: "obj<AAllocator>",
args: [],
const: true,
noexcept: true,
attributes: [],
},
],
nonconst_methods: [
],
}