-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathElementAdapter.cpp
More file actions
115 lines (99 loc) · 3.99 KB
/
ElementAdapter.cpp
File metadata and controls
115 lines (99 loc) · 3.99 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
106
107
108
109
110
111
112
113
114
115
#include "ElementAdapter.hpp"
#include "IAPIOutputManager.hpp"
#include "IAPIOutputAdapterFactory.hpp"
#include "FMLFileOutputManager.hpp"
ElementAdapter::ElementAdapter (GSAPI::IAPIOutputManager* manager, GSAPI::IAPIOutputAdapterFactory* factory) :
GSAPI::IAPIOutputAdapter<API_Element> (manager, factory)
{
}
ElementAdapter::ElementAdapter (const ElementAdapter& adapter) :
GSAPI::IAPIOutputAdapter<API_Element> (adapter)
{
}
ElementAdapter::~ElementAdapter ()
{
}
ElementAdapter& ElementAdapter::operator= (const ElementAdapter& adapter)
{
static_cast<GSAPI::IAPIOutputAdapter<API_Element>&> (*this) = adapter;
return (*this);
}
void ElementAdapter::Output (GS::OChannel& oChannel)
{
if ((DBERROR (outputManager == nullptr)) || (DBERROR (outputAdapterFactory == nullptr)) || (DBERROR (element == nullptr)) || (DBERROR (dbInfo == nullptr))) {
return;
}
FMLFileOutputManager* m = dynamic_cast<FMLFileOutputManager*>(outputManager);
if (m->floorInd == element->header.floorInd){
/*
oChannel <<
"F: " << element->header.floorInd <<
" T: " << element->header.typeID << "\n";
*/
switch (element->header.typeID) {
case API_WallID:
{
GSAPI::IAPIOutputAdapter<API_WallType>* wallAdapter = outputAdapterFactory->GetAdapter (element->wall, *dbInfo, attributeProxy, attributeOutputType);
*wallAdapter >> oChannel;
delete wallAdapter;
}
break;
case API_WindowID:
case API_DoorID:
{
GSAPI::IAPIOutputAdapter<API_WindowType>* windowAdapter = outputAdapterFactory->GetAdapter (element->window, *dbInfo, attributeProxy, attributeOutputType);
*windowAdapter >> oChannel;
delete windowAdapter;
}
break;
case API_TextID:
{
GSAPI::IAPIOutputAdapter<API_TextType>* textAdapter = outputAdapterFactory->GetAdapter (element->text, *dbInfo, attributeProxy, attributeOutputType);
*textAdapter >> oChannel;
delete textAdapter;
}
break;
case API_ZoneID:
{
GSAPI::IAPIOutputAdapter<API_ZoneType>* zoneAdapter = outputAdapterFactory->GetAdapter (element->zone, *dbInfo, attributeProxy, attributeOutputType);
*zoneAdapter >> oChannel;
delete zoneAdapter;
}
break;
case API_ObjectID:
{
GSAPI::IAPIOutputAdapter<API_ObjectType>* objectAdapter = outputAdapterFactory->GetAdapter (element->object, *dbInfo, attributeProxy, attributeOutputType);
*objectAdapter >> oChannel;
delete objectAdapter;
}
break;
case API_DimensionID:
{
GSAPI::IAPIOutputAdapter<API_DimensionType>* dimensionAdapter = outputAdapterFactory->GetAdapter (element->dimension, *dbInfo, attributeProxy, attributeOutputType);
*dimensionAdapter >> oChannel;
delete dimensionAdapter;
}
break;
case API_RoofID:
{
GSAPI::IAPIOutputAdapter<API_RoofType>* roofAdapter = outputAdapterFactory->GetAdapter (element->roof, *dbInfo, attributeProxy, attributeOutputType);
*roofAdapter >> oChannel;
delete roofAdapter;
}
break;
case API_LineID:
{
GSAPI::IAPIOutputAdapter<API_LineType>* lineAdapter = outputAdapterFactory->GetAdapter (element->line, *dbInfo, attributeProxy, attributeOutputType);
*lineAdapter >> oChannel;
delete lineAdapter;
}
break;
default:
break;
}
}
}
void ElementAdapter::operator>> (GS::OChannel& oChannel)
{
Output (oChannel);
}