The commit also establishes a precedent of leaving off the `virtual` keyword in overrides. Although not strictly necessary, I believe this is good for readability because it makes it clear it is an override and not a pure virtual function, and it helps keep line lengths shorter. We should move towards eliminating the macro altogether, but the definition has been left in with a note on deprecation so that in-progress work will not suffer merge conflicts.
		
			
				
	
	
		
			163 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (C) 2002-2012 Nikolaus Gebhardt
 | |
| // This file is part of the "Irrlicht Engine".
 | |
| // For conditions of distribution and use, see copyright notice in irrlicht.h
 | |
| 
 | |
| #include "CAttributes.h"
 | |
| #include "fast_atof.h"
 | |
| #include "ITexture.h"
 | |
| #include "IVideoDriver.h"
 | |
| 
 | |
| namespace irr
 | |
| {
 | |
| namespace io
 | |
| {
 | |
| 
 | |
| /*
 | |
| 	Basic types, check documentation in IAttribute.h to see how they generally work.
 | |
| */
 | |
| 
 | |
| // Attribute implemented for boolean values
 | |
| class CBoolAttribute : public IAttribute
 | |
| {
 | |
| public:
 | |
| 
 | |
| 	CBoolAttribute(const char* name, bool value)
 | |
| 	{
 | |
| 		Name = name;
 | |
| 		setBool(value);
 | |
| 	}
 | |
| 
 | |
| 	s32 getInt() const override
 | |
| 	{
 | |
| 		return BoolValue ? 1 : 0;
 | |
| 	}
 | |
| 
 | |
| 	f32 getFloat() const override
 | |
| 	{
 | |
| 		return BoolValue ? 1.0f : 0.0f;
 | |
| 	}
 | |
| 
 | |
| 	bool getBool() const override
 | |
| 	{
 | |
| 		return BoolValue;
 | |
| 	}
 | |
| 
 | |
| 	void setInt(s32 intValue) override
 | |
| 	{
 | |
| 		BoolValue = (intValue != 0);
 | |
| 	}
 | |
| 
 | |
| 	void setFloat(f32 floatValue) override
 | |
| 	{
 | |
| 		BoolValue = (floatValue != 0);
 | |
| 	}
 | |
| 
 | |
| 	void setBool(bool boolValue) override
 | |
| 	{
 | |
| 		BoolValue = boolValue;
 | |
| 	}
 | |
| 
 | |
| 	E_ATTRIBUTE_TYPE getType() const override
 | |
| 	{
 | |
| 		return EAT_BOOL;
 | |
| 	}
 | |
| 
 | |
| 	const wchar_t* getTypeString() const override
 | |
| 	{
 | |
| 		return L"bool";
 | |
| 	}
 | |
| 
 | |
| 	bool BoolValue;
 | |
| };
 | |
| 
 | |
| // Attribute implemented for integers
 | |
| class CIntAttribute : public IAttribute
 | |
| {
 | |
| public:
 | |
| 
 | |
| 	CIntAttribute(const char* name, s32 value)
 | |
| 	{
 | |
| 		Name = name;
 | |
| 		setInt(value);
 | |
| 	}
 | |
| 
 | |
| 	s32 getInt() const override
 | |
| 	{
 | |
| 		return Value;
 | |
| 	}
 | |
| 
 | |
| 	f32 getFloat() const override
 | |
| 	{
 | |
| 		return (f32)Value;
 | |
| 	}
 | |
| 
 | |
| 	void setInt(s32 intValue) override
 | |
| 	{
 | |
| 		Value = intValue;
 | |
| 	}
 | |
| 
 | |
| 	void setFloat(f32 floatValue) override
 | |
| 	{
 | |
| 		Value = (s32)floatValue;
 | |
| 	};
 | |
| 
 | |
| 	E_ATTRIBUTE_TYPE getType() const override
 | |
| 	{
 | |
| 		return EAT_INT;
 | |
| 	}
 | |
| 
 | |
| 	const wchar_t* getTypeString() const override
 | |
| 	{
 | |
| 		return L"int";
 | |
| 	}
 | |
| 
 | |
| 	s32 Value;
 | |
| };
 | |
| 
 | |
| // Attribute implemented for floats
 | |
| class CFloatAttribute : public IAttribute
 | |
| {
 | |
| public:
 | |
| 
 | |
| 	CFloatAttribute(const char* name, f32 value)
 | |
| 	{
 | |
| 		Name = name;
 | |
| 		setFloat(value);
 | |
| 	}
 | |
| 
 | |
| 	s32 getInt() const override
 | |
| 	{
 | |
| 		return (s32)Value;
 | |
| 	}
 | |
| 
 | |
| 	f32 getFloat() const override
 | |
| 	{
 | |
| 		return Value;
 | |
| 	}
 | |
| 
 | |
| 	void setInt(s32 intValue) override
 | |
| 	{
 | |
| 		Value = (f32)intValue;
 | |
| 	}
 | |
| 
 | |
| 	void setFloat(f32 floatValue) override
 | |
| 	{
 | |
| 		Value = floatValue;
 | |
| 	}
 | |
| 
 | |
| 	E_ATTRIBUTE_TYPE getType() const override
 | |
| 	{
 | |
| 		return EAT_FLOAT;
 | |
| 	}
 | |
| 
 | |
| 	const wchar_t* getTypeString() const override
 | |
| 	{
 | |
| 		return L"float";
 | |
| 	}
 | |
| 
 | |
| 	f32 Value;
 | |
| };
 | |
| 
 | |
| } // end namespace io
 | |
| } // end namespace irr
 |