author | Michael Krelin <hacker@klever.net> | 2005-03-31 14:16:18 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2005-03-31 14:16:18 (UTC) |
commit | 333ec38b9a3a5a9d0f0fb03a97c004710ef525de (patch) (side-by-side diff) | |
tree | e0a1e5b458ede7ca1b14cd6fb45d1ec648156494 | |
parent | ef14961fe10614eb15c71dd5b0b83f292bd7a5b0 (diff) | |
download | sitecing-333ec38b9a3a5a9d0f0fb03a97c004710ef525de.zip sitecing-333ec38b9a3a5a9d0f0fb03a97c004710ef525de.tar.gz sitecing-333ec38b9a3a5a9d0f0fb03a97c004710ef525de.tar.bz2 |
link_error exception introduced
-rw-r--r-- | include/sitecing/sitecing_exception.h | 29 | ||||
-rw-r--r-- | lib/component_factory.cc | 3 |
2 files changed, 30 insertions, 2 deletions
diff --git a/include/sitecing/sitecing_exception.h b/include/sitecing/sitecing_exception.h index bf475ac..cb5edd9 100644 --- a/include/sitecing/sitecing_exception.h +++ b/include/sitecing/sitecing_exception.h @@ -6,16 +6,44 @@ /** * @file * @brief The site-C-ing specific exception. */ namespace sitecing { /** + * The comonent failed to link. + */ + class link_error : public konforka::exception { + public: + /** + * The component path + */ + string component_path; + + /** + * @param w the message. + * @param cp component path. + */ + link_error(const string& w,const string& cp) + : konforka::exception(NOCODEPOINT,w), component_path(cp) { } + /** + * @param fi the file name where the exception is thrown from. + * @param fu the function name where the exception originates from. + * @param l the line number where the exception originates from. + * @param w the message. + * @param cp component path. + */ + link_error(const string& fi,const string& fu,int l,const string& w,const string& cp) + : konforka::exception(fi,fu,l,w), component_path(cp) { } + ~link_error() throw() { } + }; + + /** * The component failed to compile. */ class compile_error : public konforka::exception { public: /** * The component path */ string component_path; @@ -32,16 +60,17 @@ namespace sitecing { * @param cp component path. */ compile_error(const string &whe,const string& wha,const string& cp) : konforka::exception(whe,wha), component_path(cp) { } /** * @param fi the file name where the exception is thrown from. * @param fu the function name where the exception originates from. * @param l the line number where the exception originates from. + * @param w the message. * @param cp component path. */ compile_error(const string &fi,const string& fu,int l,const string& w,const string& cp) : konforka::exception(fi,fu,l,w), component_path(cp) { } ~compile_error() throw() { } }; /** diff --git a/lib/component_factory.cc b/lib/component_factory.cc index a5ced6b..2a2eefe 100644 --- a/lib/component_factory.cc +++ b/lib/component_factory.cc @@ -167,18 +167,17 @@ namespace sitecing { string aso=root_so+*i+".so"; make(aso); args.push_back(aso); } args.push_back("-o"); args.push_back(dp); // TODO: "g++" configurable int rv = execute("g++",args,stdO,stdE); if(! (WIFEXITED(rv) && !WEXITSTATUS(rv)) ) - // TODO:TODO: linker_error - throw compile_error(CODEPOINT,"failed to link component",noro); + throw link_error(CODEPOINT,"failed to link component",noro); return; }catch(utility_no_prefix& unp) { throw konforka::exception(CODEPOINT,"component is outside of component root"); }catch(utility_no_suffix& uns) { } try { string noro = strip_prefix(dp,root_intermediate); // compiler targets for(int cct=0;cct<sizeof(cc_targets)/sizeof(*cc_targets);cct++) { |