Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Associating GUID (or UUID) with types #1776

Merged
merged 46 commits into from
Apr 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
cb9744a
#include an absolute path didn't work - because paths were taken to a…
jsmall-zzz Sep 21, 2020
a3eed19
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Oct 5, 2020
44cd760
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Oct 8, 2020
855f200
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Oct 9, 2020
c7fc290
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Oct 15, 2020
e6f35b9
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Oct 19, 2020
49aea47
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Oct 20, 2020
c4f607a
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Oct 22, 2020
64f38df
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Nov 4, 2020
324d4a0
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Nov 10, 2020
b8ed22e
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Nov 13, 2020
584654e
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Nov 17, 2020
14f72ca
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Nov 19, 2020
df3ba2f
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Nov 20, 2020
0e82cc2
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Nov 30, 2020
b34c048
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Dec 1, 2020
9d38982
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Dec 2, 2020
0df00b6
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Dec 3, 2020
0de148e
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Dec 8, 2020
f0054c8
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Dec 10, 2020
89944cd
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Dec 14, 2020
23e6e73
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 5, 2021
3f2092f
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 12, 2021
f7c7607
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 20, 2021
b9dfd68
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 22, 2021
3221777
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 22, 2021
16a7850
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 26, 2021
47c22cb
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 27, 2021
8d27c36
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Jan 29, 2021
f9195dd
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Feb 5, 2021
422f392
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Feb 8, 2021
42493e8
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Feb 9, 2021
e65d52d
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Feb 17, 2021
22161e1
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Feb 18, 2021
f175966
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Feb 25, 2021
58343f5
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 2, 2021
2a5d559
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 8, 2021
83405d6
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 11, 2021
a2ef2e9
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 12, 2021
fbebcf0
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 16, 2021
c6dc06c
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 17, 2021
ac2e540
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 29, 2021
b1a5345
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Mar 31, 2021
f5c77fa
Merge branch 'master' of https://github.com/shader-slang/slang
jsmall-zzz Apr 1, 2021
6f61e1e
Add mechanism to embed guid inside of type.
jsmall-zzz Apr 1, 2021
151c351
Merge branch 'master' into feature/c-interface
jsmall-zzz Apr 1, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 62 additions & 27 deletions slang.h
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,27 @@ extern "C"
uint8_t data4[8];
};

// Place at the start of an interface with the guid.
// Guid should be specified as SLANG_COM_INTERFACE(0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 })
// NOTE: it's the typical guid struct definition, without the surrounding {}
// It is not necessary to use the multiple parameters (we can wrap in parens), but this is simple.
#define SLANG_COM_INTERFACE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
public: \
SLANG_FORCE_INLINE static const SlangUUID& getTypeGuid() \
{ \
static const SlangUUID guid = { a, b, c, d0, d1, d2, d3, d4, d5, d6, d7 }; \
return guid; \
}

// Sometimes it's useful to associate a guid with a class to identify it. This macro can used for this,
// and the guid extracted via the getTypeGuid() function defined in the type
#define SLANG_CLASS_GUID(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
SLANG_FORCE_INLINE static const SlangUUID& getTypeGuid() \
{ \
static const SlangUUID guid = { a, b, c, d0, d1, d2, d3, d4, d5, d6, d7 }; \
return guid; \
}

/** Base interface for components exchanged through the API.

This interface definition is compatible with the COM `IUnknown`,
Expand All @@ -852,7 +873,8 @@ extern "C"
*/
struct ISlangUnknown
{
public:
SLANG_COM_INTERFACE(0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 })

virtual SLANG_NO_THROW SlangResult SLANG_MCALL queryInterface(SlangUUID const& uuid, void** outObject) = 0;
virtual SLANG_NO_THROW uint32_t SLANG_MCALL addRef() = 0;
virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() = 0;
Expand All @@ -865,19 +887,20 @@ extern "C"
uint32_t AddRef() { return addRef(); }
uint32_t Release() { return release(); }
};
#define SLANG_UUID_ISlangUnknown { 0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } }
#define SLANG_UUID_ISlangUnknown ISlangUnknown::getTypeGuid()

