blob: c08d44be920a6e9bd9495e3a2971f781379d8158 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*/
#ifndef FRAMEWORKS_EX_VARIABLESPEED_JNI_MACROS_H_
#define FRAMEWORKS_EX_VARIABLESPEED_JNI_MACROS_H_
#include <hlogging.h>
inline float min(float a, float b) {
return (a < b) ? a : b;
}
inline float max(float a, float b) {
return (a > b) ? a : b;
}
template <class ForwardIterator>
ForwardIterator min_element(ForwardIterator first, ForwardIterator last) {
ForwardIterator lowest = first;
if (first == last) return last;
while (++first != last)
if (*first < *lowest)
lowest = first;
return lowest;
}
// A macro to disallow the copy constructor and operator= functions
// This should be used in the private: declarations for a class
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&); \
void operator=(const TypeName&)
#define CHECK(x) { \
if (!(x)) { \
LOGE("assertion failed: " #x); \
LOGE("file: %s line: %d", __FILE__, __LINE__); \
int* frob = NULL; \
*frob = 5; \
} \
}
template <class Dest, class Source>
inline Dest bit_cast(const Source& source) {
// Compile time assertion: sizeof(Dest) == sizeof(Source)
// A compile error here means your Dest and Source have different sizes.
typedef char VerifySizesAreEqual [sizeof(Dest) == sizeof(Source) ? 1 : -1]; // NOLINT
Dest dest;
memcpy(&dest, &source, sizeof(dest));
return dest;
}
#endif // FRAMEWORKS_EX_VARIABLESPEED_JNI_MACROS_H_