Skip to content

File Register.h

File List > GenApiNet > Register.h

Go to the documentation of this file

//-----------------------------------------------------------------------------
//  (c) 2007 by STEMMER IMAGING
//  Author:  Sascha Dorenbeck
//  $Header:
//
//  License: This file is published under the license of the EMVA GenICam  Standard Group.
//  A text file describing the legal terms is included in  your installation as 'GenICam_license.pdf'.
//  If for some reason you are missing  this file please contact the EMVA or visit the website
//  (http://www.genicam.org) for a full copy.
//
//  THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
//  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
//  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD  GROUP
//  OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,  SPECIAL,
//  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT  LIMITED TO,
//  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  DATA, OR PROFITS;
//  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY  THEORY OF LIABILITY,
//  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)
//  ARISING IN ANY WAY OUT OF THE USE  OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//  POSSIBILITY OF SUCH DAMAGE.
//-----------------------------------------------------------------------------

#pragma once

#include "Node.h"
#include "Value.h"

namespace Spinnaker{
    namespace GenApi{
        interface IRegister;
    }
}

namespace SpinnakerNET
{
    namespace GenApi
    {
        using namespace ::System;
        using namespace ::System::Runtime::InteropServices;

#pragma region Register Interface
        public interface class IRegister
            : public SpinnakerNET::GenApi::IValue
        {
            void __clrcall Read(IntPtr buffer, __int64 length);

            void __clrcall Read([OutAttribute] array<System::Byte> ^%buffer);

            void __clrcall Write(IntPtr buffer, __int64 length);

            void __clrcall Write(array<System::Byte> ^buffer);

            property __int64 Address
            {
                __int64 __clrcall get(void);
            }

            property __int64 Length
            {
                __int64 __clrcall get(void);
            }
        };
#pragma endregion

        public ref class Register
            : public SpinnakerNET::GenApi::Node
              , public SpinnakerNET::GenApi::IRegister
        {
#pragma region Ctor/Dtor
            public:
                __clrcall Register(SpinnakerNET::GenApi::NodeMap ^map, System::IntPtr handle);

                __clrcall Register(SpinnakerNET::GenApi::INode ^obj);

                __clrcall !Register(void);

                virtual __clrcall ~Register(void);
#pragma endregion

#pragma region Node Methods
            public:
                virtual void __clrcall FromString(System::String ^value);

                virtual System::String^ __clrcall ToString(void) override;
#pragma endregion

#pragma region Register Methods / Properties
            public:
                virtual void __clrcall Read(IntPtr buffer, __int64 length) sealed;

                virtual void __clrcall Read([OutAttribute] array<System::Byte> ^%buffer);

                virtual void __clrcall Write(IntPtr buffer, __int64 length) sealed;

                virtual void __clrcall Write(array<System::Byte> ^buffer);

                virtual property __int64 Address
                {
                    __int64 __clrcall get(void) sealed;
                }

                virtual property __int64 Length
                {
                    __int64 __clrcall get(void) sealed;
                }

#pragma endregion

#pragma region Value Operators
            public:
                static operator System::String ^ (Register ^obj) { return obj->ToString(); }
#pragma endregion

#pragma region Member
            private:
                ::Spinnaker::GenApi::IRegister * registerHandle;
#pragma endregion
        };
    }
}