From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1QFKaC-0003bT-Iz for garchives@archives.gentoo.org; Thu, 28 Apr 2011 06:20:12 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id DA10B1C035; Thu, 28 Apr 2011 06:19:54 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 988B41C035 for ; Thu, 28 Apr 2011 06:19:54 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 1B6F72AC014 for ; Thu, 28 Apr 2011 06:19:54 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 6147880505 for ; Thu, 28 Apr 2011 06:19:53 +0000 (UTC) From: "Petteri Räty" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Petteri Räty" Message-ID: <059d8f2c5263bd3e82406d2890f063782e7ca76b.betelgeuse@gentoo> Subject: [gentoo-commits] proj/libbash:master commit in: src/, src/builtins/tests/, src/core/ X-VCS-Repository: proj/libbash X-VCS-Files: src/builtins/tests/boolean_tests.cpp src/builtins/tests/echo_tests.cpp src/core/interpreter.h src/cppbash_builtin.cpp src/cppbash_builtin.h X-VCS-Directories: src/ src/builtins/tests/ src/core/ X-VCS-Committer: betelgeuse X-VCS-Committer-Name: Petteri Räty X-VCS-Revision: 059d8f2c5263bd3e82406d2890f063782e7ca76b Date: Thu, 28 Apr 2011 06:19:53 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 9e1e7a2eab5fd6af3475a688b2e8f538 commit: 059d8f2c5263bd3e82406d2890f063782e7ca76b Author: Mu Qiao gentoo org> AuthorDate: Thu Apr 21 11:02:46 2011 +0000 Commit: Petteri R=C3=A4ty gentoo org> CommitDate: Thu Apr 28 02:52:42 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/libbash.git;a= =3Dcommit;h=3D059d8f2c Builtin: add interpreter object as a protected member Many builtins use the internal interpreter class so we add it to the cppbash_builtin class. --- src/builtins/tests/boolean_tests.cpp | 11 ++++++++--- src/builtins/tests/echo_tests.cpp | 8 ++++++-- src/core/interpreter.h | 5 +++-- src/cppbash_builtin.cpp | 2 +- src/cppbash_builtin.h | 19 +++++++++++++------ 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/builtins/tests/boolean_tests.cpp b/src/builtins/tests/bo= olean_tests.cpp index 5ba3d34..4c9616b 100644 --- a/src/builtins/tests/boolean_tests.cpp +++ b/src/builtins/tests/boolean_tests.cpp @@ -21,19 +21,24 @@ /// \brief series of unit tests for echo built in /// #include -#include "../../cppbash_builtin.h" + #include =20 +#include "core/interpreter.h" +#include "cppbash_builtin.h" + using namespace std; =20 TEST(boolean_builtin_test, true) { - int result =3D cppbash_builtin::exec("true", {}, std::cout, std::cerr,= std::cin); + interpreter walker; + int result =3D cppbash_builtin::exec("true", {}, std::cout, std::cerr,= std::cin, walker); ASSERT_EQ(0, result); } =20 TEST(boolean_builtin_test, false) { - int result =3D cppbash_builtin::exec("false", {}, std::cout, std::cerr= , std::cin); + interpreter walker; + int result =3D cppbash_builtin::exec("false", {}, std::cout, std::cerr= , std::cin, walker); ASSERT_EQ(1, result); } diff --git a/src/builtins/tests/echo_tests.cpp b/src/builtins/tests/echo_= tests.cpp index 2a606d4..bee9be5 100644 --- a/src/builtins/tests/echo_tests.cpp +++ b/src/builtins/tests/echo_tests.cpp @@ -22,17 +22,21 @@ /// \author Nathan Eloe /// #include -#include "../../cppbash_builtin.h" #include #include + #include =20 +#include "core/interpreter.h" +#include "cppbash_builtin.h" + using namespace std; =20 static void test_echo(const string& expected, std::initializer_list args) { stringstream test_output; - cppbash_builtin::exec("echo",args,test_output,cerr,cin); + interpreter walker; + cppbash_builtin::exec("echo",args,test_output,cerr,cin,walker); ASSERT_EQ(expected, test_output.str()); } =20 diff --git a/src/core/interpreter.h b/src/core/interpreter.h index f2dfbeb..e471b94 100644 --- a/src/core/interpreter.h +++ b/src/core/interpreter.h @@ -46,7 +46,8 @@ typedef struct libbashWalker_Ctx_struct * plibbashWalke= r; /// \class interpreter /// \brief implementation for bash interpreter /// -class interpreter{ +class interpreter +{ =20 /// \var private::members /// \brief global symbol table for variables @@ -547,7 +548,7 @@ public: int execute_builtin(const std::string& name, const std::vector& args) { - return cppbash_builtin::exec(name, args, *out, *err, *in); + return cppbash_builtin::exec(name, args, *out, *err, *in, *this); } =20 /// \brief perform ${parameter:=E2=88=92word} expansion diff --git a/src/cppbash_builtin.cpp b/src/cppbash_builtin.cpp index 8778173..38a6111 100644 --- a/src/cppbash_builtin.cpp +++ b/src/cppbash_builtin.cpp @@ -26,7 +26,7 @@ #include "builtins/echo_builtin.h" #include "builtins/boolean_builtins.h" =20 -cppbash_builtin::cppbash_builtin(std::ostream &outstream, std::ostream &= errstream, std::istream &instream): _out_stream(&outstream), _err_stream(= &errstream), _inp_stream(&instream) +cppbash_builtin::cppbash_builtin(BUILTIN_ARGS): _out_stream(&out), _err_= stream(&err), _inp_stream(&in), _walker(walker) { } =20 diff --git a/src/cppbash_builtin.h b/src/cppbash_builtin.h index 3bd3c46..e7b68ea 100644 --- a/src/cppbash_builtin.h +++ b/src/cppbash_builtin.h @@ -34,8 +34,9 @@ #include #include =20 -#define STREAM_ARGS std::ostream &out, std::ostream &err, std::istream &= in +#define BUILTIN_ARGS std::ostream &out, std::ostream &err, std::istream = &in, interpreter &walker =20 +class interpreter; /// /// \class cppbash_builtin /// \brief a virtual class to inherit builtin functions from @@ -49,7 +50,7 @@ class cppbash_builtin /// \param errstream where to send standard error. Default: cerr /// \param instream where to get standard input from. Default: stdi= n /// - explicit cppbash_builtin(STREAM_ARGS); + explicit cppbash_builtin(BUILTIN_ARGS); /// prevent copying cppbash_builtin(const cppbash_builtin& ) =3D delete; const cppbash_builtin& operator=3D( const cppbash_builtin& ) =3D del= ete; @@ -77,9 +78,11 @@ class cppbash_builtin /// std::istream& input_buffer() {return *_inp_stream;} =20 - static int exec(const std::string& builtin, const std::vector& args, STREAM_ARGS) + static int exec(const std::string& builtin, + const std::vector& args, + BUILTIN_ARGS) { - boost::scoped_ptr p(builtins()[builtin](out,err,i= n)); + boost::scoped_ptr p(builtins()[builtin](out,err,i= n,walker)); return p->exec(args); } =20 @@ -110,15 +113,19 @@ class cppbash_builtin /// \brief current standard input stream /// std::istream *_inp_stream; + + interpreter& _walker; + /// /// \var builtins /// \brief holds factories for creating instances of child classes /// - typedef std::map> builtins_type; + typedef std::map> builtins_type; static builtins_type& builtins(); + }; =20 #define BUILTIN_CONSTRUCTOR(name) \ - name ## _builtin(STREAM_ARGS) : cppbash_builtin(out, err, in) {} + name ## _builtin(BUILTIN_ARGS) : cppbash_builtin(out, err, in, walker)= {} =20 #endif