1
0

Fixed silly Clang's warnings in FastNBT.

This commit is contained in:
madmaxoft 2014-04-04 10:19:21 +02:00
parent 8825d30aab
commit 396abb5db6

View File

@ -122,33 +122,33 @@ public:
int GetRoot(void) const {return 0; } int GetRoot(void) const {return 0; }
/** Returns the first child of the specified tag, or -1 if none / not applicable. */ /** Returns the first child of the specified tag, or -1 if none / not applicable. */
int GetFirstChild (int a_Tag) const { return m_Tags[a_Tag].m_FirstChild; } int GetFirstChild (int a_Tag) const { return m_Tags[(size_t)a_Tag].m_FirstChild; }
/** Returns the last child of the specified tag, or -1 if none / not applicable. */ /** Returns the last child of the specified tag, or -1 if none / not applicable. */
int GetLastChild (int a_Tag) const { return m_Tags[a_Tag].m_LastChild; } int GetLastChild (int a_Tag) const { return m_Tags[(size_t)a_Tag].m_LastChild; }
/** Returns the next sibling of the specified tag, or -1 if none. */ /** Returns the next sibling of the specified tag, or -1 if none. */
int GetNextSibling(int a_Tag) const { return m_Tags[a_Tag].m_NextSibling; } int GetNextSibling(int a_Tag) const { return m_Tags[(size_t)a_Tag].m_NextSibling; }
/** Returns the previous sibling of the specified tag, or -1 if none. */ /** Returns the previous sibling of the specified tag, or -1 if none. */
int GetPrevSibling(int a_Tag) const { return m_Tags[a_Tag].m_PrevSibling; } int GetPrevSibling(int a_Tag) const { return m_Tags[(size_t)a_Tag].m_PrevSibling; }
/** Returns the length of the tag's data, in bytes. /** Returns the length of the tag's data, in bytes.
Not valid for Compound or List tags! */ Not valid for Compound or List tags! */
int GetDataLength (int a_Tag) const int GetDataLength (int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type != TAG_List); ASSERT(m_Tags[(size_t)a_Tag].m_Type != TAG_List);
ASSERT(m_Tags[a_Tag].m_Type != TAG_Compound); ASSERT(m_Tags[(size_t)a_Tag].m_Type != TAG_Compound);
return m_Tags[a_Tag].m_DataLength; return m_Tags[(size_t)a_Tag].m_DataLength;
} }
/** Returns the data stored in this tag. /** Returns the data stored in this tag.
Not valid for Compound or List tags! */ Not valid for Compound or List tags! */
const char * GetData(int a_Tag) const const char * GetData(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type != TAG_List); ASSERT(m_Tags[(size_t)a_Tag].m_Type != TAG_List);
ASSERT(m_Tags[a_Tag].m_Type != TAG_Compound); ASSERT(m_Tags[(size_t)a_Tag].m_Type != TAG_Compound);
return m_Data + m_Tags[a_Tag].m_DataStart; return m_Data + m_Tags[(size_t)a_Tag].m_DataStart;
} }
/** Returns the direct child tag of the specified name, or -1 if no such tag. */ /** Returns the direct child tag of the specified name, or -1 if no such tag. */
@ -163,47 +163,47 @@ public:
/** Returns the child tag of the specified path (Name1\Name2\Name3...), or -1 if no such tag. */ /** Returns the child tag of the specified path (Name1\Name2\Name3...), or -1 if no such tag. */
int FindTagByPath(int a_Tag, const AString & a_Path) const; int FindTagByPath(int a_Tag, const AString & a_Path) const;
eTagType GetType(int a_Tag) const { return m_Tags[a_Tag].m_Type; } eTagType GetType(int a_Tag) const { return m_Tags[(size_t)a_Tag].m_Type; }
/** Returns the children type for a List tag; undefined on other tags. If list empty, returns TAG_End. */ /** Returns the children type for a List tag; undefined on other tags. If list empty, returns TAG_End. */
eTagType GetChildrenType(int a_Tag) const eTagType GetChildrenType(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type == TAG_List); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_List);
return (m_Tags[a_Tag].m_FirstChild < 0) ? TAG_End : m_Tags[m_Tags[a_Tag].m_FirstChild].m_Type; return (m_Tags[(size_t)a_Tag].m_FirstChild < 0) ? TAG_End : m_Tags[(size_t)m_Tags[(size_t)a_Tag].m_FirstChild].m_Type;
} }
/** Returns the value stored in a Byte tag. Not valid for any other tag type. */ /** Returns the value stored in a Byte tag. Not valid for any other tag type. */
inline unsigned char GetByte(int a_Tag) const inline unsigned char GetByte(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type == TAG_Byte); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_Byte);
return (unsigned char)(m_Data[m_Tags[a_Tag].m_DataStart]); return (unsigned char)(m_Data[(size_t)m_Tags[(size_t)a_Tag].m_DataStart]);
} }
/** Returns the value stored in a Short tag. Not valid for any other tag type. */ /** Returns the value stored in a Short tag. Not valid for any other tag type. */
inline Int16 GetShort(int a_Tag) const inline Int16 GetShort(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type == TAG_Short); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_Short);
return GetBEShort(m_Data + m_Tags[a_Tag].m_DataStart); return GetBEShort(m_Data + m_Tags[(size_t)a_Tag].m_DataStart);
} }
/** Returns the value stored in an Int tag. Not valid for any other tag type. */ /** Returns the value stored in an Int tag. Not valid for any other tag type. */
inline Int32 GetInt(int a_Tag) const inline Int32 GetInt(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type == TAG_Int); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_Int);
return GetBEInt(m_Data + m_Tags[a_Tag].m_DataStart); return GetBEInt(m_Data + m_Tags[(size_t)a_Tag].m_DataStart);
} }
/** Returns the value stored in a Long tag. Not valid for any other tag type. */ /** Returns the value stored in a Long tag. Not valid for any other tag type. */
inline Int64 GetLong(int a_Tag) const inline Int64 GetLong(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type == TAG_Long); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_Long);
return NetworkToHostLong8(m_Data + m_Tags[a_Tag].m_DataStart); return NetworkToHostLong8(m_Data + m_Tags[(size_t)a_Tag].m_DataStart);
} }
/** Returns the value stored in a Float tag. Not valid for any other tag type. */ /** Returns the value stored in a Float tag. Not valid for any other tag type. */
inline float GetFloat(int a_Tag) const inline float GetFloat(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type == TAG_Float); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_Float);
// Cause a compile-time error if sizeof(float) != 4 // Cause a compile-time error if sizeof(float) != 4
// If your platform produces a compiler error here, you'll need to add code that manually decodes 32-bit floats // If your platform produces a compiler error here, you'll need to add code that manually decodes 32-bit floats
@ -212,7 +212,7 @@ public:
UNUSED(Check1); UNUSED(Check1);
UNUSED(Check2); UNUSED(Check2);
Int32 i = GetBEInt(m_Data + m_Tags[a_Tag].m_DataStart); Int32 i = GetBEInt(m_Data + m_Tags[(size_t)a_Tag].m_DataStart);
float f; float f;
memcpy(&f, &i, sizeof(f)); memcpy(&f, &i, sizeof(f));
return f; return f;
@ -228,16 +228,16 @@ public:
UNUSED(Check1); UNUSED(Check1);
UNUSED(Check2); UNUSED(Check2);
ASSERT(m_Tags[a_Tag].m_Type == TAG_Double); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_Double);
return NetworkToHostDouble8(m_Data + m_Tags[a_Tag].m_DataStart); return NetworkToHostDouble8(m_Data + m_Tags[(size_t)a_Tag].m_DataStart);
} }
/** Returns the value stored in a String tag. Not valid for any other tag type. */ /** Returns the value stored in a String tag. Not valid for any other tag type. */
inline AString GetString(int a_Tag) const inline AString GetString(int a_Tag) const
{ {
ASSERT(m_Tags[a_Tag].m_Type == TAG_String); ASSERT(m_Tags[(size_t)a_Tag].m_Type == TAG_String);
AString res; AString res;
res.assign(m_Data + m_Tags[a_Tag].m_DataStart, m_Tags[a_Tag].m_DataLength); res.assign(m_Data + m_Tags[(size_t)a_Tag].m_DataStart, m_Tags[(size_t)a_Tag].m_DataLength);
return res; return res;
} }
@ -245,7 +245,7 @@ public:
inline AString GetName(int a_Tag) const inline AString GetName(int a_Tag) const
{ {
AString res; AString res;
res.assign(m_Data + m_Tags[a_Tag].m_NameStart, m_Tags[a_Tag].m_NameLength); res.assign(m_Data + m_Tags[(size_t)a_Tag].m_NameStart, m_Tags[(size_t)a_Tag].m_NameLength);
return res; return res;
} }