1 // **********************************************************************
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
8 // **********************************************************************
10 #include <Ice/SliceChecksums.h>
11 #include <IceUtil/Mutex.h>
12 #include <IceUtil/MutexPtrLock.h>
20 SliceChecksumDict
* _sliceChecksums
= 0;
22 IceUtil::Mutex
* _mutex
= 0;
30 _mutex
= new IceUtil::Mutex
;
42 class SliceChecksumDictDestroyer
46 ~SliceChecksumDictDestroyer()
48 delete _sliceChecksums
;
53 SliceChecksumDictDestroyer destroyer
;
60 IceUtilInternal::MutexPtrLock
<IceUtil::Mutex
> lock(_mutex
);
61 if(_sliceChecksums
== 0)
63 _sliceChecksums
= new SliceChecksumDict();
65 return *_sliceChecksums
;
68 IceInternal::SliceChecksumInit::SliceChecksumInit(const char* checksums
[])
70 IceUtilInternal::MutexPtrLock
<IceUtil::Mutex
> lock(_mutex
);
71 if(_sliceChecksums
== 0)
73 _sliceChecksums
= new SliceChecksumDict();
76 for(int i
= 0; checksums
[i
] != 0; i
+= 2)
78 _sliceChecksums
->insert(SliceChecksumDict::value_type(checksums
[i
], checksums
[i
+ 1]));