6 #include "itemiterator.h"
66 return Domain::cPARENT;
68 if(
item(val.toString()) != 0)
89 if (!valueType() != dom->valueType())
92 if ( itemdom->theme() ==sUNDEF && !itemdom->parent().
isValid())
95 return itemdom->parent() ==
parent();
97 return itemdom->theme() ==
theme();
108 if (_range.isNull()) {
109 ERROR1(ERR_NO_INITIALIZED_1,
name());
112 return _range->impliedValue(v);
121 SPDomainItem
item(quint32 index)
const {
122 if (_range.isNull()) {
123 ERROR1(ERR_NO_INITIALIZED_1,
name());
124 return SPDomainItem();
126 return _range->item(index) ;
135 SPDomainItem
item(
const QString& nam)
const{
136 if (_range.isNull()) {
137 ERROR1(ERR_NO_INITIALIZED_1,
name());
138 return SPDomainItem();
143 return parentdom->item(nam);
145 return _range->item(nam) ;
160 if ( _range.isNull()) {
161 _range.reset(D::createRange());
167 ERROR2(ERR_COULD_NOT_CONVERT_2,TR(
"domain"), TR(
"correct item domain"));
171 SPDomainItem
item = parentdom->item(thing->
name());
173 WARN2(WARN_NOT_PART_OF2,thing->
name(), TR(
"parent domain"));
191 if (_range.isNull()) {
192 ERROR1(ERR_NO_INITIALIZED_1,
name());
196 if ( _childDomains.size() > 0) {
197 for(
auto childid: _childDomains) {
200 if ( childDom->contains(nme) == Domain::cSELF) {
201 WARN2(WARN_PART_OF2,nme, TR(
"related/child domain"));
220 if ( rng && rng->
valueType() == valueType()){
221 _range.reset(static_cast<ItemRange *>(rng));
235 if ( _childDomains.size() > 0) {
236 for(
auto childid: _childDomains) {
239 if(!range.
contains(childDom->_range)) {
240 WARN2(WARN_NOT_PART_OF2,
"item range", TR(
"child domain"));
250 if (!itemdom->_range->contains(range)){
251 WARN2(WARN_NOT_PART_OF2,
"item range", TR(
"parent domain"));
256 _range.reset(D::createRange());
257 _range->addRange(range);
266 if (_range.isNull()) {
267 ERROR1(ERR_NO_INITIALIZED_1,
name());
270 return _range->count();
307 dmparent->removeChildDomain(
id());
308 _range.reset(static_cast<ItemRange *>(_range->clone()));
312 if ( !hasType(dm->
ilwisType(), itITEMDOMAIN) ) {
315 if (!hasType(dm->valueType(), valueType())) {
319 if (
theme() != dmitem->theme())
322 bool ok = _range->alignWithParent(dm);
336 IlwisTypes valueType()
const {
337 return D::valueTypeS();
364 return !_range.isNull();
368 SPRange getRange()
const{
369 return _range.dynamicCast<
Range>();
373 bool considerParent()
const{
378 QString _theme = sUNDEF;
382 return idom->begin();
390 class IndexedIdentifier;
391 class NamedIdentifier;
394 typedef IlwisData<ItemDomain<ThematicItem>> IThematicDomain ;
395 typedef IlwisData<ItemDomain<IndexedIdentifier>> IIndexedIdDomain ;
396 typedef IlwisData<ItemDomain<NamedIdentifier>> INamedIdDomain ;
397 typedef IlwisData<ItemDomain<NumericItem>> INumericItemDomain ;
398 typedef ItemDomain<ThematicItem> ThematicDomain ;
399 typedef ItemDomain<IndexedIdentifier> IndexedIdDomain ;
400 typedef ItemDomain<NamedIdentifier> NamedIdDomain ;
401 typedef ItemDomain<NumericItem> NumericItemDomain ;
407 #endif // ITEMDOMAIN_H