aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2023-03-20 14:28:40 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2023-03-20 14:30:48 +0200
commitbd3fdbd5b279504bbb64902f462fb0ad93f29389 (patch)
treef7e87bda3030a5e99f999c1e97dcce14abe5a654
parent387d98b80d9f383c4c7708a42444472cb89dd42b (diff)
Tighten error code accessors to check error type
-rw-r--r--libxsde/xsde/cxx/parser/context.ixx18
-rw-r--r--libxsde/xsde/cxx/serializer/context.ixx24
2 files changed, 23 insertions, 19 deletions
diff --git a/libxsde/xsde/cxx/parser/context.ixx b/libxsde/xsde/cxx/parser/context.ixx
index be99974..4eca363 100644
--- a/libxsde/xsde/cxx/parser/context.ixx
+++ b/libxsde/xsde/cxx/parser/context.ixx
@@ -80,7 +80,7 @@ namespace xsde
inline int context::
app_error () const
{
- return error_code_.app;
+ return error_type_ == error_app ? error_code_.app : 0;
}
inline void context::
@@ -90,25 +90,27 @@ namespace xsde
error_code_.app = e;
}
+ inline context::sys_error_t context::
+ sys_error () const
+ {
+ return error_type_ == error_sys ? error_code_.sys : sys_error::none;
+ }
+
inline void context::
sys_error (sys_error_t e)
{
error_type_ = error_sys;
error_code_.sys = e;
}
-
- inline context::sys_error_t context::
- sys_error () const
- {
- return error_code_.sys;
- }
#endif
#ifdef XSDE_PARSER_VALIDATION
inline context::schema_error_t context::
schema_error () const
{
- return error_code_.schema;
+ return error_type_ == error_schema
+ ? error_code_.schema
+ : schema_error::none;
}
inline void context::
diff --git a/libxsde/xsde/cxx/serializer/context.ixx b/libxsde/xsde/cxx/serializer/context.ixx
index c04cd6c..f881d09 100644
--- a/libxsde/xsde/cxx/serializer/context.ixx
+++ b/libxsde/xsde/cxx/serializer/context.ixx
@@ -108,7 +108,7 @@ namespace xsde
inline int context::
app_error () const
{
- return error_code_.app;
+ return error_type_ == error_app ? error_code_.app : 0;
}
inline void context::
@@ -118,6 +118,12 @@ namespace xsde
error_code_.app = e;
}
+ inline context::sys_error_t context::
+ sys_error () const
+ {
+ return error_type_ == error_sys ? error_code_.sys : sys_error::none;
+ }
+
inline void context::
sys_error (sys_error_t e)
{
@@ -125,10 +131,10 @@ namespace xsde
error_code_.sys = e;
}
- inline context::sys_error_t context::
- sys_error () const
+ inline context::xml_error_t context::
+ xml_error () const
{
- return error_code_.sys;
+ return error_type_ == error_xml ? error_code_.xml : xml_error::none;
}
inline void context::
@@ -137,19 +143,15 @@ namespace xsde
error_type_ = error_xml;
error_code_.xml = e;
}
-
- inline context::xml_error_t context::
- xml_error () const
- {
- return error_code_.xml;
- }
#endif
#ifdef XSDE_SERIALIZER_VALIDATION
inline context::schema_error_t context::
schema_error () const
{
- return error_code_.schema;
+ return error_type_ == error_schema
+ ? error_code_.schema
+ : schema_error::none;
}
inline void context::