Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MarshaledG4THitsCollection.h
Go to the documentation of this file.
1 // This file was generated automatically by marshalgen.
2 
3 #ifndef MarshaledG4HitsCollection_H
4 #define MarshaledG4HitsCollection_H
5 
6 
7 #include <G4THitsCollection.hh>
8 
9 
10 #include <stdio.h>
11 #include <string.h>
12 #include "MarshaledObj.h"
13 
15 
17  friend class MarshaledG4HitsCollection;
18 };
19 
20 
21 template <class T> class MarshaledG4THitsCollection;
22 
23 template <class T> class ShadowedMarshaledG4THitsCollection : public G4THitsCollection<T>{
24  friend class MarshaledG4THitsCollection<T>;
25 };
26 
28 public:
31 public:
32 
33 
34 // Function implementations
35 
37  msh_isUnmarshalDone = false;
38  this->param = objptr;
40  if (objptr == NULL)
41  return;
42 
43  marshal1();
44 }
45 
48  msh_isUnmarshalDone = false;
49 }
50 
52  //if(msh_isUnmarshalDone && this->param != NULL) {
53  //delete this->param;
54  //}
55 }
56 
58  //We don't want to unmarshal the buffer is empty.
59  if(msh_size <= MSH_HEADER_SIZE) {
60  //This is buggy, we can't always assume that
61  //obj == NULL <==> List is empty.
62  return NULL;
63  } else {
64  {
65  param = new G4HitsCollection();
66  }
68  this->msh_isUnmarshalDone = true;
69  unmarshal1();
70  return this->param;
71  }
72 }
73 
75  //We don't want to unmarshal the buffer is empty.
76  if(msh_size <= MSH_HEADER_SIZE) {
77  //This is buggy, we can't always assume that
78  //obj == NULL <==> List is empty.
79  return;
80  } else {
81  this->param = obj;
83  this->msh_isUnmarshalDone = true;
84  unmarshal1();
85  }
86 }
87 
88 void marshal1() {
89  //declare field_size to be the size of this field
90  int msh_currentSize = 0;
91  if (isUnmarshaling())
92  throw "Tried to marshal in obj marked isUnmarshaling == true";
93 
94  //Copy the sizespec into msh_currentSize here:
95  {
96 
97  }
98 
99  //Increase the size of buffer if needed
100  EXTEND_BUFFER(msh_currentSize + sizeof(int) + sizeof(int)); // 4 bytes for the total size of field, 4 bytes for the number of elements in the array (in the case of array marshaling)
101  //Mark the beginning position for this field, will write the total size of this field here later
103 
104  //Advance cursor of distance = sizeof(int)
105  msh_cursor += sizeof(int);
106 
107  //Now just copy "get" functions here
108  {
109  int copy_off = 0;
110  int elementNum;
111  elementNum = ((G4THitsCollection<ExN02TrackerHit>*)param)->entries();
112  memcpy( msh_cursor+copy_off, &elementNum,sizeof(int));
113  copy_off += sizeof(int);
114  for(int index=0;index<elementNum;index++){
115  ExN02TrackerHit* anElement;
116  anElement = (*((G4THitsCollection<ExN02TrackerHit>*)param))[index];
117  MarshaledExN02TrackerHit marEle(anElement);
118  EXTEND_BUFFER(marEle.getBufferSize());
119  memcpy(msh_cursor+copy_off, marEle.getBuffer(), marEle.getBufferSize());
120  copy_off += marEle.getBufferSize();
121  }
122  msh_currentSize = copy_off;
123 
124  }
125  //Now advance the cursor
126  msh_cursor += msh_currentSize;
127  //Now set the size of this field
128  int tmp; //use memcpy instead of *(int*)... =... to prevent bus error
129  tmp = (msh_cursor-msh_field_begin) - sizeof(int);
130  memcpy(msh_field_begin, &tmp, sizeof(int));
131 
132  //Now set msh_size
135 }
136 
137 void unmarshal1() {
138  //declare currentSize to be the size of this field
139  int msh_currentSize = 0;
140  //copy the size of the current field into currentSize
141  memcpy(&msh_currentSize, msh_cursor, sizeof(int));
142  msh_cursor += sizeof(int);
143  //Now copy the setspec here
144  {
145  int copy_off = 0;
146  int elementNum;
147  memcpy(&elementNum, msh_cursor+copy_off, sizeof(int));
148  copy_off += sizeof(int);
149  for(int index=0;index<elementNum;index++){
150  MarshaledExN02TrackerHit marEle(msh_cursor+copy_off);
151  ExN02TrackerHit* anElement = (ExN02TrackerHit* )marEle.unmarshal();
152  copy_off += marEle.getBufferSize();
153  ((G4THitsCollection<ExN02TrackerHit>*)param)->insert((ExN02TrackerHit*)anElement);
154  }
155 
156  }
157  msh_cursor += msh_currentSize;
158 }
159 
160 };
161 template <class T> class MarshaledG4THitsCollection : public MarshaledObj {
162 public:
165 public:
166 
167 
168 // Function implementations
169 
171  msh_isUnmarshalDone = false;
172  this->param = objptr;
174  if (objptr == NULL)
175  return;
176 
177  marshal1();
178 }
179 
182  msh_isUnmarshalDone = false;
183 }
184 
186  //if(msh_isUnmarshalDone && this->param != NULL) {
187  //delete this->param;
188  //}
189 }
190 
192  //We don't want to unmarshal the buffer is empty.
193  if(msh_size <= MSH_HEADER_SIZE) {
194  //This is buggy, we can't always assume that
195  //obj == NULL <==> List is empty.
196  return NULL;
197  } else {
198  {
199  param = new G4THitsCollection<T>();
200  }
202  this->msh_isUnmarshalDone = true;
203  unmarshal1();
204  return this->param;
205  }
206 }
207 
209  //We don't want to unmarshal the buffer is empty.
210  if(msh_size <= MSH_HEADER_SIZE) {
211  //This is buggy, we can't always assume that
212  //obj == NULL <==> List is empty.
213  return;
214  } else {
215  this->param = obj;
217  this->msh_isUnmarshalDone = true;
218  unmarshal1();
219  }
220 }
221 
222 void marshal1() {
223  //declare field_size to be the size of this field
224  int msh_currentSize = 0;
225  if (isUnmarshaling())
226  throw "Tried to marshal in obj marked isUnmarshaling == true";
227 
228  //Copy the sizespec into msh_currentSize here:
229  {
230  //code for size, just dummy code because the size will be set correctly at the end of marshaling code
231 
232  }
233 
234  //Increase the size of buffer if needed
235  EXTEND_BUFFER(msh_currentSize + sizeof(int) + sizeof(int)); // 4 bytes for the total size of field, 4 bytes for the number of elements in the array (in the case of array marshaling)
236  //Mark the beginning position for this field, will write the total size of this field here later
238 
239  //Advance cursor of distance = sizeof(int)
240  msh_cursor += sizeof(int);
241 
242  //Now just copy "get" functions here
243  {
244  MarshaledG4HitsCollection marParent(param);
245  EXTEND_BUFFER(marParent.getBufferSize());
246  memcpy(msh_cursor,marParent.getBuffer(), marParent.getBufferSize());
247  msh_currentSize = marParent.getBufferSize();
248 
249  }
250  //Now advance the cursor
251  msh_cursor += msh_currentSize;
252  //Now set the size of this field
253  int tmp; //use memcpy instead of *(int*)... =... to prevent bus error
254  tmp = (msh_cursor-msh_field_begin) - sizeof(int);
255  memcpy(msh_field_begin, &tmp, sizeof(int));
256 
257  //Now set msh_size
260 }
261 
262 void unmarshal1() {
263  //declare currentSize to be the size of this field
264  int msh_currentSize = 0;
265  //copy the size of the current field into currentSize
266  memcpy(&msh_currentSize, msh_cursor, sizeof(int));
267  msh_cursor += sizeof(int);
268  //Now copy the setspec here
269  {
271  marObj.unmarshalTo(param);
272 
273  }
274  msh_cursor += msh_currentSize;
275 }
276 
277 };
278 #endif
279