From 14e3d5a1a3a7911f479975149d51ff428572ee24 Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Mon, 12 Nov 2012 11:44:14 -0600 Subject: [PATCH] binpac: Add scoping to usages of binpac::Exception classes in generated code. This allows analyzers to define their own types of the same name without mistakingly overshadowing the usages of binpac::Exception and its derived types in the generated parser code. --- tools/binpac/src/pac_case.cc | 11 ++++++----- tools/binpac/src/pac_dataptr.cc | 2 +- tools/binpac/src/pac_expr.cc | 2 +- tools/binpac/src/pac_flow.cc | 2 +- tools/binpac/src/pac_record.cc | 2 +- tools/binpac/src/pac_strtype.cc | 5 +++-- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/tools/binpac/src/pac_case.cc b/tools/binpac/src/pac_case.cc index b809d61b6e..90352a6333 100644 --- a/tools/binpac/src/pac_case.cc +++ b/tools/binpac/src/pac_case.cc @@ -168,7 +168,7 @@ void CaseType::DoGenParseCode(Output* out_cc, Env* env, { out_cc->println("default:"); out_cc->inc_indent(); - out_cc->println("throw ExceptionInvalidCaseIndex(\"%s\", %s);", + out_cc->println("throw binpac::ExceptionInvalidCaseIndex(\"%s\", %s);", decl_id()->Name(), env->RValue(index_var_)); out_cc->println("break;"); out_cc->dec_indent(); @@ -302,10 +302,11 @@ void CaseField::GenPubDecls(Output* out_h, Env* env) out_h->println("default:"); out_h->inc_indent(); - out_h->println("throw ExceptionInvalidCase(\"%s\", %s, \"%s\");", - id_->LocName(), - env->RValue(index_var_), - OrigExprList(index_).c_str()); + out_h->println( + "throw binpac::ExceptionInvalidCase(\"%s\", %s, \"%s\");", + id_->LocName(), + env->RValue(index_var_), + OrigExprList(index_).c_str()); out_h->println("break;"); out_h->dec_indent(); diff --git a/tools/binpac/src/pac_dataptr.cc b/tools/binpac/src/pac_dataptr.cc index beac6997cb..44c497efea 100644 --- a/tools/binpac/src/pac_dataptr.cc +++ b/tools/binpac/src/pac_dataptr.cc @@ -52,7 +52,7 @@ void DataPtr::GenBoundaryCheck(Output* out_cc, Env* env, char* data_offset = AbsOffsetExpr(env, begin_of_data); out_cc->println("// Handle out-of-bound condition"); - out_cc->println("throw ExceptionOutOfBound(\"%s\",", data_name); + out_cc->println("throw binpac::ExceptionOutOfBound(\"%s\",", data_name); out_cc->println(" (%s) + (%s), ", data_offset, data_size); out_cc->println(" (%s) - (%s));", diff --git a/tools/binpac/src/pac_expr.cc b/tools/binpac/src/pac_expr.cc index 2047d2269d..7b25ce5aaa 100644 --- a/tools/binpac/src/pac_expr.cc +++ b/tools/binpac/src/pac_expr.cc @@ -295,7 +295,7 @@ void Expr::GenCaseEval(Output *out_cc, Env *env) } else { - out_cc->println("throw ExceptionInvalidCaseIndex(\"%s\", %s);", + out_cc->println("throw binpac::ExceptionInvalidCaseIndex(\"%s\", %s);", Location(), operand_[0]->EvalExpr(out_cc, env)); } out_cc->println("break;"); diff --git a/tools/binpac/src/pac_flow.cc b/tools/binpac/src/pac_flow.cc index adf574e879..f7710a9c0c 100644 --- a/tools/binpac/src/pac_flow.cc +++ b/tools/binpac/src/pac_flow.cc @@ -226,7 +226,7 @@ void FlowDecl::GenProcessFunc(Output *out_h, Output *out_cc) out_cc->println("}"); out_cc->dec_indent(); - out_cc->println("catch ( Exception const &e )"); + out_cc->println("catch ( binpac::Exception const &e )"); out_cc->inc_indent(); out_cc->println("{"); GenCleanUpCode(out_cc); diff --git a/tools/binpac/src/pac_record.cc b/tools/binpac/src/pac_record.cc index 9875195033..fdfc6a7977 100644 --- a/tools/binpac/src/pac_record.cc +++ b/tools/binpac/src/pac_record.cc @@ -617,7 +617,7 @@ void RecordPaddingField::GenFieldEnd(Output* out_cc, Env* env, const DataPtr& fi field_begin.ptr_expr()); out_cc->inc_indent(); out_cc->println("{"); - out_cc->println("// throw ExceptionInvalidOffset(\"%s\", %s - %s, %s);", + out_cc->println("// throw binpac::ExceptionInvalidOffset(\"%s\", %s - %s, %s);", id_->LocName(), field_begin.ptr_expr(), env->RValue(begin_of_data), diff --git a/tools/binpac/src/pac_strtype.cc b/tools/binpac/src/pac_strtype.cc index 48e1eb5ad0..ebb9df4803 100644 --- a/tools/binpac/src/pac_strtype.cc +++ b/tools/binpac/src/pac_strtype.cc @@ -283,7 +283,8 @@ void StringType::DoGenParseCode(Output* out_cc, Env* env, out_cc->println("// check for negative sizes"); out_cc->println("if ( %s < 0 )", str_size.c_str()); - out_cc->println("throw ExceptionInvalidStringLength(\"%s\", %s);", + out_cc->println( + "throw binpac::ExceptionInvalidStringLength(\"%s\", %s);", Location(), str_size.c_str()); out_cc->println("%s.init(%s, %s);", env->LValue(value_var()), @@ -301,7 +302,7 @@ void StringType::DoGenParseCode(Output* out_cc, Env* env, void StringType::GenStringMismatch(Output* out_cc, Env* env, const DataPtr& data, const char *pattern) { - out_cc->println("throw ExceptionStringMismatch(\"%s\", %s, %s);", + out_cc->println("throw binpac::ExceptionStringMismatch(\"%s\", %s, %s);", Location(), pattern, fmt("string((const char *) (%s), (const char *) %s).c_str()",