Panda3D
Loading...
Searching...
No Matches
checksumHashGenerator.I
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file checksumHashGenerator.I
10 * @author drose
11 * @date 2001-05-14
12 */
13
14#ifdef _WIN32
15// Needed for PtrToLong, below
16#ifndef WIN32_LEAN_AND_MEAN
17#define WIN32_LEAN_AND_MEAN 1
18#endif
19#include <windows.h>
20#endif
21
22/**
23 * Adds another integer to the hash so far. This function should be
24 * overridden in base classes; this is the principle implementation of the
25 * HashGenerator.
26 */
28add_int(long sum) {
29 _hash += (size_t)sum;
30}
31
32/**
33 * Adds a boolean flag.
34 */
36add_bool(bool flag) {
37 add_int(flag);
38}
39
40/**
41 * Adds a floating-point number, first converting it to fixed point by
42 * dividing it by the indicated threshold.
43 */
45add_fp(float number, float threshold) {
46 add_int((long)(number / threshold));
47}
48
49/**
50 * Adds a floating-point number, first converting it to fixed point by
51 * dividing it by the indicated threshold.
52 */
54add_fp(double number, double threshold) {
55 add_int((long)(number / threshold));
56}
57
58/**
59 * Adds a pointer, derived simply by casting the pointer to an integer. This
60 * should be good enough even on architectures for which this cast is lossy.
61 */
63add_pointer(void *ptr) {
64#ifdef _WIN32
65 add_int(PtrToLong(ptr));
66#else
67 add_int((long)ptr);
68#endif
69}
void add_int(long num)
Adds another integer to the hash so far.
void add_pointer(void *ptr)
Adds a pointer, derived simply by casting the pointer to an integer.
void add_fp(float num, float threshold)
Adds a floating-point number, first converting it to fixed point by dividing it by the indicated thre...
void add_bool(bool flag)
Adds a boolean flag.