MDL SDK API nvidia_logo_transpbg.gif Up
imdl_module_builder.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2022 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_IMDL_MODULE_BUILDER_H
8#define MI_NEURAYLIB_IMDL_MODULE_BUILDER_H
9
11#include <mi/neuraylib/itype.h>
12
13namespace mi {
14
15class IArray;
16
17namespace neuraylib {
18
19class IAnnotation_block;
20class IAnnotation_list;
21class IExpression;
22class IExpression_list;
23class IMdl_execution_context;
24
33 base::Interface_declare<0x2357f2f8,0x4428,0x47e5,0xaa,0x92,0x97,0x98,0x25,0x5d,0x26,0x57>
34{
35public:
55 const char* name,
56 const char* prototype_name,
57 const IExpression_list* defaults,
58 const IAnnotation_block* annotations,
59 const IAnnotation_block* return_annotations,
60 bool is_exported,
61 IMdl_execution_context* context) = 0;
62
84 const char* name,
85 const IExpression* body,
86 const IType_list* parameters,
87 const IExpression_list* defaults,
88 const IAnnotation_list* parameter_annotations,
89 const IAnnotation_block* annotations,
90 const IAnnotation_block* return_annotations,
91 bool is_exported,
92 IType::Modifier frequency_qualifier,
93 IMdl_execution_context* context) = 0;
94
109 const char* name,
110 const IType_list* parameters,
111 const IExpression_list* defaults,
112 const IAnnotation_list* parameter_annotations,
113 const IAnnotation_block* annotations,
114 bool is_exported,
115 IMdl_execution_context* context) = 0;
116
132 const char* name,
133 const IExpression_list* enumerators,
134 const IAnnotation_list* enumerator_annotations,
135 const IAnnotation_block* annotations,
136 bool is_exported,
137 IMdl_execution_context* context) = 0;
138
156 const char* name,
157 const IType_list* fields,
158 const IExpression_list* field_defaults,
159 const IAnnotation_list* field_annotations,
160 const IAnnotation_block* annotations,
161 bool is_exported,
162 IMdl_execution_context* context) = 0;
163
175 const char* name,
176 const IExpression* expr,
177 const IAnnotation_block* annotations,
178 bool is_exported,
179 IMdl_execution_context* context) = 0;
180
188 const IAnnotation_block* annotations,
189 IMdl_execution_context* context) = 0;
190
201 const char* name,
202 Size index,
203 IMdl_execution_context* context) = 0;
204
207
218 virtual const IArray* analyze_uniform(
219 const IExpression* root_expr,
220 bool root_expr_uniform,
221 IMdl_execution_context* context) = 0;
222};
223 // end group mi_neuray_mdl_misc
225
226} // namespace neuraylib
227
228} // namespace mi
229
230#endif // MI_NEURAYLIB_IMDL_MODULE_BUILDER_H
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:468
An ordered collection of annotation blocks identified by name or index.
Definition: iexpression.h:496
An ordered collection of expressions identified by name or index.
Definition: iexpression.h:239
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:110
signed int Sint32
32-bit signed integer.
Definition: types.h:44
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