本文整理汇总了C++中Environment::Library方法的典型用法代码示例。如果您正苦于以下问题:C++ Environment::Library方法的具体用法?C++ Environment::Library怎么用?C++ Environment::Library使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Environment
的用法示例。
在下文中一共展示了Environment::Library方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main ()
{
printf ("Results of mathlib_performance test:\n");
try
{
Environment env;
Shell shell ("lua", env);
xtl::com_ptr<IInterpreter> script (shell.Interpreter ());
env.Library ("global").Register ("typename", make_invoker (&get_typename));
env.BindLibraries ("Math");
load_script (*script, SCRIPT_FILE_NAME);
printf ("Test c++ performance:\n");
size_t start_time = common::milliseconds ();
float test_result = test ();
printf ("Duration = %u ms, result = %f\n", common::milliseconds () - start_time, test_result);
printf ("Test lua performance:\n");
start_time = common::milliseconds ();
test_result = invoke<float> (*script, "test");
printf ("Duration = %u ms, result = %f\n", common::milliseconds () - start_time, test_result);
}
catch (xtl::bad_any_cast& exception)
{
printf ("%s: %s -> %s\n", exception.what (), exception.source_type ().name (), exception.target_type ().name ());
}
catch (std::exception& exception)
{
printf ("exception: %s\n", exception.what ());
}
return 0;
}
示例2: bind_axis_aligned_box_library
void bind_axis_aligned_box_library (Environment& environment)
{
typedef axis_aligned_box<T> box_type;
typedef typename box_type::vec_type vec_type;
InvokerRegistry lib = environment.CreateLibrary (BV_AXIS_ALIGNED_BOX_LIBRARY);
InvokerRegistry global_lib = environment.Library ("global");
//регистрация функций создания
lib.Register ("Create", make_invoker (
make_invoker ((box_type (*)(T, T, T, T, T, T))&create_axis_aligned_box<T>),
make_invoker ((box_type (*)(const vec_type&, const vec_type&))&create_axis_aligned_box<T>),
make_invoker ((box_type (*)())&create_axis_aligned_box<T>)
));
global_lib.Register ("AABB", lib, "Create");
//регистрация статических переменных
bind_static_axis_aligned_box_library (environment);
//регистрация операций
lib.Register ("set_Minimum", make_invoker (implicit_cast<void (axis_aligned_box<T>::*) (const typename axis_aligned_box<T>::vec_type&)>
(&box_type::set_minimum)));
lib.Register ("set_Maximum", make_invoker (implicit_cast<void (box_type::*) (const typename box_type::vec_type&)>
(&box_type::set_maximum)));
lib.Register ("get_Minimum", make_invoker (&box_type::minimum));
lib.Register ("get_Maximum", make_invoker (&box_type::maximum));
lib.Register ("get_Center", make_invoker (&box_type::center));
lib.Register ("get_Size", make_invoker (&box_type::size));
lib.Register ("get_Radius", make_invoker (&box_type::radius));
lib.Register ("get_Empty", make_invoker (&box_type::empty));
lib.Register ("SetExtents", make_invoker (implicit_cast<void (box_type::*)
(const typename box_type::vec_type&, const typename box_type::vec_type&)> (&box_type::set_extents)));
lib.Register ("Corner", make_invoker (&box_type::corner));
lib.Register ("Reset", make_invoker (&box_type::reset));
lib.Register ("__add", make_invoker (implicit_cast<box_type (box_type::*)
(const box_type&) const> (&box_type::operator +)));
lib.Register ("__mul", make_invoker (
make_invoker (implicit_cast<box_type (box_type::*) (const matrix<T, 4>&) const> (&box_type::operator *)),
make_invoker (implicit_cast<box_type (box_type::*) (const quat<T>&) const> (&box_type::operator *))
));
// lib.Register ("__eq", make_invoker (&box_type::operator ==));
lib.Register ("get_Volume", make_invoker (&bound_volumes::volume<T>));
lib.Register ("Equal", make_invoker (xtl::implicit_cast<bool (*)(const box_type&, const box_type&, const T& eps)> (&bound_volumes::equal<T>)));
lib.Register ("Intersects", make_invoker (implicit_cast<bool (*) (const box_type&, const box_type&)> (&bound_volumes::intersects)));
lib.Register ("Contains", make_invoker (
make_invoker (implicit_cast<bool (*) (const box_type&, const box_type&)> (&bound_volumes::contains)),
make_invoker (implicit_cast<bool (*) (const box_type&, const math::vector<T, 3>&)> (&bound_volumes::contains))
));
lib.Register ("Intersection", make_invoker (implicit_cast<box_type (*) (const box_type&, const box_type&)> (&bound_volumes::intersection)));
//регистрация типов данных
environment.RegisterType<box_type> (BV_AXIS_ALIGNED_BOX_LIBRARY);
}