xo-facet: extend facet gen scope to IFoo_{Xfer,Any}, RFoo
This commit is contained in:
parent
9a3b3f68e2
commit
1b7859f61c
3 changed files with 43 additions and 9 deletions
|
|
@ -4,6 +4,7 @@
|
|||
namespace2: "scm",
|
||||
facet: "Sequence",
|
||||
brief: "an ordered collection of variants",
|
||||
using_doxygen: true,
|
||||
doc: [
|
||||
"Elements appear in some determinstic order.",
|
||||
"Sequence is GC-aware --> elements must be GC-aware"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [/home/roland/proj/xo-umbrella2/xo-object2/../xo-facet/codegen/genfacet.py]
|
||||
* [/Users/roland/proj/xo-umbrella2/xo-object2/../xo-facet/codegen/genfacet.py]
|
||||
* arguments:
|
||||
* --input [./idl/Sequence.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
|
|
@ -15,29 +15,61 @@
|
|||
|
||||
// includes (via {facet_includes})
|
||||
#include <xo/gc/GCObject.hpp>
|
||||
#include <xo/facet/obj.hpp>
|
||||
#include <xo/facet/facet_implementation.hpp>
|
||||
#include <xo/facet/typeseq.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
using Copaque = const void *;
|
||||
using Opaque = void *;
|
||||
|
||||
/**
|
||||
Elements appear in some determinstic order.
|
||||
Sequence is GC-aware --> elements must be GC-aware
|
||||
**/
|
||||
class ASequence {
|
||||
public:
|
||||
/** @defgroup scm-sequence-type-traits **/
|
||||
///@{
|
||||
// types
|
||||
/** type for length of a sequence **/
|
||||
using size_type = std::size_t;
|
||||
/** facet for types with GC support **/
|
||||
using AGCObject = xo::mm::AGCObject;
|
||||
///@}
|
||||
|
||||
/** @defgroup scm-sequence-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** RTTI: unique id# for actual runtime data representation **/
|
||||
virtual int32_t _typeseq() const noexcept = 0;
|
||||
/** true iff sequence is empty **/
|
||||
virtual bool is_empty() const noexcept = 0;
|
||||
|
||||
|
||||
virtual bool is_empty(Copaque data) const noexcept = 0;
|
||||
/** true iff sequence is finite **/
|
||||
virtual bool is_finite() const noexcept = 0;
|
||||
|
||||
|
||||
virtual bool is_finite(Copaque data) const noexcept = 0;
|
||||
/** return element @p index of this sequence **/
|
||||
virtual obj<AGCObject> at(size_type index) const = 0;
|
||||
virtual obj<AGCObject> at(Copaque data, size_type index) const = 0;
|
||||
|
||||
// nonconst methods
|
||||
///@}
|
||||
}; /*ASequence*/
|
||||
|
||||
/** Implementation ISequence_DRepr of ASequence for state DRepr
|
||||
* should provide a specialization:
|
||||
*
|
||||
* template <>
|
||||
* struct xo::facet::FacetImplementation<ASequence, DRepr> {
|
||||
* using Impltype = ISequence_DRepr;
|
||||
* };
|
||||
*
|
||||
* then ISequence_ImplType<DRepr> --> ISequence_DRepr
|
||||
**/
|
||||
template <typename DRepr>
|
||||
using ISequence_ImplType = xo::facet::FacetImplType<ASequence, DRepr>;
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* */
|
||||
|
|
@ -5,6 +5,7 @@ set(SELF_SRCS
|
|||
IGCObject_DFloat.cpp
|
||||
IGCObject_DInteger.cpp
|
||||
IGCObject_DList.cpp
|
||||
ISequence_Any.cpp
|
||||
)
|
||||
|
||||
xo_add_shared_library4(${SELF_LIB} ${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 ${SELF_SRCS})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue