/******************************************************************************
 * Copyright 1986, 2016 NVIDIA Corporation. All rights reserved.
 *****************************************************************************/

#ifndef MY_CLASS_H
#define MY_CLASS_H

#include <mi/neuraylib.h>
#include "imy_class.h"

// The implementation of the IMy_class interface
class My_class : public
    mi::neuraylib::User_class<0x0650d689,0xef50,0x433f,0xb3,0xae,0xae,0x83,0xa9,0xf2,0xf2,0xa6,
                              IMy_class>
{
public:
    // Constructor
    My_class() { m_foo = 0; }

    // Destructor
    ~My_class() { }

    // Sets property foo
    void set_foo( mi::Sint32 foo) { m_foo = foo; }

    // Gets property foo
    mi::Sint32 get_foo() const { return m_foo; }

    // Serializes an instance of My_class
    void serialize( mi::neuraylib::ISerializer* serializer) const
    {
        serializer->write( &m_foo);
    }

    // Deserializes an instance of My_class
    void deserialize( mi::neuraylib::IDeserializer* deserializer)
    {
        deserializer->read( &m_foo);
    }

    // Creates a copy of the object
    mi::neuraylib::IUser_class* copy () const
    {
        My_class* copy = new My_class( *this);
        return copy;
    }

    // Returns a human readable class name
    const char* get_class_name() const
    {
        return "My_class";
    }

    // Returns the list of elements referenced by this elements, none in this example.
    mi::IArray* get_references( mi::neuraylib::ITransaction* /*transaction*/) const
    {
        return 0;
    }

private:
    // Member to realize property foo
    mi::Sint32 m_foo;
};

#endif // MY_CLASS_H