Repository: google/filament
File: filament/src/details/Engine.h (C/C++)

Code before:
        return mTransformManager;
    }

    utils::EntityManager& getEntityManager() noexcept {
        return mEntityManager;
    }

    HeapAllocatorArena& getHeapAllocator() noexcept {
        return mHeapAllocator;
    }

    Backend getBackend() const noexcept {
        return mBackend;
    }

    Platform* getPlatform() const noexcept {
        return mPlatform;
    }

    size_t getMaxShadowMapCount() const noexcept;

    // Return a vector of shader languages, in order of preference.
    utils::FixedCapacityVector<backend::ShaderLanguage> getShaderLanguage() const noexcept {
        return getDriver().getShaderLanguage(mConfig.preferredShaderLanguage);
    }

    ResourceAllocatorDisposer& getResourceAllocatorDisposer() noexcept {
        assert_invariant(mResourceAllocatorDisposer);
        return *mResourceAllocatorDisposer;
    }

    std::shared_ptr<ResourceAllocatorDisposer> const& getSharedResourceAllocatorDisposer() noexcept {
        return mResourceAllocatorDisposer;
    }

    void* streamAlloc(size_t size, size_t alignment) noexcept;

    Epoch getEngineEpoch() const { return mEngineEpoch; }
    duration getEngineTime() const noexcept {
        return clock::now() - getEngineEpoch();
    }

    backend::Handle<backend::HwRenderTarget> getDefaultRenderTarget() const noexcept {
        return mDefaultRenderTarget;
    }

    template <typename T, typename ... ARGS>
    T* create(ResourceList<T>& list, typename T::Builder const& builder, ARGS&& ... args) noexcept;

    FBufferObject* createBufferObject(const BufferObject::Builder& builder) noexcept;
    FVertexBuffer* createVertexBuffer(const VertexBuffer::Builder& builder) noexcept;

Review comment (suggestion):
Since `getShaderLanguage` returns a vector, I think we should rename it and the new `Driver` method to `getShaderLanguages` (plural). 

Code after:
    }

    FTransformManager& getTransformManager() noexcept {
        return mTransformManager;
    }

    utils::EntityManager& getEntityManager() noexcept {
        return mEntityManager;
    }

    HeapAllocatorArena& getHeapAllocator() noexcept {
        return mHeapAllocator;
    }

    Backend getBackend() const noexcept {
        return mBackend;
    }

    Platform* getPlatform() const noexcept {
        return mPlatform;
    }

    size_t getMaxShadowMapCount() const noexcept;

    // Return a vector of shader languages, in order of preference.
    utils::FixedCapacityVector<backend::ShaderLanguage> getShaderLanguage() const noexcept {
        backend::ShaderLanguage preferredLanguage;

        switch (mConfig.preferredShaderLanguage) {
            case Config::ShaderLanguage::DEFAULT:
                preferredLanguage = backend::ShaderLanguage::UNSPECIFIED;
                break;
            case Config::ShaderLanguage::MSL:
                preferredLanguage = backend::ShaderLanguage::MSL;
                break;
            case Config::ShaderLanguage::METAL_LIBRARY:
                preferredLanguage = backend::ShaderLanguage::METAL_LIBRARY;
                break;
        }


        return getDriver().getShaderLanguages(preferredLanguage);
    }

    ResourceAllocatorDisposer& getResourceAllocatorDisposer() noexcept {
        assert_invariant(mResourceAllocatorDisposer);
        return *mResourceAllocatorDisposer;
    }

    std::shared_ptr<ResourceAllocatorDisposer> const& getSharedResourceAllocatorDisposer() noexcept {
        return mResourceAllocatorDisposer;