|
6 | 6 | #include <MRMesh/MRId.h> |
7 | 7 | #include <MRMesh/MRBuffer.h> |
8 | 8 |
|
| 9 | +#include "MRBuffer.h" |
| 10 | + |
9 | 11 | using namespace emscripten; |
10 | 12 | using namespace MR; |
11 | 13 |
|
| 14 | + |
12 | 15 | using FaceBMapBuffer = Buffer<FaceId, FaceId>; |
13 | 16 | using VertBMapBuffer = Buffer<VertId, VertId>; |
14 | 17 | using EdgeBMapBuffer = Buffer<EdgeId, EdgeId>; |
15 | 18 | using UndirectedEdgeBMapBuffer = Buffer<UndirectedEdgeId, UndirectedEdgeId>; |
16 | 19 | using WholeEdgeBMapBuffer = Buffer<EdgeId, UndirectedEdgeId>; |
17 | 20 |
|
18 | | -EMSCRIPTEN_BINDINGS( BufferModule ) |
19 | | -{ |
20 | | - class_<FaceBMapBuffer>( "FaceBMapBuffer" ) |
21 | | - .constructor<>() |
22 | | - .constructor<size_t>() |
23 | | - |
24 | | - .function( "capacity", &FaceBMapBuffer::capacity ) |
25 | | - .function( "size", &FaceBMapBuffer::size ) |
26 | | - .function( "empty", &FaceBMapBuffer::empty ) |
27 | | - .function( "clear", &FaceBMapBuffer::clear ) |
28 | | - .function( "resize", &FaceBMapBuffer::resize ) |
29 | 21 |
|
30 | | - // FIXME |
31 | | - // .function( "get", select_overload<const FaceId& ( FaceId ) const>( &FaceBMapBuffer::operator[] ) ) |
32 | | - // .function( "set", select_overload<FaceId& ( FaceId )>( &FaceBMapBuffer::operator[] ) ) |
33 | | - .function("get", optional_override([](const FaceBMapBuffer& buf, FaceId id) -> FaceId { |
34 | | - return buf[id]; // Return copy (avoid references) |
35 | | - })) |
36 | | - .function("set", optional_override([](FaceBMapBuffer& buf, FaceId id, const FaceId& value) { |
37 | | - buf[id] = value; |
38 | | - } ) ) |
39 | | - |
40 | | - // FIXME |
41 | | - // .function( "data", select_overload<FaceId* ()>( &FaceBMapBuffer::data ), allow_raw_pointers() ) |
42 | | - // .function( "dataConst", select_overload<FaceId* () const>( &FaceBMapBuffer::data ), allow_raw_pointers() ) |
43 | | - .function( "dataPtr", optional_override( [] ( FaceBMapBuffer& self ) |
44 | | - { |
45 | | - return self.data(); // T* |
46 | | - }), allow_raw_pointers()) |
47 | | - |
48 | | - .function( "beginId", &FaceBMapBuffer::beginId ) |
49 | | - .function( "backId", &FaceBMapBuffer::backId ) |
50 | | - .function( "endId", &FaceBMapBuffer::endId ) |
51 | | - .function( "heapBytes", &FaceBMapBuffer::heapBytes ); |
| 22 | +namespace MRJS |
| 23 | +{ |
52 | 24 |
|
53 | | - |
54 | | - class_<VertBMapBuffer>( "VertBMapBuffer" ) |
55 | | - .constructor<>() |
56 | | - .constructor<size_t>(); |
| 25 | +EMSCRIPTEN_BINDINGS( BufferModule ) |
| 26 | +{ |
| 27 | + /// |
| 28 | + BufferBinding<FaceId, FaceId>( "FaceBMapBuffer" ).init(); |
| 29 | + BufferBinding<VertId, VertId>( "VertBMapBuffer" ).init(); |
| 30 | + BufferBinding<EdgeId, EdgeId>( "EdgeBMapBuffer" ).init(); |
| 31 | + BufferBinding<UndirectedEdgeId, UndirectedEdgeId>( "UndirectedEdgeBMapBuffer" ).init(); |
| 32 | + BufferBinding<EdgeId, UndirectedEdgeId>( "WholeEdgeBMapBuffer" ).init(); |
57 | 33 |
|
58 | | - |
59 | | - class_<EdgeBMapBuffer>( "EdgeBMapBuffer" ) |
60 | | - .constructor<>() |
61 | | - .constructor<size_t>(); |
| 34 | + BufferBinding<FaceId, size_t>( "FaceIdEdgeIdSizeTBMapBuffer" ).init(); |
| 35 | + BufferBinding<VertId, size_t>( "VertIdSizeTBMapBuffer" ).init(); |
| 36 | + BufferBinding<EdgeId, size_t>( "EdgeIdSizeTBMapBuffer" ).init(); |
| 37 | + BufferBinding<UndirectedEdgeId, size_t>( "UndirectedEdgeIdSizeTBMapBuffer" ).init(); |
| 38 | + /// |
62 | 39 |
|
63 | | - |
64 | | - class_<UndirectedEdgeBMapBuffer>( "UndirectedEdgeBMapBuffer" ) |
65 | | - .constructor<>() |
66 | | - .constructor<size_t>(); |
67 | 40 |
|
68 | | - |
69 | | - class_<WholeEdgeBMapBuffer>( "WholeEdgeBMapBuffer" ) |
| 41 | + /// |
| 42 | + class_<PackMapping>( "PackMapping" ) |
70 | 43 | .constructor<>() |
71 | | - .constructor<size_t>(); |
72 | 44 |
|
| 45 | + .function( "getE", optional_override( [] ( PackMapping& self ) -> UndirectedEdgeBMap* |
| 46 | + { |
| 47 | + return &self.e; |
| 48 | + } ), allow_raw_pointers() ) |
| 49 | + .function( "setE", optional_override( []( PackMapping& self, UndirectedEdgeBMap& newE ) { |
| 50 | + self.e = std::move( newE ); |
| 51 | + } ), allow_raw_pointers() ) |
| 52 | + .function( "setEWithPtr", optional_override( []( PackMapping& self, UndirectedEdgeBMap* newE ) { |
| 53 | + if ( newE ) self.e = std::move( *newE ); |
| 54 | + } ), allow_raw_pointers() ) |
| 55 | + |
| 56 | + .function( "getF", optional_override( [] ( PackMapping& self ) -> FaceBMap* |
| 57 | + { |
| 58 | + return &self.f; |
| 59 | + } ), allow_raw_pointers() ) |
| 60 | + .function( "setF", optional_override( []( PackMapping& self, FaceBMap& newB ) { |
| 61 | + self.f = std::move( newB ); |
| 62 | + } ), allow_raw_pointers() ) |
| 63 | + .function( "setFWithPtr", optional_override( []( PackMapping& self, FaceBMap* newB ) { |
| 64 | + if ( newB ) self.f = std::move( *newB ); |
| 65 | + } ), allow_raw_pointers() ) |
| 66 | + |
| 67 | + .function( "getV", optional_override( [] ( PackMapping& self ) -> VertBMap* |
| 68 | + { |
| 69 | + return &self.v; |
| 70 | + } ), allow_raw_pointers() ) |
| 71 | + .function( "setV", optional_override( []( PackMapping& self, VertBMap& newV ) { |
| 72 | + self.v = std::move( newV ); |
| 73 | + } ), allow_raw_pointers() ) |
| 74 | + .function( "setVWithPtr", optional_override( []( PackMapping& self, VertBMap* newV ) { |
| 75 | + if ( newV ) self.v = std::move( *newV ); |
| 76 | + } ), allow_raw_pointers() ); |
| 77 | + /// |
| 78 | +} |
73 | 79 |
|
74 | | - // FIXME |
75 | | - class_<PackMapping>( "PackMapping" ) |
76 | | - .constructor<>(); |
77 | 80 | } |
0 commit comments