Index: src/libchengine/FeedbackErrorRule.cpp
===================================================================
diff -u -r3401d5079f33b29a7783b65bfad5f34d89a33ba5 -redf1ada01d4339a99fa80c4da7edbb5823adde0e
--- src/libchengine/FeedbackErrorRule.cpp	(.../FeedbackErrorRule.cpp)	(revision 3401d5079f33b29a7783b65bfad5f34d89a33ba5)
+++ src/libchengine/FeedbackErrorRule.cpp	(.../FeedbackErrorRule.cpp)	(revision edf1ada01d4339a99fa80c4da7edbb5823adde0e)
@@ -3,6 +3,8 @@
 #include "../libstring/TString.h"
 #include "../libstring/TStringArray.h"
 #include "../libchcore/TPath.h"
+#include "EFileErrorMapper.h"
+#include "EFeedbackResultMapper.h"
 
 using namespace serializer;
 using namespace string;
@@ -214,43 +216,36 @@
 		SetConfigValue(rConfig, _T("ExcludeMask.MaskList.Mask"), m_spaExcludeMask.Get().ToSerializedStringArray());
 
 		SetConfigValue(rConfig, _T("ErrorType.Use"), m_bUseErrorType.Get());
-		SetConfigValue(rConfig, _T("ErrorType.Value"), m_eErrorType.Get());
+		SetConfigValue(rConfig, _T("ErrorType.Value"), MapEnum(m_eErrorType.Get()));
 
 		SetConfigValue(rConfig, _T("SystemErrorNo.Use"), m_bUseSystemErrorNo.Get());
 		SetConfigValue(rConfig, _T("SystemErrorNo.Value"), m_ulSystemErrorNo.Get());
 
-		SetConfigValue(rConfig, _T("Result"), m_eResult.Get());
+		SetConfigValue(rConfig, _T("Result"), MapEnum(m_eResult.Get()));
 	}
 
 	void FeedbackErrorRule::ReadFromConfig(const TConfig& rConfig)
 	{
-		if(!GetConfigValue(rConfig, _T("IncludeMask.Use"), m_bUseMask.Modify()))
-			m_bUseMask = false;
+		m_bUseMask = GetConfigValueDef(rConfig, _T("IncludeMask.Use"), false);
 
 		TStringArray arrMask;
 		m_spaMask.Modify().Clear();
 		GetConfigValue(rConfig, _T("IncludeMask.MaskList.Mask"), arrMask);
 		m_spaMask.Modify().FromSerializedStringArray(arrMask);
 
-		if(!GetConfigValue(rConfig, _T("ExcludeMask.Use"), m_bUseExcludeMask.Modify()))
-			m_bUseExcludeMask = false;
+		m_bUseExcludeMask = GetConfigValueDef(rConfig, _T("ExcludeMask.Use"), false);
 
 		m_spaExcludeMask.Modify().Clear();
 		GetConfigValue(rConfig, _T("ExcludeMask.MaskList.Mask"), arrMask);
 		m_spaExcludeMask.Modify().FromSerializedStringArray(arrMask);
 
-		if(!GetConfigValue(rConfig, _T("ErrorType.Use"), m_bUseErrorType.Modify()))
-			m_bUseErrorType = false;
-		if(!GetConfigValue(rConfig, _T("ErrorType.Value"), *(int*)m_eErrorType.Modify()))
-			m_eErrorType = EFileError::eDeleteError;
+		m_bUseErrorType = GetConfigValueDef(rConfig, _T("ErrorType.Use"), false);
+		m_eErrorType = UnmapEnum<EFileError>(GetConfigValueDef(rConfig, _T("ErrorType.Value"), TString(L"delete")));
 
-		if(!GetConfigValue(rConfig, _T("SystemErrorNo.Use"), m_bUseSystemErrorNo.Modify()))
-			m_bUseSystemErrorNo = false;
-		if(!GetConfigValue(rConfig, _T("SystemErrorNo.Value"), m_ulSystemErrorNo.Modify()))
-			m_ulSystemErrorNo = 0UL;
+		m_bUseSystemErrorNo = GetConfigValueDef(rConfig, _T("SystemErrorNo.Use"), false);
+		m_ulSystemErrorNo = GetConfigValueDef(rConfig, _T("SystemErrorNo.Value"), (unsigned int)0);
 
-		if(!GetConfigValue(rConfig, _T("Result"), *(int*)m_eResult.Modify()))
-			m_eResult = eResult_Unknown;
+		m_eResult = UnmapEnum<EFeedbackResult>(GetConfigValueDef(rConfig, _T("Result"), TString(L"unknown")));
 	}
 
 	bool FeedbackErrorRule::HaveSameCondition(const FeedbackErrorRule& rSrc) const