Merge branch 'develop' into feature/cubiquity-version
This commit is contained in:
		| @@ -48,7 +48,12 @@ freely, subject to the following restrictions: | ||||
|  | ||||
| // Macros cannot contain #ifdefs, but some of our macros need to disable warnings and such warning supression is | ||||
| // platform specific. But macros can contain other macros, so we create macros to control the warnings and use | ||||
| // those instead. This set of warning supression macros can be extended to GCC/Clang when required. | ||||
| // those instead. | ||||
| // | ||||
| // Note that we have seperate macros for POLYVOX_MSC_..., POLYVOX_GCC_..., etc. In princpiple we could have just one | ||||
| // as compilers should ignore pragmas they don't recognise, but in practice at least MSVC complains about this as | ||||
| // well. So in practice it's just eaier to have seperate macros. We could look into the compiler switch to not warn | ||||
| // on unrecognised pragmas though. | ||||
| #if defined(_MSC_VER) | ||||
| 	#define POLYVOX_MSC_WARNING_PUSH __pragma(warning(push)) | ||||
| 	#define POLYVOX_DISABLE_MSC_WARNING(x) __pragma(warning(disable:x)) | ||||
| @@ -59,6 +64,16 @@ freely, subject to the following restrictions: | ||||
| 	#define POLYVOX_MSC_WARNING_POP | ||||
| #endif | ||||
|  | ||||
| #if defined(__GNUC__) | ||||
| 	#define POLYVOX_GCC_WARNING_PUSH #pragma GCC diagnostic push | ||||
| 	#define POLYVOX_DISABLE_GCC_WARNING(x) #pragma GCC diagnostic ignored x | ||||
| 	#define POLYVOX_GCC_WARNING_POP #pragma GCC diagnostic pop | ||||
| #else | ||||
| 	#define POLYVOX_GCC_WARNING_PUSH | ||||
| 	#define POLYVOX_DISABLE_GCC_WARNING(x) | ||||
| 	#define POLYVOX_GCC_WARNING_POP | ||||
| #endif | ||||
|  | ||||
| #define POLYVOX_UNUSED(x) do { (void)sizeof(x); } while(0) | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -75,8 +75,31 @@ namespace PolyVox | ||||
| 		Type getDensity() const { return m_uDensity; } | ||||
| 		Type getMaterial() const { return m_uMaterial; } | ||||
|  | ||||
| 		void setDensity(Type uDensity) { m_uDensity = uDensity; } | ||||
| 		void setMaterial(Type uMaterial) { m_uMaterial = uMaterial; } | ||||
| 		void setDensity(Type uDensity) | ||||
| 		{ | ||||
| 			// Depending on our underlying type it may be impossible for the assert below to be triggered (i.e. if density is stored as | ||||
| 			// Type, rather than just using a few bits of Type). GCC will warn about this but it's redundant so we diable the warning. | ||||
| 			POLYVOX_GCC_WARNING_PUSH | ||||
| 				POLYVOX_DISABLE_GCC_WARNING("-Wtype-limits") | ||||
| 				POLYVOX_ASSERT(uDensity >= getMinDensity(), "Density out of range"); | ||||
| 				POLYVOX_ASSERT(uDensity <= getMaxDensity(), "Density out of range"); | ||||
| 			POLYVOX_GCC_WARNING_POP | ||||
|  | ||||
| 			m_uDensity = uDensity; | ||||
| 		} | ||||
|  | ||||
| 		void setMaterial(Type uMaterial) | ||||
| 		{ | ||||
| 			// Depending on our underlying type it may be impossible for the assert below to be triggered (i.e. if material is stored as | ||||
| 			// Type, rather than just using a few bits of Type). GCC will warn about this but it's redundant so we diable the warning. | ||||
| 			POLYVOX_GCC_WARNING_PUSH | ||||
| 				POLYVOX_DISABLE_GCC_WARNING("-Wtype-limits") | ||||
| 				POLYVOX_ASSERT(uMaterial >= 0, "Material out of range"); | ||||
| 				POLYVOX_ASSERT(uMaterial <= (0x01 << NoOfMaterialBits) - 1, "Material out of range"); | ||||
| 			POLYVOX_GCC_WARNING_POP | ||||
|  | ||||
| 			m_uMaterial = uMaterial; | ||||
| 		} | ||||
|  | ||||
| 		static Type getMaxDensity() { return (0x01 << NoOfDensityBits) - 1; } | ||||
| 		static Type getMinDensity() { return 0; } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user