Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ParN04/include/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 "ExN04TrackerHit.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 
46 MarshaledG4HCofThisEvent(void *buf, char chIsUnmarshaling = 'u')
47 : MarshaledObj(buf, chIsUnmarshaling) {
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));
101  // 4 bytes for the total size of field, 4 bytes for the number of
102  // elements in the array (in the case of array marshaling)
103  //Mark the beginning position for this field, will write the total size
104  //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 
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
ShadowedMarshaledG4HCofThisEvent * Shadowed_param
#define MSH_SET_TYPECHOICE(X)
void EXTEND_BUFFER(int size)
MarshaledG4HCofThisEvent(void *buf, char chIsUnmarshaling= 'u')
void AddHitsCollection(G4int HCID, G4VHitsCollection *aHC)
#define MSH_HEADER_SIZE
#define MSH_SET_TOTALSIZE(X)