neuray API Programmer's Manual

ifunction_call.h File Reference

Description

Scene element Function_call.

Code Example

ifunction_call.h

‎/***************************************************************************************************
 * Copyright 2024 NVIDIA Corporation. All rights reserved.
 **************************************************************************************************/

#ifndef MI_NEURAYLIB_IFUNCTION_CALL_H
#define MI_NEURAYLIB_IFUNCTION_CALL_H

#include <cstring>

#include <mi/neuraylib/iexpression.h>
#include <mi/neuraylib/imdl_factory.h>
#include <mi/neuraylib/iscene_element.h>

namespace mi {

namespace neuraylib {

class IMdl_execution_context;

enum Mdl_repair_options{
    MDL_REPAIR_DEFAULT           = 0,           
    MDL_REMOVE_INVALID_ARGUMENTS = 1, 
    MDL_REPAIR_INVALID_ARGUMENTS = 2, 
    MDL_REPAIR_OPTIONS_FORCE_32_BIT = 0xffffffffU // Undocumented, for alignment only
};

mi_static_assert( sizeof( Mdl_repair_options) == sizeof( Uint32));

class IFunction_call : public
    mi::base::Interface_declare<0x67b29f5f,0xdbc1,0x4300,0x94,0x53,0x3e,0x2d,0x28,0x29,0xc1,0xe9,
                                neuraylib::IScene_element>
{
public:
    virtual const char* get_function_definition() const = 0;

    virtual const char* get_mdl_function_definition() const = 0;

    //        to be declarative.
    virtual bool is_declarative() const = 0;

    virtual bool is_material() const = 0;

    inline bool is_array_constructor() const
    { return strcmp( get_mdl_function_definition(), "T[](...)") == 0; }

    virtual const IType* get_return_type() const = 0;

    virtual Size 
               get_parameter_count() const = 0;

    virtual const char* get_parameter_name( Size index) const = 0;

    virtual Size 
               get_parameter_index( const char* name) const = 0;

    virtual const IType_list* get_parameter_types() const = 0;

    virtual const IExpression_list* get_arguments() const = 0;

    virtual Sint32 
               set_arguments( const IExpression_list* arguments) = 0;

    virtual Sint32 
               set_argument( Size index, const IExpression* argument) = 0;

    virtual Sint32 
               set_argument( const char* name, const IExpression* argument) = 0;

    virtual Sint32 
               reset_argument( Size index) = 0;

    virtual Sint32 
               reset_argument( const char* name) = 0;

    virtual bool is_default() const = 0;

    virtual bool is_valid( IMdl_execution_context* context) const = 0;

    virtual Sint32 
               repair( Uint32 flags, IMdl_execution_context* context) = 0;
};
 // end group mi_neuray_mdl_elements

} // namespace neuraylib

} // namespace mi

#endif // MI_NEURAYLIB_IFUNCTION_CALL

Namespaces

namespace 
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
namespace 
Namespace for the neuray API. More...

Classes

class 
This interface represents a function call. More...

Enumerations

enum  {MDL_REPAIR_DEFAULT = 0, MDL_REMOVE_INVALID_ARGUMENTS = 1, MDL_REPAIR_INVALID_ARGUMENTS = 2, MDL_REPAIR_OPTIONS_FORCE_32_BIT = 0xffffffffU }
Options for repairing function calls. More...