blob: d5d95507cbbabb56e1ec1169bf2ec1f67b03b74a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// slang-emit-cpp.h
#ifndef SLANG_EMIT_CPP_H
#define SLANG_EMIT_CPP_H
#include "slang-emit-c-like.h"
namespace Slang
{
class CPPSourceEmitter: public CLikeSourceEmitter
{
public:
typedef CLikeSourceEmitter Super;
enum class BuiltInCOp
{
Splat, //< Splat a single value to all values of a vector or matrix type
Init, //< Initialize with parameters (must match the type)
};
CPPSourceEmitter(const Desc& desc) :
Super(desc)
{}
protected:
void _emitCVecType(IROp op, Int size);
void _emitCMatType(IROp op, IRIntegerValue rowCount, IRIntegerValue colCount);
void _emitCFunc(BuiltInCOp cop, IRType* type);
virtual void emitParameterGroupImpl(IRGlobalParam* varDecl, IRUniformParameterGroupType* type) SLANG_OVERRIDE;
virtual void emitEntryPointAttributesImpl(IRFunc* irFunc, EntryPointLayout* entryPointLayout) SLANG_OVERRIDE;
virtual void emitSimpleTypeImpl(IRType* type) SLANG_OVERRIDE;
virtual void emitVectorTypeNameImpl(IRType* elementType, IRIntegerValue elementCount) SLANG_OVERRIDE;
virtual bool tryEmitInstExprImpl(IRInst* inst, IREmitMode mode, const EmitOpInfo& inOuterPrec) SLANG_OVERRIDE;
};
}
#endif
|