MDL SDK API nvidia_logo_transpbg.gif Up
mdl_generated_dag.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2024 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
6#ifndef MDL_GENERATED_DAG_H
7#define MDL_GENERATED_DAG_H 1
8
9#include <cstring>
10#include <mi/mdl/mdl_iowned.h>
11#include <mi/mdl/mdl_generated_code.h>
12#include <mi/mdl/mdl_values.h>
13
14namespace mi {
15namespace mdl {
16
17class ICall_name_resolver;
18class IResource_modifier;
19class IValue;
20class IValue_float;
21class IValue_resource;
22class IValue_factory;
23class Messages;
24class IType_factory;
25
30class DAG_hash {
31public:
34 memset(hash, 0, sizeof(hash));
35 }
36
40 explicit DAG_hash(unsigned char const (&arr)[16])
41 {
42 memcpy(hash, arr, sizeof(hash));
43 }
44
48 bool operator==(DAG_hash const &other) const {
49 return memcmp(hash, other.hash, sizeof(hash)) == 0;
50 }
51
55 bool operator!=(DAG_hash const &other) const {
56 return memcmp(hash, other.hash, sizeof(hash)) != 0;
57 }
58
62 bool operator<(DAG_hash const &other) const {
63 return memcmp(hash, other.hash, sizeof(hash)) < 0;
64 }
65
69 bool operator<=(DAG_hash const &other) const {
70 return memcmp(hash, other.hash, sizeof(hash)) <= 0;
71 }
72
76 bool operator>(DAG_hash const &other) const {
77 return memcmp(hash, other.hash, sizeof(hash)) > 0;
78 }
79
83 bool operator>=(DAG_hash const &other) const {
84 return memcmp(hash, other.hash, sizeof(hash)) >= 0;
85 }
86
90 unsigned char operator[](size_t n) const {
91 if (n < 16)
92 return hash[n];
93 return 0;
94 }
95
99 unsigned char *data() {
100 return hash;
101 }
102
106 unsigned char const *data() const {
107 return hash;
108 }
109
111 static size_t size() { return 16; }
112
113private:
114 unsigned char hash[16];
115};
116
118class DAG_node : public Interface_owned {
119public:
121 enum Kind {
126 };
127
129 virtual Kind get_kind() const = 0;
130
132 virtual IType const *get_type() const = 0;
133
138 virtual size_t get_id() const = 0;
139};
140
144class DAG_constant : public DAG_node {
145public:
147 static Kind const s_kind = EK_CONSTANT;
148
150 virtual IValue const *get_value() const = 0;
151};
152
157class DAG_temporary : public DAG_node {
158public:
160 static Kind const s_kind = EK_TEMPORARY;
161
163 virtual int get_index() const = 0;
164
166 virtual DAG_node const *get_expr() const = 0;
167};
168
173class DAG_call : public DAG_node {
174public:
179 arg = NULL;
180 param_name = NULL;
181 }
182
188 DAG_node const *arg,
189 char const *param_name)
190 : arg(arg)
192 {}
193
194 DAG_node const *arg;
195 char const *param_name;
196 };
197
198public:
200 static Kind const s_kind = EK_CALL;
201
205 virtual char const *get_name() const = 0;
206
210 virtual int get_argument_count() const = 0;
211
216 virtual char const *get_parameter_name(int index) const = 0;
217
222 virtual DAG_node const *get_argument(int index) const = 0;
223
229 virtual DAG_node const *get_argument(char const *name) const = 0;
230
232 virtual IDefinition::Semantics get_semantic() const = 0;
233
238 virtual void set_argument(
239 int index,
240 DAG_node const *arg) = 0;
241
243 virtual size_t get_name_hash() const = 0;
244};
245
250class DAG_parameter : public DAG_node {
251public:
253 static Kind const s_kind = EK_PARAMETER;
254
256 virtual int get_index() const = 0;
257};
258
260class IResource_tagger : public Interface_owned {
261public:
265 virtual int get_resource_tag(
266 IValue_resource const *res) const = 0;
267};
268
277class IDag_builder : public
279 <0x01dbe5fb,0xa13d,0x42eb,0xbe,0x3e,0x0a,0x1d,0x2c,0x53,0x11,0xdf,
280 mi::base::IInterface>
281{
282public:
284 virtual IType_factory *get_type_factory() = 0;
285
287 virtual IValue_factory *get_value_factory() = 0;
288
293 virtual DAG_constant const *create_constant(IValue const *value) = 0;
294
303 virtual DAG_node const *create_call(
304 char const *signature,
305 IDefinition::Semantics sema,
306 DAG_call::Call_argument const call_args[],
307 int num_call_args,
308 IType const *ret_type) = 0;
309
316 IType const *type,
317 int index) = 0;
318
323 virtual bool enable_cse(bool flag) = 0;
324
329 virtual bool enable_opt(bool flag) = 0;
330
335 virtual bool enable_unsafe_math_opt(bool flag) = 0;
336};
337
347public:
353 IDefinition::Semantics sema) const = 0;
354
363 virtual IValue const *evaluate_intrinsic_function(
364 IValue_factory *value_factory,
365 IDefinition::Semantics sema,
366 IValue const * const arguments[],
367 size_t n_arguments) const = 0;
368};
369
376 mi::base::Interface_declare<0x9dbfd12e,0x8207,0x4a47,0x8c,0x1f,0x5f,0x9a,0xc4,0x9b,0x00,0xf6,
377 IGenerated_code>
378{
379public:
384 FP_USES_TEXTURES = 2,
390 };
391
395 };
396
399 {
400 public:
405 virtual DAG_constant const *create_constant(IValue const *value) = 0;
406
412 virtual DAG_temporary const *create_temporary(DAG_node const *node, int index) = 0;
413
422 virtual DAG_node const *create_call(
423 char const *signature,
424 IDefinition::Semantics sema,
425 DAG_call::Call_argument const call_args[],
426 int num_call_args,
427 IType const *ret_type) = 0;
428
434 virtual DAG_parameter const *create_parameter(IType const *type, int index) = 0;
435
440 virtual bool enable_cse(bool flag) = 0;
441
446 virtual bool enable_opt(bool flag) = 0;
447
452 virtual bool enable_unsafe_math_opt(bool flag) = 0;
453
457 virtual IType_factory *get_type_factory() = 0;
458
462 virtual IValue_factory *get_value_factory() = 0;
463 };
464
465 static char const MESSAGE_CLASS = 'C';
466
477 };
478
489 class IMaterial_instance : public
491 <0x29c36255,0x7558,0x4865,0xa7,0x7e,0xaa,0x3a,0x50,0x4f,0x70,0xbc,
492 IDag_builder>
493 {
494 public:
496 enum Flags {
502 NO_DEAD_PARAMS = 1 << 4,
504 NO_BOOL_PARAMS = 1 << 6,
505 NO_ENUM_PARAMS = 1 << 7,
512 IGNORE_NOINLINE = 1 << 10,
514
520 };
521
523 enum Slot {
525
530
535
537
542
546
548
549 MS_LAST = MS_HAIR
550 };
551
553 enum Property {
560 IP_DISTILLED = 0x040,
563 };
564
566 enum Opacity {
571 };
572
573 typedef unsigned Properties;
574
575 public:
576 // ----------------- from IDAG_builder -----------------
577
581 virtual IType_factory *get_type_factory() = 0;
582
586 virtual IValue_factory *get_value_factory() = 0;
587
594 virtual DAG_constant const *create_constant(IValue const *value) = 0;
595
606 virtual DAG_node const *create_call(
607 char const *signature,
608 IDefinition::Semantics sema,
609 DAG_call::Call_argument const call_args[],
610 int num_call_args,
611 IType const *ret_type) = 0;
612
619 IType const *type,
620 int index) = 0;
621
622 // ----------------- own methods -----------------
623
655 ICall_name_resolver *resolver,
656 IResource_modifier *resource_modifier,
657 IGenerated_code_dag const *code_dag,
658 size_t argc,
659 DAG_node const *argv[],
660 bool use_temporaries,
661 unsigned flags,
662 ICall_evaluator *evaluator,
663 bool fold_meters_per_scene_unit,
664 float mdl_meters_per_scene_unit,
665 float wavelength_min,
666 float wavelength_max,
667 char const * const fold_params[],
668 size_t num_fold_params) = 0;
669
674 virtual DAG_call const *get_constructor() const = 0;
675
677 virtual size_t get_temporary_count() const = 0;
678
682 virtual DAG_node const *get_temporary_value(size_t index) const = 0;
683
687 virtual size_t get_parameter_count() const = 0;
688
692 virtual IValue const *get_parameter_default(size_t index) const = 0;
693
697 virtual DAG_hash const *get_hash() const = 0;
698
704 virtual DAG_hash const *get_slot_hash(Slot slot) const = 0;
705
709 virtual char const *get_parameter_name(size_t index) const = 0;
710
715 virtual bool depends_on_transform() const = 0;
716
721 virtual bool depends_on_object_id() const = 0;
722
727 virtual bool depends_on_global_distribution() const = 0;
728
730 virtual bool depends_on_uniform_scene_data() const = 0;
731
733 virtual size_t get_referenced_scene_data_count() const = 0;
734
738 virtual char const *get_referenced_scene_data_name(size_t index) const = 0;
739
741 virtual Opacity get_opacity() const = 0;
742
744 virtual Opacity get_surface_opacity() const = 0;
745
750 virtual IValue_float const *get_cutout_opacity() const = 0;
751
753 virtual Messages const &access_messages() const = 0;
754
756 virtual Properties get_properties() const = 0;
757
759 virtual char const *get_internal_space() const = 0;
760
766 virtual void set_resource_tag(
767 IValue_resource const *res,
768 int tag) = 0;
769
771 virtual size_t get_resource_tag_map_entries_count() const = 0;
772
776 virtual Resource_tag_tuple const *get_resource_tag_map_entry(size_t index) const = 0;
777
780 };
781
782 // -------------------------- methods --------------------------
783
784public:
786 virtual char const *get_module_name() const = 0;
787
789 virtual char const *get_module_file_name() const = 0;
790
793 virtual size_t get_import_count() const = 0;
794
799 virtual char const *get_import(size_t index) const = 0;
800
804 virtual size_t get_function_count() const = 0;
805
810 virtual IType const *get_function_return_type(size_t function_index) const = 0;
811
816 virtual IDefinition::Semantics get_function_semantics(size_t function_index) const = 0;
817
822 virtual char const *get_function_name(size_t function_index) const = 0;
823
828 virtual char const *get_simple_function_name(size_t function_index) const = 0;
829
835 virtual char const *get_original_function_name(size_t function_index) const = 0;
836
841 virtual size_t get_function_parameter_count(size_t function_index) const = 0;
842
849 virtual IType const *get_function_parameter_type(
850 size_t function_index,
851 size_t parameter_index) const = 0;
852
859 size_t function_index,
860 size_t parameter_index) const = 0;
861
868 virtual char const *get_function_parameter_name(
869 size_t function_index,
870 size_t parameter_index) const = 0;
871
878 size_t function_index,
879 char const *parameter_name) const = 0;
880
887 size_t function_index,
888 size_t parameter_index) const = 0;
889
896 size_t function_index,
897 size_t parameter_index) const = 0;
898
906 size_t function_index,
907 size_t parameter_index,
908 size_t user_index) const = 0;
909
916 size_t function_index) const = 0;
917
921 virtual size_t get_material_count() const = 0;
922
927 virtual char const *get_material_name(size_t material_index) const = 0;
928
933 virtual char const *get_simple_material_name(size_t material_index) const = 0;
934
939 virtual char const *get_original_material_name(size_t material_index) const = 0;
940
945 virtual size_t get_material_parameter_count(size_t material_index) const = 0;
946
953 virtual IType const *get_material_parameter_type(
954 size_t material_index,
955 size_t parameter_index) const = 0;
956
964 size_t material_index,
965 size_t parameter_index) const = 0;
966
973 virtual char const *get_material_parameter_name(
974 size_t material_index,
975 size_t parameter_index) const = 0;
976
983 size_t material_index,
984 char const *parameter_name) const = 0;
985
992 size_t material_index,
993 size_t parameter_index) const = 0;
994
1001 size_t material_index,
1002 size_t parameter_index) const = 0;
1003
1011 size_t material_index,
1012 size_t parameter_index,
1013 size_t user_index) const = 0;
1014
1017
1023 size_t function_index) const = 0;
1024
1031 size_t function_index,
1032 size_t annotation_index) const = 0;
1033
1039 size_t function_index) const = 0;
1040
1047 size_t function_index,
1048 size_t annotation_index) const = 0;
1049
1057 size_t function_index,
1058 size_t parameter_index) const = 0;
1059
1067 size_t function_index,
1068 size_t parameter_index) const = 0;
1069
1078 size_t function_index,
1079 size_t parameter_index,
1080 size_t annotation_index) const = 0;
1081
1087 size_t function_index) const = 0;
1088
1095 size_t function_index,
1096 size_t temporary_index) const = 0;
1097
1103 virtual char const *get_function_temporary_name(
1104 size_t function_index,
1105 size_t temporary_index) const = 0;
1106
1112 size_t function_index) const = 0;
1113
1120 size_t function_index,
1121 Function_property fp) const = 0;
1122
1127 virtual size_t get_function_references_count(size_t function_index) const = 0;
1128
1134 virtual char const *get_function_reference(
1135 size_t function_index,
1136 size_t callee_index) const = 0;
1137
1143 virtual char const *get_cloned_function_name(
1144 size_t function_index) const = 0;
1145
1151 size_t material_index) const = 0;
1152
1159 size_t material_index,
1160 size_t annotation_index) const = 0;
1161
1169 size_t material_index,
1170 size_t parameter_index) const = 0;
1171
1177 size_t material_index) const = 0;
1178
1185 size_t material_index,
1186 size_t annotation_index) const = 0;
1187
1195 size_t material_index,
1196 size_t parameter_index) const = 0;
1197
1206 size_t material_index,
1207 size_t parameter_index,
1208 size_t annotation_index) const = 0;
1209
1215 size_t material_index) const = 0;
1216
1223 size_t material_index,
1224 size_t temporary_index) const = 0;
1225
1231 virtual char const *get_material_temporary_name(
1232 size_t material_index,
1233 size_t temporary_index) const = 0;
1234
1240 size_t material_index) const = 0;
1241
1246 virtual bool get_material_exported(size_t material_index) const = 0;
1247
1253 virtual char const *get_cloned_material_name(
1254 size_t material_index) const = 0;
1255
1263 size_t index,
1264 Error_code *error_code = NULL) const = 0;
1265
1267 virtual size_t get_type_count() const = 0;
1268
1273 virtual char const *get_type_name(
1274 size_t index) const = 0;
1275
1280 virtual char const *get_original_type_name(
1281 size_t index) const = 0;
1282
1287 virtual IType const *get_type(
1288 size_t index) const = 0;
1289
1294 virtual bool is_type_exported(
1295 size_t index) const = 0;
1296
1302 size_t index) const = 0;
1303
1310 size_t type_index,
1311 size_t annotation_index) const = 0;
1312
1318 size_t type_index) const = 0;
1319
1325 virtual char const *get_type_sub_entity_name(
1326 size_t type_index,
1327 size_t entity_index) const = 0;
1328
1334 virtual IType const *get_type_sub_entity_type(
1335 size_t type_index,
1336 size_t entity_index) const = 0;
1337
1345 size_t type_index,
1346 size_t entity_index) const = 0;
1347
1356 size_t type_index,
1357 size_t entity_index,
1358 size_t annotation_index) const = 0;
1359
1361 virtual size_t get_constant_count() const = 0;
1362
1367 virtual char const *get_constant_name(
1368 size_t index) const = 0;
1369
1375 size_t index) const = 0;
1376
1381 size_t index) const = 0;
1382
1389 size_t constant_index,
1390 size_t annotation_index) const = 0;
1391
1393 virtual Messages const &access_messages() const = 0;
1394
1396 virtual Messages &access_messages() = 0;
1397
1399 virtual size_t get_memory_size() const = 0;
1400
1404 virtual size_t get_module_annotation_count() const = 0;
1405
1411 size_t annotation_index) const = 0;
1412
1414 virtual char const *get_internal_space() const = 0;
1415
1419 virtual size_t get_annotation_count() const = 0;
1420
1425 virtual IDefinition::Semantics get_annotation_semantics(
1426 size_t annotation_index) const = 0;
1427
1432 virtual char const *get_annotation_name(
1433 size_t annotation_index) const = 0;
1434
1439 virtual char const *get_simple_annotation_name(
1440 size_t annotation_index) const = 0;
1441
1447 virtual char const *get_original_annotation_name(
1448 size_t annotation_index) const = 0;
1449
1455 size_t annotation_index) const = 0;
1456
1463 virtual IType const *get_annotation_parameter_type(
1464 size_t annotation_index,
1465 size_t parameter_index) const = 0;
1466
1473 size_t annotation_index,
1474 size_t parameter_index) const = 0;
1475
1483 size_t annotation_index,
1484 size_t parameter_index) const = 0;
1485
1492 size_t annotation_index,
1493 char const *parameter_name) const = 0;
1494
1502 size_t annotation_index,
1503 size_t parameter_index) const = 0;
1504
1511 size_t annotation_index,
1512 Annotation_property ap) const = 0;
1513
1519 size_t annotation_index) const = 0;
1520
1527 size_t anno_decl_index,
1528 size_t annotation_index) const = 0;
1529
1533 virtual int get_resource_tag(
1534 IValue_resource const *res) const = 0;
1535
1540 virtual void set_resource_tag(
1541 IValue_resource const *res,
1542 int tag) = 0;
1543
1545 virtual size_t get_resource_tag_map_entries_count() const = 0;
1546
1550 virtual Resource_tag_tuple const *get_resource_tag_map_entry(size_t index) const = 0;
1551
1554};
1555
1557template<typename T>
1558bool is(DAG_node const *node)
1559{
1560 return node->get_kind() == T::s_kind;
1561}
1562
1564template<typename T>
1565T *as(DAG_node *type) {
1566 return (type->get_kind() == T::s_kind) ? static_cast<T *>(type) : NULL;
1567}
1568
1570template<typename T>
1571T const *as(DAG_node const *type) {
1572 return (type->get_kind() == T::s_kind) ? static_cast<const T *>(type) : NULL;
1573}
1574
1637} // mdl
1638} // mi
1639
1640#endif
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
A DAG IR call.
Definition: mdl_generated_dag.h:173
virtual char const * get_name() const =0
Get the signature of the called function.
virtual size_t get_name_hash() const =0
Get the name hash.
virtual DAG_node const * get_argument(char const *name) const =0
Get the argument for parameter name.
virtual char const * get_parameter_name(int index) const =0
Get the name of the parameter corresponding to the argument at position index.
virtual int get_argument_count() const =0
Get the number of arguments.
static Kind const s_kind
The kind of this subclass.
Definition: mdl_generated_dag.h:200
virtual IDefinition::Semantics get_semantic() const =0
Get the semantic of the called function if known.
virtual void set_argument(int index, DAG_node const *arg)=0
Set the argument expression of a call.
virtual DAG_node const * get_argument(int index) const =0
Get the argument at position index.
A DAG IR constant.
Definition: mdl_generated_dag.h:144
static Kind const s_kind
The kind of this subclass.
Definition: mdl_generated_dag.h:147
virtual IValue const * get_value() const =0
Get the value of the constant.
A hash value.
Definition: mdl_generated_dag.h:30
unsigned char operator[](size_t n) const
Read hash bytes.
Definition: mdl_generated_dag.h:90
unsigned char * data()
Access raw data.
Definition: mdl_generated_dag.h:99
DAG_hash()
Default constructor.
Definition: mdl_generated_dag.h:33
bool operator<=(DAG_hash const &other) const
Compare two hashes for less-than or equal.
Definition: mdl_generated_dag.h:69
bool operator<(DAG_hash const &other) const
Compare two hashes for less-than.
Definition: mdl_generated_dag.h:62
bool operator>=(DAG_hash const &other) const
Compare two hashes for greater-than or equal.
Definition: mdl_generated_dag.h:83
bool operator==(DAG_hash const &other) const
Compare two hashes for equality.
Definition: mdl_generated_dag.h:48
DAG_hash(unsigned char const (&arr)[16])
Constructor from an array of 16 bytes.
Definition: mdl_generated_dag.h:40
bool operator!=(DAG_hash const &other) const
Compare two hashes for non-equality.
Definition: mdl_generated_dag.h:55
bool operator>(DAG_hash const &other) const
Compare two hashes for greater-than.
Definition: mdl_generated_dag.h:76
static size_t size()
Get the size of the raw data.
Definition: mdl_generated_dag.h:111
unsigned char const * data() const
Read-only access raw data.
Definition: mdl_generated_dag.h:106
A node inside the DAG Intermediate Representation.
Definition: mdl_generated_dag.h:118
virtual Kind get_kind() const =0
Get the kind of this DAG IR node.
Kind
The possible kinds of DAG IR nodes.
Definition: mdl_generated_dag.h:121
@ EK_TEMPORARY
A temporary.
Definition: mdl_generated_dag.h:123
@ EK_PARAMETER
A parameter.
Definition: mdl_generated_dag.h:125
@ EK_CONSTANT
A constant.
Definition: mdl_generated_dag.h:122
@ EK_CALL
A call.
Definition: mdl_generated_dag.h:124
virtual size_t get_id() const =0
Get the unique ID of this DAG IR node.
virtual IType const * get_type() const =0
Get the type of this DAG IR node.
A DAG IR parameter reference.
Definition: mdl_generated_dag.h:250
virtual int get_index() const =0
Get the index of the referenced parameter.
static Kind const s_kind
The kind of this subclass.
Definition: mdl_generated_dag.h:253
A DAG IR temporary reference.
Definition: mdl_generated_dag.h:157
static Kind const s_kind
The kind of this subclass.
Definition: mdl_generated_dag.h:160
virtual DAG_node const * get_expr() const =0
Get the node of the temporary.
virtual int get_index() const =0
Get the index (the "name") of the referenced temporary.
A Helper interface to do renderer specific constant folding.
Definition: mdl_generated_dag.h:346
virtual IValue const * evaluate_intrinsic_function(IValue_factory *value_factory, IDefinition::Semantics sema, IValue const *const arguments[], size_t n_arguments) const =0
Evaluate an intrinsic function.
virtual bool is_evaluate_intrinsic_function_enabled(IDefinition::Semantics sema) const =0
Check whether evaluate_intrinsic_function() should be called for an unhandled intrinsic functions wit...
A Builder for DAG graphs.
Definition: mdl_generated_dag.h:281
virtual DAG_node const * create_call(char const *signature, IDefinition::Semantics sema, DAG_call::Call_argument const call_args[], int num_call_args, IType const *ret_type)=0
Create a call.
virtual DAG_parameter const * create_parameter(IType const *type, int index)=0
Create a parameter reference.
virtual IType_factory * get_type_factory()=0
Get the type factory of this instance.
virtual bool enable_cse(bool flag)=0
Enable common subexpression elimination.
virtual IValue_factory * get_value_factory()=0
Get the value factory of this instance.
virtual DAG_constant const * create_constant(IValue const *value)=0
Create a constant.
virtual bool enable_opt(bool flag)=0
Enable optimization.
virtual bool enable_unsafe_math_opt(bool flag)=0
Enable unsafe math optimizations.
The node factory for DAG IR nodes.
Definition: mdl_generated_dag.h:399
virtual DAG_node const * create_call(char const *signature, IDefinition::Semantics sema, DAG_call::Call_argument const call_args[], int num_call_args, IType const *ret_type)=0
Create a call.
virtual DAG_parameter const * create_parameter(IType const *type, int index)=0
Create a parameter reference.
virtual bool enable_opt(bool flag)=0
Enable optimization.
virtual DAG_temporary const * create_temporary(DAG_node const *node, int index)=0
Create a temporary reference.
virtual IType_factory * get_type_factory()=0
Get the type factory associated with this expression factory.
virtual IValue_factory * get_value_factory()=0
Get the value factory associated with this expression factory.
virtual DAG_constant const * create_constant(IValue const *value)=0
Create a constant.
virtual bool enable_cse(bool flag)=0
Enable common subexpression elimination.
virtual bool enable_unsafe_math_opt(bool flag)=0
Enable unsafe math optimizations.
An instantiated material.
Definition: mdl_generated_dag.h:493
virtual bool depends_on_object_id() const =0
Returns true if this instance depends on the object id.
virtual DAG_constant const * create_constant(IValue const *value)=0
Create a constant node.
virtual Messages const & access_messages() const =0
Access messages.
virtual DAG_hash const * get_hash() const =0
Return the hash value of this material instance.
Property
Property flags of an instance.
Definition: mdl_generated_dag.h:553
@ IP_CLASS_COMPILED
was class compiled
Definition: mdl_generated_dag.h:559
@ IP_DEPENDS_ON_TRANSFORM
depends on object transforms
Definition: mdl_generated_dag.h:554
@ IP_DISTILLED
was created by the distiller
Definition: mdl_generated_dag.h:560
@ IP_DEPENDS_ON_UNIFORM_SCENE_DATA
depends on uniform scene data
Definition: mdl_generated_dag.h:561
@ IP_USES_TERNARY_OPERATOR
uses the ternary operator '?:'
Definition: mdl_generated_dag.h:557
@ IP_TARGET_MATERIAL_MODEL
instance is in target material mode
Definition: mdl_generated_dag.h:562
@ IP_USES_TERNARY_OPERATOR_ON_DF
uses the ternary operator '?:' on *df
Definition: mdl_generated_dag.h:558
@ IP_DEPENDS_ON_GLOBAL_DISTRIBUTION
depends on global distribution (edf)
Definition: mdl_generated_dag.h:556
@ IP_DEPENDS_ON_OBJECT_ID
depends of the object id
Definition: mdl_generated_dag.h:555
virtual IValue_float const * get_cutout_opacity() const =0
Returns the cutout opacity of this instance if it is constant.
virtual Error_code initialize(ICall_name_resolver *resolver, IResource_modifier *resource_modifier, IGenerated_code_dag const *code_dag, size_t argc, DAG_node const *argv[], bool use_temporaries, unsigned flags, ICall_evaluator *evaluator, bool fold_meters_per_scene_unit, float mdl_meters_per_scene_unit, float wavelength_min, float wavelength_max, char const *const fold_params[], size_t num_fold_params)=0
Initialize this material instance.
virtual DAG_node const * get_temporary_value(size_t index) const =0
Return the value of the temporary at index.
virtual char const * get_internal_space() const =0
Get the internal space.
virtual char const * get_parameter_name(size_t index) const =0
Return the canonical parameter name of the given parameter.
virtual DAG_node const * create_call(char const *signature, IDefinition::Semantics sema, DAG_call::Call_argument const call_args[], int num_call_args, IType const *ret_type)=0
Create a call node.
virtual size_t get_referenced_scene_data_count() const =0
Returns the number of scene data attributes referenced by this instance.
virtual char const * get_referenced_scene_data_name(size_t index) const =0
Return the name of a scene data attribute referenced by this instance.
virtual IValue_factory * get_value_factory()=0
Get the value factory of this instance.
virtual DAG_parameter const * create_parameter(IType const *type, int index)=0
Create a parameter reference node.
virtual bool depends_on_uniform_scene_data() const =0
Returns true if this instance depends on uniform scene data.
virtual Properties get_properties() const =0
Get the instance properties.
virtual IResource_tagger * get_resource_tagger() const =0
Get the resource tagger for this material instance.
virtual bool depends_on_transform() const =0
Returns true if this instance depends on object transforms.
virtual size_t get_resource_tag_map_entries_count() const =0
Get the number of resource tag map entries.
Slot
Material slots on which hashes are calculated.
Definition: mdl_generated_dag.h:523
@ MS_BACKFACE_EMISSION_MODE
.backface.emission.mode
Definition: mdl_generated_dag.h:534
@ MS_VOLUME_VDF_SCATTERING
.volume.scattering
Definition: mdl_generated_dag.h:538
@ MS_VOLUME_ABSORPTION_COEFFICIENT
.volume.absorption_coefficient
Definition: mdl_generated_dag.h:539
@ MS_GEOMETRY_DISPLACEMENT
.geometry.displacement
Definition: mdl_generated_dag.h:543
@ MS_BACKFACE_EMISSION_INTENSITY
.backface.emission.intensity
Definition: mdl_generated_dag.h:533
@ MS_SURFACE_EMISSION_MODE
.surface.emission.mode
Definition: mdl_generated_dag.h:529
@ MS_VOLUME_EMISSION_INTENSITY
.volume.emission_intensity
Definition: mdl_generated_dag.h:541
@ MS_BACKFACE_BSDF_SCATTERING
.backface.scattering
Definition: mdl_generated_dag.h:531
@ MS_VOLUME_SCATTERING_COEFFICIENT
.volume.scattering_coefficient
Definition: mdl_generated_dag.h:540
@ MS_SURFACE_BSDF_SCATTERING
.surface.scattering
Definition: mdl_generated_dag.h:526
@ MS_GEOMETRY_NORMAL
.geometry.normal
Definition: mdl_generated_dag.h:545
@ MS_SURFACE_EMISSION_EDF_EMISSION
.surface.emission.emission
Definition: mdl_generated_dag.h:527
@ MS_BACKFACE_EMISSION_EDF_EMISSION
.backface.emission.emission
Definition: mdl_generated_dag.h:532
@ MS_GEOMETRY_CUTOUT_OPACITY
.geometry.cutout_opacity
Definition: mdl_generated_dag.h:544
@ MS_SURFACE_EMISSION_INTENSITY
.surface.emission.intensity
Definition: mdl_generated_dag.h:528
@ MS_HAIR
.hair
Definition: mdl_generated_dag.h:547
@ MS_IOR
.ior
Definition: mdl_generated_dag.h:536
@ MS_THIN_WALLED
.thin_walled
Definition: mdl_generated_dag.h:524
virtual DAG_hash const * get_slot_hash(Slot slot) const =0
Return the hash value of one material slot of this material instance.
virtual void set_resource_tag(IValue_resource const *res, int tag)=0
Set a tag, version pair for a resource constant that might be reachable from this instance.
virtual Opacity get_opacity() const =0
Returns the opacity of this instance.
virtual DAG_call const * get_constructor() const =0
Return the material constructor of this instance.
virtual size_t get_parameter_count() const =0
Return the number of parameters of this instance.
virtual size_t get_temporary_count() const =0
Return the number of temporaries of this instance.
virtual IType_factory * get_type_factory()=0
Get the type factory of this instance.
virtual bool depends_on_global_distribution() const =0
Returns true if this instance depends on the global distribution (edf).
Flags
Instantiation flags.
Definition: mdl_generated_dag.h:496
@ NO_RESOURCE_SHARING
CLASS_COMPILATION: Do not share resource arguments.
Definition: mdl_generated_dag.h:500
@ NO_DEAD_PARAMS
CLASS_COMPILATION: Remove dead parameters.
Definition: mdl_generated_dag.h:502
@ NO_BOOL_PARAMS
CLASS_COMPILATION: Do not create bool parameters.
Definition: mdl_generated_dag.h:504
@ TARGET_MATERIAL_MODEL
Target material model mode.
Definition: mdl_generated_dag.h:513
@ NO_ENUM_PARAMS
CLASS_COMPILATION: Do not create enum parameters.
Definition: mdl_generated_dag.h:505
@ IGNORE_NOINLINE
Ignore anno::noinline() annotations.
Definition: mdl_generated_dag.h:512
@ NO_TERNARY_ON_DF
CLASS_COMPILATION: Do not allow ?: on df.
Definition: mdl_generated_dag.h:501
@ CLASS_COMPILATION
Do a class compilation.
Definition: mdl_generated_dag.h:498
@ NO_TRANSPARENT_LAYERS
CLASS_COMPILATION: Do not create layering calls for transparent layers, i.e., with weight 0....
Definition: mdl_generated_dag.h:511
@ INSTANCE_COMPILATION
Do an instance compilation, default.
Definition: mdl_generated_dag.h:497
@ DEFAULT_CLASS_COMPILATION
Do class compilation with default flags.
Definition: mdl_generated_dag.h:515
@ NO_TRIVIAL_CUTOUT_OPACITY
CLASS_COMPILATION: Do not create a parameter for geometry.cutout_opacity if its value is constant 0....
Definition: mdl_generated_dag.h:508
@ NO_STRING_PARAMS
CLASS_COMPILATION: Do not create string parameters.
Definition: mdl_generated_dag.h:503
@ NO_ARGUMENT_INLINE
CLASS_COMPILATION: Do not inline any arguments.
Definition: mdl_generated_dag.h:499
virtual Opacity get_surface_opacity() const =0
Returns the surface opacity of this instance.
Opacity
Opacity of an instance.
Definition: mdl_generated_dag.h:566
@ OPACITY_UNKNOWN
opacity unknown (depends on parameter or complex user expression)
Definition: mdl_generated_dag.h:569
@ OPACITY_OPAQUE
opaque for sure
Definition: mdl_generated_dag.h:567
@ OPACITY_TRANSPARENT
transparent for sure
Definition: mdl_generated_dag.h:568
virtual Resource_tag_tuple const * get_resource_tag_map_entry(size_t index) const =0
Get the i'th resource tag map entry or NULL if the index is out of bounds;.
virtual IValue const * get_parameter_default(size_t index) const =0
Return the default value of a parameter of this instance.
A container of DAG representations of a module containing materials, functions, constants,...
Definition: mdl_generated_dag.h:378
virtual size_t get_import_count() const =0
Get the number of modules directly imported by the module from which this code was generated.
virtual size_t get_material_count() const =0
Get the number of materials in the generated code.
virtual char const * get_original_type_name(size_t index) const =0
Get the original name of the user defined type at index if the type is an alias.
virtual IType const * get_type(size_t index) const =0
Get the user defined type at index.
virtual char const * get_cloned_function_name(size_t function_index) const =0
Return the original function name of a cloned function or "" if the function is not a clone.
virtual size_t get_annotation_annotation_count(size_t annotation_index) const =0
Get the number of annotations of the annotation at annotation_index.
virtual size_t get_material_parameter_enable_if_condition_users(size_t material_index, size_t parameter_index) const =0
Get the number of parameters whose enable_if condition depends on this parameter.
virtual size_t get_type_annotation_count(size_t index) const =0
Get the number of annotations of the user defined type at index.
virtual char const * get_function_parameter_type_name(size_t function_index, size_t parameter_index) const =0
Get the parameter type name of the parameter at parameter_index of the function at function_index.
virtual DAG_node const * get_function_annotation(size_t function_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the function at function_index.
virtual DAG_node const * get_annotation_annotation(size_t anno_decl_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the annotation (declaration) at anno_decl_index.
virtual char const * get_function_name(size_t function_index) const =0
Get the name of the function at function_index.
virtual char const * get_type_name(size_t index) const =0
Get the name of the user type at index.
virtual bool is_type_exported(size_t index) const =0
Returns true if the user defined type at index is exported.
virtual IDefinition::Semantics get_annotation_semantics(size_t annotation_index) const =0
Get the semantics of the annotation at annotation_index.
virtual void set_resource_tag(IValue_resource const *res, int tag)=0
Set a tag, version pair for a resource constant that might be reachable from this DAG.
virtual size_t get_annotation_parameter_index(size_t annotation_index, char const *parameter_name) const =0
Get the index of the parameter parameter_name.
virtual DAG_node const * get_function_body(size_t function_index) const =0
Get the body of the function at function_index.
virtual DAG_node const * get_material_annotation(size_t material_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the material at material_index.
virtual char const * get_material_name(size_t material_index) const =0
Get the name of the material at material_index.
virtual IType const * get_type_sub_entity_type(size_t type_index, size_t entity_index) const =0
Get the type of an user defined type sub-entity (field or enum constant).
virtual size_t get_function_parameter_enable_if_condition_users(size_t function_index, size_t parameter_index) const =0
Get the number of parameters whose enable_if condition depends on this parameter.
Function_property
Properties of DAG functions.
Definition: mdl_generated_dag.h:381
@ FP_IS_NATIVE
True, if this function was declared native.
Definition: mdl_generated_dag.h:389
@ FP_CAN_THROW_BOUNDS
True, if this function can throw a out-of-bounds exception.
Definition: mdl_generated_dag.h:386
@ FP_CAN_THROW_DIVZERO
True, if this function can throw a div-by-zero exception.
Definition: mdl_generated_dag.h:387
@ FP_USES_TEXTURES
True, if this function uses the texture functions (either directly or by calling another function tha...
Definition: mdl_generated_dag.h:384
@ FP_IS_UNIFORM
True, if this function is uniform.
Definition: mdl_generated_dag.h:388
@ FP_ALLOW_INLINE
True, if it is legal to inline this function.
Definition: mdl_generated_dag.h:382
@ FP_IS_EXPORTED
True, if this function is exported.
Definition: mdl_generated_dag.h:383
virtual char const * get_function_parameter_name(size_t function_index, size_t parameter_index) const =0
Get the parameter name of the parameter at parameter_index of the function at function_index.
virtual DAG_node const * get_function_return_annotation(size_t function_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the function return type at function_index.
virtual char const * get_original_material_name(size_t material_index) const =0
Get the original name of the material at material_index if the material name is an alias.
virtual size_t get_material_annotation_count(size_t material_index) const =0
Get the number of annotations of the material at material_index.
virtual size_t get_function_references_count(size_t function_index) const =0
Get the number of entities referenced by a function.
virtual size_t get_annotation_parameter_count(size_t annotation_index) const =0
Get the parameter count of the annotation at annotation_index.
virtual char const * get_material_parameter_type_name(size_t material_index, size_t parameter_index) const =0
Get the parameter type name of the parameter at parameter_index of the material at material_index.
virtual DAG_node const * get_module_annotation(size_t annotation_index) const =0
Get the annotation at annotation_index of the module.
virtual char const * get_import(size_t index) const =0
Get the name of module at index imported from the module from which this code was generated.
virtual size_t get_resource_tag_map_entries_count() const =0
Get the number of resource tag map entries.
virtual DAG_node const * get_material_parameter_enable_if_condition(size_t material_index, size_t parameter_index) const =0
Get the enable_if condition for the given material parameter if one was specified.
virtual DAG_node const * get_constant_annotation(size_t constant_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the constant at constant_index.
virtual size_t get_type_sub_entity_count(size_t type_index) const =0
Get the number of user defined type sub-entities (fields or enum constants).
virtual size_t get_function_parameter_count(size_t function_index) const =0
Get the parameter count of the function at function_index.
virtual char const * get_internal_space() const =0
Get the internal space.
virtual size_t get_material_return_annotation_count(size_t material_index) const =0
Get the number of annotations of the material return type at material_index.
virtual size_t get_function_return_annotation_count(size_t function_index) const =0
Get the number of annotations of the function return type at function_index.
virtual size_t get_function_parameter_enable_if_condition_user(size_t function_index, size_t parameter_index, size_t user_index) const =0
Get a parameter index whose enable_if condition depends on this parameter.
virtual IType const * get_material_parameter_type(size_t material_index, size_t parameter_index) const =0
Get the parameter type of the parameter at parameter_index of the material at material_index.
virtual DAG_constant const * get_constant_value(size_t index) const =0
Get the value of the constant at index.
virtual Resource_tag_tuple const * get_resource_tag_map_entry(size_t index) const =0
Get the i'th resource tag map entry or NULL if the index is out of bounds;.
virtual char const * get_material_temporary_name(size_t material_index, size_t temporary_index) const =0
Get the temporary name at temporary_index used by the material at material_index.
virtual size_t get_material_parameter_annotation_count(size_t material_index, size_t parameter_index) const =0
Get the number of annotations of the parameter at parameter_index of the material at material_index.
virtual char const * get_module_name() const =0
Get the absolute module name of the module from which this code was generated.
virtual DAG_node const * get_type_sub_entity_annotation(size_t type_index, size_t entity_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the user defined type sub-entity at (type_index,...
virtual char const * get_module_file_name() const =0
Get the module file name of the module from which this code was generated.
virtual DAG_node const * get_annotation_parameter_default(size_t annotation_index, size_t parameter_index) const =0
Get the default initializer of the parameter at parameter_index of the annotation at annotation_index...
virtual DAG_node const * get_function_temporary(size_t function_index, size_t temporary_index) const =0
Get the temporary at temporary_index used by the function at function_index.
virtual size_t get_material_parameter_enable_if_condition_user(size_t material_index, size_t parameter_index, size_t user_index) const =0
Get a parameter index whose enable_if condition depends on this parameter.
virtual DAG_hash const * get_function_hash(size_t function_index) const =0
Get the function hash value for the given function index if available.
virtual DAG_node const * get_material_temporary(size_t material_index, size_t temporary_index) const =0
Get the temporary at temporary_index used by the material at material_index.
virtual int get_resource_tag(IValue_resource const *res) const =0
Get a tag,for a resource constant that might be reachable from this DAG.
Annotation_property
Properties of DAG annotations.
Definition: mdl_generated_dag.h:393
@ AP_IS_EXPORTED
True, if this annotation is exported.
Definition: mdl_generated_dag.h:394
virtual size_t get_function_parameter_annotation_count(size_t function_index, size_t parameter_index) const =0
Get the number of annotations of the parameter at parameter_index of the function at function_index.
virtual char const * get_annotation_parameter_name(size_t annotation_index, size_t parameter_index) const =0
Get the parameter name of the parameter at parameter_index of the annotation at annotation_index.
virtual bool get_annotation_property(size_t annotation_index, Annotation_property ap) const =0
Get the property flag of the annotation at annotation_index.
virtual DAG_node const * get_function_parameter_default(size_t function_index, size_t parameter_index) const =0
Get the default initializer of the parameter at parameter_index of the function at function_index.
virtual size_t get_constant_count() const =0
Get the number of exported constants.
virtual IDefinition::Semantics get_function_semantics(size_t function_index) const =0
Get the semantics of the function at function_index.
virtual char const * get_original_annotation_name(size_t annotation_index) const =0
Get the original name of the annotation at annotation_index if the annotation name is an alias,...
virtual size_t get_type_count() const =0
Get the number of (exported and non-exported) user defined types of this compiled module.
virtual size_t get_module_annotation_count() const =0
Get the number of annotations of the module.
virtual DAG_node const * get_type_annotation(size_t type_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the user defined type at type_index.
virtual size_t get_function_parameter_index(size_t function_index, char const *parameter_name) const =0
Get the index of the parameter parameter_name.
virtual char const * get_type_sub_entity_name(size_t type_index, size_t entity_index) const =0
Get the name of an user defined type sub-entity (field or enum constant).
virtual bool get_material_exported(size_t material_index) const =0
Get the export flags of the material at material_index.
virtual char const * get_annotation_name(size_t annotation_index) const =0
Get the name of the annotation at annotation_index.
virtual size_t get_function_count() const =0
Get the number of functions in the generated code.
virtual char const * get_original_function_name(size_t function_index) const =0
Get the original name of the function at function_index if the function name is an alias,...
virtual char const * get_simple_annotation_name(size_t annotation_index) const =0
Get the simple name of the annotation at annotation_index.
virtual Messages const & access_messages() const =0
Access messages.
virtual IMaterial_instance * create_material_instance(size_t index, Error_code *error_code=NULL) const =0
Create a new material instance.
virtual char const * get_simple_function_name(size_t function_index) const =0
Get the simple name of the function at function_index.
virtual DAG_node const * get_function_parameter_annotation(size_t function_index, size_t parameter_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the parameter at parameter_index of the function at functio...
virtual Messages & access_messages()=0
Access messages (writable).
virtual char const * get_simple_material_name(size_t material_index) const =0
Get the simple name of the material at material_index.
virtual IType const * get_annotation_parameter_type(size_t annotation_index, size_t parameter_index) const =0
Get the parameter type of the parameter at parameter_index of the annotation at annotation_index.
virtual IType const * get_function_return_type(size_t function_index) const =0
Get the return type of the function at function_index.
virtual bool get_function_property(size_t function_index, Function_property fp) const =0
Get the property flag of the function at function_index.
Error_code
The possible error codes.
Definition: mdl_generated_dag.h:468
@ EC_MATERIAL_HAS_ERROR
The material cannot be instantiated because it has errors.
Definition: mdl_generated_dag.h:471
@ EC_TOO_FEW_ARGUMENTS
Not enough arguments were supplied for the material.
Definition: mdl_generated_dag.h:472
@ EC_NONE
No error has occurred.
Definition: mdl_generated_dag.h:469
@ EC_WRONG_TRANSMISSION_ON_THIN_WALLED
Different transmission on thin_walled material.
Definition: mdl_generated_dag.h:476
@ EC_TOO_MANY_ARGUMENTS
Too many arguments were supplied for the material.
Definition: mdl_generated_dag.h:473
@ EC_ARGUMENT_TYPE_MISMATCH
An instance argument is of wrong type.
Definition: mdl_generated_dag.h:475
@ EC_INSTANTIATION_ERROR
An error occurred during instantiation.
Definition: mdl_generated_dag.h:474
@ EC_INVALID_INDEX
The given index is invalid.
Definition: mdl_generated_dag.h:470
virtual DAG_node const * get_material_parameter_annotation(size_t material_index, size_t parameter_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the parameter at parameter_index of the material at materia...
virtual char const * get_annotation_parameter_type_name(size_t annotation_index, size_t parameter_index) const =0
Get the parameter type name of the parameter at parameter_index of the annotation at annotation_index...
virtual size_t get_material_temporary_count(size_t material_index) const =0
Get the number of temporaries used by the material at material_index.
virtual size_t get_memory_size() const =0
Returns the amount of used memory by this code DAG.
virtual size_t get_constant_annotation_count(size_t index) const =0
Get the number of annotations of the constant at index.
virtual size_t get_material_parameter_count(size_t material_index) const =0
Get the parameter count of the material at material_index.
virtual DAG_node_factory * get_node_factory()=0
Get the node factory.
virtual size_t get_function_temporary_count(size_t function_index) const =0
Get the number of temporaries used by the function at function_index.
virtual char const * get_function_temporary_name(size_t function_index, size_t temporary_index) const =0
Get the temporary name at temporary_index used by the function at function_index.
virtual DAG_node const * get_material_value(size_t material_index) const =0
Get the value of the material at material_index.
virtual size_t get_annotation_count() const =0
Get the number of annotations in the generated code.
virtual DAG_node const * get_material_parameter_default(size_t material_index, size_t parameter_index) const =0
Get the default initializer of the parameter at parameter_index of the material at material_index.
virtual char const * get_cloned_material_name(size_t material_index) const =0
Return the original material name of a cloned material or "" if the material is not a clone.
virtual DAG_node const * get_material_return_annotation(size_t material_index, size_t annotation_index) const =0
Get the annotation at annotation_index of the material return type at material_index.
virtual size_t get_function_annotation_count(size_t function_index) const =0
Get the number of annotations of the function at function_index.
virtual DAG_node const * get_function_parameter_enable_if_condition(size_t function_index, size_t parameter_index) const =0
Get the enable_if condition for the given function parameter if one was specified.
virtual IResource_tagger * get_resource_tagger() const =0
Get the resource tagger for this code DAG.
virtual char const * get_material_parameter_name(size_t material_index, size_t parameter_index) const =0
Get the parameter name of the parameter at parameter_index of the material at material_index.
virtual char const * get_constant_name(size_t index) const =0
Get the name of the constant at index.
virtual size_t get_material_parameter_index(size_t material_index, char const *parameter_name) const =0
Get the index of the parameter parameter_name.
virtual IType const * get_function_parameter_type(size_t function_index, size_t parameter_index) const =0
Get the parameter type of the parameter at parameter_index of the function at function_index.
virtual size_t get_type_sub_entity_annotation_count(size_t type_index, size_t entity_index) const =0
Get the number of annotations of an user defined type sub-entity (field or enum constant) at index.
virtual char const * get_function_reference(size_t function_index, size_t callee_index) const =0
Get the signature of the i'th reference of a function.
An interface to interrogate tag values for resource values.
Definition: mdl_generated_dag.h:260
virtual int get_resource_tag(IValue_resource const *res) const =0
Get a tag,for a resource constant that might be reachable from this DAG.
T * as(DAG_node *type)
Cast to subtype or return NULL if types do not match.
Definition: mdl_generated_dag.h:1565
bool is(DAG_node const *node)
Check if a DAG node is of a certain type.
Definition: mdl_generated_dag.h:1558
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: example_derivatives.dox:5
A simple value helper class, a pair of an argument expression and a parameter name.
Definition: mdl_generated_dag.h:176
DAG_node const * arg
The call argument expression.
Definition: mdl_generated_dag.h:194
Call_argument()
Default constructor.
Definition: mdl_generated_dag.h:178
Call_argument(DAG_node const *arg, char const *param_name)
Constructor.
Definition: mdl_generated_dag.h:187
char const * param_name
The name of the parameter.
Definition: mdl_generated_dag.h:195