xo-reflect: cosmetic: code layout
This commit is contained in:
parent
c71bcb6415
commit
9d31c6ad87
1 changed files with 81 additions and 81 deletions
|
|
@ -9,87 +9,87 @@
|
|||
#include "xo/reflect/EstablishTypeDescr.hpp"
|
||||
|
||||
namespace xo {
|
||||
namespace reflect {
|
||||
/* Extra type-associated information for a vector/array.
|
||||
*/
|
||||
class VectorTdx : public TypeDescrExtra {
|
||||
public:
|
||||
/* named ctor idiom. create new instance for a vector type */
|
||||
//static std::unique_ptr<VectorTdx> make();
|
||||
namespace reflect {
|
||||
/* Extra type-associated information for a vector/array.
|
||||
*/
|
||||
class VectorTdx : public TypeDescrExtra {
|
||||
public:
|
||||
/* named ctor idiom. create new instance for a vector type */
|
||||
//static std::unique_ptr<VectorTdx> make();
|
||||
|
||||
// ----- Inherited from TypeDescrExtra -----
|
||||
// ----- Inherited from TypeDescrExtra -----
|
||||
|
||||
virtual Metatype metatype() const override { return Metatype::mt_vector; }
|
||||
virtual uint32_t n_child(void * object) const override = 0;
|
||||
virtual TaggedPtr child_tp(uint32_t i, void * object) const override = 0;
|
||||
/* (forbidden) */
|
||||
virtual std::string const & struct_member_name(uint32_t i) const override;
|
||||
}; /*VectorTdx*/
|
||||
virtual Metatype metatype() const override { return Metatype::mt_vector; }
|
||||
virtual uint32_t n_child(void * object) const override = 0;
|
||||
virtual TaggedPtr child_tp(uint32_t i, void * object) const override = 0;
|
||||
/* (forbidden) */
|
||||
virtual std::string const & struct_member_name(uint32_t i) const override;
|
||||
}; /*VectorTdx*/
|
||||
|
||||
// ----- StlVectorTdx -----
|
||||
// ----- StlVectorTdx -----
|
||||
|
||||
/* require:
|
||||
* - VectorT.size()
|
||||
* - VectorT[int] :: lvalue
|
||||
*/
|
||||
template<typename VectorT>
|
||||
class StlVectorTdx : public VectorTdx {
|
||||
public:
|
||||
using target_t = VectorT;
|
||||
/* require:
|
||||
* - VectorT.size()
|
||||
* - VectorT[int] :: lvalue
|
||||
*/
|
||||
template<typename VectorT>
|
||||
class StlVectorTdx : public VectorTdx {
|
||||
public:
|
||||
using target_t = VectorT;
|
||||
|
||||
static std::unique_ptr<StlVectorTdx> make() {
|
||||
return std::unique_ptr<StlVectorTdx>(new StlVectorTdx());
|
||||
} /*make*/
|
||||
static std::unique_ptr<StlVectorTdx> make() {
|
||||
return std::unique_ptr<StlVectorTdx>(new StlVectorTdx());
|
||||
} /*make*/
|
||||
|
||||
virtual uint32_t n_child(void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
virtual uint32_t n_child(void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
|
||||
return vec->size();
|
||||
} /*n_child*/
|
||||
return vec->size();
|
||||
} /*n_child*/
|
||||
|
||||
virtual TaggedPtr child_tp(uint32_t i, void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
virtual TaggedPtr child_tp(uint32_t i, void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
|
||||
return establish_most_derived_tp(&((*vec)[i]));
|
||||
} /*child_tp*/
|
||||
}; /*StlVectorTdx*/
|
||||
return establish_most_derived_tp(&((*vec)[i]));
|
||||
} /*child_tp*/
|
||||
}; /*StlVectorTdx*/
|
||||
|
||||
// ----- std::array<Element, N> -----
|
||||
// ----- std::array<Element, N> -----
|
||||
|
||||
/* coordinates with EstablishTdx<std::array<Element, N>>::make(),
|
||||
* see [reflect/Reflect.hpp]
|
||||
*/
|
||||
/* coordinates with EstablishTdx<std::array<Element, N>>::make(),
|
||||
* see [reflect/Reflect.hpp]
|
||||
*/
|
||||
|
||||
template<typename Element, std::size_t N>
|
||||
using StdArrayTdx = StlVectorTdx<std::array<Element, N>>;
|
||||
template<typename Element, std::size_t N>
|
||||
using StdArrayTdx = StlVectorTdx<std::array<Element, N>>;
|
||||
|
||||
// ----- std::vector<Element> -----
|
||||
// ----- std::vector<Element> -----
|
||||
|
||||
/* coordinates with EstablishTdx<std::vector<Element>>::make()
|
||||
* see [reflect/Reflect.hpp]
|
||||
*/
|
||||
template<typename Element>
|
||||
class StdVectorTdx : public VectorTdx {
|
||||
public:
|
||||
using target_t = std::vector<Element>;
|
||||
/* coordinates with EstablishTdx<std::vector<Element>>::make()
|
||||
* see [reflect/Reflect.hpp]
|
||||
*/
|
||||
template<typename Element>
|
||||
class StdVectorTdx : public VectorTdx {
|
||||
public:
|
||||
using target_t = std::vector<Element>;
|
||||
|
||||
static std::unique_ptr<StdVectorTdx> make() {
|
||||
return std::unique_ptr<StdVectorTdx>(new StdVectorTdx());
|
||||
} /*make*/
|
||||
static std::unique_ptr<StdVectorTdx> make() {
|
||||
return std::unique_ptr<StdVectorTdx>(new StdVectorTdx());
|
||||
} /*make*/
|
||||
|
||||
virtual uint32_t n_child(void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
virtual uint32_t n_child(void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
|
||||
return vec->size();
|
||||
} /*n_child*/
|
||||
return vec->size();
|
||||
} /*n_child*/
|
||||
|
||||
virtual TaggedPtr child_tp(uint32_t i, void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
virtual TaggedPtr child_tp(uint32_t i, void * object) const override {
|
||||
target_t * vec = reinterpret_cast<target_t *>(object);
|
||||
|
||||
return establish_most_derived_tp(&((*vec)[i]));
|
||||
}
|
||||
}; /*StdVectorTdx*/
|
||||
} /*namespace reflect*/
|
||||
return establish_most_derived_tp(&((*vec)[i]));
|
||||
}
|
||||
}; /*StdVectorTdx*/
|
||||
} /*namespace reflect*/
|
||||
|
||||
} /*namespace xo*/
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue