-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConversion.hpp
More file actions
105 lines (82 loc) · 2.59 KB
/
Conversion.hpp
File metadata and controls
105 lines (82 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
*
* Fast Artificial Neural Network (fann) C# Wrapper
* Copyright (C) 2010 created by james (at) jamesbates.net
*
* On LinkedIn here http://uk.linkedin.com/in/alexanderjamesbates
*
* This wrapper is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This wrapper is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#pragma once
#include <vector>
#include "Connection.h"
using namespace System::Collections::Generic;
inline std::string toNative(System::String^ in)
{
return (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(in).ToPointer();
}
inline System::String^ toManaged(const std::string& in)
{
return gcnew System::String(in.c_str());
}
template<typename T>
inline std::vector<T> toNative(System::Collections::Generic::IEnumerable<T^>^ inVal)
{
std::vector<T> rval(inVal->Count);
for each( T item in inVal)
{
rval.push_back(item);
}
return rval;
}
template<typename T>
inline array<array<T,1>^,1> ^toManaged(T** in, size_t sizeX , size_t sizeY)
{
array<array<T,1>^,1> ^rval = gcnew array<array<T,1>^,1>(sizeX);
for(size_t x=0;x<sizeX;++x)
{
rval[x] = toManaged(in[x],sizeY);
}
return rval;
}
template<typename T>
inline array<T, 1> ^toManaged(T* in, size_t sizeX)
{
array<T, 1> ^rval = gcnew array<T, 1>(sizeX);
for(size_t x=0;x<sizeX;++x)
{
rval[x] = in[x];
}
return rval;
}
inline array<FANN::Net::Connection^,1>^ toManaged(FANN::connection* connections, size_t sizeX)
{
array<FANN::Net::Connection^,1>^ rval = gcnew array<FANN::Net::Connection^,1>(sizeX);
for(size_t i=0;i<sizeX;++i)
{
rval[i] = gcnew FANN::Net::Connection(new FANN::connection(connections[i]));
}
return rval;
}
inline std::vector<FANN::connection> toNative(array<FANN::Net::Connection^,1>^ inVal)
{
std::vector<FANN::connection> rval(inVal->Length);
for each( FANN::Net::Connection^ conn in inVal)
{
rval.push_back(conn->Raw());
}
return rval;
}