https://github.com/shader-slang/slang
Raw File
Tip revision: 0586f3298fa7d554fa2682103eefba88740d6758 authored by jsmall-nvidia on 18 January 2023, 19:11:50 UTC
Upgrade slang-llvm-13.x-33 (#2600)
Tip revision: 0586f32
slang-artifact-output-util.h
#ifndef SLANG_ARTIFACT_OUTPUT_UTIL_H
#define SLANG_ARTIFACT_OUTPUT_UTIL_H

#include "../core/slang-basic.h"

#include "../compiler-core/slang-artifact.h"
#include "../compiler-core/slang-diagnostic-sink.h"

#include "../../slang-com-ptr.h"

namespace Slang
{

class Session;

struct ArtifactOutputUtil
{
		/// Attempts to disassembly artifact into outArtifact. 
		/// Errors are output to sink if set. If not desired pass nullptr
	static SlangResult dissassembleWithDownstream(Session* session, IArtifact* artifact, DiagnosticSink* sink, IArtifact** outArtifact);
	
		/// Disassembles if that is plausible 
		/// Errors are output to sink if set. If not desired pass nullptr
	static SlangResult maybeDisassemble(Session* session, IArtifact* artifact, DiagnosticSink* sink, ComPtr<IArtifact>& outArtifact);

		/// Writes output to writer, will convert into disassembly if that is possible and appropriate (if outputting to console for example).
		/// Errors are output to sink if set. If not desired pass nullptr
	static SlangResult maybeConvertAndWrite(Session* session, IArtifact* artifact, DiagnosticSink* sink, const UnownedStringSlice& writerName, ISlangWriter* writer);

		/// Write (without any diagnostics)
	static SlangResult write(IArtifact* artifact, ISlangWriter* writer);
	static SlangResult write(const ArtifactDesc& desc, ISlangBlob* blob, ISlangWriter* writer);
	
		/// Writes the artifact with diagnostics 
	static SlangResult write(IArtifact* artifact, DiagnosticSink* sink, const UnownedStringSlice& writerName, ISlangWriter* writer);

		/// Write to the specified path
	static SlangResult writeToFile(const ArtifactDesc& desc, const void* data, size_t size, const String& path);
	static SlangResult writeToFile(const ArtifactDesc& desc, ISlangBlob* blob, const String& path);
	static SlangResult writeToFile(IArtifact* artifact, const String& path);
	static SlangResult writeToFile(IArtifact* artifact, DiagnosticSink* sink, const String& path);
};

}

#endif
back to top