36#ifndef G4GEOMSPLITTER_HH
37#define G4GEOMSPLITTER_HH
58 : sharedOffset(nullptr)
69 return (T *) std::realloc(
offset, totalspace *
sizeof(T));
80 if (totalobj > totalspace)
90 return (totalobj - 1);
99 std::memcpy(
offset, sharedOffset, totalspace *
sizeof(T));
109 if (
offset !=
nullptr) {
return; }
113 G4Exception(
"G4GeomSplitter::SlaveCopySubInstanceArray()",
128 if (
offset !=
nullptr) {
return; }
133 G4Exception(
"G4GeomSplitter::SlaveInitializeSubInstance()",
137 for (
G4int i=0 ; i<totalspace; ++i)
154 G4Exception(
"G4GeomSPlitter::SlaveReCopySubInstance()",
156 "Must be called after Initialisation or first Copy.");
166 if (
offset ==
nullptr) {
return; }
187 "Thread already has workspace - cannot use another.");
G4TemplateAutoLock< G4Mutex > G4AutoLock
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
#define G4MUTEXINIT(mutex)
void SlaveReCopySubInstanceArray()
void SlaveInitializeSubInstance()
static G4GEOM_DLL G4ThreadLocal G4LVData * offset
G4int CreateSubInstance()
void SlaveCopySubInstanceArray()
T * Reallocate(G4int size)
void CopyMasterContents()
void UseWorkArea(T *newOffset)