File NodeMap.h¶
File List > GenApiNet > NodeMap.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 "DeviceInformation.h"
#include "../ManagedLogger.h"
namespace Spinnaker
{
namespace GenApi
{
interface IDeviceInfo;
interface INodeMap;
}
}
namespace SpinnakerNET
{
namespace GenApi
{
using namespace ::System;
using namespace ::System::Collections::Generic;
using namespace ::System::Runtime::InteropServices;
ref class Port;
public interface class INodeMap
: public IDictionary<System::String^, INode^>
{
void __clrcall Connect(Port ^port);
void __clrcall Connect(Port ^port, System::String ^name);
generic <typename NodeType> where NodeType : SpinnakerNET::GenApi::INode
NodeType __clrcall GetNode(System::String ^name);
void __clrcall InvalidateNodes(void);
void __clrcall Poll(__int64 elapsedTime);
};
namespace Helper
{
public ref class EnumerableFactory abstract
: public System::Collections::IEnumerable
{
protected:
virtual System::Collections::Generic::IEnumerator<KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^>> ^DoGetEnumerator() abstract;
public:
virtual System::Collections::IEnumerator ^GetEnumerator() { return DoGetEnumerator(); }
};
public ref class NodeEnumerableFactory abstract
: public EnumerableFactory
, public System::Collections::Generic::IEnumerable<KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^>>
{
public:
virtual System::Collections::Generic::IEnumerator<KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^>> ^GetEnumerator() new = System::Collections::Generic::IEnumerable<KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^>>::GetEnumerator { return DoGetEnumerator(); }
};
}
public ref class NodeMap
: public Helper::NodeEnumerableFactory
, public SpinnakerNET::GenApi::INodeMap
, public SpinnakerNET::GenApi::IDeviceInfo
{
#pragma region Ctor/Dtor
public:
__clrcall NodeMap(void);
__clrcall !NodeMap(void);
virtual __clrcall ~NodeMap(void);
#pragma endregion
#pragma region General Properties
public:
property bool Disposed
{
bool __clrcall get(void) { return disposed; }
protected:
void __clrcall set(bool disposed) { this->disposed = disposed; }
}
public:
property IntPtr Handle
{
IntPtr __clrcall get(void);
void __clrcall set(IntPtr handle);
}
#pragma endregion
#pragma region NodeMap Creation
public:
virtual void __clrcall LoadXMLFromFile(System::String ^filename);
virtual void __clrcall LoadXMLFromString(System::String ^xml);
#pragma endregion
#pragma region INodeMap Interface
public:
virtual void __clrcall Connect(Port ^port);
virtual void __clrcall Connect(Port ^port, System::String ^name);
generic <typename NodeType> where NodeType : SpinnakerNET::GenApi::INode
virtual NodeType __clrcall GetNode(System::String ^name);
virtual void __clrcall InvalidateNodes(void);
virtual void __clrcall Poll(__int64 elapsedTime);
#pragma endregion
#pragma region IDictionary Interface
public:
virtual property SpinnakerNET::GenApi::INode ^ default [System::String^]
{
INode ^ get(System::String ^key) sealed;
void set(System::String ^key, SpinnakerNET::GenApi::INode ^value) sealed;
}
virtual property ICollection<System::String^> ^ Keys
{
ICollection<System::String^> ^ get(void) sealed;
}
virtual property ICollection<SpinnakerNET::GenApi::INode^> ^ Values
{
ICollection<SpinnakerNET::GenApi::INode^> ^ get(void) sealed;
}
virtual void Add(System::String ^key, SpinnakerNET::GenApi::INode ^value) sealed;
virtual bool ContainsKey(System::String ^key) sealed;
virtual bool Remove(System::String ^key) sealed;
virtual bool TryGetValue(System::String ^key, [OutAttribute] SpinnakerNET::GenApi::INode ^%value);
#pragma endregion
#pragma region ICollection Interface
public:
virtual property int Count
{
int get() sealed;
}
virtual property bool IsReadOnly
{
bool get() sealed;
}
virtual void Add(KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^> item) sealed;
virtual void Clear(void) sealed;
virtual bool Contains(KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^> item) sealed;
virtual void CopyTo(array<KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^>> ^target, int arrayIndex) sealed;
virtual bool Remove(KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^> item) sealed;
#pragma endregion
#pragma region EnumerableFactory Interface
protected:
virtual System::Collections::Generic::IEnumerator<KeyValuePair<System::String^,SpinnakerNET::GenApi::INode^>> ^DoGetEnumerator() override;
#pragma endregion
#pragma region IDeviceInfo Interface
public:
virtual property System::String ^ ModelName
{
System::String ^ __clrcall get(void);
}
virtual property System::String ^ VendorName
{
System::String ^ __clrcall get(void);
}
virtual property System::String ^ ToolTip
{
System::String ^ __clrcall get(void);
}
virtual property System::String ^ StandardNameSpace
{
System::String ^ __clrcall get(void);
}
virtual property SpinnakerNET::GenApi::Version ^ GenApiVersion
{
SpinnakerNET::GenApi::Version ^ __clrcall get(void);
}
virtual property __int16 GenApiBuild
{
__int16 __clrcall get(void);
}
virtual property SpinnakerNET::GenApi::Version ^ SchemaVersion
{
SpinnakerNET::GenApi::Version ^ __clrcall get(void);
}
virtual property SpinnakerNET::GenApi::Version ^ DeviceVersion
{
SpinnakerNET::GenApi::Version ^ __clrcall get(void);
}
virtual property System::String ^ ProductGuid
{
System::String ^ get(void);
}
virtual property System::String ^ VersionGuid
{
System::String ^ get(void);
}
#pragma endregion
#pragma region Internal Methods
private:
void CheckStatus(void);
void FillDictionary(void);
#pragma endregion
#pragma region Member Fields
private:
::Spinnaker::GenApi::INodeMap * nodeMapHandle;
::Spinnaker::GenApi::IDeviceInfo *deviceInfo;
::Spinnaker::GenApi::CNodeMapRef * nodeMapPtr;
bool disposed;
Dictionary<System::String^,SpinnakerNET::GenApi::INode^> ^nodeDict;
Dictionary<System::String^,Port^> ^ portDict;
#pragma endregion
};
}
}