/** A "blob" of binary data.

This interface definition is compatible with the `ID3DBlob` and `ID3D10Blob` interfaces.
*/
struct ISlangBlob : public ISlangUnknown
{
public:
SLANG_COM_INTERFACE(0x8BA5FB08, 0x5195, 0x40e2, { 0xAC, 0x58, 0x0D, 0x98, 0x9C, 0x3A, 0x01, 0x02 })

virtual SLANG_NO_THROW void const* SLANG_MCALL getBufferPointer() = 0;
virtual SLANG_NO_THROW size_t SLANG_MCALL getBufferSize() = 0;
};
#define SLANG_UUID_ISlangBlob { 0x8BA5FB08, 0x5195, 0x40e2, { 0xAC, 0x58, 0x0D, 0x98, 0x9C, 0x3A, 0x01, 0x02 } }
#define SLANG_UUID_ISlangBlob ISlangBlob::getTypeGuid()

/** A (real or virtual) file system.

Expand All @@ -892,7 +915,8 @@ extern "C"

struct ISlangFileSystem : public ISlangUnknown
{
public:
SLANG_COM_INTERFACE(0x003A09FC, 0x3A4D, 0x4BA0, { 0xAD, 0x60, 0x1F, 0xD8, 0x63, 0xA9, 0x15, 0xAB })

/** Load a file from `path` and return a blob of its contents
@param path The path to load from, as a null-terminated UTF-8 string.
@param outBlob A destination pointer to receive the blob of the file contents.
Expand All @@ -910,7 +934,7 @@ extern "C"
char const* path,
ISlangBlob** outBlob) = 0;
};
#define SLANG_UUID_ISlangFileSystem { 0x003A09FC, 0x3A4D, 0x4BA0, { 0xAD, 0x60, 0x1F, 0xD8, 0x63, 0xA9, 0x15, 0xAB } }
#define SLANG_UUID_ISlangFileSystem ISlangFileSystem::getTypeGuid()


typedef void(*SlangFuncPtr)(void);
Expand All @@ -920,7 +944,8 @@ extern "C"
*/
struct ISlangSharedLibrary: public ISlangUnknown
{
public:
SLANG_COM_INTERFACE( 0x9c9d5bc5, 0xeb61, 0x496f,{ 0x80, 0xd7, 0xd1, 0x47, 0xc4, 0xa2, 0x37, 0x30 })

/** Get a function by name. If the library is unloaded will only return nullptr.
@param name The name of the function
@return The function pointer related to the name or nullptr if not found
Expand All @@ -935,11 +960,12 @@ extern "C"
*/
virtual SLANG_NO_THROW void* SLANG_MCALL findSymbolAddressByName(char const* name) = 0;
};
#define SLANG_UUID_ISlangSharedLibrary { 0x9c9d5bc5, 0xeb61, 0x496f,{ 0x80, 0xd7, 0xd1, 0x47, 0xc4, 0xa2, 0x37, 0x30 } };
#define SLANG_UUID_ISlangSharedLibrary ISlangSharedLibrary::getTypeGuid()

