mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 21:29:19 +02:00
document sexp_lookup_type (issue #718)
This commit is contained in:
parent
79e76b295f
commit
54f55569e2
2 changed files with 15 additions and 4 deletions
|
@ -938,16 +938,27 @@ NULL in which case the pointers are never freed, or otherwise a
|
||||||
procedure of one argument which should release any resources.
|
procedure of one argument which should release any resources.
|
||||||
}}
|
}}
|
||||||
|
|
||||||
\item{\ccode{sexp sexp_make_cpointer(sexp ctx, sexp_uint_t type_id, void* value, sexp parent, int freep)}
|
\item{\ccode{sexp sexp_make_cpointer(sexp ctx, sexp_uint_t type_tag, void* value, sexp parent, int freep)}
|
||||||
\p{
|
\p{
|
||||||
Creates a new instance of the type indicated by type_id wrapping
|
Creates a new instance of the type indicated by type_tag wrapping
|
||||||
value. If parent is provided, references to the child will also
|
value. If parent is provided, references to the child will also
|
||||||
preserve the parent, important e.g. to preserve an enclosing struct
|
preserve the parent, important e.g. to preserve an enclosing struct
|
||||||
when wrapped references to nested structs are still in use. If freep
|
when wrapped references to nested structs are still in use. If freep
|
||||||
is true, then when reclaimed by the GC the finalizer for this type,
|
is true, then when reclaimed by the GC the finalizer for this type,
|
||||||
if any, will be called on the instance.
|
if any, will be called on the instance.
|
||||||
|
|
||||||
You can retrieve the id from a type object with sexp_type_tag(type).
|
You can retrieve the tag from a type object with sexp_type_tag(type).
|
||||||
|
}}
|
||||||
|
|
||||||
|
\item{\ccode{sexp sexp_lookup_type(sexp ctx, sexp name, sexp tag_or_id)}
|
||||||
|
\p{
|
||||||
|
Returns the type whose name matches the string \var{name}. If
|
||||||
|
\var{tag_or_id} is an integer, it is taken as the tag and requires the
|
||||||
|
numeric type tag (as from sexp_type_tag) to also match.
|
||||||
|
}
|
||||||
|
\p{If \var{tag_or_id} is a string, it is taken as the unique id of the
|
||||||
|
type, and must match sexp_type_id(type). However, currently
|
||||||
|
sexp_type_id(type) is never set.
|
||||||
}}
|
}}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
2
sexp.c
2
sexp.c
|
@ -440,7 +440,7 @@ sexp sexp_lookup_type_op(sexp ctx, sexp self, sexp_sint_t n, sexp name, sexp id)
|
||||||
if (sexp_stringp(id)
|
if (sexp_stringp(id)
|
||||||
&& !(sexp_stringp(sexp_type_id(res))
|
&& !(sexp_stringp(sexp_type_id(res))
|
||||||
&& strcmp(sexp_string_data(id), sexp_string_data(sexp_type_id(res))) == 0))
|
&& strcmp(sexp_string_data(id), sexp_string_data(sexp_type_id(res))) == 0))
|
||||||
return SEXP_FALSE;
|
continue;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
return SEXP_FALSE;
|
return SEXP_FALSE;
|
||||||
|
|
Loading…
Add table
Reference in a new issue