28 #ifdef INDI_PROPERTY_RAW_CAST
33 : PropertyPrivate(&property)
37 this->typedProperty.setWidgets(widgets.data(), widgets.size());
40 #ifdef INDI_PROPERTY_RAW_CAST
52 #ifdef INDI_PROPERTY_RAW_CAST
54 delete &this->typedProperty;
76 d->typedProperty.setName(name);
83 d->typedProperty.setName(name);
90 d->typedProperty.setLabel(label);
97 d->typedProperty.setLabel(label);
100 template <
typename T>
104 d->typedProperty.setGroupName(name);
107 template <
typename T>
111 d->typedProperty.setGroupName(name);
114 template <
typename T>
118 d->typedProperty.setPermission(permission);
121 template <
typename T>
125 d->typedProperty.setTimeout(timeout);
128 template <
typename T>
132 d->typedProperty.setState(state);
135 template <
typename T>
139 d->typedProperty.setTimestamp(timestamp);
142 template <
typename T>
146 d->typedProperty.setTimestamp(timestamp);
149 template <
typename T>
153 return d->typedProperty.getName();
156 template <
typename T>
160 return d->typedProperty.getLabel();
163 template <
typename T>
167 return d->typedProperty.getGroupName();
170 template <
typename T>
174 return d->typedProperty.getPermission();
177 template <
typename T>
181 return d->typedProperty.getPermissionAsString();
184 template <
typename T>
188 return d->typedProperty.getTimeout();
191 template <
typename T>
195 return d->typedProperty.getState();
198 template <
typename T>
202 return d->typedProperty.getStateAsString();
205 template <
typename T>
209 return d->typedProperty.getTimestamp();
212 template <
typename T>
216 return d->typedProperty.isEmpty();
219 template <
typename T>
223 return d->typedProperty.isNameMatch(otherName);
226 template <
typename T>
230 return d->typedProperty.isNameMatch(otherName);
233 template <
typename T>
237 return d->typedProperty.isLabelMatch(otherLabel);
240 template <
typename T>
244 return d->typedProperty.isLabelMatch(otherLabel);
247 template <
typename T>
251 d->typedProperty.save(f);
254 template <
typename T>
258 d->typedProperty.vapply(format, args);
261 template <
typename T>
265 d->typedProperty.vdefine(format, args);
268 template <
typename T>
273 va_start(ap, format);
274 d->typedProperty.vapply(format, ap);
278 template <
typename T>
283 va_start(ap, format);
284 d->typedProperty.vdefine(format, ap);
288 template <
typename T>
292 d->typedProperty.apply();
295 template <
typename T>
299 d->typedProperty.define();
302 template <
typename T>
306 return d->typedProperty.findWidgetByName(name);
309 template <
typename T>
312 auto it = findWidgetByName(name);
313 return int(it ==
nullptr ? -1 : it - begin());
316 template <
typename T>
320 return d->typedProperty.count();
323 template <
typename T>
327 #ifdef INDI_PROPERTY_RAW_CAST
328 assert(d->raw ==
false);
330 d->widgets.resize(size);
331 d->typedProperty.setWidgets(d->widgets.data(), d->widgets.size());
334 template <
typename T>
338 #ifdef INDI_PROPERTY_RAW_CAST
339 assert(d->raw ==
false);
341 d->widgets.reserve(size);
342 d->typedProperty.setWidgets(d->widgets.data(), d->widgets.size());
345 template <
typename T>
349 #ifdef INDI_PROPERTY_RAW_CAST
350 assert(d->raw ==
false);
352 d->widgets.shrink_to_fit();
353 d->typedProperty.setWidgets(d->widgets.data(), d->widgets.size());
356 template <
typename T>
360 #ifdef INDI_PROPERTY_RAW_CAST
361 assert(d->raw ==
false);
363 item.setParent(&d->typedProperty);
364 d->widgets.push_back(std::move(item));
365 d->typedProperty.setWidgets(d->widgets.data(), d->widgets.size());
368 template <
typename T>
374 template <
typename T>
378 return d->typedProperty.at(index);
381 template <
typename T>
386 return *d->typedProperty.at(index);
389 template <
typename T>
393 return d->typedProperty.begin();
396 template <
typename T>
400 return d->typedProperty.end();
403 template <
typename T>
407 return d->typedProperty.begin();
410 template <
typename T>
414 return d->typedProperty.end();
417 template <
typename T>
421 return &d->typedProperty;
424 #ifdef INDI_PROPERTY_BACKWARD_COMPATIBILE
425 template <
typename T>
432 template <
typename T>
typename WidgetTraits< T >::PropertyType RawPropertyType
PropertyBasicPrivateTemplate(size_t count)
virtual ~PropertyBasicPrivateTemplate()
void push(WidgetView< T > &&item)
void vapply(const char *format, va_list args) const
void setState(IPState state)
bool isLabelMatch(const char *otherLabel) const
const char * getPermissionAsString() const
WidgetView< T > * findWidgetByName(const char *name) const
void setName(const char *name)
WidgetView< T > * begin()
WidgetView< T > & operator[](ssize_t index) const
void vdefine(const char *format, va_list args) const
double getTimeout() const
PropertyView< T > * operator&()
void setLabel(const char *label)
const char * getName() const
bool isNameMatch(const char *otherName) const
INDI::PropertyView< T > * operator->()
const char * getGroupName() const
const char * getStateAsString() const
const char * getLabel() const
void setPermission(IPerm permission)
void void void apply() const
int findWidgetIndexByName(const char *name) const
PropertyBasic(PropertyBasicPrivate &dd)
const WidgetView< T > * at(size_t index) const
const char * getTimestamp() const
void setTimestamp(const char *timestamp)
void setGroupName(const char *name)
void reserve(size_t size)
void setTimeout(double timeout)
IPerm getPermission() const
INDI::PropertyView< T > operator*()
Provides generic container for INDI properties.
IPerm
Permission hint, with respect to client.
Namespace to encapsulate INDI client, drivers, and mediator classes.
Provides decorator for Low-Level IXXXVectorProperty/IXXX.