Exemplo n.º 1
0
 public static int GetNode(kowhai_node_t[] descriptor, kowhai_symbol_t[] symbols, out int offset, out kowhai_node_t node)
 {
     GCHandle hDesc = GCHandle.Alloc(descriptor, GCHandleType.Pinned);
     GCHandle hSyms = GCHandle.Alloc(symbols, GCHandleType.Pinned);
     IntPtr targetNode = IntPtr.Zero;
     int result = kowhai_get_node(hDesc.AddrOfPinnedObject(), symbols.Length, hSyms.AddrOfPinnedObject(), out offset, ref targetNode);
     hSyms.Free();
     hDesc.Free();
     node = (kowhai_node_t)Marshal.PtrToStructure(targetNode, typeof(kowhai_node_t));
     return result;
 }
Exemplo n.º 2
0
 public static int Write(Tree tree, kowhai_symbol_t[] symbolPath, int offset, byte[] data)
 {
     GCHandle hDesc = GCHandle.Alloc(tree.Descriptor, GCHandleType.Pinned);
     GCHandle hTreeData = GCHandle.Alloc(tree.Data, GCHandleType.Pinned);
     kowhai_tree_t nativeTree = new kowhai_tree_t();
     nativeTree.desc = hDesc.AddrOfPinnedObject();
     nativeTree.data = hTreeData.AddrOfPinnedObject();
     GCHandle hSyms = GCHandle.Alloc(symbolPath, GCHandleType.Pinned);
     GCHandle hWriteData = GCHandle.Alloc(data, GCHandleType.Pinned);
     int result = kowhai_write(ref nativeTree, symbolPath.Length, hSyms.AddrOfPinnedObject(), offset, hWriteData.AddrOfPinnedObject(), data.Length);
     hWriteData.Free();
     hSyms.Free();
     hTreeData.Free();
     hDesc.Free();
     return result;
 }