CGAL,Polyhedron和Nef_polyhedron中有三種3D多邊形。前者允許指定一個allocator作爲其第四模板:如何在CGAL Nef_polyhedron_3中使用Boost Interprocess分配器?
然而,Nef_polyhedron_3似乎不有。
但是什麼它擁有的是運營商的iostream,從內部字符串表示解析到/:
https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Nef_3/SNC_io_parser.h
但是,這是極其緩慢確實如此。
尋找在該SNC解析器代碼然而,它在內部似乎它仍然使用用於其內部結構的分配器(一個SNC對象)。但即使我可以將這些分配給我的靜態緩衝區(要傳遞給另一個進程),我也不能在Nef_polyhedron_3構造函數或訪問函數中看到任何可以重建它的東西。
編輯:展望這個遠一點,我注意到有一個構造函數從SNC stucture https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Nef_polyhedron_3.h:
Nef_polyhedron_3(const SNC_structure& W, SNC_point_locator* _pl,
bool clone_pl,
bool clone_snc) {
而且SNC_structure使用allocator用於其內部數據(但不包括本身):
https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Nef_3/SNC_structure.h
麻煩的是,這似乎只能在編譯時間的基礎上設置 - 我只需要分配到一個特定的緩衝,因爲我知道我需要發送到另一個進程的多邊形。
編輯2:我剛剛注意到Nef_polyhedron_3父之一是Handle_for:
class Nef_polyhedron_3 : public CGAL::Handle_for< Nef_polyhedron_3_rep<Kernel_, Items_, Mark_> >,
public SNC_const_decorator<SNC_structure<Kernel_,Items_,Mark_> >
在那裏,本身使用分配器太:
https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Handle_for.h
我還不清楚我究竟該插件英寸
馬科斯
謝謝。正如我上面所說,知道Nef'3沒有自定義分配器的支持。另外,我意識到這是宏(因此我對上面的'編譯時間'的評論)。你說應該可以添加沒有太多的麻煩,但我真的想找更具體的東西,如果可能的話。 – 2013-03-28 08:12:23
我有一個進一步的想法是繼續前進並添加全局CGAL_ALLOCATOR,但能夠將其設置爲某種模式。在默認模式下,它只是委託給一個std :: allocator。但在另一種模式下,它會使用您之前傳遞過來的靜態緩衝區。 – 2013-03-28 08:14:00