Port to visual studio + a couple of minor bug fixes. Compiles with only 2 "unreachable code" warnings on /W4 in VC++
This commit is contained in:
parent
5406d16f0b
commit
aa0f54c53f
@ -9,10 +9,10 @@
|
||||
#include <boost/function.hpp>
|
||||
|
||||
#include <stdexcept>
|
||||
#include <tr1/memory>
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <fstream>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include "dispatchkit.hpp"
|
||||
#include "bootstrap.hpp"
|
||||
@ -53,7 +53,7 @@ namespace chaiscript
|
||||
File_Position() : line(0), column(0) { }
|
||||
};
|
||||
|
||||
typedef std::tr1::shared_ptr<struct Token> TokenPtr;
|
||||
typedef boost::shared_ptr<struct Token> TokenPtr;
|
||||
|
||||
/**
|
||||
* The struct that doubles as both a parser token and an AST node
|
||||
|
@ -51,7 +51,7 @@ namespace chaiscript
|
||||
catch (Eval_Error &ee) {
|
||||
throw Eval_Error("Can not evaluate string: " + val + " reason: " + ee.reason, TokenPtr());
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (std::exception &) {
|
||||
throw Eval_Error("Can not evaluate string: " + val, TokenPtr());
|
||||
}
|
||||
return evaluate_string(val);
|
||||
|
@ -64,7 +64,7 @@ namespace chaiscript
|
||||
try {
|
||||
return ss.get_object(node->text);
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (std::exception &) {
|
||||
throw Eval_Error("Can not find object: " + node->text, node);
|
||||
}
|
||||
}
|
||||
@ -74,7 +74,7 @@ namespace chaiscript
|
||||
* Evaluates a floating point number
|
||||
*/
|
||||
template <typename Eval_System>
|
||||
dispatchkit::Boxed_Value eval_float(Eval_System &ss, TokenPtr node) {
|
||||
dispatchkit::Boxed_Value eval_float(Eval_System &, TokenPtr node) {
|
||||
return dispatchkit::Boxed_Value(double(atof(node->text.c_str())));
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ namespace chaiscript
|
||||
* Evaluates an integer
|
||||
*/
|
||||
template <typename Eval_System>
|
||||
dispatchkit::Boxed_Value eval_int(Eval_System &ss, TokenPtr node) {
|
||||
dispatchkit::Boxed_Value eval_int(Eval_System &, TokenPtr node) {
|
||||
return dispatchkit::Boxed_Value(atoi(node->text.c_str()));
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ namespace chaiscript
|
||||
* Evaluates a quoted string
|
||||
*/
|
||||
template <typename Eval_System>
|
||||
dispatchkit::Boxed_Value eval_quoted_string(Eval_System &ss, TokenPtr node) {
|
||||
dispatchkit::Boxed_Value eval_quoted_string(Eval_System &, TokenPtr node) {
|
||||
return dispatchkit::Boxed_Value(node->text);
|
||||
}
|
||||
|
||||
@ -98,7 +98,7 @@ namespace chaiscript
|
||||
* Evaluates a char group
|
||||
*/
|
||||
template <typename Eval_System>
|
||||
dispatchkit::Boxed_Value eval_single_quoted_string(Eval_System &ss, TokenPtr node) {
|
||||
dispatchkit::Boxed_Value eval_single_quoted_string(Eval_System &, TokenPtr node) {
|
||||
return dispatchkit::Boxed_Value(node->text);
|
||||
}
|
||||
|
||||
@ -125,11 +125,11 @@ namespace chaiscript
|
||||
try {
|
||||
retval = dispatch(ss.get_function(node->children[i+1]->text), plb);
|
||||
}
|
||||
catch(const dispatchkit::dispatch_error &e){
|
||||
catch(const dispatchkit::dispatch_error &){
|
||||
throw Eval_Error("Mismatched types in equation", node->children[i+1]);
|
||||
}
|
||||
}
|
||||
catch(const dispatchkit::dispatch_error &e){
|
||||
catch(const dispatchkit::dispatch_error &){
|
||||
throw Eval_Error("Can not clone right hand side of equation", node->children[i+1]);
|
||||
}
|
||||
}
|
||||
@ -149,7 +149,7 @@ namespace chaiscript
|
||||
try {
|
||||
retval = dispatch(ss.get_function(node->children[i+1]->text), plb);
|
||||
}
|
||||
catch(const dispatchkit::dispatch_error &e){
|
||||
catch(const dispatchkit::dispatch_error &){
|
||||
throw Eval_Error("Can not find appropriate '" + node->children[i+1]->text + "'", node->children[i+1]);
|
||||
}
|
||||
}
|
||||
@ -182,7 +182,7 @@ namespace chaiscript
|
||||
try {
|
||||
lhs = dispatchkit::boxed_cast<bool &>(retval);
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("Condition not boolean", node);
|
||||
}
|
||||
if (node->children[i]->text == "&&") {
|
||||
@ -224,7 +224,7 @@ namespace chaiscript
|
||||
try {
|
||||
retval = dispatch(ss.get_function(node->children[i]->text), plb);
|
||||
}
|
||||
catch(const dispatchkit::dispatch_error &e){
|
||||
catch(const dispatchkit::dispatch_error &){
|
||||
throw Eval_Error("Can not find appropriate '" + node->children[i]->text + "'", node->children[i]);
|
||||
}
|
||||
}
|
||||
@ -249,10 +249,10 @@ namespace chaiscript
|
||||
try {
|
||||
retval = dispatch(ss.get_function("[]"), plb);
|
||||
}
|
||||
catch(std::out_of_range &oor) {
|
||||
catch(std::out_of_range &) {
|
||||
throw Eval_Error("Out of bounds exception", node);
|
||||
}
|
||||
catch(const dispatchkit::dispatch_error &e){
|
||||
catch(const dispatchkit::dispatch_error &){
|
||||
throw Eval_Error("Can not find appropriate array lookup '[]' " + node->children[i]->text, node->children[i]);
|
||||
}
|
||||
}
|
||||
@ -275,7 +275,7 @@ namespace chaiscript
|
||||
try {
|
||||
return dispatch(ss.get_function("*"), plb);
|
||||
}
|
||||
catch(std::exception &e){
|
||||
catch(std::exception &){
|
||||
throw Eval_Error("Can not find appropriate negation", node->children[0]);
|
||||
}
|
||||
}
|
||||
@ -292,7 +292,7 @@ namespace chaiscript
|
||||
retval = eval_token(ss, node->children[0]);
|
||||
cond = dispatchkit::boxed_cast<bool &>(retval);
|
||||
}
|
||||
catch (std::exception) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("Boolean not('!') condition not boolean", node->children[0]);
|
||||
}
|
||||
return dispatchkit::Boxed_Value(!cond);
|
||||
@ -312,7 +312,7 @@ namespace chaiscript
|
||||
try {
|
||||
return dispatch(ss.get_function(node->children[0]->text), plb);
|
||||
}
|
||||
catch(std::exception &e){
|
||||
catch(std::exception &){
|
||||
throw Eval_Error("Can not find appropriate prefix", node->children[0]);
|
||||
}
|
||||
}
|
||||
@ -333,13 +333,13 @@ namespace chaiscript
|
||||
dispatchkit::Boxed_Value tmp = eval_token(ss, node->children[0]->children[i]);
|
||||
dispatch(ss.get_function("push_back"), dispatchkit::Param_List_Builder() << retval << tmp);
|
||||
}
|
||||
catch (const dispatchkit::dispatch_error &inner_e) {
|
||||
catch (const dispatchkit::dispatch_error &) {
|
||||
throw Eval_Error("Can not find appropriate 'push_back'", node->children[0]->children[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (const dispatchkit::dispatch_error &e) {
|
||||
catch (const dispatchkit::dispatch_error &) {
|
||||
throw Eval_Error("Can not find appropriate 'Vector()'", node);
|
||||
}
|
||||
|
||||
@ -356,7 +356,7 @@ namespace chaiscript
|
||||
<< eval_token(ss, node->children[0]->children[0]->children[0])
|
||||
<< eval_token(ss, node->children[0]->children[0]->children[1]));
|
||||
}
|
||||
catch (const dispatchkit::dispatch_error &e) {
|
||||
catch (const dispatchkit::dispatch_error &) {
|
||||
throw Eval_Error("Unable to generate range vector", node);
|
||||
}
|
||||
}
|
||||
@ -377,12 +377,12 @@ namespace chaiscript
|
||||
dispatchkit::Boxed_Value slot = dispatch(ss.get_function("[]"), dispatchkit::Param_List_Builder() << retval << key);
|
||||
dispatch(ss.get_function("="), dispatchkit::Param_List_Builder() << slot << eval_token(ss, node->children[0]->children[i]->children[1]));
|
||||
}
|
||||
catch (const dispatchkit::dispatch_error &inner_e) {
|
||||
catch (const dispatchkit::dispatch_error &) {
|
||||
throw Eval_Error("Can not find appropriate '=' for map init", node->children[0]->children[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (const dispatchkit::dispatch_error &e) {
|
||||
catch (const dispatchkit::dispatch_error &) {
|
||||
throw Eval_Error("Can not find appropriate 'Map()'", node);
|
||||
}
|
||||
|
||||
@ -442,7 +442,7 @@ namespace chaiscript
|
||||
template <typename Eval_System>
|
||||
dispatchkit::Boxed_Value eval_dot_access(Eval_System &ss, TokenPtr node) {
|
||||
dispatchkit::Boxed_Value retval;
|
||||
std::vector<std::pair<std::string, dispatchkit::Dispatch_Engine::Function_Map::mapped_type> > fn;
|
||||
std::vector<std::pair<std::string, boost::shared_ptr<dispatchkit::Proxy_Function> > > fn;
|
||||
dispatchkit::Dispatch_Engine::Stack prev_stack = ss.get_stack();
|
||||
dispatchkit::Dispatch_Engine::Stack new_stack;
|
||||
unsigned int i, j;
|
||||
@ -477,7 +477,7 @@ namespace chaiscript
|
||||
retval = dispatch(fn, plb);
|
||||
ss.set_stack(prev_stack);
|
||||
}
|
||||
catch(const dispatchkit::dispatch_error &e){
|
||||
catch(const dispatchkit::dispatch_error &){
|
||||
ss.set_stack(prev_stack);
|
||||
throw Eval_Error("Can not find appropriate '" + fun_name + "'", node);
|
||||
}
|
||||
@ -508,7 +508,7 @@ namespace chaiscript
|
||||
try {
|
||||
cond = dispatchkit::boxed_cast<bool &>(retval);
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("If condition not boolean", node->children[0]);
|
||||
}
|
||||
if (cond) {
|
||||
@ -527,7 +527,7 @@ namespace chaiscript
|
||||
try {
|
||||
cond = dispatchkit::boxed_cast<bool &>(retval);
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("Elseif condition not boolean", node->children[i+1]);
|
||||
}
|
||||
if (cond) {
|
||||
@ -554,7 +554,7 @@ namespace chaiscript
|
||||
try {
|
||||
cond = dispatchkit::boxed_cast<bool &>(retval);
|
||||
}
|
||||
catch (std::exception) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("While condition not boolean", node->children[0]);
|
||||
}
|
||||
while (cond) {
|
||||
@ -564,11 +564,11 @@ namespace chaiscript
|
||||
try {
|
||||
cond = dispatchkit::boxed_cast<bool &>(retval);
|
||||
}
|
||||
catch (std::exception) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("While condition not boolean", node->children[0]);
|
||||
}
|
||||
}
|
||||
catch (Break_Loop &bl) {
|
||||
catch (Break_Loop &) {
|
||||
cond = false;
|
||||
}
|
||||
}
|
||||
@ -595,7 +595,7 @@ namespace chaiscript
|
||||
}
|
||||
cond = dispatchkit::boxed_cast<bool &>(condition);
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("For condition not boolean", node);
|
||||
}
|
||||
while (cond) {
|
||||
@ -613,10 +613,10 @@ namespace chaiscript
|
||||
cond = dispatchkit::boxed_cast<bool &>(condition);
|
||||
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (const dispatchkit::bad_boxed_cast &) {
|
||||
throw Eval_Error("For condition not boolean", node);
|
||||
}
|
||||
catch (Break_Loop &bl) {
|
||||
catch (Break_Loop &) {
|
||||
cond = false;
|
||||
}
|
||||
}
|
||||
@ -748,7 +748,7 @@ namespace chaiscript
|
||||
* Evaluates a break statement
|
||||
*/
|
||||
template <typename Eval_System>
|
||||
dispatchkit::Boxed_Value eval_break(Eval_System &ss, TokenPtr node) {
|
||||
dispatchkit::Boxed_Value eval_break(Eval_System &, TokenPtr node) {
|
||||
throw Break_Loop(node);
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,8 @@ void print_help() {
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
|
||||
std::string input;
|
||||
|
||||
chaiscript::ChaiScript_Engine chai;
|
||||
@ -29,13 +31,11 @@ int main(int argc, char *argv[]) {
|
||||
val = chai.evaluate_string(input);
|
||||
|
||||
if (val.get_type_info().m_bare_type_info && *(val.get_type_info().m_bare_type_info) != typeid(void)) {
|
||||
|
||||
try {
|
||||
dispatchkit::dispatch(chai.get_eval_engine().get_function("print"), dispatchkit::Param_List_Builder() << val);
|
||||
} catch (const std::runtime_error &e) {
|
||||
std::cout << e.what() << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@ int main(int argc, char *argv[]) {
|
||||
try {
|
||||
dispatchkit::Boxed_Value val = chai.evaluate_file(argv[i]);
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
catch (std::exception &) {
|
||||
std::cerr << "Could not open: " << argv[i] << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
|
@ -152,9 +152,9 @@ namespace dispatchkit
|
||||
{
|
||||
if (v.m_isfloat)
|
||||
{
|
||||
return (p1 = v.d);
|
||||
return (p1 = P1(v.d));
|
||||
} else {
|
||||
return (p1 = v.i);
|
||||
return (p1 = P1(v.i));
|
||||
}
|
||||
}
|
||||
|
||||
@ -163,9 +163,9 @@ namespace dispatchkit
|
||||
{
|
||||
if (v.m_isfloat)
|
||||
{
|
||||
return (v.d);
|
||||
return P1(v.d);
|
||||
} else {
|
||||
return (v.i);
|
||||
return P1(v.i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -174,9 +174,9 @@ namespace dispatchkit
|
||||
{
|
||||
if (r.m_isfloat)
|
||||
{
|
||||
return (p1 *= r.d);
|
||||
return p1 *= P1(r.d);
|
||||
} else {
|
||||
return (p1 *= r.i);
|
||||
return p1 *= P1(r.i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -185,9 +185,9 @@ namespace dispatchkit
|
||||
{
|
||||
if (r.m_isfloat)
|
||||
{
|
||||
return (p1 /= r.d);
|
||||
return p1 /= P1(r.d);
|
||||
} else {
|
||||
return (p1 /= r.i);
|
||||
return p1 /= P1(r.i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -196,9 +196,9 @@ namespace dispatchkit
|
||||
{
|
||||
if (r.m_isfloat)
|
||||
{
|
||||
return (p1 += r.d);
|
||||
return p1 += P1(r.d);
|
||||
} else {
|
||||
return (p1 += r.i);
|
||||
return p1 += P1(r.i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -207,9 +207,9 @@ namespace dispatchkit
|
||||
{
|
||||
if (r.m_isfloat)
|
||||
{
|
||||
return (p1 -= r.d);
|
||||
return p1 -= P1(r.d);
|
||||
} else {
|
||||
return (p1 -= r.i);
|
||||
return p1 -= P1(r.i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -548,7 +548,7 @@ namespace dispatchkit
|
||||
bootstrap_pod_type<int>(s, "int");
|
||||
bootstrap_pod_type<size_t>(s, "size_t");
|
||||
bootstrap_pod_type<char>(s, "char");
|
||||
bootstrap_pod_type<int64_t>(s, "int64_t");
|
||||
bootstrap_pod_type<boost::int64_t>(s, "int64_t");
|
||||
|
||||
add_opers_comparison_pod(s);
|
||||
add_opers_arithmetic_pod(s);
|
||||
|
@ -76,7 +76,7 @@ namespace dispatchkit
|
||||
}
|
||||
|
||||
template<typename ContainerType>
|
||||
void bootstrap_reversible_container(Dispatch_Engine &system, const std::string &type)
|
||||
void bootstrap_reversible_container(Dispatch_Engine &/*system*/, const std::string &/*type*/)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <boost/function.hpp>
|
||||
#include <boost/ref.hpp>
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/cstdint.hpp>
|
||||
#include <boost/type_traits/add_const.hpp>
|
||||
|
||||
namespace dispatchkit
|
||||
@ -436,20 +437,20 @@ namespace dispatchkit
|
||||
i = boxed_cast<long>(v);
|
||||
} else if (inp_ == typeid(unsigned long)) {
|
||||
i = boxed_cast<unsigned long>(v);
|
||||
} else if (inp_ == typeid(int8_t)) {
|
||||
i = boxed_cast<int8_t>(v);
|
||||
} else if (inp_ == typeid(int16_t)) {
|
||||
i = boxed_cast<int16_t>(v);
|
||||
} else if (inp_ == typeid(int32_t)) {
|
||||
i = boxed_cast<int32_t>(v);
|
||||
} else if (inp_ == typeid(int64_t)) {
|
||||
i = boxed_cast<int64_t>(v);
|
||||
} else if (inp_ == typeid(uint8_t)) {
|
||||
i = boxed_cast<uint8_t>(v);
|
||||
} else if (inp_ == typeid(uint16_t)) {
|
||||
i = boxed_cast<uint16_t>(v);
|
||||
} else if (inp_ == typeid(uint32_t)) {
|
||||
i = boxed_cast<uint32_t>(v);
|
||||
} else if (inp_ == typeid(boost::int8_t)) {
|
||||
i = boxed_cast<boost::int8_t>(v);
|
||||
} else if (inp_ == typeid(boost::int16_t)) {
|
||||
i = boxed_cast<boost::int16_t>(v);
|
||||
} else if (inp_ == typeid(boost::int32_t)) {
|
||||
i = boxed_cast<boost::int32_t>(v);
|
||||
} else if (inp_ == typeid(boost::int64_t)) {
|
||||
i = boxed_cast<boost::int64_t>(v);
|
||||
} else if (inp_ == typeid(boost::uint8_t)) {
|
||||
i = boxed_cast<boost::uint8_t>(v);
|
||||
} else if (inp_ == typeid(boost::uint16_t)) {
|
||||
i = boxed_cast<boost::uint16_t>(v);
|
||||
} else if (inp_ == typeid(boost::uint32_t)) {
|
||||
i = boxed_cast<boost::uint32_t>(v);
|
||||
} else {
|
||||
throw boost::bad_any_cast();
|
||||
}
|
||||
@ -527,7 +528,7 @@ namespace dispatchkit
|
||||
}
|
||||
|
||||
double d;
|
||||
int64_t i;
|
||||
boost::int64_t i;
|
||||
|
||||
bool m_isfloat;
|
||||
};
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <typeinfo>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <stdexcept>
|
||||
@ -26,7 +27,7 @@ namespace dispatchkit
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool operator==(const Proxy_Function &f) const
|
||||
virtual bool operator==(const Proxy_Function &) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -76,8 +77,7 @@ namespace dispatchkit
|
||||
class Dispatch_Engine
|
||||
{
|
||||
public:
|
||||
typedef std::multimap<std::string, boost::shared_ptr<Proxy_Function> > Function_Map;
|
||||
typedef std::map<std::string, Type_Info> Type_Name_Map;
|
||||
typedef std::map<std::string, dispatchkit::Type_Info> Type_Name_Map;
|
||||
typedef std::map<std::string, Boxed_Value> Scope;
|
||||
typedef std::deque<Scope> Stack;
|
||||
|
||||
@ -143,7 +143,7 @@ namespace dispatchkit
|
||||
|
||||
Stack set_stack(Stack s)
|
||||
{
|
||||
swap(s, m_scopes);
|
||||
std::swap(s, m_scopes);
|
||||
return s;
|
||||
}
|
||||
|
||||
@ -164,7 +164,7 @@ namespace dispatchkit
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::pair<std::string, Function_Map::mapped_type> > funcs = get_function_impl(name, false);
|
||||
std::vector<std::pair<std::string, std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::mapped_type> > funcs = get_function_impl(name, false);
|
||||
|
||||
if (funcs.empty())
|
||||
{
|
||||
@ -180,15 +180,17 @@ namespace dispatchkit
|
||||
m_types.insert(std::make_pair(name, Get_Type_Info<Type>::get()));
|
||||
}
|
||||
|
||||
|
||||
Type_Info get_type(const std::string &name) const
|
||||
{
|
||||
Type_Name_Map::const_iterator itr = m_types.find(name);
|
||||
|
||||
if (itr != m_types.end())
|
||||
{
|
||||
return itr->second;
|
||||
} else {
|
||||
throw std::range_error("Type Not Known");
|
||||
}
|
||||
|
||||
throw std::range_error("Type Not Known");
|
||||
}
|
||||
|
||||
std::string get_type_name(const Type_Info &ti) const
|
||||
@ -206,51 +208,51 @@ namespace dispatchkit
|
||||
return ti.m_bare_type_info->name();
|
||||
}
|
||||
|
||||
std::vector<Type_Name_Map::value_type> get_types() const
|
||||
std::vector<std::pair<std::string, Type_Info> > get_types() const
|
||||
{
|
||||
return std::vector<Type_Name_Map::value_type>(m_types.begin(), m_types.end());
|
||||
return std::vector<std::pair<std::string, Type_Info> >(m_types.begin(), m_types.end());
|
||||
}
|
||||
|
||||
std::vector<std::pair<std::string, Function_Map::mapped_type> >
|
||||
std::vector<std::pair<std::string, std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::mapped_type> >
|
||||
get_function_impl(const std::string &t_name, bool include_objects) const
|
||||
{
|
||||
std::vector<std::pair<std::string, Function_Map::mapped_type> > funcs;
|
||||
std::vector<std::pair<std::string, std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::mapped_type> > funcs;
|
||||
|
||||
if (include_objects)
|
||||
{
|
||||
try {
|
||||
funcs.insert(funcs.end(),
|
||||
Function_Map::value_type(
|
||||
std::make_pair(
|
||||
t_name,
|
||||
boxed_cast<Function_Map::mapped_type>(get_object(t_name)))
|
||||
boxed_cast<std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::mapped_type>(get_object(t_name)))
|
||||
);
|
||||
} catch (const bad_boxed_cast &) {
|
||||
} catch (const std::range_error &) {
|
||||
}
|
||||
}
|
||||
|
||||
std::pair<Function_Map::const_iterator, Function_Map::const_iterator> range
|
||||
std::pair<std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::const_iterator, std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::const_iterator> range
|
||||
= m_functions.equal_range(t_name);
|
||||
|
||||
funcs.insert(funcs.end(), range.first, range.second);
|
||||
return funcs;
|
||||
}
|
||||
|
||||
std::vector<std::pair<std::string, Function_Map::mapped_type> >
|
||||
std::vector<std::pair<std::string, std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::mapped_type> >
|
||||
get_function(const std::string &t_name) const
|
||||
{
|
||||
return get_function_impl(t_name, true);
|
||||
}
|
||||
|
||||
std::vector<Function_Map::value_type> get_functions() const
|
||||
std::vector<std::pair<std::string, boost::shared_ptr<Proxy_Function> > > get_functions() const
|
||||
{
|
||||
return std::vector<Function_Map::value_type>(m_functions.begin(), m_functions.end());
|
||||
return std::vector<std::pair<std::string, boost::shared_ptr<Proxy_Function> > >(m_functions.begin(), m_functions.end());
|
||||
}
|
||||
|
||||
private:
|
||||
bool add_function(const boost::shared_ptr<Proxy_Function> &f, const std::string &t_name)
|
||||
{
|
||||
std::pair<Function_Map::const_iterator, Function_Map::const_iterator> range
|
||||
std::pair<std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::const_iterator, std::multimap<std::string, boost::shared_ptr<Proxy_Function> >::const_iterator> range
|
||||
= m_functions.equal_range(t_name);
|
||||
|
||||
while (range.first != range.second)
|
||||
@ -268,7 +270,7 @@ namespace dispatchkit
|
||||
|
||||
std::deque<Scope> m_scopes;
|
||||
|
||||
Function_Map m_functions;
|
||||
std::multimap<std::string, boost::shared_ptr<Proxy_Function> > m_functions;
|
||||
Type_Name_Map m_types;
|
||||
Boxed_Value m_place_holder;
|
||||
};
|
||||
@ -283,7 +285,7 @@ namespace dispatchkit
|
||||
std::cout << e.get_type_name(type);
|
||||
}
|
||||
|
||||
void dump_function(const Dispatch_Engine::Function_Map::value_type &f, const Dispatch_Engine &e)
|
||||
void dump_function(const std::pair<const std::string, boost::shared_ptr<Proxy_Function> > &f, const Dispatch_Engine &e)
|
||||
{
|
||||
std::vector<Type_Info> params = f.second->get_param_types();
|
||||
std::string annotation = f.second->annotation();
|
||||
@ -314,8 +316,8 @@ namespace dispatchkit
|
||||
void dump_system(const Dispatch_Engine &s)
|
||||
{
|
||||
std::cout << "Registered Types: " << std::endl;
|
||||
std::vector<Dispatch_Engine::Type_Name_Map::value_type> types = s.get_types();
|
||||
for (std::vector<Dispatch_Engine::Type_Name_Map::value_type>::const_iterator itr = types.begin();
|
||||
std::vector<std::pair<std::string, Type_Info> > types = s.get_types();
|
||||
for (std::vector<std::pair<std::string, Type_Info> >::const_iterator itr = types.begin();
|
||||
itr != types.end();
|
||||
++itr)
|
||||
{
|
||||
@ -325,10 +327,11 @@ namespace dispatchkit
|
||||
}
|
||||
|
||||
|
||||
std::cout << std::endl; std::vector<Dispatch_Engine::Function_Map::value_type> funcs = s.get_functions();
|
||||
std::cout << std::endl;
|
||||
std::vector<std::pair<std::string, boost::shared_ptr<Proxy_Function> > > funcs = s.get_functions();
|
||||
|
||||
std::cout << "Functions: " << std::endl;
|
||||
for (std::vector<Dispatch_Engine::Function_Map::value_type>::const_iterator itr = funcs.begin();
|
||||
for (std::vector<std::pair<std::string, boost::shared_ptr<Proxy_Function> > >::const_iterator itr = funcs.begin();
|
||||
itr != funcs.end();
|
||||
++itr)
|
||||
{
|
||||
|
@ -148,7 +148,7 @@ namespace dispatchkit
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool operator==(const Proxy_Function &f) const
|
||||
virtual bool operator==(const Proxy_Function &) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -238,7 +238,7 @@ namespace dispatchkit
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool operator==(const Proxy_Function &f) const
|
||||
virtual bool operator==(const Proxy_Function &) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -398,7 +398,7 @@ namespace dispatchkit
|
||||
{
|
||||
|
||||
template<typename Ret BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM_PARAMS(n, typename Param) >
|
||||
std::vector<Type_Info> build_param_type_list(const boost::function<Ret (BOOST_PP_ENUM_PARAMS(n, Param))> &f)
|
||||
std::vector<Type_Info> build_param_type_list(const boost::function<Ret (BOOST_PP_ENUM_PARAMS(n, Param))> &)
|
||||
{
|
||||
std::vector<Type_Info> ti;
|
||||
ti.push_back(Get_Type_Info<Ret>::get());
|
||||
|
@ -17,6 +17,7 @@ namespace dispatchkit
|
||||
Type_Info(bool t_is_const, bool t_is_reference, bool t_is_pointer, bool t_is_void,
|
||||
const std::type_info *t_ti, const std::type_info *t_bareti)
|
||||
: m_is_const(t_is_const), m_is_reference(t_is_reference), m_is_pointer(t_is_pointer),
|
||||
m_is_void(t_is_void),
|
||||
m_type_info(t_ti), m_bare_type_info(t_bareti),
|
||||
m_is_unknown(false)
|
||||
{
|
||||
@ -29,6 +30,14 @@ namespace dispatchkit
|
||||
{
|
||||
}
|
||||
|
||||
Type_Info(const Type_Info &ti)
|
||||
: m_is_const(ti.m_is_const), m_is_reference(ti.m_is_reference),
|
||||
m_is_pointer(ti.m_is_pointer),
|
||||
m_is_void(ti.m_is_void), m_type_info(ti.m_type_info),
|
||||
m_bare_type_info(ti.m_bare_type_info),
|
||||
m_is_unknown(ti.m_is_unknown)
|
||||
{
|
||||
}
|
||||
Type_Info &operator=(const Type_Info &ti)
|
||||
{
|
||||
m_is_const = ti.m_is_const;
|
||||
@ -40,6 +49,10 @@ namespace dispatchkit
|
||||
m_is_unknown = ti.m_is_unknown;
|
||||
return *this;
|
||||
}
|
||||
bool operator<(const Type_Info &ti) const
|
||||
{
|
||||
return m_type_info < ti.m_type_info;
|
||||
}
|
||||
|
||||
bool operator==(const Type_Info &ti) const
|
||||
{
|
||||
|
11
msvc/chaiscript/Boost.vsprops
Normal file
11
msvc/chaiscript/Boost.vsprops
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioPropertySheet
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="Boost"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""C:\Programming\Boost\include\boost-1_38""
|
||||
/>
|
||||
</VisualStudioPropertySheet>
|
20
msvc/chaiscript/chaiscript.sln
Normal file
20
msvc/chaiscript/chaiscript.sln
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual C++ Express 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chaiscript", "chaiscript.vcproj", "{46FD9DC7-2DA9-4C17-ADE4-E3A18C46E87B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{46FD9DC7-2DA9-4C17-ADE4-E3A18C46E87B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{46FD9DC7-2DA9-4C17-ADE4-E3A18C46E87B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{46FD9DC7-2DA9-4C17-ADE4-E3A18C46E87B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{46FD9DC7-2DA9-4C17-ADE4-E3A18C46E87B}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
258
msvc/chaiscript/chaiscript.vcproj
Normal file
258
msvc/chaiscript/chaiscript.vcproj
Normal file
@ -0,0 +1,258 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="chaiscript"
|
||||
ProjectGUID="{46FD9DC7-2DA9-4C17-ADE4-E3A18C46E87B}"
|
||||
RootNamespace="chaiscript"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets=".\Boost.vsprops"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="0"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UseUnicodeResponseFiles="false"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(ProjectDir)\..\..\dispatchkit";"$(ProjectDir)\..\..\chaiscript""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
DisableLanguageExtensions="true"
|
||||
TreatWChar_tAsBuiltInType="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="2"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets=".\Boost.vsprops"
|
||||
CharacterSet="0"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories=""$(ProjectDir)\..\..\dispatchkit";"$(ProjectDir)\..\..\chaiscript""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\chaiscript\main.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\bootstrap.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\bootstrap_stl.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\boxed_value.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\chaiscript\chaiscript.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\chaiscript\chaiscript_engine.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\chaiscript\chaiscript_eval.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\chaiscript\chaiscript_parser.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\chaiscript\chaiscript_prelude.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\dispatchkit.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\function_call.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\proxy_constructors.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\proxy_functions.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\register_function.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\dispatchkit\type_info.hpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
Loading…
x
Reference in New Issue
Block a user