Deal with covered switches consistently (#4161)
* Fixes a number of "<function>: not all control paths return a value" warnings on MSVC. * Introduces the UNREACHABLE global macro and uses it instead of conditionally compiled switch defaults. * Move cNBTParseErrorCategory from FastNBT.h into FastNBT.cpp to prevent bad calls to message()
This commit is contained in:
parent
2df14a0496
commit
d3c1c626f5
@ -994,6 +994,7 @@ void cLuaState::Push(cEntity * a_Entity)
|
|||||||
return "cEntity";
|
return "cEntity";
|
||||||
}
|
}
|
||||||
} // switch (EntityType)
|
} // switch (EntityType)
|
||||||
|
UNREACHABLE("Unsupported entity type");
|
||||||
}();
|
}();
|
||||||
tolua_pushusertype(m_LuaState, a_Entity, ClassName);
|
tolua_pushusertype(m_LuaState, a_Entity, ClassName);
|
||||||
}
|
}
|
||||||
|
@ -2458,129 +2458,124 @@ void cBlockArea::MergeByStrategy(const cBlockArea & a_Src, int a_RelX, int a_Rel
|
|||||||
int DstOffZ = std::max(0, a_RelZ); // Offset in Dst where to start writing
|
int DstOffZ = std::max(0, a_RelZ); // Offset in Dst where to start writing
|
||||||
int SizeZ = std::min(a_Src.GetSizeZ() - SrcOffZ, GetSizeZ() - DstOffZ); // How many blocks to copy
|
int SizeZ = std::min(a_Src.GetSizeZ() - SrcOffZ, GetSizeZ() - DstOffZ); // How many blocks to copy
|
||||||
|
|
||||||
switch (a_Strategy)
|
[&]
|
||||||
{
|
{
|
||||||
case cBlockArea::msOverwrite:
|
switch (a_Strategy)
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorOverwrite<MetasValid> >(
|
case cBlockArea::msOverwrite:
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
{
|
||||||
DstMetas, SrcMetas,
|
InternalMergeBlocks<MetasValid, MergeCombinatorOverwrite<MetasValid> >(
|
||||||
SizeX, SizeY, SizeZ,
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
DstMetas, SrcMetas,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
SizeX, SizeY, SizeZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
DstOffX, DstOffY, DstOffZ,
|
||||||
);
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
break;
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
} // case msOverwrite
|
);
|
||||||
|
return;
|
||||||
|
} // case msOverwrite
|
||||||
|
|
||||||
case cBlockArea::msFillAir:
|
case cBlockArea::msFillAir:
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorFillAir<MetasValid> >(
|
InternalMergeBlocks<MetasValid, MergeCombinatorFillAir<MetasValid> >(
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
DstMetas, SrcMetas,
|
DstMetas, SrcMetas,
|
||||||
SizeX, SizeY, SizeZ,
|
SizeX, SizeY, SizeZ,
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
DstOffX, DstOffY, DstOffZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
);
|
);
|
||||||
break;
|
return;
|
||||||
} // case msFillAir
|
} // case msFillAir
|
||||||
|
|
||||||
case cBlockArea::msImprint:
|
case cBlockArea::msImprint:
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorImprint<MetasValid> >(
|
InternalMergeBlocks<MetasValid, MergeCombinatorImprint<MetasValid> >(
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
DstMetas, SrcMetas,
|
DstMetas, SrcMetas,
|
||||||
SizeX, SizeY, SizeZ,
|
SizeX, SizeY, SizeZ,
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
DstOffX, DstOffY, DstOffZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
);
|
);
|
||||||
break;
|
return;
|
||||||
} // case msImprint
|
} // case msImprint
|
||||||
|
|
||||||
case cBlockArea::msLake:
|
case cBlockArea::msLake:
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorLake<MetasValid> >(
|
InternalMergeBlocks<MetasValid, MergeCombinatorLake<MetasValid> >(
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
DstMetas, SrcMetas,
|
DstMetas, SrcMetas,
|
||||||
SizeX, SizeY, SizeZ,
|
SizeX, SizeY, SizeZ,
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
DstOffX, DstOffY, DstOffZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
);
|
);
|
||||||
break;
|
return;
|
||||||
} // case msLake
|
} // case msLake
|
||||||
|
|
||||||
case cBlockArea::msSpongePrint:
|
case cBlockArea::msSpongePrint:
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorSpongePrint<MetasValid> >(
|
InternalMergeBlocks<MetasValid, MergeCombinatorSpongePrint<MetasValid> >(
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
DstMetas, SrcMetas,
|
DstMetas, SrcMetas,
|
||||||
SizeX, SizeY, SizeZ,
|
SizeX, SizeY, SizeZ,
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
DstOffX, DstOffY, DstOffZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
);
|
);
|
||||||
break;
|
return;
|
||||||
} // case msSpongePrint
|
} // case msSpongePrint
|
||||||
|
|
||||||
case cBlockArea::msDifference:
|
case cBlockArea::msDifference:
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorDifference<MetasValid> >(
|
InternalMergeBlocks<MetasValid, MergeCombinatorDifference<MetasValid> >(
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
DstMetas, SrcMetas,
|
DstMetas, SrcMetas,
|
||||||
SizeX, SizeY, SizeZ,
|
SizeX, SizeY, SizeZ,
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
DstOffX, DstOffY, DstOffZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
);
|
);
|
||||||
break;
|
return;
|
||||||
} // case msDifference
|
} // case msDifference
|
||||||
|
|
||||||
case cBlockArea::msSimpleCompare:
|
case cBlockArea::msSimpleCompare:
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorSimpleCompare<MetasValid> >(
|
InternalMergeBlocks<MetasValid, MergeCombinatorSimpleCompare<MetasValid> >(
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
DstMetas, SrcMetas,
|
DstMetas, SrcMetas,
|
||||||
SizeX, SizeY, SizeZ,
|
SizeX, SizeY, SizeZ,
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
DstOffX, DstOffY, DstOffZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
);
|
);
|
||||||
break;
|
return;
|
||||||
} // case msSimpleCompare
|
} // case msSimpleCompare
|
||||||
|
|
||||||
case cBlockArea::msMask:
|
case cBlockArea::msMask:
|
||||||
{
|
{
|
||||||
InternalMergeBlocks<MetasValid, MergeCombinatorMask<MetasValid> >(
|
InternalMergeBlocks<MetasValid, MergeCombinatorMask<MetasValid> >(
|
||||||
GetBlockTypes(), a_Src.GetBlockTypes(),
|
GetBlockTypes(), a_Src.GetBlockTypes(),
|
||||||
DstMetas, SrcMetas,
|
DstMetas, SrcMetas,
|
||||||
SizeX, SizeY, SizeZ,
|
SizeX, SizeY, SizeZ,
|
||||||
SrcOffX, SrcOffY, SrcOffZ,
|
SrcOffX, SrcOffY, SrcOffZ,
|
||||||
DstOffX, DstOffY, DstOffZ,
|
DstOffX, DstOffY, DstOffZ,
|
||||||
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
a_Src.GetSizeX(), a_Src.GetSizeY(), a_Src.GetSizeZ(),
|
||||||
m_Size.x, m_Size.y, m_Size.z
|
m_Size.x, m_Size.y, m_Size.z
|
||||||
);
|
);
|
||||||
break;
|
return;
|
||||||
} // case msMask
|
} // case msMask
|
||||||
|
} // switch (a_Strategy)
|
||||||
#ifndef __clang__ // Clang complains about a default case in a switch with all cases covered
|
UNREACHABLE("Unsupported block area merge strategy");
|
||||||
default:
|
}();
|
||||||
{
|
|
||||||
LOGWARNING("Unknown block area merge strategy: %d", a_Strategy);
|
|
||||||
ASSERT(!"Unknown block area merge strategy");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
} // switch (a_Strategy)
|
|
||||||
|
|
||||||
if (HasBlockEntities())
|
if (HasBlockEntities())
|
||||||
{
|
{
|
||||||
|
@ -388,12 +388,7 @@ AString DamageTypeToString(eDamageType a_DamageType)
|
|||||||
case dtSuffocating: return "dtSuffocation";
|
case dtSuffocating: return "dtSuffocation";
|
||||||
case dtExplosion: return "dtExplosion";
|
case dtExplosion: return "dtExplosion";
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported damage type");
|
||||||
// Unknown damage type:
|
|
||||||
ASSERT(!"Unknown DamageType");
|
|
||||||
#ifndef __clang__
|
|
||||||
return Printf("dtUnknown_%d", static_cast<int>(a_DamageType));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,10 +92,7 @@ public:
|
|||||||
return 0x0;
|
return 0x0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
||||||
|
@ -82,10 +82,7 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) override
|
virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) override
|
||||||
|
@ -60,10 +60,7 @@ public:
|
|||||||
return 0x2;
|
return 0x2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static eBlockFace MetaDataToDirection(NIBBLETYPE a_MetaData)
|
static eBlockFace MetaDataToDirection(NIBBLETYPE a_MetaData)
|
||||||
|
@ -65,10 +65,7 @@ public:
|
|||||||
case BLOCK_FACE_YM: return 0x0;
|
case BLOCK_FACE_YM: return 0x0;
|
||||||
case BLOCK_FACE_NONE: return 0x6;
|
case BLOCK_FACE_NONE: return 0x6;
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
||||||
|
@ -63,10 +63,7 @@ public:
|
|||||||
return a_QuartzMeta; // No idea, give a special meta (all sides the same)
|
return a_QuartzMeta; // No idea, give a special meta (all sides the same)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) override
|
virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) override
|
||||||
|
@ -64,10 +64,7 @@ public:
|
|||||||
return a_Meta | 0xC; // No idea, give a special meta
|
return a_Meta | 0xC; // No idea, give a special meta
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
@ -83,10 +83,7 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
inline static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_Meta)
|
||||||
|
@ -45,10 +45,7 @@ public:
|
|||||||
return 0x0;
|
return 0x0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static eBlockFace MetadataToDirection(NIBBLETYPE a_Meta)
|
inline static eBlockFace MetadataToDirection(NIBBLETYPE a_Meta)
|
||||||
|
@ -277,8 +277,7 @@ inline const char * ClickActionToString(int a_ClickAction)
|
|||||||
|
|
||||||
case caUnknown: return "caUnknown";
|
case caUnknown: return "caUnknown";
|
||||||
}
|
}
|
||||||
ASSERT(!"Unknown click action");
|
UNREACHABLE("Unknown click action");
|
||||||
return "caUnknown";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -299,12 +298,9 @@ inline eBlockFace MirrorBlockFaceY(eBlockFace a_BlockFace)
|
|||||||
case BLOCK_FACE_YP:
|
case BLOCK_FACE_YP:
|
||||||
{
|
{
|
||||||
return a_BlockFace;
|
return a_BlockFace;
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return a_BlockFace;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -327,10 +323,7 @@ inline eBlockFace RotateBlockFaceCCW(eBlockFace a_BlockFace)
|
|||||||
return a_BlockFace;
|
return a_BlockFace;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return a_BlockFace;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -350,12 +343,9 @@ inline eBlockFace RotateBlockFaceCW(eBlockFace a_BlockFace)
|
|||||||
case BLOCK_FACE_YP:
|
case BLOCK_FACE_YP:
|
||||||
{
|
{
|
||||||
return a_BlockFace;
|
return a_BlockFace;
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return a_BlockFace;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -374,10 +364,7 @@ inline eBlockFace ReverseBlockFace(eBlockFace a_BlockFace)
|
|||||||
case BLOCK_FACE_ZM: return BLOCK_FACE_ZP;
|
case BLOCK_FACE_ZM: return BLOCK_FACE_ZP;
|
||||||
case BLOCK_FACE_NONE: return a_BlockFace;
|
case BLOCK_FACE_NONE: return a_BlockFace;
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported block face");
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return a_BlockFace;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -397,10 +384,7 @@ inline AString BlockFaceToString(eBlockFace a_BlockFace)
|
|||||||
case BLOCK_FACE_ZP: return "BLOCK_FACE_ZP";
|
case BLOCK_FACE_ZP: return "BLOCK_FACE_ZP";
|
||||||
case BLOCK_FACE_NONE: return "BLOCK_FACE_NONE";
|
case BLOCK_FACE_NONE: return "BLOCK_FACE_NONE";
|
||||||
}
|
}
|
||||||
// clang optimisises this line away then warns that it has done so.
|
UNREACHABLE("Unsupported block face");
|
||||||
#if !defined(__clang__)
|
|
||||||
return Printf("Unknown BLOCK_FACE: %d", a_BlockFace);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,10 +66,7 @@ bool cArrowEntity::CanPickup(const cPlayer & a_Player) const
|
|||||||
case psInSurvivalOrCreative: return (a_Player.IsGameModeSurvival() || a_Player.IsGameModeCreative());
|
case psInSurvivalOrCreative: return (a_Player.IsGameModeSurvival() || a_Player.IsGameModeCreative());
|
||||||
case psInCreative: return a_Player.IsGameModeCreative();
|
case psInCreative: return a_Player.IsGameModeCreative();
|
||||||
}
|
}
|
||||||
ASSERT(!"Unhandled pickup state");
|
UNREACHABLE("Unsupported arrow pickup state");
|
||||||
#ifndef __clang__
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,10 +207,7 @@ AString cBoat::MaterialToString(eMaterial a_Material)
|
|||||||
case bmAcacia: return "acacia";
|
case bmAcacia: return "acacia";
|
||||||
case bmDarkOak: return "dark_oak";
|
case bmDarkOak: return "dark_oak";
|
||||||
}
|
}
|
||||||
ASSERT(!"Unhandled boat material");
|
UNREACHABLE("Unsupported boat material");
|
||||||
#ifndef __clang__
|
|
||||||
return "oak";
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -264,9 +261,7 @@ cItem cBoat::MaterialToItem(eMaterial a_Material)
|
|||||||
case bmAcacia: return cItem(E_ITEM_ACACIA_BOAT);
|
case bmAcacia: return cItem(E_ITEM_ACACIA_BOAT);
|
||||||
case bmDarkOak: return cItem(E_ITEM_DARK_OAK_BOAT);
|
case bmDarkOak: return cItem(E_ITEM_DARK_OAK_BOAT);
|
||||||
}
|
}
|
||||||
#ifndef __clang__
|
UNREACHABLE("Unsupported boat material");
|
||||||
return cItem(E_ITEM_BOAT);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -640,10 +640,7 @@ bool cEntity::ArmorCoversAgainst(eDamageType a_DamageType)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ASSERT(!"Invalid damage type!");
|
UNREACHABLE("Unsupported damage type");
|
||||||
#ifndef __clang__
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -217,11 +217,7 @@ std::unique_ptr<cEntityEffect> cEntityEffect::CreateEntityEffect(cEntityEffect::
|
|||||||
case cEntityEffect::effWeakness: return cpp14::make_unique<cEntityEffectWeakness >(a_Duration, a_Intensity, a_DistanceModifier);
|
case cEntityEffect::effWeakness: return cpp14::make_unique<cEntityEffectWeakness >(a_Duration, a_Intensity, a_DistanceModifier);
|
||||||
case cEntityEffect::effWither: return cpp14::make_unique<cEntityEffectWither >(a_Duration, a_Intensity, a_DistanceModifier);
|
case cEntityEffect::effWither: return cpp14::make_unique<cEntityEffectWither >(a_Duration, a_Intensity, a_DistanceModifier);
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported entity effect");
|
||||||
ASSERT(!"Unhandled entity effect type!");
|
|
||||||
#ifndef __clang__
|
|
||||||
return {};
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,40 +60,34 @@ protected:
|
|||||||
/** Converts protocol hanging item facing to eBlockFace values */
|
/** Converts protocol hanging item facing to eBlockFace values */
|
||||||
inline static eBlockFace ProtocolFaceToBlockFace(Byte a_ProtocolFace)
|
inline static eBlockFace ProtocolFaceToBlockFace(Byte a_ProtocolFace)
|
||||||
{
|
{
|
||||||
eBlockFace Dir;
|
|
||||||
|
|
||||||
// The client uses different values for item frame directions and block faces. Our constants are for the block faces, so we convert them here to item frame faces
|
// The client uses different values for item frame directions and block faces. Our constants are for the block faces, so we convert them here to item frame faces
|
||||||
switch (a_ProtocolFace)
|
switch (a_ProtocolFace)
|
||||||
{
|
{
|
||||||
case 0: Dir = BLOCK_FACE_ZP; break;
|
case 0: return BLOCK_FACE_ZP;
|
||||||
case 2: Dir = BLOCK_FACE_ZM; break;
|
case 2: return BLOCK_FACE_ZM;
|
||||||
case 1: Dir = BLOCK_FACE_XM; break;
|
case 1: return BLOCK_FACE_XM;
|
||||||
case 3: Dir = BLOCK_FACE_XP; break;
|
case 3: return BLOCK_FACE_XP;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
LOGINFO("Invalid facing (%d) in a cHangingEntity, adjusting to BLOCK_FACE_XP.", a_ProtocolFace);
|
LOGINFO("Invalid facing (%d) in a cHangingEntity, adjusting to BLOCK_FACE_XP.", a_ProtocolFace);
|
||||||
ASSERT(!"Tried to convert a bad facing!");
|
ASSERT(!"Tried to convert a bad facing!");
|
||||||
|
|
||||||
Dir = cHangingEntity::ProtocolFaceToBlockFace(3);
|
return cHangingEntity::ProtocolFaceToBlockFace(3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Dir;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Converts eBlockFace values to protocol hanging item faces */
|
/** Converts eBlockFace values to protocol hanging item faces */
|
||||||
inline static Byte BlockFaceToProtocolFace(eBlockFace a_BlockFace)
|
inline static Byte BlockFaceToProtocolFace(eBlockFace a_BlockFace)
|
||||||
{
|
{
|
||||||
Byte Dir;
|
|
||||||
|
|
||||||
// The client uses different values for item frame directions and block faces. Our constants are for the block faces, so we convert them here to item frame faces
|
// The client uses different values for item frame directions and block faces. Our constants are for the block faces, so we convert them here to item frame faces
|
||||||
switch (a_BlockFace)
|
switch (a_BlockFace)
|
||||||
{
|
{
|
||||||
case BLOCK_FACE_ZP: Dir = 0; break;
|
case BLOCK_FACE_ZP: return 0;
|
||||||
case BLOCK_FACE_ZM: Dir = 2; break;
|
case BLOCK_FACE_ZM: return 2;
|
||||||
case BLOCK_FACE_XM: Dir = 1; break;
|
case BLOCK_FACE_XM: return 1;
|
||||||
case BLOCK_FACE_XP: Dir = 3; break;
|
case BLOCK_FACE_XP: return 3;
|
||||||
case BLOCK_FACE_YP:
|
case BLOCK_FACE_YP:
|
||||||
case BLOCK_FACE_YM:
|
case BLOCK_FACE_YM:
|
||||||
case BLOCK_FACE_NONE:
|
case BLOCK_FACE_NONE:
|
||||||
@ -102,19 +96,10 @@ protected:
|
|||||||
// LOGINFO("Invalid facing (%d) in a cHangingEntity, adjusting to BLOCK_FACE_XP.", a_BlockFace);
|
// LOGINFO("Invalid facing (%d) in a cHangingEntity, adjusting to BLOCK_FACE_XP.", a_BlockFace);
|
||||||
// ASSERT(!"Tried to convert a bad facing!");
|
// ASSERT(!"Tried to convert a bad facing!");
|
||||||
|
|
||||||
Dir = cHangingEntity::BlockFaceToProtocolFace(BLOCK_FACE_XP);
|
return cHangingEntity::BlockFaceToProtocolFace(BLOCK_FACE_XP);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
ASSERT(!"Unknown BLOCK_FACE");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported block face");
|
||||||
return Dir;
|
|
||||||
}
|
}
|
||||||
}; // tolua_export
|
}; // tolua_export
|
||||||
|
|
||||||
|
@ -1060,36 +1060,31 @@ void cPlayer::KilledBy(TakeDamageInfo & a_TDI)
|
|||||||
|
|
||||||
if ((a_TDI.Attacker == nullptr) && m_World->ShouldBroadcastDeathMessages())
|
if ((a_TDI.Attacker == nullptr) && m_World->ShouldBroadcastDeathMessages())
|
||||||
{
|
{
|
||||||
AString DamageText;
|
const AString DamageText = [&]
|
||||||
switch (a_TDI.DamageType)
|
|
||||||
{
|
|
||||||
case dtRangedAttack: DamageText = "was shot"; break;
|
|
||||||
case dtLightning: DamageText = "was plasmified by lightining"; break;
|
|
||||||
case dtFalling: DamageText = GetRandomProvider().RandBool() ? "fell to death" : "hit the ground too hard"; break;
|
|
||||||
case dtDrowning: DamageText = "drowned"; break;
|
|
||||||
case dtSuffocating: DamageText = GetRandomProvider().RandBool() ? "git merge'd into a block" : "fused with a block"; break;
|
|
||||||
case dtStarving: DamageText = "forgot the importance of food"; break;
|
|
||||||
case dtCactusContact: DamageText = "was impaled on a cactus"; break;
|
|
||||||
case dtLavaContact: DamageText = "was melted by lava"; break;
|
|
||||||
case dtPoisoning: DamageText = "died from septicaemia"; break;
|
|
||||||
case dtWithering: DamageText = "is a husk of their former selves"; break;
|
|
||||||
case dtOnFire: DamageText = "forgot to stop, drop, and roll"; break;
|
|
||||||
case dtFireContact: DamageText = "burnt themselves to death"; break;
|
|
||||||
case dtInVoid: DamageText = "somehow fell out of the world"; break;
|
|
||||||
case dtPotionOfHarming: DamageText = "was magicked to death"; break;
|
|
||||||
case dtEnderPearl: DamageText = "misused an ender pearl"; break;
|
|
||||||
case dtAdmin: DamageText = "was administrator'd"; break;
|
|
||||||
case dtExplosion: DamageText = "blew up"; break;
|
|
||||||
case dtAttack: DamageText = "was attacked by thin air"; break;
|
|
||||||
#ifndef __clang__
|
|
||||||
default:
|
|
||||||
{
|
{
|
||||||
ASSERT(!"Unknown damage type");
|
switch (a_TDI.DamageType)
|
||||||
DamageText = "died, somehow; we've no idea how though";
|
{
|
||||||
break;
|
case dtRangedAttack: return "was shot";
|
||||||
}
|
case dtLightning: return "was plasmified by lightining";
|
||||||
#endif // __clang__
|
case dtFalling: return GetRandomProvider().RandBool() ? "fell to death" : "hit the ground too hard";
|
||||||
}
|
case dtDrowning: return "drowned";
|
||||||
|
case dtSuffocating: return GetRandomProvider().RandBool() ? "git merge'd into a block" : "fused with a block";
|
||||||
|
case dtStarving: return "forgot the importance of food";
|
||||||
|
case dtCactusContact: return "was impaled on a cactus";
|
||||||
|
case dtLavaContact: return "was melted by lava";
|
||||||
|
case dtPoisoning: return "died from septicaemia";
|
||||||
|
case dtWithering: return "is a husk of their former selves";
|
||||||
|
case dtOnFire: return "forgot to stop, drop, and roll";
|
||||||
|
case dtFireContact: return "burnt themselves to death";
|
||||||
|
case dtInVoid: return "somehow fell out of the world";
|
||||||
|
case dtPotionOfHarming: return "was magicked to death";
|
||||||
|
case dtEnderPearl: return "misused an ender pearl";
|
||||||
|
case dtAdmin: return "was administrator'd";
|
||||||
|
case dtExplosion: return "blew up";
|
||||||
|
case dtAttack: return "was attacked by thin air";
|
||||||
|
}
|
||||||
|
UNREACHABLE("Unsupported damage type");
|
||||||
|
}();
|
||||||
AString DeathMessage = Printf("%s %s", GetName().c_str(), DamageText.c_str());
|
AString DeathMessage = Printf("%s %s", GetName().c_str(), DamageText.c_str());
|
||||||
PluginManager->CallHookKilled(*this, a_TDI, DeathMessage);
|
PluginManager->CallHookKilled(*this, a_TDI, DeathMessage);
|
||||||
if (DeathMessage != AString(""))
|
if (DeathMessage != AString(""))
|
||||||
|
@ -356,10 +356,7 @@ AString cProjectileEntity::GetMCAClassName(void) const
|
|||||||
case pkFirework: return "Firework";
|
case pkFirework: return "Firework";
|
||||||
case pkFishingFloat: return ""; // Unknown, perhaps MC doesn't save this?
|
case pkFishingFloat: return ""; // Unknown, perhaps MC doesn't save this?
|
||||||
}
|
}
|
||||||
ASSERT(!"Unhandled projectile entity kind!");
|
UNREACHABLE("Unsupported projectile kind");
|
||||||
#ifndef __clang__
|
|
||||||
return "";
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -767,33 +767,30 @@ void cMineShaftCorridor::PlaceChest(cChunkDesc & a_ChunkDesc)
|
|||||||
int BlockZ = a_ChunkDesc.GetChunkZ() * cChunkDef::Width;
|
int BlockZ = a_ChunkDesc.GetChunkZ() * cChunkDef::Width;
|
||||||
int x, z;
|
int x, z;
|
||||||
NIBBLETYPE Meta = 0;
|
NIBBLETYPE Meta = 0;
|
||||||
switch (m_Direction)
|
[&]
|
||||||
{
|
{
|
||||||
case dirXM:
|
switch (m_Direction)
|
||||||
case dirXP:
|
|
||||||
{
|
{
|
||||||
x = m_BoundingBox.p1.x + m_ChestPosition - BlockX;
|
case dirXM:
|
||||||
z = m_BoundingBox.p1.z - BlockZ;
|
case dirXP:
|
||||||
Meta = E_META_CHEST_FACING_ZP;
|
{
|
||||||
break;
|
x = m_BoundingBox.p1.x + m_ChestPosition - BlockX;
|
||||||
}
|
z = m_BoundingBox.p1.z - BlockZ;
|
||||||
|
Meta = E_META_CHEST_FACING_ZP;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
case dirZM:
|
case dirZM:
|
||||||
case dirZP:
|
case dirZP:
|
||||||
{
|
{
|
||||||
x = m_BoundingBox.p1.x - BlockX;
|
x = m_BoundingBox.p1.x - BlockX;
|
||||||
z = m_BoundingBox.p1.z + m_ChestPosition - BlockZ;
|
z = m_BoundingBox.p1.z + m_ChestPosition - BlockZ;
|
||||||
Meta = E_META_CHEST_FACING_XP;
|
Meta = E_META_CHEST_FACING_XP;
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
} // switch (Dir)
|
||||||
default:
|
UNREACHABLE("Unsupported corridor direction");
|
||||||
{
|
}();
|
||||||
ASSERT(!"Unknown direction");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
} // switch (Dir)
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(x >= 0) && (x < cChunkDef::Width) &&
|
(x >= 0) && (x < cChunkDef::Width) &&
|
||||||
|
@ -200,10 +200,7 @@ Vector3i cPiece::cConnector::AddDirection(const Vector3i & a_Pos, eDirection a_D
|
|||||||
case dirYP_XP_ZM: return Vector3i(a_Pos.x, a_Pos.y + 1, a_Pos.z);
|
case dirYP_XP_ZM: return Vector3i(a_Pos.x, a_Pos.y + 1, a_Pos.z);
|
||||||
case dirYP_XP_ZP: return Vector3i(a_Pos.x, a_Pos.y + 1, a_Pos.z);
|
case dirYP_XP_ZP: return Vector3i(a_Pos.x, a_Pos.y + 1, a_Pos.z);
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported connector direction");
|
||||||
ASSERT(!"Unknown connector direction");
|
|
||||||
return a_Pos;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -229,10 +226,7 @@ const char * cPiece::cConnector::DirectionToString(eDirection a_Direction)
|
|||||||
case dirYP_XP_ZM: return "y+x+z-";
|
case dirYP_XP_ZM: return "y+x+z-";
|
||||||
case dirYP_XP_ZP: return "y+x+z+";
|
case dirYP_XP_ZP: return "y+x+z+";
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported connector direction");
|
||||||
ASSERT(!"Unknown connector direction");
|
|
||||||
return "<unknown>";
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -288,10 +282,7 @@ cPiece::cConnector::eDirection cPiece::cConnector::RotateDirection(eDirection a_
|
|||||||
case dirYP_XP_ZM: return dirYP_XM_ZP;
|
case dirYP_XP_ZM: return dirYP_XM_ZP;
|
||||||
case dirYP_XP_ZP: return dirYP_XM_ZM;
|
case dirYP_XP_ZP: return dirYP_XM_ZM;
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported connector direction");
|
||||||
ASSERT(!"Unknown connector direction");
|
|
||||||
return a_Direction;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -318,10 +309,7 @@ cPiece::cConnector::eDirection cPiece::cConnector::RotateDirectionCCW(eDirection
|
|||||||
case dirYP_XP_ZM: return dirYP_XM_ZM;
|
case dirYP_XP_ZM: return dirYP_XM_ZM;
|
||||||
case dirYP_XP_ZP: return dirYP_XP_ZM;
|
case dirYP_XP_ZP: return dirYP_XP_ZM;
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported connector direction");
|
||||||
ASSERT(!"Unknown connector direction");
|
|
||||||
return a_Direction;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -348,10 +336,7 @@ cPiece::cConnector::eDirection cPiece::cConnector::RotateDirectionCW(eDirection
|
|||||||
case dirYP_XP_ZM: return dirYP_XP_ZP;
|
case dirYP_XP_ZM: return dirYP_XP_ZP;
|
||||||
case dirYP_XP_ZP: return dirYP_XM_ZP;
|
case dirYP_XP_ZP: return dirYP_XM_ZP;
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported connector direction");
|
||||||
ASSERT(!"Unknown connector direction");
|
|
||||||
return a_Direction;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -274,6 +274,7 @@ int cStructGenTrees::GetNumTrees(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported biome");
|
||||||
};
|
};
|
||||||
|
|
||||||
int NumTrees = 0;
|
int NumTrees = 0;
|
||||||
|
@ -352,6 +352,9 @@ template class SizeChecker<UInt8, 1>;
|
|||||||
#define assert_test(x) ( !!(x) || (assert(!#x), exit(1), 0))
|
#define assert_test(x) ( !!(x) || (assert(!#x), exit(1), 0))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Use to mark code that should be impossible to reach. */
|
||||||
|
#define UNREACHABLE(x) do { FLOGERROR("Hit unreachable code: {0}, file {1}, line {2}", #x, __FILE__, __LINE__); PrintStackTrace(); std::terminate(); } while (false)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -404,10 +404,7 @@ bool cNameValueParser::Finish(void)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ASSERT(!"Unhandled parser state!");
|
UNREACHABLE("Unsupported name value parser state");
|
||||||
#ifndef __clang__
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ public:
|
|||||||
case dlaBreakBlock: return 1;
|
case dlaBreakBlock: return 1;
|
||||||
case dlaBreakBlockInstant: return 0;
|
case dlaBreakBlockInstant: return 0;
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported durability loss action");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,5 +75,6 @@ public:
|
|||||||
case dlaBreakBlock: return 0;
|
case dlaBreakBlock: return 0;
|
||||||
case dlaBreakBlockInstant: return 0;
|
case dlaBreakBlockInstant: return 0;
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported durability loss action");
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
@ -26,6 +26,7 @@ public:
|
|||||||
case dlaBreakBlock: return 1;
|
case dlaBreakBlock: return 1;
|
||||||
case dlaBreakBlockInstant: return 0;
|
case dlaBreakBlockInstant: return 0;
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported durability loss action");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ public:
|
|||||||
case dlaBreakBlock: return 0;
|
case dlaBreakBlock: return 0;
|
||||||
case dlaBreakBlockInstant: return 1;
|
case dlaBreakBlockInstant: return 1;
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported durability loss action");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ public:
|
|||||||
case dlaBreakBlock: return 1;
|
case dlaBreakBlock: return 1;
|
||||||
case dlaBreakBlockInstant: return 0;
|
case dlaBreakBlockInstant: return 0;
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported durability loss action");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ public:
|
|||||||
case dlaBreakBlock: return 2;
|
case dlaBreakBlock: return 2;
|
||||||
case dlaBreakBlockInstant: return 0;
|
case dlaBreakBlockInstant: return 0;
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported durability loss action");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,10 +48,7 @@ int cMobCensus::GetCapMultiplier(cMonster::eFamily a_MobFamily)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if !defined(__clang__)
|
UNREACHABLE("Unsupported mob family");
|
||||||
ASSERT(!"Unknown mob family");
|
|
||||||
return -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -152,14 +152,8 @@ ePathFinderStatus cPathFinder::GetNextWayPoint(cChunk & a_Chunk, const Vector3d
|
|||||||
return ePathFinderStatus::PATH_FOUND;
|
return ePathFinderStatus::PATH_FOUND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef __clang__
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
return ePathFinderStatus::PATH_FOUND;
|
|
||||||
// Fixes GCC warning: "control reaches end of non-void function".
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported path finder status");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,11 +79,7 @@ UInt32 cProtocol_1_9_0::GetPacketId(eOutgoingPackets a_Packet)
|
|||||||
case sendWindowOpen: return 0x13;
|
case sendWindowOpen: return 0x13;
|
||||||
case sendWindowProperty: return 0x15;
|
case sendWindowProperty: return 0x15;
|
||||||
}
|
}
|
||||||
ASSERT(!"Retrieving packet ID for unknown packet type");
|
UNREACHABLE("Unsupported outgoing packet type");
|
||||||
#ifndef __clang__
|
|
||||||
LOGWARNING("Retrieving packet ID for unknown packet type %d!", a_Packet);
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,13 +30,8 @@ AString cObjective::TypeToString(eType a_Type)
|
|||||||
case otStatBlockMine: return "stat.mineBlock";
|
case otStatBlockMine: return "stat.mineBlock";
|
||||||
case otStatEntityKill: return "stat.killEntity";
|
case otStatEntityKill: return "stat.killEntity";
|
||||||
case otStatEntityKilledBy: return "stat.entityKilledBy";
|
case otStatEntityKilledBy: return "stat.entityKilledBy";
|
||||||
|
|
||||||
// clang optimisises this line away then warns that it has done so.
|
|
||||||
#if !defined(__clang__)
|
|
||||||
default: return "";
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported objective type");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -492,11 +492,7 @@ int cWorld::GetDefaultWeatherInterval(eWeather a_Weather)
|
|||||||
return Random.RandInt(m_MinThunderStormTicks, m_MaxThunderStormTicks);
|
return Random.RandInt(m_MinThunderStormTicks, m_MaxThunderStormTicks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported weather");
|
||||||
#ifndef __clang__
|
|
||||||
ASSERT(!"Unknown weather");
|
|
||||||
return -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -851,19 +847,17 @@ eWeather cWorld::ChooseNewWeather()
|
|||||||
switch (m_Weather)
|
switch (m_Weather)
|
||||||
{
|
{
|
||||||
case eWeather_Sunny:
|
case eWeather_Sunny:
|
||||||
case eWeather_ThunderStorm: return eWeather_Rain;
|
case eWeather_ThunderStorm:
|
||||||
|
{
|
||||||
|
return eWeather_Rain;
|
||||||
|
}
|
||||||
case eWeather_Rain:
|
case eWeather_Rain:
|
||||||
{
|
{
|
||||||
// 1 / 8 chance of turning into a thunderstorm
|
// 1 / 8 chance of turning into a thunderstorm
|
||||||
return GetRandomProvider().RandBool(0.125) ? eWeather_ThunderStorm : eWeather_Sunny;
|
return GetRandomProvider().RandBool(0.125) ? eWeather_ThunderStorm : eWeather_Sunny;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported weather");
|
||||||
#ifndef __clang__
|
|
||||||
ASSERT(!"Unknown weather");
|
|
||||||
return eWeather_Sunny;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,6 +35,35 @@ static const int MAX_LIST_ITEMS = 10000;
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// cNBTParseErrorCategory:
|
// cNBTParseErrorCategory:
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
class cNBTParseErrorCategory final :
|
||||||
|
public std::error_category
|
||||||
|
{
|
||||||
|
cNBTParseErrorCategory() = default;
|
||||||
|
public:
|
||||||
|
/** Category name */
|
||||||
|
virtual const char * name() const NOEXCEPT override
|
||||||
|
{
|
||||||
|
return "NBT parse error";
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Maps a parse error code to an error message */
|
||||||
|
virtual AString message(int a_Condition) const override;
|
||||||
|
|
||||||
|
/** Returns the canonical error category instance. */
|
||||||
|
static const cNBTParseErrorCategory & Get() NOEXCEPT
|
||||||
|
{
|
||||||
|
static cNBTParseErrorCategory Category;
|
||||||
|
return Category;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AString cNBTParseErrorCategory::message(int a_Condition) const
|
AString cNBTParseErrorCategory::message(int a_Condition) const
|
||||||
{
|
{
|
||||||
switch (static_cast<eNBTParseError>(a_Condition))
|
switch (static_cast<eNBTParseError>(a_Condition))
|
||||||
@ -91,22 +120,19 @@ AString cNBTParseErrorCategory::message(int a_Condition) const
|
|||||||
{
|
{
|
||||||
return "Unknown tag";
|
return "Unknown tag";
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __clang__
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wcovered-switch-default"
|
|
||||||
#pragma clang diagnostic ignored "-Wunreachable-code"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
return "<unrecognized error>";
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __clang__
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported nbt parse error");
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace (anonymous)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::error_code make_error_code(eNBTParseError a_Err) NOEXCEPT
|
||||||
|
{
|
||||||
|
return { static_cast<int>(a_Err), cNBTParseErrorCategory::Get() };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -337,14 +363,12 @@ eNBTParseError cParsedNBT::ReadTag(void)
|
|||||||
return eNBTParseError::npSuccess;
|
return eNBTParseError::npSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(__clang__)
|
|
||||||
default:
|
|
||||||
#endif
|
|
||||||
case TAG_Min:
|
case TAG_Min:
|
||||||
{
|
{
|
||||||
return eNBTParseError::npUnknownTag;
|
return eNBTParseError::npUnknownTag;
|
||||||
}
|
}
|
||||||
} // switch (iType)
|
} // switch (iType)
|
||||||
|
UNREACHABLE("Unsupported nbt tag type");
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef CASE_SIMPLE_TAG
|
#undef CASE_SIMPLE_TAG
|
||||||
|
@ -125,41 +125,8 @@ enum class eNBTParseError
|
|||||||
npUnknownTag,
|
npUnknownTag,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class cNBTParseErrorCategory final:
|
|
||||||
public std::error_category
|
|
||||||
{
|
|
||||||
cNBTParseErrorCategory() = default;
|
|
||||||
public:
|
|
||||||
/** Category name */
|
|
||||||
virtual const char * name() const NOEXCEPT override
|
|
||||||
{
|
|
||||||
return "NBT parse error";
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Maps a parse error code to an error message */
|
|
||||||
virtual AString message(int a_Condition) const override;
|
|
||||||
|
|
||||||
/** Returns the canonical error category instance. */
|
|
||||||
static const cNBTParseErrorCategory & Get()
|
|
||||||
{
|
|
||||||
static cNBTParseErrorCategory Category;
|
|
||||||
return Category;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// The following is required to make an error_code constructible from an eNBTParseError
|
// The following is required to make an error_code constructible from an eNBTParseError
|
||||||
inline std::error_code make_error_code(eNBTParseError a_Err) NOEXCEPT
|
std::error_code make_error_code(eNBTParseError a_Err) NOEXCEPT;
|
||||||
{
|
|
||||||
return { static_cast<int>(a_Err), cNBTParseErrorCategory::Get() };
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
@ -145,10 +145,8 @@ void cSslConfig::SetAuthMode(const eSslAuthMode a_AuthMode)
|
|||||||
case eSslAuthMode::Optional: return MBEDTLS_SSL_VERIFY_OPTIONAL;
|
case eSslAuthMode::Optional: return MBEDTLS_SSL_VERIFY_OPTIONAL;
|
||||||
case eSslAuthMode::Required: return MBEDTLS_SSL_VERIFY_REQUIRED;
|
case eSslAuthMode::Required: return MBEDTLS_SSL_VERIFY_REQUIRED;
|
||||||
case eSslAuthMode::Unset: return MBEDTLS_SSL_VERIFY_UNSET;
|
case eSslAuthMode::Unset: return MBEDTLS_SSL_VERIFY_UNSET;
|
||||||
#ifndef __clang__
|
|
||||||
default: return MBEDTLS_SSL_VERIFY_OPTIONAL;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
UNREACHABLE("Unsupported SSL auth mode");
|
||||||
}();
|
}();
|
||||||
|
|
||||||
mbedtls_ssl_conf_authmode(&m_Config, Mode);
|
mbedtls_ssl_conf_authmode(&m_Config, Mode);
|
||||||
|
@ -15,6 +15,8 @@ set (HTTP_SRCS
|
|||||||
${CMAKE_SOURCE_DIR}/src/HTTP/TransferEncodingParser.cpp
|
${CMAKE_SOURCE_DIR}/src/HTTP/TransferEncodingParser.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/HTTP/UrlClient.cpp
|
${CMAKE_SOURCE_DIR}/src/HTTP/UrlClient.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/HTTP/UrlParser.cpp
|
${CMAKE_SOURCE_DIR}/src/HTTP/UrlParser.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/WinStackWalker.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/StringUtils.cpp
|
${CMAKE_SOURCE_DIR}/src/StringUtils.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -25,6 +27,8 @@ set (HTTP_HDRS
|
|||||||
${CMAKE_SOURCE_DIR}/src/HTTP/TransferEncodingParser.h
|
${CMAKE_SOURCE_DIR}/src/HTTP/TransferEncodingParser.h
|
||||||
${CMAKE_SOURCE_DIR}/src/HTTP/UrlClient.h
|
${CMAKE_SOURCE_DIR}/src/HTTP/UrlClient.h
|
||||||
${CMAKE_SOURCE_DIR}/src/HTTP/UrlParser.h
|
${CMAKE_SOURCE_DIR}/src/HTTP/UrlParser.h
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.h
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/WinStackWalker.h
|
||||||
${CMAKE_SOURCE_DIR}/src/StringUtils.h
|
${CMAKE_SOURCE_DIR}/src/StringUtils.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,7 +18,9 @@ set (Network_SRCS
|
|||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkLookup.cpp
|
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkLookup.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkSingleton.cpp
|
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkSingleton.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/ServerHandleImpl.cpp
|
${CMAKE_SOURCE_DIR}/src/OSSupport/ServerHandleImpl.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/TCPLinkImpl.cpp
|
${CMAKE_SOURCE_DIR}/src/OSSupport/TCPLinkImpl.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/WinStackWalker.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CtrDrbgContext.cpp
|
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CtrDrbgContext.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CryptoKey.cpp
|
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CryptoKey.cpp
|
||||||
${CMAKE_SOURCE_DIR}/src/mbedTLS++/EntropyContext.cpp
|
${CMAKE_SOURCE_DIR}/src/mbedTLS++/EntropyContext.cpp
|
||||||
@ -39,8 +41,10 @@ set (Network_HDRS
|
|||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkLookup.h
|
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkLookup.h
|
||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkSingleton.h
|
${CMAKE_SOURCE_DIR}/src/OSSupport/NetworkSingleton.h
|
||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/ServerHandleImpl.h
|
${CMAKE_SOURCE_DIR}/src/OSSupport/ServerHandleImpl.h
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.h
|
||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/TCPLinkImpl.h
|
${CMAKE_SOURCE_DIR}/src/OSSupport/TCPLinkImpl.h
|
||||||
${CMAKE_SOURCE_DIR}/src/OSSupport/Queue.h
|
${CMAKE_SOURCE_DIR}/src/OSSupport/Queue.h
|
||||||
|
${CMAKE_SOURCE_DIR}/src/OSSupport/WinStackWalker.h
|
||||||
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CtrDrbgContext.h
|
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CtrDrbgContext.h
|
||||||
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CryptoKey.h
|
${CMAKE_SOURCE_DIR}/src/mbedTLS++/CryptoKey.h
|
||||||
${CMAKE_SOURCE_DIR}/src/mbedTLS++/EntropyContext.h
|
${CMAKE_SOURCE_DIR}/src/mbedTLS++/EntropyContext.h
|
||||||
|
Loading…
x
Reference in New Issue
Block a user