You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.2 KiB
82 lines
2.2 KiB
/* |
|
Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization |
|
dedicated to making software imaging solutions freely available. |
|
|
|
You may not use this file except in compliance with the License. |
|
obtain a copy of the License at |
|
|
|
http://www.imagemagick.org/script/license.php |
|
|
|
Unless required by applicable law or agreed to in writing, software |
|
distributed under the License is distributed on an "AS IS" BASIS, |
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
See the License for the specific language governing permissions and |
|
limitations under the License. |
|
|
|
MagickCore random generation private methods. |
|
*/ |
|
#ifndef MAGICKCORE_RANDOM_PRIVATE_H |
|
#define MAGICKCORE_RANDOM_PRIVATE_H |
|
|
|
#include "MagickCore/thread-private.h" |
|
|
|
#if defined(__cplusplus) || defined(c_plusplus) |
|
extern "C" { |
|
#endif |
|
|
|
extern MagickPrivate double |
|
GetRandomInfoNormalize(const RandomInfo *); |
|
|
|
extern MagickPrivate MagickBooleanType |
|
RandomComponentGenesis(void); |
|
|
|
extern MagickPrivate unsigned long |
|
*GetRandomInfoSeed(RandomInfo *); |
|
|
|
extern MagickPrivate void |
|
RandomComponentTerminus(void); |
|
|
|
static inline RandomInfo **DestroyRandomInfoThreadSet( |
|
RandomInfo **random_info) |
|
{ |
|
register ssize_t |
|
i; |
|
|
|
assert(random_info != (RandomInfo **) NULL); |
|
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++) |
|
if (random_info[i] != (RandomInfo *) NULL) |
|
random_info[i]=DestroyRandomInfo(random_info[i]); |
|
return((RandomInfo **) RelinquishMagickMemory(random_info)); |
|
} |
|
|
|
static inline RandomInfo **AcquireRandomInfoThreadSet(void) |
|
{ |
|
register ssize_t |
|
i; |
|
|
|
RandomInfo |
|
**random_info; |
|
|
|
size_t |
|
number_threads; |
|
|
|
number_threads=(size_t) GetMagickResourceLimit(ThreadResource); |
|
random_info=(RandomInfo **) AcquireQuantumMemory(number_threads, |
|
sizeof(*random_info)); |
|
if (random_info == (RandomInfo **) NULL) |
|
return((RandomInfo **) NULL); |
|
(void) ResetMagickMemory(random_info,0,number_threads*sizeof(*random_info)); |
|
for (i=0; i < (ssize_t) number_threads; i++) |
|
{ |
|
random_info[i]=AcquireRandomInfo(); |
|
if (random_info[i] == (RandomInfo *) NULL) |
|
return(DestroyRandomInfoThreadSet(random_info)); |
|
} |
|
return(random_info); |
|
} |
|
|
|
#if defined(__cplusplus) || defined(c_plusplus) |
|
} |
|
#endif |
|
|
|
#endif
|
|
|