source: trunk/examples/extended/parallel/ParN02/AnnotatedFiles/MarshaledG4THitsCollection.h @ 1292

Last change on this file since 1292 was 807, checked in by garnier, 16 years ago

update

File size: 8.2 KB
Line 
1// This file was generated automatically by marshalgen.
2
3#ifndef MarshaledG4HitsCollection_H
4#define MarshaledG4HitsCollection_H
5
6
7#include <G4THitsCollection.hh>
8
9
10#include <stdio.h>
11#include <string.h>
12#include "MarshaledObj.h"
13
14  class MarshaledG4HitsCollection;
15
16  class ShadowedMarshaledG4HitsCollection : public G4HitsCollection{
17    friend class MarshaledG4HitsCollection;
18};
19
20
21template <class T> class MarshaledG4THitsCollection;
22
23template <class T> class ShadowedMarshaledG4THitsCollection : public G4THitsCollection<T>{
24    friend class MarshaledG4THitsCollection<T>;
25};
26
27  class MarshaledG4HitsCollection : public MarshaledObj {
28public:
29    G4HitsCollection* param;
30    ShadowedMarshaledG4HitsCollection* Shadowed_param;
31public:
32
33
34// Function implementations
35
36MarshaledG4HitsCollection(G4HitsCollection* objptr) : MarshaledObj() {
37    msh_isUnmarshalDone = false;
38    this->param = objptr;
39    this->Shadowed_param = (ShadowedMarshaledG4HitsCollection*)this->param;
40    if (objptr == NULL)
41        return;
42
43    marshal1();
44}
45
46MarshaledG4HitsCollection(void *buf, char isUnmarshaling = 'u')
47: MarshaledObj(buf, isUnmarshaling) {
48    msh_isUnmarshalDone = false;
49}
50
51~MarshaledG4HitsCollection() {
52    //if(msh_isUnmarshalDone && this->param != NULL) {
53        //delete this->param;
54    //}
55}
56
57G4HitsCollection* 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 G4HitsCollection();
66        }
67        this->Shadowed_param = (ShadowedMarshaledG4HitsCollection*)this->param;
68        this->msh_isUnmarshalDone = true;
69        unmarshal1();
70        return this->param;
71    }
72}
73
74void unmarshalTo(G4HitsCollection* 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 = (ShadowedMarshaledG4HitsCollection*)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 = ((G4THitsCollection<ExN02TrackerHit>*)param)->entries(); 
112        memcpy( msh_cursor+copy_off, &elementNum,sizeof(int));
113        copy_off += sizeof(int);
114        for(int index=0;index<elementNum;index++){
115                        ExN02TrackerHit*   anElement;
116                         anElement = (*((G4THitsCollection<ExN02TrackerHit>*)param))[index]; 
117                        MarshaledExN02TrackerHit   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                        MarshaledExN02TrackerHit   marEle(msh_cursor+copy_off);
151                        ExN02TrackerHit*   anElement = (ExN02TrackerHit*  )marEle.unmarshal();
152                        copy_off += marEle.getBufferSize();
153                         ((G4THitsCollection<ExN02TrackerHit>*)param)->insert((ExN02TrackerHit*)anElement); 
154                }
155
156    }
157    msh_cursor += msh_currentSize;
158}
159
160};
161template <class T> class MarshaledG4THitsCollection : public MarshaledObj {
162public:
163    G4THitsCollection<T>* param;
164    ShadowedMarshaledG4THitsCollection<T>* Shadowed_param;
165public:
166
167
168// Function implementations
169
170MarshaledG4THitsCollection(G4THitsCollection<T>* objptr) : MarshaledObj() {
171    msh_isUnmarshalDone = false;
172    this->param = objptr;
173    this->Shadowed_param = (ShadowedMarshaledG4THitsCollection<T>*)this->param;
174    if (objptr == NULL)
175        return;
176
177    marshal1();
178}
179
180MarshaledG4THitsCollection(void *buf, char isUnmarshaling = 'u')
181: MarshaledObj(buf, isUnmarshaling) {
182    msh_isUnmarshalDone = false;
183}
184
185~MarshaledG4THitsCollection() {
186    //if(msh_isUnmarshalDone && this->param != NULL) {
187        //delete this->param;
188    //}
189}
190
191G4THitsCollection<T>* unmarshal() {
192    //We don't want to unmarshal the buffer is empty.
193    if(msh_size <= MSH_HEADER_SIZE) {
194        //This is buggy, we can't always assume that
195        //obj == NULL <==> List is empty.
196        return NULL;
197    } else {
198        {
199        param = new G4THitsCollection<T>();
200        }
201        this->Shadowed_param = (ShadowedMarshaledG4THitsCollection<T>*)this->param;
202        this->msh_isUnmarshalDone = true;
203        unmarshal1();
204        return this->param;
205    }
206}
207
208void unmarshalTo(G4THitsCollection<T>* obj) {
209    //We don't want to unmarshal the buffer is empty.
210    if(msh_size <= MSH_HEADER_SIZE) {
211        //This is buggy, we can't always assume that
212        //obj == NULL <==> List is empty.
213        return;
214    } else {
215        this->param = obj;
216        this->Shadowed_param = (ShadowedMarshaledG4THitsCollection<T>*)this->param;
217        this->msh_isUnmarshalDone = true;
218        unmarshal1();
219    }
220}
221
222void marshal1() {
223    //declare field_size to be the size of this field
224    int msh_currentSize = 0;
225    if (isUnmarshaling())
226        throw "Tried to marshal in obj marked isUnmarshaling == true";
227
228    //Copy the sizespec into msh_currentSize here:
229    {
230                //code for size, just dummy code because the size will be set correctly at the end of marshaling code
231
232    }
233
234    //Increase the size of buffer if needed
235    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)
236    //Mark the beginning position for this field, will write the total size of this field here later
237    msh_field_begin = msh_cursor;
238
239    //Advance cursor of distance = sizeof(int)
240    msh_cursor += sizeof(int);
241
242    //Now just copy "get" functions here
243    {
244                MarshaledG4HitsCollection marParent(param);
245                EXTEND_BUFFER(marParent.getBufferSize());
246                memcpy(msh_cursor,marParent.getBuffer(), marParent.getBufferSize());
247                msh_currentSize = marParent.getBufferSize();
248
249    }
250    //Now advance the cursor
251    msh_cursor += msh_currentSize;
252    //Now set the size of this field
253    int tmp; //use memcpy instead of *(int*)... =... to prevent bus error
254    tmp = (msh_cursor-msh_field_begin) - sizeof(int);
255    memcpy(msh_field_begin, &tmp, sizeof(int));
256
257    //Now set msh_size
258    msh_size = msh_cursor - msh_buffer;
259    MSH_SET_TOTALSIZE(msh_size);    MSH_SET_TYPECHOICE(msh_typechoice);
260}
261
262void unmarshal1() {
263    //declare currentSize to be the size of this field
264    int msh_currentSize = 0;
265    //copy the size of the current field into currentSize
266    memcpy(&msh_currentSize, msh_cursor, sizeof(int));
267    msh_cursor += sizeof(int);
268    //Now copy the setspec here
269    {
270                MarshaledG4HitsCollection marObj(msh_cursor);
271                marObj.unmarshalTo(param);
272
273    }
274    msh_cursor += msh_currentSize;
275}
276
277};
278#endif
279
Note: See TracBrowser for help on using the repository browser.