cdynamicdescriptor.h Source File¶
|
API
|
cdynamicdescriptor.h
50struct is_printable<T, std::void_t<decltype(std::declval<std::ostream&>() << std::declval<const T&>())>> : std::true_type {};
55struct is_extractable<T, std::void_t<decltype(std::declval<std::istream&>() >> std::declval<T&>())>> : std::true_type {};
58template<typename T> struct is_std_sequence : std::false_type {}; // elements are accessed by index
61template<typename E, typename A> struct is_std_sequence<std::forward_list<E,A>> : std::true_type {};
66template<typename E, typename C, typename A> struct is_std_set<std::set<E,C,A>> : std::true_type {};
67template<typename E, typename C, typename A> struct is_std_set<std::multiset<E,C,A>> : std::true_type {};
68template<typename E, typename H, typename Q, typename A> struct is_std_set<std::unordered_set<E,H,Q,A>> : std::true_type {};
69template<typename E, typename H, typename Q, typename A> struct is_std_set<std::unordered_multiset<E,H,Q,A>> : std::true_type {};
71template<typename T> struct is_std_map : std::false_type {}; // elements are the mapped values, labeled with the keys
72template<typename K, typename V, typename C, typename A> struct is_std_map<std::map<K,V,C,A>> : std::true_type {};
73template<typename K, typename V, typename C, typename A> struct is_std_map<std::multimap<K,V,C,A>> : std::true_type {};
74template<typename K, typename V, typename H, typename Q, typename A> struct is_std_map<std::unordered_map<K,V,H,Q,A>> : std::true_type {};
75template<typename K, typename V, typename H, typename Q, typename A> struct is_std_map<std::unordered_multimap<K,V,H,Q,A>> : std::true_type {};
77template<typename T> struct is_std_adaptor : std::false_type {}; // container adaptors: their underlying container is displayed, read-only
80template<typename E, typename C, typename P> struct is_std_adaptor<std::priority_queue<E,C,P>> : std::true_type {};
87template<typename E, typename D> struct is_std_smart_pointer<std::unique_ptr<E,D>> : std::true_type {};
98 static typename A::container_type *getContainer(A *adaptor) { return &(adaptor->*(&AdaptorAccess::c)); }
154 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override;
156 virtual void setFieldValue(any_ptr object, int field, int i, const cValue& value) const override;
159 virtual void setFieldStructValuePointer(any_ptr object, int field, int i, any_ptr ptr) const override;
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 ? ValueAccess<E>::getTypeName().c_str() : nullptr; }
393 virtual const char *getFieldStructName(int field) const override { return field == 0 ? ValueAccess<E>::getTypeName().c_str() : nullptr; }
394 virtual unsigned int getFieldTypeFlags(int field) const override { return field == 0 ? FD_ISARRAY | ValueAccess<E>::getTypeFlags() : 0; }
437 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override {
507 virtual const char *getFieldName(int field) const override { return field != 0 ? nullptr : isOptional ? "value" : "pointee"; }
508 virtual const char *getFieldTypeString(int field) const override { return field == 0 ? Access::getTypeName().c_str() : nullptr; }
509 virtual const char *getFieldStructName(int field) const override { return field == 0 ? Access::getTypeName().c_str() : nullptr; }
525 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override {
567 virtual const char *getFieldStructName(int field) const override { return getFieldTypeString(field); }
586 virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override {
629// ensures the descriptor for a container element or pair member type (for pointers, the pointee type)
654 else if constexpr (internal::is_std_sequence<T>::value || internal::is_std_set<T>::value || internal::is_std_adaptor<T>::value) {
663 else if constexpr (internal::is_std_optional<T>::value || internal::is_std_smart_pointer<T>::value) {
670 desc = new internal::cStdPairDescriptor<typename T::first_type, typename T::second_type>(typeName);
static cClassDescriptor * getDescriptorFor(const char *classname)
virtual int getFieldCount() const =0
virtual std::string getFieldArrayIndexString(any_ptr object, int field, int arrayIndex) const
static constexpr const char * UNPRINTABLE
Returned by getValueAsString() and getFieldValueAsString() for types that have no text representation...
Definition cclassdescriptor.h:56
cClassDescriptor(const char *className, const char *baseClassName=nullptr)
virtual void setValueAsString(any_ptr object, const char *value) const
@ 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
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
Operations on a single value of type E (a container element or a pair member) for the descriptors of ...
Definition cdynamicdescriptor.h:241
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:170
virtual void setValueAsString(any_ptr object, const char *value) const override
Definition cdynamicdescriptor.h:199
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:174
Descriptor for standard library containers and container adaptors. Pretends to have a single "element...
Definition cdynamicdescriptor.h:341
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:394
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:458
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
Definition cdynamicdescriptor.h:437
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:424
virtual int getFieldArraySize(any_ptr object, int field) const override
Definition cdynamicdescriptor.h:396
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 getFieldArrayIndexString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:410
virtual void setFieldArraySize(any_ptr object, int field, int size) const override
Definition cdynamicdescriptor.h:400
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:383
Descriptor for std::pair<F,S>. Has two fields: "first" and "second".
Definition cdynamicdescriptor.h:544
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:569
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:597
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
Definition cdynamicdescriptor.h:586
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:577
virtual const char * getFieldTypeString(int field) const override
Definition cdynamicdescriptor.h:559
virtual const char * getFieldStructName(int field) const override
Definition cdynamicdescriptor.h:567
virtual int getFieldCount() const override
Definition cdynamicdescriptor.h:553
virtual const char * getFieldName(int field) const override
Definition cdynamicdescriptor.h:555
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:548
Descriptor for std::optional, std::unique_ptr and std::shared_ptr. Its value is the value of the cont...
Definition cdynamicdescriptor.h:481
virtual unsigned int getFieldTypeFlags(int field) const override
Definition cdynamicdescriptor.h:511
virtual any_ptr getFieldStructValuePointer(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:531
virtual void setFieldValueAsString(any_ptr object, int field, int i, const char *value) const override
Definition cdynamicdescriptor.h:525
virtual std::string getFieldValueAsString(any_ptr object, int field, int i) const override
Definition cdynamicdescriptor.h:518
virtual const char * getFieldTypeString(int field) const override
Definition cdynamicdescriptor.h:508
virtual const char * getFieldStructName(int field) const override
Definition cdynamicdescriptor.h:509
virtual int getFieldCount() const override
Definition cdynamicdescriptor.h:506
virtual const char * getFieldName(int field) const override
Definition cdynamicdescriptor.h:507
virtual std::string getValueAsString(any_ptr object) const override
Definition cdynamicdescriptor.h:501
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