ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MarshaledG4HCofThisEvent.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file MarshaledG4HCofThisEvent.h
1 // This file was generated automatically by marshalgen.
2 //
5 
6 #ifndef MarshaledG4HCofThisEvent_H
7 #define MarshaledG4HCofThisEvent_H
8 
9 
10 #include <G4HCofThisEvent.hh>
11 //MSH_include_begin
12 #include "G4SDManager.hh"
13 #include "G4THitsCollection.hh"
14 #include "ExN02TrackerHit.hh"
18 //MSH_include_end
19 
20 #include <stdio.h>
21 #include <string.h>
22 #include "MarshaledObj.h"
23 
25 
28 };
29 
31 public:
34 public:
35 
36 
37 // Function implementations
38 
40  msh_isUnmarshalDone = false;
41  this->param = objptr;
43  if (objptr == NULL)
44  return;
45 
46  marshal1();
47 }
48 
51  msh_isUnmarshalDone = false;
52 }
53 
55  //if(msh_isUnmarshalDone && this->param != NULL) {
56  //delete this->param;
57  //}
58 }
59 
61  //We don't want to unmarshal the buffer is empty.
62  if(msh_size <= MSH_HEADER_SIZE) {
63  //This is buggy, we can't always assume that
64  //obj == NULL <==> List is empty.
65  return NULL;
66  } else {
67  {
68  param = new G4HCofThisEvent();
69  }
71  this->msh_isUnmarshalDone = true;
72  unmarshal1();
73  return this->param;
74  }
75 }
76 
78  //We don't want to unmarshal the buffer is empty.
79  if(msh_size <= MSH_HEADER_SIZE) {
80  //This is buggy, we can't always assume that
81  //obj == NULL <==> List is empty.
82  return;
83  } else {
84  this->param = obj;
86  this->msh_isUnmarshalDone = true;
87  unmarshal1();
88  }
89 }
90 
91 void marshal1() {
92  //declare field_size to be the size of this field
93  int msh_currentSize = 0;
94  if (isUnmarshaling())
95  throw "Tried to marshal in obj marked isUnmarshaling == true";
96 
97  //Copy the sizespec into msh_currentSize here:
98  {
99 
100  }
101 
102  //Increase the size of buffer if needed
103  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)
104  //Mark the beginning position for this field, will write the total size of this field here later
106 
107  //Advance cursor of distance = sizeof(int)
108  msh_cursor += sizeof(int);
109 
110  //Now just copy "get" functions here
111  {
112  int copy_off = 0;
113  int elementNum;
114  elementNum = param->GetNumberOfCollections();
115  memcpy( msh_cursor+copy_off, &elementNum,sizeof(int));
116  copy_off += sizeof(int);
117  for(int index=0;index<elementNum;index++){
118  G4VHitsCollection* anElement;
119  anElement = param->GetHC(index);
120  MarshaledG4VHitsCollection marEle(anElement);
121  EXTEND_BUFFER(marEle.getBufferSize());
122  memcpy(msh_cursor+copy_off, marEle.getBuffer(), marEle.getBufferSize());
123  copy_off += marEle.getBufferSize();
124  }
125  msh_currentSize = copy_off;
126 
127  }
128  //Now advance the cursor
129  msh_cursor += msh_currentSize;
130  //Now set the size of this field
131  int tmp; //use memcpy instead of *(int*)... =... to prevent bus error
132  tmp = (msh_cursor-msh_field_begin) - sizeof(int);
133  memcpy(msh_field_begin, &tmp, sizeof(int));
134 
135  //Now set msh_size
138 }
139 
140 void unmarshal1() {
141  //declare currentSize to be the size of this field
142  int msh_currentSize = 0;
143  //copy the size of the current field into currentSize
144  memcpy(&msh_currentSize, msh_cursor, sizeof(int));
145  msh_cursor += sizeof(int);
146  //Now copy the setspec here
147  {
148  int copy_off = 0;
149  int elementNum;
150  memcpy(&elementNum, msh_cursor+copy_off, sizeof(int));
151  copy_off += sizeof(int);
152  for(int index=0;index<elementNum;index++){
153  MarshaledG4VHitsCollection marEle(msh_cursor+copy_off);
154  G4VHitsCollection* anElement = (G4VHitsCollection*)marEle.unmarshal();
155  copy_off += marEle.getBufferSize();
156  param->AddHitsCollection(index, anElement);
157  }
158 
159  }
160  msh_cursor += msh_currentSize;
161 }
162 
163 };
164 #endif
165