blob: 70fa93c5ad25ef4a1b21a9b9b4f35ef2e929f835 (
plain)
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
|
#include "../../base/SRC_FIRST.hpp"
#include "feature_routine.hpp"
#include "../../defines.hpp" // just for file extensions
#include "../../indexer/geometry_serialization.hpp"
#include "../../coding/file_writer.hpp"
namespace
{
class feature_source_initializer
{
string m_name;
FeatureType::read_source_t * m_source;
public:
feature_source_initializer(string const & fName)
: m_name(fName), m_source(0)
{
}
FeatureType::read_source_t & get_source(vector<char> & buffer)
{
delete m_source;
m_source = new FeatureType::read_source_t(FilesContainerR(m_name));
m_source->m_data.swap(buffer);
return *m_source;
}
~feature_source_initializer()
{
delete m_source;
FileWriter::DeleteFileX(m_name);
}
};
}
void FeatureBuilder2Feature(FeatureBuilder2 & fb, FeatureType & f)
{
string const datFile = "indexer_tests_tmp.dat";
FeatureBuilder2::buffers_holder_t buffers;
buffers.m_ptsOffset.push_back(0);
buffers.m_trgOffset.push_back(0);
buffers.m_ptsMask = 1;
fb.Serialize(buffers, 0);
{
FilesContainerW writer(datFile);
{
FileWriter geom = writer.GetWriter(string(GEOMETRY_FILE_TAG) + '0');
serial::SaveOuterPath(fb.GetGeometry(), 0, geom);
}
//{
// FileWriter trg = writer.GetWriter(string(TRIANGLE_FILE_TAG) + '0');
// feature::SaveTriangles(fb.GetTriangles(), trg);
//}
writer.Finish();
}
static feature_source_initializer staticInstance(datFile);
f.Deserialize(staticInstance.get_source(buffers.m_buffer));
}
void Feature2FeatureBuilder(FeatureType const & f, FeatureBuilder2 & fb)
{
f.InitFeatureBuilder(fb);
}
|