source: trunk/examples/extended/parallel/ParN02/AnnotatedFiles/MarshaledG4HCofThisEvent.h @ 807

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

update

File size: 4.6 KB
Line 
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 "ExN02TrackerHit.hh"
12#include "MarshaledExN02TrackerHit.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.