Skip to content

Commit

Permalink
#199 (comment) implemented, except that the regular variant of TiledU…
Browse files Browse the repository at this point in the history
…nit has not been depreciated.
  • Loading branch information
MaartenHilferink committed Apr 5, 2023
1 parent ba26853 commit 4e1d948
Show file tree
Hide file tree
Showing 13 changed files with 63 additions and 33 deletions.
12 changes: 6 additions & 6 deletions clc/dll/include/CastedUnaryAttrOper.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,12 @@ class AbstrCastedUnaryAttrOperator : public BinaryOperator
const AbstrUnit* argUnitA= AsUnit(args[m_ReverseArgs ? 0 : 1]);

if (!resultHolder)
resultHolder = CreateCacheDataItem(
argDataA->GetAbstrDomainUnit()
, argUnitA
, m_VC
);
{
resultHolder = CreateCacheDataItem(argDataA->GetAbstrDomainUnit(), argUnitA, m_VC);
if (argUnitA->GetTSF(TSF_Categorical))
resultHolder->SetTSF(TSF_Categorical);
}

if (mustCalc)
{
AbstrDataItem* res = AsDataItem(resultHolder.GetNew());
Expand Down
9 changes: 5 additions & 4 deletions clc/dll/src1/Overlay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,6 @@ void DoOverlay(AbstrDataItem* resAtomicRegionGrid, IterRange<const overlay_parti
}
}
resAtomicRegionGridLock.Commit();
//REMOVE prodIdMapLockDO.reset();

// save per partitioning: AR->region relation
const overlay_partitioning_info_t* pPtr = partitioningInfo.begin();
Expand Down Expand Up @@ -368,7 +367,9 @@ class OverlayOperator : public TernaryOperator
MG_CHECK(p < 256);

AbstrUnit* resAtomicRegions = Unit<ResID>::GetStaticClass()->CreateResultUnit(resultHolder);
dbg_assert(resAtomicRegions);
assert(resAtomicRegions);
resAtomicRegions->SetTSF(TSF_Categorical);

resultHolder = resAtomicRegions;

AbstrDataItem* resAtomicRegionGrid = CreateDataItem(resAtomicRegions, t_UnionData, gridDomain, resAtomicRegions);
Expand All @@ -379,7 +380,7 @@ class OverlayOperator : public TernaryOperator
DataReadLock ggPartNamesLock(ggPartNamesA);

const DataArray<SharedStr>* ggPartNames = const_array_cast<SharedStr>(ggPartNamesA);
dms_assert(ggPartNames);
assert(ggPartNames);

