Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MarshaledG4HCofThisEvent.h
Go to the documentation of this file.
1 // This file was generated automatically by marshalgen.
2 
3 #ifndef MarshaledG4HCofThisEvent_H
4 #define MarshaledG4HCofThisEvent_H
5 
6 
7 #include <G4HCofThisEvent.hh>
8 //MSH_include_begin
9 #include "G4SDManager.hh"
10 #include "G4THitsCollection.hh"
11 #include "ExN02TrackerHit.hh"
15 //MSH_include_end
16 
17 #include <stdio.h>
18 #include <string.h>
19 #include "MarshaledObj.h"
20 
22 
24  friend class MarshaledG4HCofThisEvent;
25 };
26 
27  class MarshaledG4HCofThisEvent : public MarshaledObj {
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 G4HCofThisEvent();
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 = param->GetNumberOfCollections();
112  memcpy( msh_cursor+copy_off, &elementNum,sizeof(int));
113  copy_off += sizeof(int);
114  for(int index=0;index<elementNum;index++){
115  G4VHitsCollection* anElement;
116  anElement = param->GetHC(index);
117  MarshaledG4VHitsCollection 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  MarshaledG4VHitsCollection marEle(msh_cursor+copy_off);
151  G4VHitsCollection* anElement = (G4VHitsCollection*)marEle.unmarshal();
152  copy_off += marEle.getBufferSize();
153  param->AddHitsCollection(index, anElement);
154  }
155 
156  }
157  msh_cursor += msh_currentSize;
158 }
159 
160 };
161 #endif
162