summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-fossil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-fossil.cpp')
-rw-r--r--source/slang/slang-fossil.cpp79
1 files changed, 22 insertions, 57 deletions
diff --git a/source/slang/slang-fossil.cpp b/source/slang/slang-fossil.cpp
index e3b2e2c9d..204430901 100644
--- a/source/slang/slang-fossil.cpp
+++ b/source/slang/slang-fossil.cpp
@@ -25,12 +25,12 @@ const char Fossil::Header::kMagic[16] = {
'\n' // byte 15
};
-FossilizedValRef getRootValue(ISlangBlob* blob)
+Fossil::AnyValPtr getRootValue(ISlangBlob* blob)
{
return getRootValue(blob->getBufferPointer(), blob->getBufferSize());
}
-FossilizedValRef getRootValue(void const* data, Size size)
+Fossil::AnyValPtr getRootValue(void const* data, Size size)
{
if (!data)
{
@@ -72,9 +72,7 @@ FossilizedValRef getRootValue(void const* data, Size size)
SLANG_UNEXPECTED("bad format for fossil");
}
- return FossilizedValRef(
- rootValueVariant->getContentData(),
- rootValueVariant->getContentLayout());
+ return getVariantContentPtr(rootValueVariant);
}
} // namespace Fossil
@@ -85,13 +83,13 @@ Size FossilizedStringObj::getSize() const
return Size(*sizePtr);
}
-UnownedTerminatedStringSlice FossilizedStringObj::getValue() const
+UnownedTerminatedStringSlice FossilizedStringObj::get() const
{
auto size = getSize();
return UnownedTerminatedStringSlice((char*)this, size);
}
-Count FossilizedContainerObj::getElementCount() const
+Count FossilizedContainerObjBase::getElementCount() const
{
auto countPtr = (FossilUInt*)this - 1;
return Size(*countPtr);
@@ -103,52 +101,18 @@ FossilizedValLayout* FossilizedVariantObj::getContentLayout() const
return (*layoutPtrPtr).get();
}
-FossilizedValRef getPtrTarget(FossilizedPtrValRef ptrRef)
-{
- auto ptrLayout = ptrRef.getLayout();
- auto ptrPtr = ptrRef.getData();
- return FossilizedValRef(ptrPtr->getTargetData(), ptrLayout->elementLayout);
-}
-
-bool hasValue(FossilizedOptionalObjRef optionalRef)
-{
- return optionalRef.getData() != nullptr;
-}
-
-FossilizedValRef getValue(FossilizedOptionalObjRef optionalRef)
-{
- auto optionalLayout = optionalRef.getLayout();
- auto valuePtr = optionalRef.getData();
- return FossilizedValRef(valuePtr, optionalLayout->elementLayout);
-}
-
-Count getElementCount(FossilizedContainerObjRef containerRef)
-{
- if (!containerRef)
- return 0;
-
- auto containerPtr = containerRef.getData();
- return containerPtr->getElementCount();
-}
-
-FossilizedValRef getElement(FossilizedContainerObjRef containerRef, Index index)
+Fossil::AnyValRef Fossil::ValRef<FossilizedContainerObjBase>::getElement(Index index) const
{
SLANG_ASSERT(index >= 0);
- SLANG_ASSERT(index < getElementCount(containerRef));
+ SLANG_ASSERT(index < getElementCount());
- auto containerLayout = containerRef.getLayout();
+ auto containerLayout = getLayout();
auto elementLayout = containerLayout->elementLayout.get();
auto elementStride = containerLayout->elementStride;
- auto elementsPtr = (Byte*)containerRef.getData();
- auto elementPtr = (FossilizedVal*)(elementsPtr + elementStride * index);
- return FossilizedValRef(elementPtr, elementLayout);
-}
-
-Count getFieldCount(FossilizedRecordValRef recordRef)
-{
- auto recordLayout = recordRef.getLayout();
- return recordLayout->fieldCount;
+ auto elementsPtr = (Byte*)getDataPtr();
+ auto elementPtr = (void*)(elementsPtr + elementStride * index);
+ return Fossil::AnyValRef(elementPtr, elementLayout);
}
FossilizedRecordElementLayout* FossilizedRecordLayout::getField(Index index) const
@@ -160,28 +124,29 @@ FossilizedRecordElementLayout* FossilizedRecordLayout::getField(Index index) con
return fieldsPtr + index;
}
-
-FossilizedValRef getField(FossilizedRecordValRef recordRef, Index index)
+Fossil::AnyValRef Fossil::ValRef<FossilizedRecordVal>::getField(Index index) const
{
SLANG_ASSERT(index >= 0);
- SLANG_ASSERT(index < getFieldCount(recordRef));
+ SLANG_ASSERT(index < getFieldCount());
- auto recordLayout = recordRef.getLayout();
- auto field = recordLayout->getField(index);
+ auto recordLayout = getLayout();
+ auto fieldInfo = recordLayout->getField(index);
- auto fieldsPtr = (Byte*)recordRef.getData();
- auto fieldPtr = (FossilizedVal*)(fieldsPtr + field->offset);
- return FossilizedValRef(fieldPtr, field->layout);
+ auto fieldsPtr = (Byte*)getDataPtr();
+ auto fieldPtr = (void*)(fieldsPtr + fieldInfo->offset);
+ return Fossil::AnyValRef(fieldPtr, fieldInfo->layout);
}
+#if 0
FossilizedValRef getVariantContent(FossilizedVariantObjRef variantRef)
{
return getVariantContent(variantRef.getData());
}
+#endif
-FossilizedValRef getVariantContent(FossilizedVariantObj* variantPtr)
+Fossil::AnyValPtr getVariantContentPtr(FossilizedVariantObj* variantPtr)
{
- return FossilizedValRef(variantPtr->getContentData(), variantPtr->getContentLayout());
+ return Fossil::AnyValPtr(variantPtr->getContentDataPtr(), variantPtr->getContentLayout());
}
} // namespace Slang