* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-04-02 15:50 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-04-02 15:50 UTC (permalink / raw
To: gentoo-commits
commit: d732ef09039f155b824086d43c13b23ff7698ffc
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 1 05:23:49 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Sat Apr 2 00:55:07 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=d732ef09
Add member functions to support variable traversal
Add begin() and end() method to the scope and interpreter class to
allow variable traversal.
---
src/core/interpreter.h | 43 +++++++++++++++++++++++++++++++++++++++++++
src/core/symbols.hpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index 1da370c..ef95caa 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -46,6 +46,49 @@ class interpreter{
scope members;
public:
+ ///
+ /// \brief return the number of variables
+ /// \return the number of variables
+ scope::size_type size()
+ {
+ return members.size();
+ }
+
+ ///
+ /// \brief return an iterator referring to the first variable
+ /// \return iterator referring to the first variable
+ scope::iterator begin()
+ {
+ return members.begin();
+ }
+
+ ///
+ /// \brief return a const iterator referring to the first variable
+ /// \return const iterator referring to the first variable
+ scope::const_iterator begin() const
+ {
+ return members.begin();
+ }
+
+ ///
+ /// \brief return an iterator referring to the next element after the
+ /// last variable
+ /// \return iterator referring to he next element after the last variable
+ scope::iterator end()
+ {
+ return members.end();
+ }
+
+ ///
+ /// \brief return a const iterator referring to the next element after
+ /// the last variable
+ /// \return const iterator referring to he next element after the last
+ /// variable
+ scope::const_iterator end() const
+ {
+ return members.end();
+ }
+
/// \brief parse the text value of a tree to integer
/// \param the target tree
/// \return the parsed value
diff --git a/src/core/symbols.hpp b/src/core/symbols.hpp
index bde05fb..53b699e 100644
--- a/src/core/symbols.hpp
+++ b/src/core/symbols.hpp
@@ -175,6 +175,54 @@ class scope
public:
typedef std::unordered_map<std::string, std::shared_ptr<symbol>>
table_type;
+ typedef table_type::iterator iterator;
+ typedef table_type::const_iterator const_iterator;
+ typedef table_type::size_type size_type;
+ typedef table_type::value_type value_type;
+
+ ///
+ /// \brief return the number of symbols in current scope
+ /// \return the number of symbols
+ size_type size()
+ {
+ return members.size();
+ }
+
+ ///
+ /// \brief return an iterator referring to the first symbol
+ /// \return iterator referring to the first symbol
+ iterator begin()
+ {
+ return members.begin();
+ }
+
+ ///
+ /// \brief return a const iterator referring to the first symbol
+ /// \return const iterator referring to the first symbol
+ const_iterator begin() const
+ {
+ return members.begin();
+ }
+
+ ///
+ /// \brief return an iterator referring to the next element after
+ /// the last symbol in current scope
+ /// \return iterator referring to he next element after the last
+ /// symbol in current scope
+ iterator end()
+ {
+ return members.end();
+ }
+
+ ///
+ /// \brief return a const iterator referring to the next element
+ /// after the last symbol in current scope
+ /// \return const iterator referring to he next element after the
+ /// last symbol in current scope
+ const_iterator end() const
+ {
+ return members.end();
+ }
/// \brief define a new symbol
/// \param the new symbol
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-04-06 7:43 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-04-06 7:43 UTC (permalink / raw
To: gentoo-commits
commit: 37b99d0aabacec4ee882b346dfcefb1abb183f57
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 5 11:33:34 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Tue Apr 5 11:33:34 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=37b99d0a
Add comment for do_default_expansion
---
src/core/interpreter.h | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index 340828a..c0cc12d 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -415,6 +415,10 @@ public:
members.define(target);
}
+ /// \brief perform ${parameter:−word} expansion
+ /// \param the name of the parameter
+ /// \param the value of the word
+ /// \return the expansion result
const std::string do_default_expansion(const std::string& name,
const std::string& value)
{
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-04-08 11:12 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-04-08 11:12 UTC (permalink / raw
To: gentoo-commits
commit: 2b259cdcba5249a41c741c7b22b480becb4e1b0d
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 8 03:16:45 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Fri Apr 8 11:01:32 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=2b259cdc
Use unique_ptr instead of shared_ptr in parser_builder
We don't want to share the ownership of the AST, so use unique_ptr
instead.
---
src/core/parser_builder.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/core/parser_builder.h b/src/core/parser_builder.h
index 654f0eb..e6833af 100644
--- a/src/core/parser_builder.h
+++ b/src/core/parser_builder.h
@@ -46,7 +46,7 @@ class parser_builder
libbashLexer_Ctx_struct* lxr;
pANTLR3_COMMON_TOKEN_STREAM tstream;
libbashParser_Ctx_struct* psr;
- std::shared_ptr<libbashParser_start_return_struct> langAST;
+ std::unique_ptr<libbashParser_start_return_struct> langAST;
pANTLR3_COMMON_TREE_NODE_STREAM nodes;
void init_parser();
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-04-20 14:04 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-04-20 14:04 UTC (permalink / raw
To: gentoo-commits
commit: d508b94013714beb82a73b854d1a082754b7e999
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 14 05:16:57 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Wed Apr 20 12:48:43 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=d508b940
Core: add const modifier to some methods
These methods should have been declared as const methods. After
having the hash table stored inside the interpreter class, it's
easier to do it.
---
src/core/interpreter.cpp | 6 +++---
src/core/interpreter.h | 30 +++++++++++++++---------------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/src/core/interpreter.cpp b/src/core/interpreter.cpp
index c723173..d9004e8 100644
--- a/src/core/interpreter.cpp
+++ b/src/core/interpreter.cpp
@@ -28,7 +28,7 @@
void interpreter::get_all_elements_joined(const std::string& name,
const std::string& delim,
- std::string& result)
+ std::string& result) const
{
std::vector<std::string> source;
@@ -45,13 +45,13 @@ void interpreter::get_all_elements_joined(const std::string& name,
}
void interpreter::get_all_elements(const std::string& name,
- std::string& result)
+ std::string& result) const
{
get_all_elements_joined(name, " ", result);
}
void interpreter::get_all_elements_IFS_joined(const std::string& name,
- std::string& result)
+ std::string& result) const
{
get_all_elements_joined(name,
resolve<std::string>("IFS").substr(0, 1),
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index e61748a..6385e6e 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -52,7 +52,7 @@ class interpreter{
/// \param[in,out] a value/result argument referring to offset
/// \param[in] the original string
/// \return whether the real offset is in legal range
- bool get_real_offset(int& offset, const std::string& str)
+ bool get_real_offset(int& offset, const std::string& str) const
{
offset = (offset >= 0? offset : str.size() + offset);
return !(offset < 0 || offset >= static_cast<int>(str.size()));
@@ -60,7 +60,7 @@ class interpreter{
void get_all_elements_joined(const std::string& name,
const std::string& delim,
- std::string& result);
+ std::string& result) const;
public:
@@ -72,7 +72,7 @@ public:
///
/// \brief return the number of variables
/// \return the number of variables
- scope::size_type size()
+ scope::size_type size() const
{
return members.size();
}
@@ -378,7 +378,7 @@ public:
/// \return the value of the variable, call default constructor if
/// it's undefined
template <typename T>
- T resolve(const std::string& name, const unsigned index=0)
+ T resolve(const std::string& name, const unsigned index=0) const
{
auto i = members.find(name);
if(i == members.end())
@@ -390,7 +390,7 @@ public:
/// \param variable name
/// \param[out] vector that stores all array values
template <typename T>
- void resolve_array(const std::string& name, std::vector<T>& values)
+ void resolve_array(const std::string& name, std::vector<T>& values) const
{
auto i = members.find(name);
if(i == members.end())
@@ -403,7 +403,7 @@ public:
/// if the variable is undefined
/// \param variable name
/// \return whether the value of the variable is null
- bool is_unset_or_null(const std::string& name, const unsigned index)
+ bool is_unset_or_null(const std::string& name, const unsigned index) const
{
auto i = members.find(name);
if(i == members.end())
@@ -415,7 +415,7 @@ public:
/// \brief check whether the value of the variable is unset
/// \param variable name
/// \return whether the value of the variable is unset
- bool is_unset(const std::string& name)
+ bool is_unset(const std::string& name) const
{
return members.find(name) == members.end();
}
@@ -463,7 +463,7 @@ public:
/// \return the expansion result
const std::string do_default_expansion(const std::string& name,
const std::string& value,
- const unsigned index)
+ const unsigned index) const
{
return (is_unset_or_null(name, index)?
value : resolve<std::string>(name, index));
@@ -487,7 +487,7 @@ public:
/// \return the expansion result
const std::string do_alternate_expansion(const std::string& name,
const std::string& value,
- const unsigned index)
+ const unsigned index) const
{
return (is_unset_or_null(name, index)? "" : value);
}
@@ -497,7 +497,7 @@ public:
/// \return the expansion result
const std::string do_substring_expansion(const std::string& name,
int offset,
- const unsigned index)
+ const unsigned index) const
{
std::string value = resolve<std::string>(name, index);
if(!get_real_offset(offset, value))
@@ -512,7 +512,7 @@ public:
const std::string do_substring_expansion(const std::string& name,
int offset,
int length,
- const unsigned index)
+ const unsigned index) const
{
if(length < 0)
throw interpreter_exception("length of substring expression should be greater or equal to zero");
@@ -525,7 +525,7 @@ public:
/// \brief get the length of a string variable
/// \param the name of the variable
/// \return the length
- unsigned get_length(const std::string& name, const unsigned index=0)
+ unsigned get_length(const std::string& name, const unsigned index=0) const
{
auto i = members.find(name);
if(i == members.end())
@@ -536,7 +536,7 @@ public:
/// \brief get the length of an array
/// \param the name of the array
/// \return the length of the array
- unsigned get_array_length(const std::string& name)
+ unsigned get_array_length(const std::string& name) const
{
auto i = members.find(name);
if(i == members.end())
@@ -545,8 +545,8 @@ public:
return i->second->get_array_length();
}
- void get_all_elements(const std::string&, std::string&);
+ void get_all_elements(const std::string&, std::string&) const;
- void get_all_elements_IFS_joined(const std::string&, std::string&);
+ void get_all_elements_IFS_joined(const std::string&, std::string&) const;
};
#endif
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-05-06 10:29 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-05-06 10:29 UTC (permalink / raw
To: gentoo-commits
commit: 57e1da1c18d5c9f7c6f5e35bd9146cacf0ace689
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Thu May 5 12:09:10 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Fri May 6 10:26:56 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=57e1da1c
Core: refactor interpreter class
Some large methods are moved into cpp source file.
---
src/core/interpreter.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++
src/core/interpreter.h | 64 ++++------------------------------------
2 files changed, 80 insertions(+), 57 deletions(-)
diff --git a/src/core/interpreter.cpp b/src/core/interpreter.cpp
index f0bf61e..5363636 100644
--- a/src/core/interpreter.cpp
+++ b/src/core/interpreter.cpp
@@ -36,6 +36,79 @@
#include "libbashWalker.h"
+std::string interpreter::get_string(pANTLR3_BASE_TREE node)
+{
+ pANTLR3_COMMON_TOKEN token = node->getToken(node);
+ // The tree walker may send null pointer here, so return an empty
+ // string if that's the case.
+ if(!token->start)
+ return "";
+ // Use reinterpret_cast here because we have to cast C code.
+ // The real type here is int64_t which is used as a pointer.
+ return std::string(reinterpret_cast<const char *>(token->start),
+ token->stop - token->start + 1);
+}
+
+bool interpreter::is_unset_or_null(const std::string& name,
+ const unsigned index) const
+{
+ auto i = members.find(name);
+ if(i == members.end())
+ return true;
+ else
+ return i->second->is_null(index);
+}
+
+const std::string interpreter::do_substring_expansion(const std::string& name,
+ int offset,
+ const unsigned index) const
+{
+ std::string value = resolve<std::string>(name, index);
+ if(!get_real_offset(offset, value))
+ return "";
+ return value.substr(offset);
+}
+
+const std::string interpreter::do_substring_expansion(const std::string& name,
+ int offset,
+ int length,
+ const unsigned index) const
+{
+ if(length < 0)
+ throw interpreter_exception("length of substring expression should be greater or equal to zero");
+ std::string value = resolve<std::string>(name, index);
+ if(!get_real_offset(offset, value))
+ return "";
+ return value.substr(offset, length);
+}
+
+std::string interpreter::do_replace_expansion(const std::string& name,
+ std::function<void(std::string&)> replacer,
+ const unsigned index) const
+{
+ std::string value = resolve<std::string>(name, index);
+ replacer(value);
+ return value;
+}
+
+unsigned interpreter::get_length(const std::string& name,
+ const unsigned index) const
+{
+ auto i = members.find(name);
+ if(i == members.end())
+ return 0;
+ return i->second->get_length(index);
+}
+
+unsigned interpreter::get_array_length(const std::string& name) const
+{
+ auto i = members.find(name);
+ if(i == members.end())
+ return 0;
+ else
+ return i->second->get_array_length();
+}
+
void interpreter::get_all_elements_joined(const std::string& name,
const std::string& delim,
std::string& result) const
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index dc446fc..35ae8ac 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -155,18 +155,7 @@ public:
/// of the given pANTLR3_BASE_TREE node.
/// \param the target tree node
/// \return the value of node->text
- static std::string get_string(pANTLR3_BASE_TREE node)
- {
- pANTLR3_COMMON_TOKEN token = node->getToken(node);
- // The tree walker may send null pointer here, so return an empty
- // string if that's the case.
- if(!token->start)
- return "";
- // Use reinterpret_cast here because we have to cast C code.
- // The real type here is int64_t which is used as a pointer.
- return std::string(reinterpret_cast<const char *>(token->start),
- token->stop - token->start + 1);
- }
+ static std::string get_string(pANTLR3_BASE_TREE node);
/// \brief perform logic or
/// \param the first operand
@@ -442,14 +431,7 @@ public:
/// if the variable is undefined
/// \param variable name
/// \return whether the value of the variable is null
- bool is_unset_or_null(const std::string& name, const unsigned index) const
- {
- auto i = members.find(name);
- if(i == members.end())
- return true;
- else
- return i->second->is_null(index);
- }
+ bool is_unset_or_null(const std::string& name, const unsigned index) const;
/// \brief check whether the value of the variable is unset
/// \param variable name
@@ -598,13 +580,7 @@ public:
/// \return the expansion result
const std::string do_substring_expansion(const std::string& name,
int offset,
- const unsigned index) const
- {
- std::string value = resolve<std::string>(name, index);
- if(!get_real_offset(offset, value))
- return "";
- return value.substr(offset);
- }
+ const unsigned index) const;
/// \brief perform substring expansion
/// \param the offset of the substring
@@ -613,15 +589,7 @@ public:
const std::string do_substring_expansion(const std::string& name,
int offset,
int length,
- const unsigned index) const
- {
- if(length < 0)
- throw interpreter_exception("length of substring expression should be greater or equal to zero");
- std::string value = resolve<std::string>(name, index);
- if(!get_real_offset(offset, value))
- return "";
- return value.substr(offset, length);
- }
+ const unsigned index) const;
/// \brief perform replacement expansion
/// \param the name of the varaible that needs to be expanded
@@ -630,35 +598,17 @@ public:
/// \return the expanded value
std::string do_replace_expansion(const std::string& name,
std::function<void(std::string&)> replacer,
- const unsigned index) const
- {
- std::string value = resolve<std::string>(name, index);
- replacer(value);
- return value;
- }
+ const unsigned index) const;
/// \brief get the length of a string variable
/// \param the name of the variable
/// \return the length
- unsigned get_length(const std::string& name, const unsigned index=0) const
- {
- auto i = members.find(name);
- if(i == members.end())
- return 0;
- return i->second->get_length(index);
- }
+ unsigned get_length(const std::string& name, const unsigned index=0) const;
/// \brief get the length of an array
/// \param the name of the array
/// \return the length of the array
- unsigned get_array_length(const std::string& name) const
- {
- auto i = members.find(name);
- if(i == members.end())
- return 0;
- else
- return i->second->get_array_length();
- }
+ unsigned get_array_length(const std::string& name) const;
/// \brief get all array elements concatenated by space
/// \param the name of the array
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-05-23 14:34 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-05-23 14:34 UTC (permalink / raw
To: gentoo-commits
commit: 4b15b140c2bf80a536f1116373fad87dcee843c4
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Mon May 23 14:41:45 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Mon May 23 14:41:45 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=4b15b140
Core: avoid abbreviations for member names
---
src/core/bash_ast.cpp | 38 +++++++++++++++++++-------------------
src/core/bash_ast.h | 8 ++++----
2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/src/core/bash_ast.cpp b/src/core/bash_ast.cpp
index 0bf8938..d70520e 100644
--- a/src/core/bash_ast.cpp
+++ b/src/core/bash_ast.cpp
@@ -52,62 +52,62 @@ bash_ast::bash_ast(std::istream& source): error_count(0)
bash_ast::~bash_ast()
{
nodes->free(nodes);
- psr->free(psr);
- tstream->free(tstream);
- lxr->free(lxr);
+ parser->free(parser);
+ token_stream->free(token_stream);
+ lexer->free(lexer);
input->close(input);
}
void bash_ast::init_parser()
{
- lxr = libbashLexerNew(input);
- if ( lxr == NULL )
+ lexer = libbashLexerNew(input);
+ if ( lexer == NULL )
{
std::cerr << "Unable to create the lexer due to malloc() failure" << std::endl;
error_count = 1;
return;
}
- tstream = antlr3CommonTokenStreamSourceNew(
- ANTLR3_SIZE_HINT, lxr->pLexer->rec->state->tokSource);
- if (tstream == NULL)
+ token_stream = antlr3CommonTokenStreamSourceNew(
+ ANTLR3_SIZE_HINT, lexer->pLexer->rec->state->tokSource);
+ if (token_stream == NULL)
{
std::cerr << "Out of memory trying to allocate token stream" << std::endl;
error_count = 1;
return;
}
- psr = libbashParserNew(tstream);
- if (psr == NULL)
+ parser = libbashParserNew(token_stream);
+ if (parser == NULL)
{
std::cerr << "Out of memory trying to allocate parser" << std::endl;
error_count = 1;
return;
}
- langAST.reset(new libbashParser_start_return(psr->start(psr)));
- error_count = psr->pParser->rec->getNumberOfSyntaxErrors(psr->pParser->rec);
- nodes = antlr3CommonTreeNodeStreamNewTree(langAST->tree, ANTLR3_SIZE_HINT);
+ ast.reset(new libbashParser_start_return(parser->start(parser)));
+ error_count = parser->pParser->rec->getNumberOfSyntaxErrors(parser->pParser->rec);
+ nodes = antlr3CommonTreeNodeStreamNewTree(ast->tree, ANTLR3_SIZE_HINT);
}
void bash_ast::interpret_with(interpreter& walker)
{
set_interpreter(&walker);
- plibbashWalker treePsr = libbashWalkerNew(nodes);
- treePsr->start(treePsr);
- treePsr->free(treePsr);
+ plibbashWalker treeparser = libbashWalkerNew(nodes);
+ treeparser->start(treeparser);
+ treeparser->free(treeparser);
}
std::string bash_ast::get_dot_graph()
{
- pANTLR3_STRING graph = nodes->adaptor->makeDot(nodes->adaptor, langAST->tree);
+ pANTLR3_STRING graph = nodes->adaptor->makeDot(nodes->adaptor, ast->tree);
return std::string(reinterpret_cast<char*>(graph->chars));
}
std::string bash_ast::get_string_tree()
{
return std::string(reinterpret_cast<char*>(
- langAST->tree->toStringTree(langAST->tree)->chars));
+ ast->tree->toStringTree(ast->tree)->chars));
}
namespace
@@ -131,7 +131,7 @@ std::string bash_ast::get_tokens(std::function<std::string(ANTLR3_INT32)> token_
// output line number for the first line
result << line_counter++ << "\t";
- pANTLR3_VECTOR token_list = tstream->getTokens(tstream);
+ pANTLR3_VECTOR token_list = token_stream->getTokens(token_stream);
unsigned token_size = token_list->size(token_list);
for(unsigned i = 0; i != token_size; ++i)
diff --git a/src/core/bash_ast.h b/src/core/bash_ast.h
index e587d81..168d012 100644
--- a/src/core/bash_ast.h
+++ b/src/core/bash_ast.h
@@ -43,10 +43,10 @@ class bash_ast
{
pANTLR3_INPUT_STREAM input;
std::string script;
- libbashLexer_Ctx_struct* lxr;
- pANTLR3_COMMON_TOKEN_STREAM tstream;
- libbashParser_Ctx_struct* psr;
- std::unique_ptr<libbashParser_start_return_struct> langAST;
+ libbashLexer_Ctx_struct* lexer;
+ pANTLR3_COMMON_TOKEN_STREAM token_stream;
+ libbashParser_Ctx_struct* parser;
+ std::unique_ptr<libbashParser_start_return_struct> ast;
pANTLR3_COMMON_TREE_NODE_STREAM nodes;
int error_count;
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-06-03 14:48 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-06-03 14:48 UTC (permalink / raw
To: gentoo-commits
commit: 0d0d5f090555c638b8d06767a14f800e9aecedec
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 3 07:19:29 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Fri Jun 3 12:53:53 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=0d0d5f09
Core: rename internal streams to avoid conflicts
---
src/core/interpreter.cpp | 2 +-
src/core/interpreter.h | 16 ++++++++--------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/core/interpreter.cpp b/src/core/interpreter.cpp
index fc12a7a..3a065cb 100644
--- a/src/core/interpreter.cpp
+++ b/src/core/interpreter.cpp
@@ -40,7 +40,7 @@
#include "core/interpreter.h"
-interpreter::interpreter(): out(&std::cout), err(&std::cerr), in(&std::cin), bash_options(
+interpreter::interpreter(): _out(&std::cout), _err(&std::cerr), _in(&std::cin), bash_options(
{
{"autocd", false},
{"cdable_vars", false},
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index 2c5f383..40d3d51 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -62,11 +62,11 @@ class interpreter
/// local variables
std::vector<scope> local_members;
- std::ostream* out;
+ std::ostream* _out;
- std::ostream* err;
+ std::ostream* _err;
- std::istream* in;
+ std::istream* _in;
std::unordered_map<std::string, bool> bash_options;
@@ -163,12 +163,12 @@ public:
void set_output_stream(std::ostream* stream)
{
- out = stream;
+ _out = stream;
}
void restore_output_stream()
{
- out = &std::cout;
+ _out = &std::cout;
}
/// \brief parse the text value of a tree to integer
@@ -581,9 +581,9 @@ public:
{
return cppbash_builtin::exec(name,
args,
- output == 0 ? *out : *output,
- error == 0 ? *err : *error,
- input == 0 ? *in : *input,
+ output == 0 ? *_out : *output,
+ error == 0 ? *_err : *error,
+ input == 0 ? *_in : *input,
*this);
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-06-09 7:27 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-06-09 7:27 UTC (permalink / raw
To: gentoo-commits
commit: 96ad12582fcae25e1fc49d3848a77a27952df15a
Author: Petteri Räty <petsku <AT> petteriraty <DOT> eu>
AuthorDate: Fri Jun 3 16:57:32 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Mon Jun 6 07:06:20 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=96ad1258
Core: fix memory leaks in bash_ast::init_parser
If init_parser threw an exception the already allocated memory wasn't
freed. Now we use our own wrapper antlr_pointer to make sure the memory
always gets freed.
---
src/core/bash_ast.cpp | 35 +++++++++++++----------------------
src/core/bash_ast.h | 24 ++++++++++++++----------
2 files changed, 27 insertions(+), 32 deletions(-)
diff --git a/src/core/bash_ast.cpp b/src/core/bash_ast.cpp
index 8f06311..b0ef4f8 100644
--- a/src/core/bash_ast.cpp
+++ b/src/core/bash_ast.cpp
@@ -52,47 +52,38 @@ bash_ast::bash_ast(const std::string& script_path,
init_parser(script, script_path);
}
-bash_ast::~bash_ast()
-{
- nodes->free(nodes);
- parser->free(parser);
- token_stream->free(token_stream);
- lexer->free(lexer);
- input->close(input);
-}
-
void bash_ast::init_parser(const std::string& script, const std::string& script_path)
{
- input = antlr3NewAsciiStringInPlaceStream(
+ input.reset(antlr3NewAsciiStringInPlaceStream(
reinterpret_cast<pANTLR3_UINT8>(const_cast<char*>(script.c_str())),
// We do not support strings longer than the max value of ANTLR3_UNIT32
boost::numeric_cast<ANTLR3_UINT32>(script.size()),
- NULL);
+ NULL));
- if(input == NULL)
+ if(!input)
throw interpreter_exception("Unable to open file " + script + " due to malloc() failure");
input->fileName = input->strFactory->newStr(
input->strFactory,
reinterpret_cast<pANTLR3_UINT8>(const_cast<char*>(script_path.c_str())));
- lexer = libbashLexerNew(input);
- if ( lexer == NULL )
+ lexer.reset(libbashLexerNew(input.get()));
+ if(!lexer)
throw interpreter_exception("Unable to create the lexer due to malloc() failure");
- token_stream = antlr3CommonTokenStreamSourceNew(
- ANTLR3_SIZE_HINT, lexer->pLexer->rec->state->tokSource);
- if (token_stream == NULL)
+ token_stream.reset(antlr3CommonTokenStreamSourceNew(
+ ANTLR3_SIZE_HINT, lexer->pLexer->rec->state->tokSource));
+ if(!token_stream)
throw interpreter_exception("Out of memory trying to allocate token stream");
- parser = libbashParserNew(token_stream);
- if (parser == NULL)
+ parser.reset(libbashParserNew(token_stream.get()));
+ if(!parser)
throw interpreter_exception("Out of memory trying to allocate parser");
- ast = parse(parser);
+ ast = parse(parser.get());
if(parser->pParser->rec->getNumberOfSyntaxErrors(parser->pParser->rec))
throw interpreter_exception("Something wrong happened while parsing");
- nodes = antlr3CommonTreeNodeStreamNewTree(ast, ANTLR3_SIZE_HINT);
+ nodes.reset(antlr3CommonTreeNodeStreamNewTree(ast, ANTLR3_SIZE_HINT));
}
std::string bash_ast::get_dot_graph()
@@ -127,7 +118,7 @@ std::string bash_ast::get_tokens(std::function<std::string(ANTLR3_UINT32)> token
// output line number for the first line
result << line_counter++ << "\t";
- pANTLR3_VECTOR token_list = token_stream->getTokens(token_stream);
+ pANTLR3_VECTOR token_list = token_stream->getTokens(token_stream.get());
unsigned token_size = token_list->size(token_list);
for(unsigned i = 0u; i != token_size; ++i)
diff --git a/src/core/bash_ast.h b/src/core/bash_ast.h
index d5d7f83..aa045bf 100644
--- a/src/core/bash_ast.h
+++ b/src/core/bash_ast.h
@@ -40,17 +40,25 @@ struct libbashLexer_Ctx_struct;
struct libbashParser_Ctx_struct;
class interpreter;
+template<typename T>
+class antlr_pointer: public std::unique_ptr<T, std::function<void(T*)>>
+{
+ typedef std::unique_ptr<T, std::function<void(T*)>> parent;
+public:
+ antlr_pointer(T* p = 0) : parent(p, [](T* to_delete) { to_delete->free(to_delete); }) {};
+};
+
/// \class bash_ast
/// \brief a wrapper class that helps interpret from istream and string
class bash_ast: public boost::noncopyable
{
- pANTLR3_INPUT_STREAM input;
+ antlr_pointer<ANTLR3_INPUT_STREAM_struct> input;
std::string script;
- libbashLexer_Ctx_struct* lexer;
- pANTLR3_COMMON_TOKEN_STREAM token_stream;
- libbashParser_Ctx_struct* parser;
+ antlr_pointer<libbashLexer_Ctx_struct> lexer;
+ antlr_pointer<ANTLR3_COMMON_TOKEN_STREAM_struct> token_stream;
+ antlr_pointer<libbashParser_Ctx_struct> parser;
pANTLR3_BASE_TREE ast;
- pANTLR3_COMMON_TREE_NODE_STREAM nodes;
+ antlr_pointer<ANTLR3_COMMON_TREE_NODE_STREAM_struct> nodes;
std::function<pANTLR3_BASE_TREE(libbashParser_Ctx_struct*)> parse;
void init_parser(const std::string& script, const std::string& script_path);
@@ -62,8 +70,6 @@ public:
bash_ast(const std::string& script_path,
std::function<pANTLR3_BASE_TREE(libbashParser_Ctx_struct*)> p=parser_start);
- ~bash_ast();
-
static void walker_start(plibbashWalker tree_parser);
static int walker_arithmetics(plibbashWalker tree_parser);
@@ -81,9 +87,7 @@ public:
interpret_with(interpreter& walker, Functor walk)
{
set_interpreter(&walker);
- std::unique_ptr<libbashWalker_Ctx_struct, std::function<void(plibbashWalker)>> p_tree_parser(
- libbashWalkerNew(nodes),
- [](plibbashWalker tree_parser) { tree_parser->free(tree_parser); });
+ antlr_pointer<libbashWalker_Ctx_struct> p_tree_parser(libbashWalkerNew(nodes.get()));
return walk(p_tree_parser.get());
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-06-09 11:46 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-06-09 11:46 UTC (permalink / raw
To: gentoo-commits
commit: 897042d1040c866d8bcfb151c3f168b3fbc4480a
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 8 09:35:04 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Thu Jun 9 11:41:23 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=897042d1
Core: remove unnecessary include
---
src/core/interpreter.h | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index 3ed4664..1e47fc9 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -37,7 +37,6 @@
#include "core/symbols.hpp"
#include "cppbash_builtin.h"
-#include "libbashLexer.h"
typedef std::unordered_map<std::string, std::shared_ptr<variable>> scope;
struct libbashWalker_Ctx_struct;
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-06-11 8:24 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-06-11 8:24 UTC (permalink / raw
To: gentoo-commits
commit: 6b9f53515fa8111bf486324cfb33a22d31c0e046
Author: Petteri Räty <petsku <AT> petteriraty <DOT> eu>
AuthorDate: Thu Jun 9 21:17:36 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Fri Jun 10 14:51:40 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=6b9f5351
Core: reduce file dependencies
Now bash_ast.h doesn't include libbashWalker.h any more. This means much
less files have to be recompiled after touching bashast.g. For example
for unit tests it's only required to relink the cppunittests binary.
---
src/core/bash_ast.cpp | 16 ++++++++++++++++
src/core/bash_ast.h | 19 +++++++------------
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/src/core/bash_ast.cpp b/src/core/bash_ast.cpp
index cb85e2e..c029d6f 100644
--- a/src/core/bash_ast.cpp
+++ b/src/core/bash_ast.cpp
@@ -27,8 +27,10 @@
#include <boost/numeric/conversion/cast.hpp>
#include "core/interpreter_exception.h"
+#include "core/interpreter.h"
#include "libbashLexer.h"
#include "libbashParser.h"
+#include "libbashWalker.h"
bash_ast::bash_ast(const std::istream& source,
std::function<pANTLR3_BASE_TREE(plibbashParser)> p): parse(p)
@@ -179,3 +181,17 @@ void bash_ast::call_function(plibbashWalker ctx,
// Execute function body
ctx->compound_command(ctx);
}
+
+bash_ast::walker_pointer bash_ast::create_walker(interpreter& walker)
+{
+ set_interpreter(&walker);
+ walker.push_current_ast(this);
+
+ auto deleter = [&](plibbashWalker tree_parser)
+ {
+ tree_parser->free(tree_parser);
+ walker.pop_current_ast();
+ };
+
+ return walker_pointer(libbashWalkerNew(nodes.get()), deleter);
+}
diff --git a/src/core/bash_ast.h b/src/core/bash_ast.h
index 4163ad4..63e35d1 100644
--- a/src/core/bash_ast.h
+++ b/src/core/bash_ast.h
@@ -34,11 +34,11 @@
#include <antlr3.h>
#include <boost/utility.hpp>
-#include "core/interpreter.h"
-#include "libbashWalker.h"
-
struct libbashLexer_Ctx_struct;
struct libbashParser_Ctx_struct;
+struct libbashWalker_Ctx_struct;
+typedef libbashWalker_Ctx_struct* plibbashWalker;
+class interpreter;
template<typename T>
class antlr_pointer: public std::unique_ptr<T, std::function<void(T*)>>
@@ -61,7 +61,10 @@ class bash_ast: public boost::noncopyable
antlr_pointer<ANTLR3_COMMON_TREE_NODE_STREAM_struct> nodes;
std::function<pANTLR3_BASE_TREE(libbashParser_Ctx_struct*)> parse;
+ typedef std::unique_ptr<libbashWalker_Ctx_struct, std::function<void(plibbashWalker)>> walker_pointer;
+
void init_parser(const std::string& script, const std::string& script_path);
+ walker_pointer create_walker(interpreter& walker);
public:
bash_ast(const std::istream& source,
@@ -89,15 +92,7 @@ public:
typename std::result_of<Functor(plibbashWalker)>::type
interpret_with(interpreter& walker, Functor walk)
{
- set_interpreter(&walker);
- walker.push_current_ast(this);
- std::unique_ptr<libbashWalker_Ctx_struct, std::function<void(plibbashWalker)>> p_tree_parser(
- libbashWalkerNew(nodes.get()),
- [&](plibbashWalker tree_parser)
- {
- tree_parser->free(tree_parser);
- walker.pop_current_ast();
- });
+ walker_pointer p_tree_parser = create_walker(walker);
return walk(p_tree_parser.get());
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-06-11 8:52 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-06-11 8:52 UTC (permalink / raw
To: gentoo-commits
commit: a10aa4fcd41b4b636a36e42ddbf60650108c20d8
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 10 03:42:47 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Fri Jun 10 08:25:09 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=a10aa4fc
Core: declared some methods to be const
Some methods should have been declared to be const. Now this is fixed.
---
src/core/interpreter.cpp | 4 ++--
src/core/interpreter.h | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/core/interpreter.cpp b/src/core/interpreter.cpp
index d1eb411..fedbee4 100644
--- a/src/core/interpreter.cpp
+++ b/src/core/interpreter.cpp
@@ -236,7 +236,7 @@ void interpreter::get_all_elements_IFS_joined(const std::string& name,
result);
}
-void interpreter::split_word(const std::string& word, std::vector<std::string>& output)
+void interpreter::split_word(const std::string& word, std::vector<std::string>& output) const
{
const std::string& delimeter = resolve<std::string>("IFS");
std::string trimmed(word);
@@ -313,7 +313,7 @@ void interpreter::trim_trailing_eols(std::string& value)
boost::trim_right_if(value, boost::is_any_of("\n"));
}
-void interpreter::get_all_function_names(std::vector<std::string>& function_names)
+void interpreter::get_all_function_names(std::vector<std::string>& function_names) const
{
boost::copy(functions | boost::adaptors::map_keys, back_inserter(function_names));
}
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index 38b4c94..937edd8 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -245,7 +245,7 @@ public:
/// \brief get the return status of the last command
/// \param the value of the return status
template <typename T=int>
- T get_status(void)
+ T get_status(void) const
{
return resolve<T>("?");
}
@@ -322,12 +322,12 @@ public:
/// \brief check if we have 'name' defined as a function
/// \param function name
/// \return whether 'name' is a function
- bool has_function(const std::string& name)
+ bool has_function(const std::string& name) const
{
return functions.find(name) != functions.end();
}
- void get_all_function_names(std::vector<std::string>& function_names);
+ void get_all_function_names(std::vector<std::string>& function_names) const;
/// \brief execute builtin
/// \param builtin name
@@ -430,7 +430,7 @@ public:
/// \brief implementation of word splitting
/// \param the value of the word
//. \param[out] the splitted result will be appended to output
- void split_word(const std::string& word, std::vector<std::string>& output);
+ void split_word(const std::string& word, std::vector<std::string>& output) const;
/// \brief get the status of shell optional behavior
/// \param the option name
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-07-08 14:03 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-07-08 14:03 UTC (permalink / raw
To: gentoo-commits
commit: 8c2eecbbb064f86c1e81323dbfb6c315fc1b2631
Author: Petteri Räty <petsku <AT> petteriraty <DOT> eu>
AuthorDate: Wed May 18 09:55:03 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Wed May 18 12:43:01 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=8c2eecbb
Core: fix memory leak
bash_ast::interpret_with was leaking memory when return_exception was
thrown when interpreting.
---
src/core/bash_ast.cpp | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/src/core/bash_ast.cpp b/src/core/bash_ast.cpp
index 2f729a4..22c7f22 100644
--- a/src/core/bash_ast.cpp
+++ b/src/core/bash_ast.cpp
@@ -119,7 +119,15 @@ void bash_ast::interpret_with(interpreter& walker)
auto nodes = antlr3CommonTreeNodeStreamNewTree(langAST->tree, ANTLR3_SIZE_HINT);
plibbashWalker treePsr = libbashWalkerNew(nodes);
- treePsr->start(treePsr);
+ try
+ {
+ treePsr->start(treePsr);
+ }
+ catch(...)
+ {
+ treePsr->free(treePsr);
+ throw;
+ }
treePsr->free(treePsr);
nodes->free(nodes);
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] proj/libbash:master commit in: src/core/
@ 2011-08-04 14:24 Petteri Räty
0 siblings, 0 replies; 13+ messages in thread
From: Petteri Räty @ 2011-08-04 14:24 UTC (permalink / raw
To: gentoo-commits
commit: fd5fae5995f7ff66358268bb0dd15a072f4a6f57
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 4 07:58:16 2011 +0000
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Thu Aug 4 14:15:15 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=fd5fae59
Doc: reduce doxygen warnings
---
src/core/bash_ast.h | 1 +
src/core/interpreter.h | 13 +++++++------
src/core/symbols.hpp | 2 +-
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/core/bash_ast.h b/src/core/bash_ast.h
index dd85ae8..50ca7a6 100644
--- a/src/core/bash_ast.h
+++ b/src/core/bash_ast.h
@@ -117,6 +117,7 @@ public:
/// \brief the functor for parser builtin_variable_definitions rule
/// \param parser the pointer to the parser
+ /// \param local whether to define the variables in local scope
static pANTLR3_BASE_TREE parser_builtin_variable_definitions(libbashParser_Ctx_struct* parser, bool local);
///
diff --git a/src/core/interpreter.h b/src/core/interpreter.h
index 091d4b7..fcc3294 100644
--- a/src/core/interpreter.h
+++ b/src/core/interpreter.h
@@ -76,8 +76,8 @@ class interpreter: public boost::noncopyable
/// \brief calculate the correct offset when offset < 0 and check whether
/// the real offset is in legal range
- /// \param[in,out] a value/result argument referring to offset
- /// \param[in] the original string
+ /// \param[in,out] offset a value/result argument referring to offset
+ /// \param[in] size the size of the original string
/// \return whether the real offset is in legal range
bool get_real_offset(long long& offset, const unsigned size) const
{
@@ -368,6 +368,7 @@ public:
}
/// \brief perform ${parameter:−word} expansion
+ /// \param cond whether to perform expansion
/// \param name the name of the parameter
/// \param value the value of the word
/// \param index the index of the paramter
@@ -381,6 +382,7 @@ public:
}
/// \brief perform ${parameter:=word} expansion
+ /// \param cond whether to perform expansion
/// \param name the name of the parameter
/// \param value the value of the word
/// \param index the index of the paramter
@@ -394,9 +396,8 @@ public:
}
/// \brief perform ${parameter:+word} expansion
- /// \param name the name of the parameter
+ /// \param cond whether to perform expansion
/// \param value the value of the word
- /// \param index the index of the paramter
/// \return the expansion result
const std::string do_alternate_expansion(bool cond,
const std::string& value) const
@@ -472,7 +473,7 @@ public:
/// \brief implementation of word splitting
/// \param word the value of the word
- //. \param[out] output the splitted result will be appended to output
+ ///.\param[out] output the splitted result will be appended to output
void split_word(const std::string& word, std::vector<std::string>& output) const;
/// \brief get the status of shell optional behavior
@@ -507,7 +508,7 @@ public:
long eval_arithmetic(const std::string& expression);
/// \brief shift the positional parameters to the left by n.
- /// \param the number to be shifted
+ /// \param shift_number the number to be shifted
/// \return zero unless n is greater than $# or less than zero, non-zero otherwise.
int shift(int shift_number);
diff --git a/src/core/symbols.hpp b/src/core/symbols.hpp
index 15a3fa0..8dd8cd3 100644
--- a/src/core/symbols.hpp
+++ b/src/core/symbols.hpp
@@ -267,7 +267,7 @@ public:
/// \brief the specialized constructor for arrays
/// \param name the variable name
-/// \param value the variable value
+/// \param v the variable value
/// \param ro whether the variable readonly
template <>
inline variable::variable<>(const std::string& name,
^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2011-08-04 14:25 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-09 11:46 [gentoo-commits] proj/libbash:master commit in: src/core/ Petteri Räty
-- strict thread matches above, loose matches on Subject: below --
2011-08-04 14:24 Petteri Räty
2011-07-08 14:03 Petteri Räty
2011-06-11 8:52 Petteri Räty
2011-06-11 8:24 Petteri Räty
2011-06-09 7:27 Petteri Räty
2011-06-03 14:48 Petteri Räty
2011-05-23 14:34 Petteri Räty
2011-05-06 10:29 Petteri Räty
2011-04-20 14:04 Petteri Räty
2011-04-08 11:12 Petteri Räty
2011-04-06 7:43 Petteri Räty
2011-04-02 15:50 Petteri Räty
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox