cdynamicdescriptor.h Source File¶
|
API
|
cdynamicdescriptor.h
41struct is_printable<T, std::void_t<decltype(std::declval<std::ostream&>() << std::declval<const T&>())>> : std::true_type {};
46struct is_extractable<T, std::void_t<decltype(std::declval<std::istream&>() >> std::declval<T&>())>> : std::true_type {};
55template<typename E, typename C, typename A> struct is_std_set<std::set<E,C,A>> : std::true_type {};
58template<typename K, typename V, typename C, typename A> struct is_std_map<std::map<K,V,C,A>> : std::true_type {};
61template<typename K, typename V, typename H, typename E, typename A> struct is_std_unordered_map<std::unordered_map<K,V,H,E,A>> : std::true_type {};
126 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override;
128 virtual void setFieldValue(any_ptr object, int field, int i, const cValue& value) const override;
131 virtual void setFieldStructValuePointer(any_ptr object, int field, int i, any_ptr ptr) const override;
215 : cDynamicDescriptor(typeName), elemTypeName(internal::getTypeName<std::remove_pointer_t<E>>()) {}
305 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override {
380 : cDynamicDescriptor(typeName), elemTypeName(internal::getTypeName<std::remove_pointer_t<E>>()) {}
391 virtual const char *getFieldName(int field) const override { return field == 0 ? "elements" : nullptr; }
392 virtual const char *getFieldTypeString(int field) const override { return field == 0 ? elemTypeName.c_str() : nullptr; }
393 virtual const char *getFieldStructName(int field) const override { return field == 0 ? elemTypeName.c_str() : nullptr; }
405 if (elemDesc) { flags |= FD_ISCOMPOUND; if (elemDesc->extendsCObject()) flags |= FD_ISCOBJECT; }
440 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override {
503 : cDynamicDescriptor(typeName), elemTypeName(internal::getTypeName<std::remove_pointer_t<E>>()) {}
514 virtual const char *getFieldName(int field) const override { return field == 0 ? "elements" : nullptr; }
515 virtual const char *getFieldTypeString(int field) const override { return field == 0 ? elemTypeName.c_str() : nullptr; }
516 virtual const char *getFieldStructName(int field) const override { return field == 0 ? elemTypeName.c_str() : nullptr; }
586 virtual std::string getFieldArrayIndexString(any_ptr object, int field, int arrayIndex) const override {
628 virtual const char *getFieldName(int field) const override { return field == 0 ? "elements" : nullptr; }
629 virtual const char *getFieldTypeString(int field) const override { return field == 0 ? valueTypeName.c_str() : nullptr; }
630 virtual const char *getFieldStructName(int field) const override { return field == 0 ? valueTypeName.c_str() : nullptr; }
667 if constexpr (is_printable<std::remove_pointer_t<V>>::value) { std::ostringstream os; os << *vptr; return os.str(); }
678 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override {
721 virtual std::string getFieldArrayIndexString(any_ptr object, int field, int arrayIndex) const override {
780 if (desc) os << desc->getValueAsString(toAnyPtr(static_cast<const cObject*>(fptr))); else os << UNPRINTABLE;
802 if (desc) os << desc->getValueAsString(toAnyPtr(static_cast<const cObject*>(sptr))); else os << UNPRINTABLE;
854 if (d && d->getFieldCount() > 0) { flags |= FD_ISCOMPOUND; if (d->extendsCObject()) flags |= FD_ISCOBJECT; }
872 if constexpr (is_printable<std::remove_pointer_t<F>>::value) { std::ostringstream os; os << *fptr; return os.str(); }
878 if constexpr (is_printable<F>::value) { std::ostringstream os; os << p->first; return os.str(); }
892 if constexpr (is_printable<std::remove_pointer_t<S>>::value) { std::ostringstream os; os << *sptr; return os.str(); }
904 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override {
922 if constexpr (is_extractable<F>::value) { std::istringstream is(value); is >> const_cast<F&>(p->first); return; }
1027 if constexpr (std::is_pointer_v<K>) ensureDescriptor<std::remove_pointer_t<K>>(); else ensureDescriptor<K>();
1028 if constexpr (std::is_pointer_v<V>) ensureDescriptor<std::remove_pointer_t<V>>(); else ensureDescriptor<V>();
1034 if constexpr (std::is_pointer_v<K>) ensureDescriptor<std::remove_pointer_t<K>>(); else ensureDescriptor<K>();
1035 if constexpr (std::is_pointer_v<V>) ensureDescriptor<std::remove_pointer_t<V>>(); else ensureDescriptor<V>();
1041 if constexpr (std::is_pointer_v<F>) ensureDescriptor<std::remove_pointer_t<F>>(); else ensureDescriptor<F>();
1042 if constexpr (std::is_pointer_v<S>) ensureDescriptor<std::remove_pointer_t<S>>(); else ensureDescriptor<S>();
static cClassDescriptor * getDescriptorFor(const char *classname)
virtual int getFieldCount() const =0
@ FD_ISARRAY
field is an array: int a[]; int a[10];
Definition cclassdescriptor.h:44
@ FD_ISCOBJECT
if ISCOMPOUND: basic type (T) subclasses from cObject
Definition cclassdescriptor.h:47
@ FD_ISCOMPOUND
basic type (T) is struct or class: T a; T *a; T a[10]; T *a[]
Definition cclassdescriptor.h:45
@ FD_ISPOINTER
field is pointer or pointer array: T *a; T *a[]; T *a[10];
Definition cclassdescriptor.h:46
static constexpr const char * UNPRINTABLE
Returned by getValueAsString() and getFieldValueAsString() for types that have no text representation...
Definition cclassdescriptor.h:56
bool extendsCObject() const
cClassDescriptor(const char *className, const char *baseClassName=nullptr)
virtual std::string getValueAsString(any_ptr object) const
Definition cclassdescriptor.h:170
virtual void setValueAsString(any_ptr object, const char *value) const
cObject is a lightweight class which serves as the root of the OMNeT++ class hierarchy....
Definition cobject.h:93
virtual cClassDescriptor * getDescriptor() const
A variant-like value class used during evaluating NED expressions.
Definition cvalue.h:48
virtual unsigned int getFieldTypeFlags(int field) const override
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
virtual int getFieldArraySize(any_ptr object, int field) const override
virtual const char ** getPropertyNames() const override
virtual const char * getFieldTypeString(int field) const override
virtual const char * getFieldStructName(int field) const override
virtual const char * getFieldProperty(int field, const char *propertyName) const override
virtual int getFieldCount() const override
virtual const char * getFieldName(int field) const override
virtual const char * getProperty(const char *propertyName) const override
virtual const char ** getFieldPropertyNames(int field) const override
virtual cValue getFieldValue(any_ptr object, int field, int i) const override
virtual void setFieldValue(any_ptr object, int field, int i, const cValue &value) const override
virtual void setFieldArraySize(any_ptr object, int field, int size) const override
virtual void setFieldStructValuePointer(any_ptr object, int field, int i, any_ptr ptr) const override
Descriptor for primitive/simple types that support operator<< and/or operator>>. Has no fields; provi...
Definition cdynamicdescriptor.h:142
virtual void setValueAsString(any_ptr object, const char *value) const override
Definition cdynamicdescriptor.h:171
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:146
Descriptor for std::list<E>. Pretends to have a single "elements[]" array field of type E....
Definition cdynamicdescriptor.h:368
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:395
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:464
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
Definition cdynamicdescriptor.h:440
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:415
virtual int getFieldArraySize(any_ptr object, int field) const override
Definition cdynamicdescriptor.h:410
virtual const char * getFieldTypeString(int field) const override
Definition cdynamicdescriptor.h:392
virtual const char * getFieldStructName(int field) const override
Definition cdynamicdescriptor.h:393
virtual int getFieldCount() const override
Definition cdynamicdescriptor.h:390
virtual const char * getFieldName(int field) const override
Definition cdynamicdescriptor.h:391
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:382
Descriptor for std::map<K,V> and std::unordered_map<K,V>. Pretends to have a single "elements[]" arra...
Definition cdynamicdescriptor.h:600
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:632
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:703
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
Definition cdynamicdescriptor.h:678
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:652
virtual int getFieldArraySize(any_ptr object, int field) const override
Definition cdynamicdescriptor.h:647
virtual const char * getFieldTypeString(int field) const override
Definition cdynamicdescriptor.h:629
virtual std::string getFieldArrayIndexString(any_ptr object, int field, int arrayIndex) const override
Definition cdynamicdescriptor.h:721
virtual const char * getFieldStructName(int field) const override
Definition cdynamicdescriptor.h:630
virtual int getFieldCount() const override
Definition cdynamicdescriptor.h:627
virtual const char * getFieldName(int field) const override
Definition cdynamicdescriptor.h:628
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:619
Descriptor for std::pair<F,S>. Has two fields: "first" and "second".
Definition cdynamicdescriptor.h:760
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:834
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:947
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
Definition cdynamicdescriptor.h:904
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:859
virtual const char * getFieldTypeString(int field) const override
Definition cdynamicdescriptor.h:826
virtual const char * getFieldStructName(int field) const override
Definition cdynamicdescriptor.h:830
virtual int getFieldCount() const override
Definition cdynamicdescriptor.h:820
virtual const char * getFieldName(int field) const override
Definition cdynamicdescriptor.h:822
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:771
Descriptor for std::set<E>. Pretends to have a single "elements[]" array field of type E....
Definition cdynamicdescriptor.h:491
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:518
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:568
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:542
virtual int getFieldArraySize(any_ptr object, int field) const override
Definition cdynamicdescriptor.h:537
virtual const char * getFieldTypeString(int field) const override
Definition cdynamicdescriptor.h:515
virtual std::string getFieldArrayIndexString(any_ptr object, int field, int arrayIndex) const override
Definition cdynamicdescriptor.h:586
virtual const char * getFieldStructName(int field) const override
Definition cdynamicdescriptor.h:516
virtual int getFieldCount() const override
Definition cdynamicdescriptor.h:513
virtual const char * getFieldName(int field) const override
Definition cdynamicdescriptor.h:514
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:505
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:231
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:343
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
Definition cdynamicdescriptor.h:305
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:271
virtual int getFieldArraySize(any_ptr object, int field) const override
Definition cdynamicdescriptor.h:254
virtual const char * getFieldTypeString(int field) const override
Definition cdynamicdescriptor.h:250
virtual const char * getFieldStructName(int field) const override
Definition cdynamicdescriptor.h:339
virtual int getFieldCount() const override
Definition cdynamicdescriptor.h:225
virtual const char * getFieldName(int field) const override
Definition cdynamicdescriptor.h:227
virtual void setFieldArraySize(any_ptr object, int field, int size) const override
Definition cdynamicdescriptor.h:260
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:217
SIM_API const char * opp_typename(const std::type_info &t)
Returns the name of a C++ type, correcting the quirks of various compilers.
Generated on for API by