source: trunk/examples/extended/parallel/ParN04/include/MarshaledG4HCofThisEvent.h@ 809

Last change on this file since 809 was 807, checked in by garnier, 17 years ago

update

File size: 4.6 KB
RevLine 
[807]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"
12#include "MarshaledExN04TrackerHit.h"
13#include "MarshaledG4THitsCollection.h"
14#include "MarshaledG4VHitsCollection.h"
15//MSH_include_end
16
17#include <stdio.h>
18#include <string.h>
19#include "MarshaledObj.h"
20
21 class MarshaledG4HCofThisEvent;
22
23 class ShadowedMarshaledG4HCofThisEvent : public G4HCofThisEvent{
24 friend class MarshaledG4HCofThisEvent;
25};
26
27 class MarshaledG4HCofThisEvent : public MarshaledObj {
28public:
29 G4HCofThisEvent* param;
30 ShadowedMarshaledG4HCofThisEvent* Shadowed_param;
31public:
32
33
34// Function implementations
35
36MarshaledG4HCofThisEvent(G4HCofThisEvent* objptr) : MarshaledObj() {
37 msh_isUnmarshalDone = false;
38 this->param = objptr;
39 this->Shadowed_param = (ShadowedMarshaledG4HCofThisEvent*)this->param;
40 if (objptr == NULL)
41 return;
42
43 marshal1();
44}
45
46MarshaledG4HCofThisEvent(void *buf, char isUnmarshaling = 'u')
47: MarshaledObj(buf, isUnmarshaling) {
48 msh_isUnmarshalDone = false;
49}
50
51~MarshaledG4HCofThisEvent() {
52 //if(msh_isUnmarshalDone && this->param != NULL) {
53 //delete this->param;
54 //}
55}
56
57G4HCofThisEvent* unmarshal() {
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 }
67 this->Shadowed_param = (ShadowedMarshaledG4HCofThisEvent*)this->param;
68 this->msh_isUnmarshalDone = true;
69 unmarshal1();
70 return this->param;
71 }
72}
73
74void unmarshalTo(G4HCofThisEvent* obj) {
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;
82 this->Shadowed_param = (ShadowedMarshaledG4HCofThisEvent*)this->param;
83 this->msh_isUnmarshalDone = true;
84 unmarshal1();
85 }
86}
87
88void 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
102 msh_field_begin = msh_cursor;
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
133 msh_size = msh_cursor - msh_buffer;
134 MSH_SET_TOTALSIZE(msh_size); MSH_SET_TYPECHOICE(msh_typechoice);
135}
136
137void 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
Note: See TracBrowser for help on using the repository browser.