Ice Sheet System Model  4.18
Code documentation
KML_Container.cpp
Go to the documentation of this file.
1 
5 /*Headers:*/
6 /*{{{*/
7 #ifdef HAVE_CONFIG_H
8  #include <config.h>
9 #else
10 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
11 #endif
12 
13 #include "./KML_Placemark.h"
14 #include "./KML_Document.h"
15 #include "./KML_GroundOverlay.h"
16 #include "./KML_Folder.h"
17 #include "./KML_Object.h"
18 #include "./KML_Container.h"
19 #include "../shared/shared.h"
20 /*}}}*/
21 
22 /*Constructors/destructor/copy*/
24 
25  feature =new DataSet;
26 
27 }
28 /*}}}*/
30 
31  if (feature) {
32  delete feature;
33  feature =NULL;
34  }
35 
36 }
37 /*}}}*/
38 
39 /*Other*/
40 void KML_Container::Echo(){/*{{{*/
41 
42  bool flag=true;
43 
45 
46  if(flag) _printf0_(" feature: (size=" << feature->Size() << ")\n");
47 
48  return;
49 }
50 /*}}}*/
52 
53  char indent[81]="";
54 
56 
57  return;
58 }
59 /*}}}*/
60 void KML_Container::DeepEcho(const char* indent){/*{{{*/
61 
62  int i;
63  char indent2[81];
64  bool flag=true;
65 
66  KML_Feature::DeepEcho(indent);
67 
68 /* loop over the features for the container */
69 
70  memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
71  strcat(indent2," ");
72 
73  if (feature->Size())
74  for (i=0; i<feature->Size(); i++) {
75  if(flag) _printf0_(indent << " feature: -------- begin [" << i << "] --------\n");
76  ((KML_Feature *)feature->GetObjectByOffset(i))->DeepEcho(indent2);
77  if(flag) _printf0_(indent << " feature: -------- end [" << i << "] --------\n");
78  }
79  else
80  if(flag) _printf0_(indent << " feature: [empty]\n");
81 
82  return;
83 }
84 /*}}}*/
85 void KML_Container::Write(FILE* filout,const char* indent){/*{{{*/
86 
87  int i;
88  char indent2[81];
89 
90  KML_Feature::Write(filout,indent);
91 
92 /* loop over the features for the container */
93 
94  memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
95 
96  strcat(indent2," ");
97 
98  for (i=0; i<feature->Size(); i++)
99  ((KML_Feature *)feature->GetObjectByOffset(i))->Write(filout,indent2);
100 
101  return;
102 }
103 /*}}}*/
104 void KML_Container::Read(FILE* fid,char* kstr){/*{{{*/
105 
106  KML_Object* kobj;
107 
108 /* process field within opening and closing tags */
109 
110  if (!strncmp(kstr,"</Container",11)) {
111  xDelete<char>(kstr);
112  return;
113  }
114  else if (!strncmp(kstr,"</",2))
115  {_error_("KML_Container::Read -- Unexpected closing tag " << kstr );}
116  else if (strncmp(kstr,"<",1))
117  {_error_("KML_Container::Read -- Unexpected field \"" << kstr << "\"");}
118 
119  else if (!strncmp(kstr,"<Placemark",10)) {
120  kobj=(KML_Object*)new KML_Placemark();
121  kobj->Read(fid,kstr);
122  feature ->AddObject((Object*)kobj);
123  }
124 
125  else if (!strncmp(kstr,"<Folder", 7)) {
126  kobj=(KML_Object*)new KML_Folder();
127  kobj->Read(fid,kstr);
128  feature ->AddObject((Object*)kobj);
129  }
130 
131  else if (!strncmp(kstr,"<Document", 9)) {
132  kobj=(KML_Object*)new KML_Document();
133  kobj->Read(fid,kstr);
134  feature ->AddObject((Object*)kobj);
135  }
136 
137  else if (!strncmp(kstr,"<GroundOverlay",14)) {
138  kobj=(KML_Object*)new KML_GroundOverlay();
139  kobj->Read(fid,kstr);
140  feature ->AddObject((Object*)kobj);
141  }
142 
143  else if (!strncmp(kstr,"<",1))
144  KML_Feature::Read(fid,kstr);
145 
146  return;
147 }
148 /*}}}*/
149 void KML_Container::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
150 
151  int i;
152 
153 /* loop over the features for the container */
154 
155  for (i=0; i<feature->Size(); i++)
156  ((KML_Object *)feature->GetObjectByOffset(i))->WriteExp(fid,nstr,sgn,cm,sp);
157 
158  return;
159 }
160 /*}}}*/
DataSet::Size
int Size()
Definition: DataSet.cpp:399
KML_Document
Definition: KML_Document.h:15
KML_Container::WriteExp
void WriteExp(FILE *fid, const char *nstr, int sgn, double cm, double sp)
Definition: KML_Container.cpp:149
KML_Object
Definition: KML_Object.h:13
KML_Object.h
: header file for kml_object abstract object
KML_Container::Echo
void Echo()
Definition: KML_Container.cpp:40
_printf0_
#define _printf0_(StreamArgs)
Definition: Print.h:29
DataSet::AddObject
int AddObject(Object *object)
Definition: DataSet.cpp:252
KML_Container::feature
DataSet * feature
Definition: KML_Container.h:19
KML_Document.h
: header file for kml_document object
KML_GroundOverlay
Definition: KML_GroundOverlay.h:17
KML_Container::DeepEcho
void DeepEcho()
Definition: KML_Container.cpp:51
KML_Folder.h
: header file for kml_folder object
KML_Placemark.h
: header file for kml_placemark object
KML_Folder
Definition: KML_Folder.h:15
KML_Feature
Definition: KML_Feature.h:21
KML_GroundOverlay.h
: header file for kml_groundoverlay object
KML_Object::Read
virtual void Read(FILE *fid, char *kstr)=0
Definition: KML_Object.cpp:143
Object
Definition: Object.h:13
KML_Placemark
Definition: KML_Placemark.h:16
KML_Container::KML_Container
KML_Container()
Definition: KML_Container.cpp:23
KML_Feature::DeepEcho
void DeepEcho()
Definition: KML_Feature.cpp:70
KML_Container::~KML_Container
~KML_Container()
Definition: KML_Container.cpp:29
KML_Feature::Write
void Write(FILE *fid, const char *indent)
Definition: KML_Feature.cpp:111
KML_Container::Read
void Read(FILE *fid, char *kstr)
Definition: KML_Container.cpp:104
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
DataSet::GetObjectByOffset
Object * GetObjectByOffset(int offset)
Definition: DataSet.cpp:334
KML_Container.h
: header file for kml_container abstract object
KML_Feature::Echo
void Echo()
Definition: KML_Feature.cpp:53
DataSet
Declaration of DataSet class.
Definition: DataSet.h:14
KML_Container::Write
void Write(FILE *fid, const char *indent)
Definition: KML_Container.cpp:85
KML_Feature::Read
void Read(FILE *fid, char *kstr)
Definition: KML_Feature.cpp:141