7#ifndef MI_NEURAYLIB_IMDL_MODULE_BUILDER_H
8#define MI_NEURAYLIB_IMDL_MODULE_BUILDER_H
19class IAnnotation_block;
20class IAnnotation_list;
22class IExpression_list;
23class IMdl_execution_context;
33 base::Interface_declare<0x2357f2f8,0x4428,0x47e5,0xaa,0x92,0x97,0x98,0x25,0x5d,0x26,0x57>
56 const char* prototype_name,
220 bool root_expr_uniform,
This interface represents static arrays, i.e., arrays with a fixed number of elements.
Definition: iarray.h:37
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
An annotation block is an array of annotations.
Definition: iexpression.h:546
An ordered collection of annotation blocks identified by name or index.
Definition: iexpression.h:574
An ordered collection of expressions identified by name or index.
Definition: iexpression.h:315
The interface to MDL expressions.
Definition: iexpression.h:48
The execution context can be used to query status information like error and warning messages concern...
Definition: imdl_execution_context.h:126
The module builder allows to create new MDL modules.
Definition: imdl_module_builder.h:34
virtual Sint32 add_variant(const char *name, const char *prototype_name, const IExpression_list *defaults, const IAnnotation_block *annotations, const IAnnotation_block *return_annotations, bool is_exported, IMdl_execution_context *context)=0
Adds a variant to the module.
virtual Sint32 add_function(const char *name, const IExpression *body, const IType_list *parameters, const IExpression_list *defaults, const IAnnotation_list *parameter_annotations, const IAnnotation_block *annotations, const IAnnotation_block *return_annotations, bool is_exported, IType::Modifier frequency_qualifier, IMdl_execution_context *context)=0
Adds a material or function to the module.
virtual Sint32 set_module_annotations(const IAnnotation_block *annotations, IMdl_execution_context *context)=0
Sets the annotations of the module itself.
virtual Sint32 add_annotation(const char *name, const IType_list *parameters, const IExpression_list *defaults, const IAnnotation_list *parameter_annotations, const IAnnotation_block *annotations, bool is_exported, IMdl_execution_context *context)=0
Adds an annotation to the module.
virtual Sint32 remove_entity(const char *name, Size index, IMdl_execution_context *context)=0
Removes a material, function, enum or struct type from the module.
virtual Sint32 add_struct_type(const char *name, const IType_list *fields, const IExpression_list *field_defaults, const IAnnotation_list *field_annotations, const IAnnotation_block *annotations, bool is_exported, IMdl_execution_context *context)=0
Adds a struct type to the module.
virtual Sint32 add_constant(const char *name, const IExpression *expr, const IAnnotation_block *annotations, bool is_exported, IMdl_execution_context *context)=0
Adds a constant to the module.
virtual const IArray * analyze_uniform(const IExpression *root_expr, bool root_expr_uniform, IMdl_execution_context *context)=0
Analyzes which parameters need to be uniform.
virtual Sint32 add_enum_type(const char *name, const IExpression_list *enumerators, const IAnnotation_list *enumerator_annotations, const IAnnotation_block *annotations, bool is_exported, IMdl_execution_context *context)=0
Adds an enum type to the module.
virtual Sint32 clear_module(IMdl_execution_context *context)=0
Clears the module, i.e., removes all declarations from the module.
An ordered collection of types identified by name or index.
Definition: itype.h:542
Modifier
The possible kinds of type modifiers.
Definition: itype.h:98
Uint64 Size
Unsigned integral type that is large enough to hold the size of all types.
Definition: types.h:112
signed int Sint32
32-bit signed integer.
Definition: types.h:46
Mixin class template for deriving new interface declarations.
Types of the MDL type system.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: example_derivatives.dox:5