struct ISlangSharedLibraryLoader: public ISlangUnknown
{
public:
SLANG_COM_INTERFACE(0x6264ab2b, 0xa3e8, 0x4a06, { 0x97, 0xf1, 0x49, 0xbc, 0x2d, 0x2a, 0xb1, 0x4d })

/** Load a shared library. In typical usage the library name should *not* contain any platform
specific elements. For example on windows a dll name should *not* be passed with a '.dll' extension,
and similarly on linux a shared library should *not* be passed with the 'lib' prefix and '.so' extension
Expand All @@ -949,7 +975,7 @@ extern "C"
const char* path,
ISlangSharedLibrary** sharedLibraryOut) = 0;
};
#define SLANG_UUID_ISlangSharedLibraryLoader { 0x6264ab2b, 0xa3e8, 0x4a06, { 0x97, 0xf1, 0x49, 0xbc, 0x2d, 0x2a, 0xb1, 0x4d } };
#define SLANG_UUID_ISlangSharedLibraryLoader ISlangSharedLibraryLoader::getTypeGuid()

/* Type that identifies how a path should be interpreted */
typedef unsigned int SlangPathType;
Expand All @@ -973,7 +999,8 @@ extern "C"
*/
struct ISlangFileSystemExt : public ISlangFileSystem
{
public:
SLANG_COM_INTERFACE(0x5fb632d2, 0x979d, 0x4481, { 0x9f, 0xee, 0x66, 0x3c, 0x3f, 0x14, 0x49, 0xe1 })

/** Get a uniqueIdentity which uniquely identifies an object of the file system.

Given a path, returns a 'uniqueIdentity' which ideally is the same value for the same file on the file system.
Expand Down Expand Up @@ -1075,10 +1102,12 @@ extern "C"
void* userData) = 0;
};

#define SLANG_UUID_ISlangFileSystemExt { 0x5fb632d2, 0x979d, 0x4481, { 0x9f, 0xee, 0x66, 0x3c, 0x3f, 0x14, 0x49, 0xe1 } }
#define SLANG_UUID_ISlangFileSystemExt ISlangFileSystemExt::getTypeGuid()

struct ISlangMutableFileSystem : public ISlangFileSystemExt
{
SLANG_COM_INTERFACE(0xa058675c, 0x1d65, 0x452a, { 0x84, 0x58, 0xcc, 0xde, 0xd1, 0x42, 0x71, 0x5 })

/** Write the data specified with data and size to the specified path.

@param path The path for data to be saved to
Expand Down Expand Up @@ -1111,7 +1140,7 @@ extern "C"
const char* path) = 0;
};

#define SLANG_UUID_ISlangMutableFileSystem { 0xa058675c, 0x1d65, 0x452a, { 0x84, 0x58, 0xcc, 0xde, 0xd1, 0x42, 0x71, 0x5 } }
#define SLANG_UUID_ISlangMutableFileSystem ISlangMutableFileSystem::getTypeGuid()

/* Identifies different types of writer target*/
typedef unsigned int SlangWriterChannel;
Expand All @@ -1134,7 +1163,8 @@ extern "C"
*/
struct ISlangWriter : public ISlangUnknown
{
public:
SLANG_COM_INTERFACE(0xec457f0e, 0x9add, 0x4e6b,{ 0x85, 0x1c, 0xd7, 0xfa, 0x71, 0x6d, 0x15, 0xfd })

/** Begin an append buffer.
NOTE! Only one append buffer can be active at any time.
@param maxNumChars The maximum of chars that will be appended
Expand Down Expand Up @@ -1162,7 +1192,7 @@ extern "C"
virtual SLANG_NO_THROW SlangResult SLANG_MCALL setMode(SlangWriterMode mode) = 0;
};

#define SLANG_UUID_ISlangWriter { 0xec457f0e, 0x9add, 0x4e6b,{ 0x85, 0x1c, 0xd7, 0xfa, 0x71, 0x6d, 0x15, 0xfd } };
#define SLANG_UUID_ISlangWriter ISlangWriter::getTypeGuid()

namespace slang {
struct IGlobalSession;
Expand Down Expand Up @@ -2991,7 +3021,8 @@ namespace slang
*/
struct IGlobalSession : public ISlangUnknown
{
public:
SLANG_COM_INTERFACE(0xc140b5fd, 0xc78, 0x452e, { 0xba, 0x7c, 0x1a, 0x1e, 0x70, 0xc7, 0xf7, 0x1c })

/** Create a new session for loading and compiling code.
*/
virtual SLANG_NO_THROW SlangResult SLANG_MCALL createSession(
Expand Down Expand Up @@ -3164,15 +3195,15 @@ namespace slang
char const* name) = 0;
};

#define SLANG_UUID_IGlobalSession { 0xc140b5fd, 0xc78, 0x452e, { 0xba, 0x7c, 0x1a, 0x1e, 0x70, 0xc7, 0xf7, 0x1c } };
#define SLANG_UUID_IGlobalSession IGlobalSession::getTypeGuid()

/*!
@brief A request for one or more compilation actions to be performed.
*/
struct ICompileRequest : public ISlangUnknown
{
public:

SLANG_COM_INTERFACE( 0x96d33993, 0x317c, 0x4db5, { 0xaf, 0xd8, 0x66, 0x6e, 0xe7, 0x72, 0x48, 0xe2 } )
/** Set the filesystem hook to use for a compile request

The provided `fileSystem` will be used to load any files that
Expand Down Expand Up @@ -3716,7 +3747,7 @@ namespace slang

};

#define SLANG_UUID_ICompileRequest { 0x96d33993, 0x317c, 0x4db5, { 0xaf, 0xd8, 0x66, 0x6e, 0xe7, 0x72, 0x48, 0xe2 } };
#define SLANG_UUID_ICompileRequest ICompileRequest::getTypeGuid()

/** Description of a code generation target.
*/
Expand Down Expand Up @@ -3816,7 +3847,8 @@ namespace slang
*/
struct ISession : public ISlangUnknown
{
public:
SLANG_COM_INTERFACE( 0x67618701, 0xd116, 0x468f, { 0xab, 0x3b, 0x47, 0x4b, 0xed, 0xce, 0xe, 0x3d } )

/** Get the global session thas was used to create this session.
*/
virtual SLANG_NO_THROW IGlobalSession* SLANG_MCALL getGlobalSession() = 0;
Expand Down Expand Up @@ -3905,7 +3937,7 @@ namespace slang
SlangCompileRequest** outCompileRequest) = 0;
};

#define SLANG_UUID_ISession { 0x67618701, 0xd116, 0x468f, { 0xab, 0x3b, 0x47, 0x4b, 0xed, 0xce, 0xe, 0x3d } }
#define SLANG_UUID_ISession ISession::getTypeGuid()

/** A component type is a unit of shader code layout, reflection, and linking.

Expand Down Expand Up @@ -3970,6 +4002,8 @@ namespace slang
*/
struct IComponentType : public ISlangUnknown
{
SLANG_COM_INTERFACE(0x5bc42be8, 0x5c50, 0x4929, { 0x9e, 0x5e, 0xd1, 0x5e, 0x7c, 0x24, 0x1, 0x5f })

/** Get the runtime session that this component type belongs to.
*/
virtual SLANG_NO_THROW ISession* SLANG_MCALL getSession() = 0;
Expand Down Expand Up @@ -4073,14 +4107,14 @@ namespace slang
ISlangSharedLibrary** outSharedLibrary,
slang::IBlob** outDiagnostics = 0) = 0;
};
#define SLANG_UUID_IComponentType { 0x5bc42be8, 0x5c50, 0x4929, { 0x9e, 0x5e, 0xd1, 0x5e, 0x7c, 0x24, 0x1, 0x5f } };
#define SLANG_UUID_IComponentType IComponentType::getTypeGuid()

struct IEntryPoint : public IComponentType
{
public:
SLANG_COM_INTERFACE(0x8f241361, 0xf5bd, 0x4ca0, { 0xa3, 0xac, 0x2, 0xf7, 0xfa, 0x24, 0x2, 0xb8 })
};

#define SLANG_UUID_IEntryPoint { 0x8f241361, 0xf5bd, 0x4ca0, { 0xa3, 0xac, 0x2, 0xf7, 0xfa, 0x24, 0x2, 0xb8 } }
#define SLANG_UUID_IEntryPoint IEntryPoint::getTypeGuid()

/** A module is the granularity of shader code compilation and loading.

Expand All @@ -4097,13 +4131,14 @@ namespace slang
*/
struct IModule : public IComponentType
{
public:
SLANG_COM_INTERFACE(0xc720e64, 0x8722, 0x4d31, { 0x89, 0x90, 0x63, 0x8a, 0x98, 0xb1, 0xc2, 0x79 })

virtual SLANG_NO_THROW SlangResult SLANG_MCALL findEntryPointByName(
char const* name,
IEntryPoint** outEntryPoint) = 0;
};

#define SLANG_UUID_IModule { 0xc720e64, 0x8722, 0x4d31, { 0x89, 0x90, 0x63, 0x8a, 0x98, 0xb1, 0xc2, 0x79 } }
#define SLANG_UUID_IModule IModule::getTypeGuid()

/** Argument used for specialization to types/values.
*/
Expand Down
8 changes: 2 additions & 6 deletions source/core/slang-blob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@

namespace Slang {

// Allocate static const storage for the various interface IDs that the Slang API needs to expose
static const Guid IID_ISlangUnknown = SLANG_UUID_ISlangUnknown;
static const Guid IID_ISlangBlob = SLANG_UUID_ISlangBlob;

ISlangUnknown* BlobBase::getInterface(const Guid& guid)
{
return (guid == IID_ISlangUnknown || guid == IID_ISlangBlob) ? static_cast<ISlangBlob*>(this) : nullptr;
return (guid == ISlangUnknown::getTypeGuid() || guid == ISlangBlob::getTypeGuid()) ? static_cast<ISlangBlob*>(this) : nullptr;
}

SlangResult StaticBlob::queryInterface(SlangUUID const& guid, void** outObject)
{
if (guid == IID_ISlangUnknown || guid == IID_ISlangBlob)
if (guid == ISlangUnknown::getTypeGuid() || guid == ISlangBlob::getTypeGuid())
{
*outObject = static_cast<ISlangBlob*>(this);
return SLANG_OK;
Expand Down
4 changes: 1 addition & 3 deletions source/core/slang-compression-system.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ enum class CompressionSystemType

class ICompressionSystem : public ISlangUnknown
{
public:
SLANG_COM_INTERFACE(0xcc935840, 0xe059, 0x4bb8, { 0xa2, 0x2d, 0x92, 0x7b, 0x3c, 0x73, 0x8f, 0x85 })

/** Get the compression system type
@return The compression system type */
Expand All @@ -51,8 +51,6 @@ class ICompressionSystem : public ISlangUnknown
virtual SLANG_NO_THROW SlangResult SLANG_MCALL decompress(const void* compressed, size_t compressedSizeInBytes, size_t decompressedSizeInBytes, void* outDecompressed) = 0;
};

#define SLANG_UUID_ICompressionSystem { 0xcc935840, 0xe059, 0x4bb8, { 0xa2, 0x2d, 0x92, 0x7b, 0x3c, 0x73, 0x8f, 0x85 } };

}

#endif
4 changes: 1 addition & 3 deletions source/core/slang-deflate-compression-system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ namespace Slang
{

// Allocate static const storage for the various interface IDs that the Slang API needs to expose
static const Guid IID_ISlangUnknown = SLANG_UUID_ISlangUnknown;
static const Guid IID_ICompressionSystem = SLANG_UUID_ICompressionSystem;

class DeflateCompressionSystemImpl : public RefObject, public ICompressionSystem
{
Expand All @@ -42,7 +40,7 @@ class DeflateCompressionSystemImpl : public RefObject, public ICompressionSystem

ICompressionSystem* DeflateCompressionSystemImpl::getInterface(const Guid& guid)
{
return (guid == IID_ISlangUnknown || guid == IID_ICompressionSystem) ? static_cast<ICompressionSystem*>(this) : nullptr;
return (guid == ISlangUnknown::getTypeGuid() || guid == ICompressionSystem::getTypeGuid()) ? static_cast<ICompressionSystem*>(this) : nullptr;
}

SlangResult DeflateCompressionSystemImpl::compress(const CompressionStyle* style, const void* src, size_t srcSizeInBytes, ISlangBlob** outBlob)
Expand Down
20 changes: 7 additions & 13 deletions source/core/slang-file-system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,21 @@ namespace Slang
{

// Allocate static const storage for the various interface IDs that the Slang API needs to expose
static const Guid IID_ISlangUnknown = SLANG_UUID_ISlangUnknown;
static const Guid IID_ISlangFileSystem = SLANG_UUID_ISlangFileSystem;
static const Guid IID_ISlangFileSystemExt = SLANG_UUID_ISlangFileSystemExt;
static const Guid IID_ISlangMutableFileSystem = SLANG_UUID_ISlangMutableFileSystem;

static const Guid IID_SlangCacheFileSystem = SLANG_UUID_CacheFileSystem;

SLANG_FORCE_INLINE static SlangResult _checkExt(FileSystemStyle style) { return Index(style) >= Index(FileSystemStyle::Ext) ? SLANG_OK : SLANG_E_NOT_IMPLEMENTED; }
SLANG_FORCE_INLINE static SlangResult _checkMutable(FileSystemStyle style) { return Index(style) >= Index(FileSystemStyle::Mutable) ? SLANG_OK : SLANG_E_NOT_IMPLEMENTED; }

SLANG_FORCE_INLINE static bool _canCast(FileSystemStyle style, const Guid& guid)
{
if (guid == IID_ISlangUnknown || guid == IID_ISlangFileSystem)
if (guid == ISlangUnknown::getTypeGuid() || guid == ISlangFileSystem::getTypeGuid())
{
return true;
}
else if (guid == IID_ISlangFileSystemExt)
else if (guid == ISlangFileSystemExt::getTypeGuid())
{
return Index(style) >= Index(FileSystemStyle::Ext);
}
else if (guid == IID_ISlangMutableFileSystem)
else if (guid == ISlangMutableFileSystem::getTypeGuid())
{
return Index(style) >= Index(FileSystemStyle::Mutable);
}
Expand All @@ -41,11 +35,11 @@ static FileSystemStyle _getFileSystemStyle(ISlangFileSystem* system, ComPtr<ISla

FileSystemStyle style = FileSystemStyle::Load;

if (SLANG_SUCCEEDED(system->queryInterface(IID_ISlangMutableFileSystem, (void**)out.writeRef())))
if (SLANG_SUCCEEDED(system->queryInterface(ISlangMutableFileSystem::getTypeGuid(), (void**)out.writeRef())))
{
style = FileSystemStyle::Mutable;
}
else if (SLANG_SUCCEEDED(system->queryInterface(IID_ISlangFileSystemExt, (void**)out.writeRef())))
else if (SLANG_SUCCEEDED(system->queryInterface(ISlangFileSystemExt::getTypeGuid(), (void**)out.writeRef())))
{
style = FileSystemStyle::Ext;
}
Expand Down Expand Up @@ -269,7 +263,7 @@ SlangResult OSFileSystem::createDirectory(const char* path)

SLANG_NO_THROW SlangResult SLANG_MCALL CacheFileSystem::queryInterface(SlangUUID const& uuid, void** outObject)
{
if (uuid == IID_SlangCacheFileSystem)
if (uuid == CacheFileSystem::getTypeGuid())
{
*outObject = this;
return SLANG_OK;
Expand Down Expand Up @@ -310,7 +304,7 @@ void CacheFileSystem::setInnerFileSystem(ISlangFileSystem* fileSystem, UniqueIde
if (fileSystem)
{
// Try to get the more sophisticated interface
fileSystem->queryInterface(IID_ISlangFileSystemExt, (void**)m_fileSystemExt.writeRef());
fileSystem->queryInterface(ISlangFileSystemExt::getTypeGuid(), (void**)m_fileSystemExt.writeRef());
}

switch (m_uniqueIdentityMode)
Expand Down
Loading