Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_engine.hpp
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Modify /trunk/src/reflection.cpp
Clean up reflection a bit, and how we do pretty printing of ast nodes.
Registered new internal_to_string in reflection module so that we
can have automatic pretty printing of ast nodes during repl eval.
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_eval.hpp
Commenting out of previous node value caching scheme. This allows us to profile
later, without having these smaller optimizations
clutter up the flow. This also allows us to pass the reflection test.
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_eval.hpp
Fix to the method/array dispatch issue
Changed Paths:
Modify /trunk/src/main.cpp
Add /trunk/unittests/deep_array_lookup.chai
Add /trunk/unittests/reflection_test.chai
Add some unit tests for reflection and recently discovered array lookup returned
from a method problem
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Fix to parsing of single-line comments where the comment at the end of a line
was merging statements separated by a single line comment
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_engine.hpp
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Modify /trunk/include/chaiscript/utility/utility.hpp
Modify /trunk/src/main.cpp
Modify /trunk/src/reflection.cpp
Register AST_Node and Parser, overloaded eval for AST_Node and some const
correctness fixes
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_engine.hpp
Modify /trunk/include/chaiscript/language/chaiscript_eval.hpp
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Rename of Token to AST_Node to be more correct
Changed Paths:
Modify /trunk/CMakeLists.txt
Add /trunk/src/reflection.cpp
Stub out the reflection module
Changed Paths:
Modify /trunk/CMakeLists.txt
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Fix warnings discovered on macos
What steps will reproduce the problem?
1. Compile a minimal Chaiscript project using mingw
(gcc version 3.4.5)
What is the expected output? What do you see instead?
Program doesn't compile, cannot resolve ambiguous functions.
c:\Users\ben\Projects\tests\chai>make
g++ -I"C:\\lib\chaiscript 2.3.3\\include" -IC:\lib\boost_1_40_0 -o basic basic.cpp
In file included from C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/dispatchkit.hpp:24,
from C://lib/chaiscript 2.3.3//include/chaiscript/chaiscript.hpp:20,
from basic.cpp:1:
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/proxy_functions.hpp: In constructor `chaiscript::Bound_Function
::Bound_Function(const chaiscript::Const_Proxy_Function&, const std::vector<chaiscript::Boxed_Value, std::allocator<chai
script::Boxed_Value> >&)':
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/proxy_functions.hpp:279: warning: converting of negative value
`-0x000000001' to `unsigned int'
In file included from C://lib/chaiscript 2.3.3//include/chaiscript/chaiscript.hpp:21,
from basic.cpp:1:
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/bootstrap.hpp: In static member function `static chaiscript::Mo
dulePtr chaiscript::bootstrap::Bootstrap::bootstrap(chaiscript::ModulePtr)':
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/bootstrap.hpp:569: error: call of overloaded `logical_complimen
t(chaiscript::ModulePtr&)' is ambiguous
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/operators.hpp:118: note: candidates are: Ret chaiscript::operat
ors::logical_compliment(L) [with Ret = bool, L = boost::shared_ptr<chaiscript::Module>]
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/operators.hpp:337: note: chaiscript::ModulePtr
chaiscript::operators::logical_compliment(chaiscript::ModulePtr) [with T = bool]
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/bootstrap.hpp: In function `chaiscript::ModulePtr chaiscript::b
ootstrap::opers_float_arithmetic(chaiscript::ModulePtr) [with T = double]':
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/bootstrap.hpp:351: instantiated from `chaiscript::ModulePtr c
haiscript::bootstrap::bootstrap_float_type(const std::string&, chaiscript::ModulePtr) [with T = double]'
C://lib/chaiscript 2.3.3//include/chaiscript/dispatchkit/bootstrap.hpp:563: instantiated from here
What version of the product are you using? On what operating system?
2.3.3 on Windows Vista using Mingw (gcc version 3.4.5)
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_eval.hpp
A little cleanup of logical and/or since those are now separate evals.
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_engine.hpp
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Modify /trunk/src/main.cpp
More refactoring of parser to use the token children types directly instead of
using a giant switch statement during build_match.
Changed Paths:
Modify /trunk/contrib/geshi/chaiscript.php
Modify /trunk/contrib/test/callbacktest.cpp
Modify /trunk/contrib/test/dispatchkit_test.cpp
Modify /trunk/contrib/test/dispatchkit_unittest.cpp
Modify /trunk/contrib/test/sensors.cpp
Modify /trunk/include/chaiscript/chaiscript.hpp
Modify /trunk/include/chaiscript/dispatchkit/bad_boxed_cast.hpp
Modify /trunk/include/chaiscript/dispatchkit/bind_first.hpp
Modify /trunk/include/chaiscript/dispatchkit/bootstrap.hpp
Modify /trunk/include/chaiscript/dispatchkit/bootstrap_stl.hpp
Modify /trunk/include/chaiscript/dispatchkit/boxed_cast.hpp
Modify /trunk/include/chaiscript/dispatchkit/boxed_cast_helper.hpp
Modify /trunk/include/chaiscript/dispatchkit/boxed_pod_value.hpp
Modify /trunk/include/chaiscript/dispatchkit/boxed_value.hpp
Modify /trunk/include/chaiscript/dispatchkit/dispatchkit.hpp
Modify /trunk/include/chaiscript/dispatchkit/function_call.hpp
Modify /trunk/include/chaiscript/dispatchkit/function_call_detail.hpp
Modify /trunk/include/chaiscript/dispatchkit/handle_return.hpp
Modify /trunk/include/chaiscript/dispatchkit/proxy_constructors.hpp
Modify /trunk/include/chaiscript/dispatchkit/proxy_functions.hpp
Modify /trunk/include/chaiscript/dispatchkit/proxy_functions_detail.hpp
Modify /trunk/include/chaiscript/dispatchkit/register_function.hpp
Modify /trunk/include/chaiscript/dispatchkit/type_info.hpp
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_engine.hpp
Modify /trunk/include/chaiscript/language/chaiscript_eval.hpp
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Modify /trunk/include/chaiscript/language/chaiscript_prelude.hpp
Modify /trunk/src/example.cpp
Modify /trunk/src/main.cpp
Modify /trunk/src/multithreaded.cpp
Updated email addresses in copyright information.
@TacticalGrace I look for lightweight embed language often, lua, python, ecl (embeddable common lisp),
chaiscript are all I know
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_engine.hpp
Modify /trunk/include/chaiscript/language/chaiscript_eval.hpp
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Modify /trunk/src/main.cpp
Move structure to being inheritance-based in preparation for reflection
infrastructure. This technique relies on the vtable's dynamic dispatch for
correct evaluation, and removes the giant switch eval style of previous
revisions.
Changed Paths:
Modify /trunk/include/chaiscript/dispatchkit/dynamic_object.hpp
Modify /trunk/include/chaiscript/dispatchkit/proxy_functions.hpp
Drastically reduce the number of exceptions thrown at runtime (cannot completely
eliminate them all, it's the nature of doing what we are doing with making a
runtime interface to a compiled system like we are).
profile.chai should see something like a reduction from 35,000 exceptions to
about 100.
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Renaming of helper function char_between. Adding help to check for hitting the
end of input.
Changed Paths:
Modify /trunk/include/chaiscript/language/chaiscript_common.hpp
Modify /trunk/include/chaiscript/language/chaiscript_engine.hpp
Modify /trunk/include/chaiscript/language/chaiscript_eval.hpp
Modify /trunk/include/chaiscript/language/chaiscript_parser.hpp
Cleaned up the formatting a bit. Switched parser over to using charBetween,
which significantly improves
readability of the early parsing rules.
Boxing and unboxing should work, but no consideration is made to use array operator delete and new - if that even matters? Something to look into at some point. I think there's some implications at to which boost::shared_ptr invocation should be used as well.
Changed Paths:
Modify /trunk/CMakeLists.txt
Add option for "light" testing, which greatly reduces compile times