for (UInt32 j = 0; j != p; ++j)
{
Expand All @@ -392,7 +393,7 @@ class OverlayOperator : public TernaryOperator
if (!partitioningTI)
throwErrorF("Overlay", "%s not found in %s", partNameID.GetStr().c_str(), GetItem(args[2])->GetSourceName().c_str());
const AbstrDataItem* partitioningDI = AsCheckedDataItem(partitioningTI);
dms_assert(partitioningDI);
assert(partitioningDI);

AbstrDataItem* resPartitionRel =
CreateDataItem(
Expand Down
10 changes: 6 additions & 4 deletions clc/dll/src1/Subset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,9 @@ struct SubsetOperator: public UnaryOperator
resDomainCls = UnitClass::Find(vc->GetCrdClass());

AbstrUnit* res = resDomainCls->CreateResultUnit(resultHolder);
dms_assert(res);
assert(res);
res->SetTSF(TSF_Categorical);

resultHolder = res;

AbstrDataItem* resSub = nullptr;
Expand Down Expand Up @@ -337,9 +339,9 @@ struct AbstrCollectByCondOperator : TernaryOperator
{
dms_assert(args.size() == 3);

const AbstrUnit* subset = debug_cast<const AbstrUnit*>(args[0]);
const AbstrDataItem* condA = debug_cast<const AbstrDataItem*>(args[1]);
const AbstrDataItem* dataA = debug_cast<const AbstrDataItem*>(args[2]);
const AbstrUnit* subset = AsUnit(args[0]);
const AbstrDataItem* condA = AsDataItem(args[1]);
const AbstrDataItem* dataA = AsDataItem(args[2]);
condA->GetAbstrDomainUnit()->UnifyDomain(dataA->GetAbstrDomainUnit(), "e1", "e2", UM_Throw);

if (!resultHolder)
Expand Down
3 changes: 2 additions & 1 deletion clc/dll/src1/Union.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,8 @@ class UnionDataOperator : public BinaryOperator // extra args are allowed
if (!hadToTryWithoutCategoricalCheck)
for (arg_index i = 1; i <= n; ++i)
{
if (AsDataItem(args[i])->GetTSF(TSF_Categorical))
auto adi = AsDataItem(args[i]); assert(adi);
if (adi->GetTSF(TSF_Categorical))
isCategorical = true;
Unify(vc, AsDataItem(args[i])->GetValueComposition());
}
Expand Down
7 changes: 4 additions & 3 deletions clc/dll/src1/Unique.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,17 +243,18 @@ class AbstrUniqueOperator : public UnaryOperator

bool CreateResult(TreeItemDualRef& resultHolder, const ArgSeqType& args, bool mustCalc) const override
{
dms_assert(args.size() == 1);
assert(args.size() == 1);

const AbstrDataItem* arg1 = debug_cast<const AbstrDataItem*>(args[0]);

dms_assert(arg1);
assert(arg1);
const AbstrUnit* arg1Values = arg1->GetAbstrValuesUnit();
const ValueClass* vc = arg1->GetAbstrDomainUnit()->GetUnitClass()->GetValueType();
const UnitClass* resDomainCls = UnitClass::Find(vc->GetCrdClass());

AbstrUnit* res = resDomainCls->CreateResultUnit(resultHolder);
dms_assert(res);
assert(res);
res->SetTSF(TSF_Categorical);
resultHolder = res;

AbstrDataItem* resSub = CreateDataItem(res, s_Values, res, arg1Values, arg1->GetValueComposition() );
Expand Down
2 changes: 1 addition & 1 deletion clc/dll/src1/UnitCreators.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ ConstUnitRef compatible_values_unit_creator_func(arg_index nrSkippedArgs, const
{
auto adi = AsDataItem(args[cat_unit_index]);
auto avu = AbstrValuesUnit(adi);
if (avu && (adi->GetTSF(TSF_Categorical) || avu->GetTSF(TSF_Categorical)))
if (avu && adi->GetTSF(TSF_Categorical))
{
catUnit = avu;
break;
Expand Down
2 changes: 2 additions & 0 deletions clc/dll/src2/OperPropValue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ struct PropValueOperator : public BinaryOperator
if (m_ItemSetProvider)
{
resultHolder = Unit<UInt32>::GetStaticClass()->CreateResultUnit(resultHolder); // count subitems.
resultHolder->SetTSF(TSF_Categorical);

resultHolder.GetNew()->SetKeepDataState(true);
for (SizeT p=0, pe = argDomain->GetCount(); p!=pe; ++p)
AbstrDataItem* resAttr = CreateDataItem(
Expand Down
20 changes: 13 additions & 7 deletions clc/dll/src2/OperUnit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,11 +220,13 @@ class UnitCombineOperator : public NullaryOperator
{
if (!resultHolder)
{
dms_assert(!mustCalc);
assert(!mustCalc);
resultHolder = ResultType::GetStaticClass()->CreateResultUnit(resultHolder);
}
auto resUnit = AsUnit(resultHolder.GetNew());
dms_assert(resUnit);
assert(resUnit);
resUnit->SetTSF(TSF_Categorical);

return UnitCombine_impl(resUnit, args, mustCalc, m_MustCreateBackRefs);
}
};
Expand Down Expand Up @@ -965,9 +967,11 @@ struct AbstrTiledUnitOper: BinaryOperator

if (!resultHolder)
{
dms_assert(!mustCalc);
assert(!mustCalc);
AbstrUnit* result = debug_cast<const UnitClass*>(GetResultClass())->CreateResultUnit(resultHolder);
dms_assert(result);
assert(result);
result->SetTSF(TSF_Categorical);

resultHolder = result;
result->DuplFrom(a1->GetAbstrValuesUnit());
}
Expand Down Expand Up @@ -1034,16 +1038,18 @@ struct AbstrTiledUnitFromSizeOper: UnaryOperator

bool CreateResult(TreeItemDualRef& resultHolder, const ArgSeqType& args, bool mustCalc) const override
{
dms_assert(args.size() == 1);
assert(args.size() == 1);

const AbstrDataItem* a1 = AsDataItem(args[0]);
checked_domain<Void>(a1, "a1");

if (!resultHolder)
{
dms_assert(!mustCalc);
assert(!mustCalc);
AbstrUnit* result = debug_cast<const UnitClass*>(GetResultClass())->CreateResultUnit(resultHolder);
dms_assert(result);
assert(result);
result->SetTSF(TSF_Categorical);

resultHolder = result;
result->DuplFrom(a1->GetAbstrValuesUnit());
}
Expand Down
4 changes: 4 additions & 0 deletions geo/dll/src/BoostPolygon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,8 @@ struct AbstrPolygonOperator : public VariadicOperator
if (m_Flags & PolygonFlags::F_DoSplit)
{
resUnit = Unit<UInt32>::GetStaticClass()->CreateResultUnit(resultHolder);
resUnit->SetTSF(TSF_Categorical);

resultHolder = resUnit;
resGeometry = CreateDataItem(resUnit, token::geometry, resUnit, values1Unit, ValueComposition::Polygon);
if (!resDomain->IsKindOf(Unit<Void>::GetStaticClass()))
Expand Down Expand Up @@ -984,6 +986,8 @@ class AbstrPolygonConnectivityOperator : public UnaryOperator
const AbstrUnit* domain1Unit = arg1A->GetAbstrDomainUnit();

AbstrUnit* res = Unit<UInt32>::GetStaticClass()->CreateResultUnit(resultHolder);
res->SetTSF(TSF_Categorical);

resultHolder = res;

AbstrDataItem* resF1 = CreateDataItem(res, tF1, res, domain1Unit);
Expand Down
2 changes: 2 additions & 0 deletions geo/dll/src/Dijkstra.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1348,6 +1348,8 @@ class DijkstraMatrOperator : public VariadicOperator
if (flags(df & DijkstraFlag::OD))
{
mutableResultUnit = GetResultUnitClass(df)->CreateResultUnit(resultHolder);
mutableResultUnit->SetTSF(TSF_Categorical);

resultHolder = mutableResultUnit;
resultUnit = mutableResultUnit;
resultContext = resultHolder;
Expand Down
6 changes: 4 additions & 2 deletions geo/dll/src/OperDistrict.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,10 @@ struct DistrictOperator : public UnaryOperator

const AbstrUnit* domain = inputGridA->GetAbstrDomainUnit();

AbstrUnit* resUnit = ResultUnitType::GetStaticClass()->CreateResultUnit(resultHolder);
dms_assert(resUnit);
auto resUnit = ResultUnitType::GetStaticClass()->CreateResultUnit(resultHolder);
resUnit->SetTSF(TSF_Categorical);

assert(resUnit);
resultHolder = resUnit;

AbstrDataItem*
Expand Down
14 changes: 9 additions & 5 deletions geo/dll/src/OperPolygon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -438,16 +438,18 @@ struct AbstrArcs2SegmentsOperator : public UnaryOperator
// Override Operator
bool CreateResult(TreeItemDualRef& resultHolder, const ArgSeqType& args, bool mustCalc) const override
{
dms_assert(args.size() == 1);
assert(args.size() == 1);

const AbstrDataItem* arg1A = debug_cast<const AbstrDataItem*>(args[0]);
dms_assert(arg1A);
auto arg1A = AsDataItem(args[0]);
assert(arg1A);

const AbstrUnit* polyEntity = arg1A->GetAbstrDomainUnit();
const AbstrUnit* pointValuesUnit = arg1A->GetAbstrValuesUnit();

ResultUnitType* resDomain = debug_cast<ResultUnitType*>(ResultUnitType::GetStaticClass()->CreateResultUnit(resultHolder));
dms_assert(resDomain);
assert(resDomain);
resDomain->SetTSF(TSF_Categorical);

resultHolder = resDomain;

AbstrDataItem
Expand Down Expand Up @@ -706,7 +708,9 @@ struct AbstrDynaPointOperator : public TernaryOperator
= debug_cast<ResultUnitType*>(
ResultUnitType::GetStaticClass()->CreateResultUnit(resultHolder)
);
dms_assert(resDomain);
assert(resDomain);
resDomain->SetTSF(TSF_Categorical);

resultHolder = resDomain;

AbstrDataItem
Expand Down
5 changes: 5 additions & 0 deletions tic/dll/src/Xml/XmlTreeOut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,9 @@ bool WriteUnitProps(XML_Table& xmlTable, const AbstrUnit* unit, bool allTileInfo
if (unit->GetUnitClass() == Unit<Void>::GetStaticClass())
return true;

if (unit->GetTSF(TSF_Categorical))
xmlTable.NameValueRow("Categorical", "Yes");

if (unit->GetNrDimensions() == 1)
{
if (unit->GetValueType()->IsNumeric())
Expand Down Expand Up @@ -528,6 +531,8 @@ bool TreeItem_XML_DumpGeneralBody(const TreeItem* self, OutStreamBase* xmlOutStr
vc = di->GetValueComposition();
if (vc != ValueComposition::Single)
xmlTable.NameValueRow("ValueComposition", GetValueCompositionID(vc).GetStr().c_str());
if (di->GetTSF(TSF_Categorical))
xmlTable.NameValueRow("Categorical", "Yes");

WriteCdf(xmlTable, di);
}
Expand Down

0 comments on commit 4e1d948

Please sign in to comment.