| SH::ShAttrib< N, Kind, T, Swizzled > | A generic attribute (or parameter) holding N values |
| SH::ShBasicBlock | A basic block |
| SH::ShBlock | A generic block or token |
| SH::ShCheckDims< N, ScalarLHS, M, ScalarRHS > | Utility template to check whether dimensions are equal or scalar |
| SH::ShConstant< N, T > | A shader-compile-time constant |
| SH::ShCtrlGraph | A control-flow graph |
| SH::ShDomTree | A dominator tree in a flowgraph |
| SH::ShEnvironment | Global settings for the current program |
| SH::ShException | A generic exception |
| SH::ShImageException | An exception relating to an ShImage operation |
| SH::ShIntEqual< A, B > | Enforce that A == B (will not instantiate otherwise) |
| SH::ShLinearAllocator | A simple, basic-block based linear register allocator |
| SH::ShMatrix< Rows, Cols, Kind, T > | A matrix of Rows by Cols elements |
| SH::ShMatrixRows< Rows, Cols, T > | A few rows from a matrix |
| SH::ShOperationInfo | Information related to a specific operation |
| SH::ShParseException | An exception representing a parse error |
| SH::ShProgramNode | A particular Sh program |
| SH::ShRefCount< T > | A reference-counting smart pointer |
| SH::ShRefCountable | A class which can be reference-counted |
| SH::ShStatement | A single statement |
| SH::ShSwizzle | Represents swizzling of a variable |
| SH::ShSwizzleException | Thrown when an invalid swizzle is specified (e.g |
| SH::ShToken | A token in the (unparsed) parse tree |
| SH::ShTokenArgument | A token argument, e.g. to SH_IF or SH_FOR |
| SH::ShTokenizer | A tokenizer |
| SH::ShTokenizerException | An exception indicating a tokenizer error |
| SH::ShVariable | A reference and interface to a generic n-tuple variable |
| SH::ShVariableN< N, T > | A variable of length N |
| SH::ShVariableNode | A generic n-tuple variable |