MarshaledG4HCofThisEvent.h
Go to the documentation of this file.
1 // This file was generated automatically by marshalgen.
2 //
3 /// \file parallel/ParN02/AnnotatedFiles/MarshaledG4HCofThisEvent.h
4 /// \brief Definition of the MaraledG4HCofisEvent class
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 
26  class ShadowedMarshaledG4HCofThisEvent : public G4HCofThisEvent{
28 };
29 
31 public:
32  G4HCofThisEvent* param;
34 public:
35 
36 
37 // Function implementations
38 
39 MarshaledG4HCofThisEvent(G4HCofThisEvent* objptr) : MarshaledObj() {
40  msh_isUnmarshalDone = false;
41  this->param = objptr;
42  this->Shadowed_param = (ShadowedMarshaledG4HCofThisEvent*)this->param;
43  if (objptr == NULL)
44  return;
45 
46  marshal1();
47 }
48 
49 MarshaledG4HCofThisEvent(void *buf, char isUnmarshaling = 'u')
50 : MarshaledObj(buf, isUnmarshaling) {
51  msh_isUnmarshalDone = false;
52 }
53 
55  //if(msh_isUnmarshalDone && this->param != NULL) {
56  //delete this->param;
57  //}
58 }
59 
60 G4HCofThisEvent* unmarshal() {
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  }
70  this->Shadowed_param = (ShadowedMarshaledG4HCofThisEvent*)this->param;
71  this->msh_isUnmarshalDone = true;
72  unmarshal1();
73  return this->param;
74  }
75 }
76 
77 void unmarshalTo(G4HCofThisEvent* obj) {
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;
85  this->Shadowed_param = (ShadowedMarshaledG4HCofThisEvent*)this->param;
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
105  msh_field_begin = msh_cursor;
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
136  msh_size = msh_cursor - msh_buffer;
137  MSH_SET_TOTALSIZE(msh_size); MSH_SET_TYPECHOICE(msh_typechoice);
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 
Float_t tmp
Definition: plot.C:36
#define MSH_SET_TOTALSIZE(X)
Definition: MarshaledObj.h:22
int getBufferSize()
Definition: MarshaledObj.h:145
#define MSH_SET_TYPECHOICE(X)
Definition: MarshaledObj.h:21
void unmarshalTo(G4HCofThisEvent *obj)
MarshaledG4HCofThisEvent(G4HCofThisEvent *objptr)
MarshaledG4HCofThisEvent(void *buf, char isUnmarshaling= 'u')
#define MSH_HEADER_SIZE
Definition: MarshaledObj.h:15
ShadowedMarshaledG4HCofThisEvent * Shadowed_param
char * getBuffer()
Definition: MarshaledObj.h:149