2 downloads for months of work
Nontheless, still working hard on ep, believe it or not but remaking the compiler took me 3 or so days of rigorous debugging.
Upcoming release:
Code:
If you are sharing your ep source code, there is no need to give away your library modules (.dll) as well.
Because they're built into the generated *.oep compiled file! This is what took all of my debugging time, it was.. agitating.
Adding run-time overload-like behaviour, using the "specialize" keyword, you can specialize methods to certain expressions,
like such:
import( bo, type_traits );
method add( &a, &b )
{
// do some error reporting because a and b are invalid
};
specialize<is_arithmetic( a ) && is_arithmetic( b );>
method add( &a, &b )
{
return a + b;
};
specialize<is_string_literal( a ) && is_arithmetic( b );>
method add( &a, &b )
{
return a + b;
};
specialize<is_string_literal( a ) && is_string_literal( b );>
method add( &a, &b )
{
return a + b;
};
// here, we can only assume the operator '+' of 'a' only supports a same type
// rhs argument. (b)
specialize<is_same( a, b ) && type_has_method( a, "+" );>
method add( &a, &b )
{
return a + b;
};
Also, sneak peak of a library I've been implementing:
Code:
-->> Type system:
---->> floating
-------->> floating::floating( &other )
-------->> floating::~floating( )
-------->> floating::=( &rhs )
-------->> floating::+( &rhs )
-------->> floating::-( &rhs )
-------->> floating::*( &rhs )
-------->> floating::/( &rhs )
-------->> floating::&&( &rhs )
-------->> floating::||( &rhs )
-------->> floating::==( &rhs )
-------->> floating::!=( &rhs )
-------->> floating::>( &rhs )
-------->> floating::<( &rhs )
-------->> floating::>=( &rhs )
-------->> floating::<=( &rhs )
---->> integral
-------->> integral::integral( &other )
-------->> integral::~integral( )
-------->> integral::=( &rhs )
-------->> integral::+( &rhs )
-------->> integral::-( &rhs )
-------->> integral::*( &rhs )
-------->> integral::/( &rhs )
-------->> integral::%( &rhs )
-------->> integral::&( &rhs )
-------->> integral::|( &rhs )
-------->> integral::&&( &rhs )
-------->> integral::||( &rhs )
-------->> integral::==( &rhs )
-------->> integral::!=( &rhs )
-------->> integral::>( &rhs )
-------->> integral::<( &rhs )
-------->> integral::>=( &rhs )
-------->> integral::<=( &rhs )
-------->> integral::~( )
-------->> integral::^( &rhs )
---->> string_literal
-------->> string_literal::string_literal( &other )
-------->> string_literal::~string_literal( )
-------->> string_literal::=( &rhs )
-------->> string_literal::==( &rhs )
-------->> string_literal::!=( &rhs )
-------->> string_literal::+( &rhs )
---->> type_info
-------->> type_info::type_info( &other )
-------->> type_info::~type_info( )
-------->> type_info::bare_equal( &other )
-------->> type_info::get_name( )
-------->> type_info::==( &other )
-------->> type_info::!=( &other )
-------->> type_info::=( &other )
---->> nullptr_t
-------->> nullptr_t::~nullptr_t( )
---->> vector
-------->> vector::vector( )
-------->> vector::~vector( )
-------->> vector::emplace_back( &element )
-------->> vector::erase( &it )
-------->> vector::begin( )
-------->> vector::end( )
-------->> vector::for_each( &method )
-------->> vector::pop_back( )
-------->> vector::clear( )
-------->> vector::empty( )
-------->> vector::size( )
-------->> vector::capacity( )
---->> vector::iterator
-------->> vector::iterator::~vector::iterator( )
-------->> vector::iterator::<( &it1 )
-------->> vector::iterator::>( &it1 )
-------->> vector::iterator::increment( )
-------->> vector::iterator::decrement( )
-------->> vector::iterator::access( )
---->> dx_Application
-------->> dx_Application::~dx_Application( )
-------->> dx_Application::run( )
-------->> dx_Application::exit( )
-------->> dx_Application::register_window( &arg1 )
-------->> dx_Application::unregister_window( &arg1 )
-------->> dx_Application::set_tick_rate( &arg1 )
-------->> dx_Application::set_clipboard( &arg1 )
-------->> dx_Application::on_tick( &arg1 )
-------->> dx_Application::begin_invoke( &arg1 )
-------->> dx_Application::=( &arg1 )
---->> dx_Vector2
-------->> dx_Vector2::dx_Vector2( &arg, &arg1 )
-------->> dx_Vector2::~dx_Vector2( )
-------->> dx_Vector2::intersects( &arg1 )
-------->> dx_Vector2::dot( &arg1 )
-------->> dx_Vector2::magnitude( )
-------->> dx_Vector2::+=( &arg1 )
-------->> dx_Vector2::-=( &arg1 )
-------->> dx_Vector2::=( &arg1 )
-------->> dx_Vector2::+( &arg1 )
-------->> dx_Vector2::-( &arg1 )
-------->> dx_Vector2::*( &arg1 )
-------->> dx_Vector2::/( &arg1 )
-------->> dx_Vector2::>( &arg1 )
-------->> dx_Vector2::<( &arg1 )
-------->> dx_Vector2::>=( &arg1 )
-------->> dx_Vector2::<=( &arg1 )
-------->> dx_Vector2::==( &arg1 )
-------->> dx_Vector2::!=( &arg1 )
-------->> dx_Vector2::get_x( )
-------->> dx_Vector2::get_y( )
---->> dx_Region
-------->> dx_Region::dx_Region( &arg, &arg1 )
-------->> dx_Region::~dx_Region( )
-------->> dx_Region::move_by( &arg1 )
-------->> dx_Region::move_to( &arg1 )
-------->> dx_Region::resize_by( &arg1 )
-------->> dx_Region::resize_to( &arg1 )
-------->> dx_Region::intersects( &arg1 )
-------->> dx_Region::get_position( )
-------->> dx_Region::get_size( )
---->> dx_Path
-------->> dx_Path::dx_Path( &arg )
-------->> dx_Path::~dx_Path( )
-------->> dx_Path::as_string( )
-------->> dx_Path::previous( )
-------->> dx_Path::upto_previous( )
-------->> dx_Path::root( )
-------->> dx_Path::filename( )
-------->> dx_Path::extension( )
-------->> dx_Path::branches( )
-------->> dx_Path::remove_extension( )
-------->> dx_Path::remove_directories( )
-------->> dx_Path::remove_filename( )
-------->> dx_Path::extension_is( &arg1 )
-------->> dx_Path::has_extension( )
-------->> dx_Path::has_filename( )
-------->> dx_Path::has_branches( )
-------->> dx_Path::is_directory( )
-------->> dx_Path::=( &arg1 )
---->> dx_Texture
-------->> dx_Texture::dx_Texture( &arg, &arg1 )
-------->> dx_Texture::~dx_Texture( )
-------->> dx_Texture::get_size( )
-------->> dx_Texture::paint( &arg1 )
-------->> dx_Texture::=( &arg1 )
---->> dx_Pen
-------->> dx_Pen::dx_Pen( &arg, &arg1 )
-------->> dx_Pen::~dx_Pen( )
-------->> dx_Pen::get_color( )
-------->> dx_Pen::set_color( &arg1 )
-------->> dx_Pen::get_thickness( )
-------->> dx_Pen::set_thickness( &arg1 )
-------->> dx_Pen::=( &arg1 )
---->> dx_FontContext
-------->> dx_FontContext::dx_FontContext( )
-------->> dx_FontContext::~dx_FontContext( )
-------->> dx_FontContext::get_height( )
-------->> dx_FontContext::get_weight( )
-------->> dx_FontContext::set_height( &arg1 )
-------->> dx_FontContext::set_weight( &arg1 )
-------->> dx_FontContext::make_proof_quality( )
-------->> dx_FontContext::make_default_quality( )
-------->> dx_FontContext::=( &arg1 )
---->> dx_Font
-------->> dx_Font::dx_Font( &arg, &arg1, &arg2 )
-------->> dx_Font::~dx_Font( )
-------->> dx_Font::get_context( )
-------->> dx_Font::string_size( &arg1 )
-------->> dx_Font::=( &arg1 )
---->> dx_Line
-------->> dx_Line::dx_Line( &arg, &arg1, &arg2 )
-------->> dx_Line::~dx_Line( )
-------->> dx_Line::get_position( )
-------->> dx_Line::get_target( )
-------->> dx_Line::get_pen( )
-------->> dx_Line::set_position( &arg1 )
-------->> dx_Line::set_target( &arg1 )
-------->> dx_Line::set_pen( &arg1 )
-------->> dx_Line::=( &arg1 )
---->> dx_Text
-------->> dx_Text::dx_Text( &arg, &arg1, &arg2, &arg3 )
-------->> dx_Text::~dx_Text( )
-------->> dx_Text::get_font( )
-------->> dx_Text::get_text( )
-------->> dx_Text::get_position( )
-------->> dx_Text::get_max_clip( )
-------->> dx_Text::set_font( &arg1 )
-------->> dx_Text::set_text( &arg1 )
-------->> dx_Text::set_position( &arg1 )
-------->> dx_Text::set_max_clip( &arg1 )
-------->> dx_Text::=( &arg1 )
---->> dx_WindowMovedArgs
-------->> dx_WindowMovedArgs::~dx_WindowMovedArgs( )
-------->> dx_WindowMovedArgs::is_handled( )
-------->> dx_WindowMovedArgs::get_region( )
-------->> dx_WindowMovedArgs::make_handled( )
---->> dx_WindowResizedArgs
-------->> dx_WindowResizedArgs::~dx_WindowResizedArgs( )
-------->> dx_WindowResizedArgs::is_handled( )
-------->> dx_WindowResizedArgs::get_region( )
-------->> dx_WindowResizedArgs::make_handled( )
---->> dx_WindowClosingArgs
-------->> dx_WindowClosingArgs::~dx_WindowClosingArgs( )
-------->> dx_WindowClosingArgs::is_handled( )
-------->> dx_WindowClosingArgs::get_should_close( )
-------->> dx_WindowClosingArgs::set_should_close( &arg1 )
-------->> dx_WindowClosingArgs::make_handled( )
---->> dx_KeyDownArgs
-------->> dx_KeyDownArgs::~dx_KeyDownArgs( )
-------->> dx_KeyDownArgs::is_handled( )
-------->> dx_KeyDownArgs::make_handled( )
-------->> dx_KeyDownArgs::is_ctrl_down( )
-------->> dx_KeyDownArgs::is_shift_down( )
-------->> dx_KeyDownArgs::get_key_code( )
---->> dx_KeyUpArgs
-------->> dx_KeyUpArgs::~dx_KeyUpArgs( )
-------->> dx_KeyUpArgs::is_handled( )
-------->> dx_KeyUpArgs::make_handled( )
-------->> dx_KeyUpArgs::is_ctrl_down( )
-------->> dx_KeyUpArgs::is_shift_down( )
-------->> dx_KeyUpArgs::get_key_code( )
---->> dx_KeyDownCharArgs
-------->> dx_KeyDownCharArgs::~dx_KeyDownCharArgs( )
-------->> dx_KeyDownCharArgs::is_handled( )
-------->> dx_KeyDownCharArgs::make_handled( )
-------->> dx_KeyDownCharArgs::get_string( )
---->> dx_MouseMovedArgs
-------->> dx_MouseMovedArgs::~dx_MouseMovedArgs( )
-------->> dx_MouseMovedArgs::is_handled( )
-------->> dx_MouseMovedArgs::make_handled( )
-------->> dx_MouseMovedArgs::is_ctrl_down( )
-------->> dx_MouseMovedArgs::is_shift_down( )
-------->> dx_MouseMovedArgs::get_position( )
---->> dx_MouseClickedArgs
-------->> dx_MouseClickedArgs::~dx_MouseClickedArgs( )
-------->> dx_MouseClickedArgs::is_handled( )
-------->> dx_MouseClickedArgs::make_handled( )
-------->> dx_MouseClickedArgs::is_ctrl_down( )
-------->> dx_MouseClickedArgs::is_shift_down( )
-------->> dx_MouseClickedArgs::get_key_code( )
-------->> dx_MouseClickedArgs::get_position( )
---->> dx_MouseReleasedArgs
-------->> dx_MouseReleasedArgs::~dx_MouseReleasedArgs( )
-------->> dx_MouseReleasedArgs::is_handled( )
-------->> dx_MouseReleasedArgs::make_handled( )
-------->> dx_MouseReleasedArgs::is_ctrl_down( )
-------->> dx_MouseReleasedArgs::is_shift_down( )
-------->> dx_MouseReleasedArgs::get_key_code( )
-------->> dx_MouseReleasedArgs::get_position( )
---->> dx_ScrollArgs
-------->> dx_ScrollArgs::~dx_ScrollArgs( )
-------->> dx_ScrollArgs::is_handled( )
-------->> dx_ScrollArgs::make_handled( )
-------->> dx_ScrollArgs::is_ctrl_down( )
-------->> dx_ScrollArgs::is_shift_down( )
-------->> dx_ScrollArgs::is_scrolling_up( )
-------->> dx_ScrollArgs::is_scrolling_down( )
---->> dx_MessageDataArgs
-------->> dx_MessageDataArgs::~dx_MessageDataArgs( )
-------->> dx_MessageDataArgs::is_handled( )
-------->> dx_MessageDataArgs::make_handled( )
-------->> dx_MessageDataArgs::get_lparam( )
-------->> dx_MessageDataArgs::get_wparam( )
-------->> dx_MessageDataArgs::get_msg_code( )
---->> dx_Window
-------->> dx_Window::dx_Window( &arg, &arg1, &arg2, &arg3 )
-------->> dx_Window::~dx_Window( )
-------->> dx_Window::get_title( )
-------->> dx_Window::get_class( )
-------->> dx_Window::client_to_screen( &arg1 )
-------->> dx_Window::screen_to_client( &arg1 )
-------->> dx_Window::hide( )
-------->> dx_Window::show( )
-------->> dx_Window::bring_to_top( )
-------->> dx_Window::minimize( )
-------->> dx_Window::maximize( )
-------->> dx_Window::restore( )
-------->> dx_Window::force_paint( )
-------->> dx_Window::enable( )
-------->> dx_Window::disable( )
-------->> dx_Window::load_icon( &arg1 )
-------->> dx_Window::load_icon_small( &arg1 )
-------->> dx_Window::close( )
-------->> dx_Window::get_parent( )
-------->> dx_Window::get_painter( )
-------->> dx_Window::set_painter( &arg1, &arg2 )
-------->> dx_Window::has_painter( )
-------->> dx_Window::get_width( )
-------->> dx_Window::get_height( )
-------->> dx_Window::is_ctrl_held( )
-------->> dx_Window::is_shift_held( )
-------->> dx_Window::is_key_down( &arg1 )
-------->> dx_Window::handle_tasks( )
-------->> dx_Window::poll_events( )
-------->> dx_Window::=( &arg1 )
-------->> dx_Window::dont_paint_on_event( )
-------->> dx_Window::paint_on_event( )
-------->> dx_Window::on_window_resize( &arg1 )
-------->> dx_Window::on_window_moved( &arg1 )
-------->> dx_Window::on_paint( &arg1 )
-------->> dx_Window::on_window_maximize( &arg1 )
-------->> dx_Window::on_window_minimize( &arg1 )
-------->> dx_Window::on_window_restored( &arg1 )
-------->> dx_Window::on_window_closed( &arg1 )
-------->> dx_Window::on_window_closing( &arg1 )
-------->> dx_Window::on_mouse_moved( &arg1 )
-------->> dx_Window::on_mouse_clicked( &arg1 )
-------->> dx_Window::on_mouse_released( &arg1 )
-------->> dx_Window::on_mouse_double_clicked( &arg1 )
-------->> dx_Window::on_mouse_scroll( &arg1 )
-------->> dx_Window::on_key_down( &arg1 )
-------->> dx_Window::on_key_up( &arg1 )
-------->> dx_Window::on_key_down_char( &arg1 )
-------->> dx_Window::on_handle_message( &arg1 )
---->> dx_Painter
-------->> dx_Painter::dx_Painter( &arg )
-------->> dx_Painter::~dx_Painter( )
-------->> dx_Painter::reset_painter( &arg1, &arg2 )
-------->> dx_Painter::begin_paint( )
-------->> dx_Painter::paint_text( &arg1, &arg2 )
-------->> dx_Painter::paint_rect( &arg1, &arg2 )
-------->> dx_Painter::paint_rect_outlined( &arg1, &arg2, &arg3 )
-------->> dx_Painter::paint_line( &arg1 )
-------->> dx_Painter::present_paint( )
-------->> dx_Painter::get_default_font( )
-------->> dx_Painter::set_default_font( &arg1 )
-------->> dx_Painter::=( &arg1 )
---->> thread
-------->> thread::thread( )
-------->> thread::~thread( )
-------->> thread::start( &arg1 )
-------->> thread::is_running( )
-------->> thread::wait( &arg1 )
-------->> thread::suspend( )
-------->> thread::resume( )
-------->> thread::kill( )
-------->> thread::sleep( &arg1 )
---->> milliseconds
-------->> milliseconds::milliseconds( &arg )
-------->> milliseconds::~milliseconds( )
-------->> milliseconds::count( )
---->> fstream
-------->> fstream::fstream( &fname, &ftype )
-------->> fstream::~fstream( )
-------->> fstream::close( )
-------->> fstream::eof( )
-------->> fstream::getln( )
-------->> fstream::putln( &input )
-------->> fstream::put( &input )
-------->> fstream::<<( &input )
-------->> fstream::>>( &output )
---->> ostream
-------->> ostream::~ostream( )
-------->> ostream::putln( &input )
-------->> ostream::put( &input )
-------->> ostream::<<( &input )
---->> istream
-------->> istream::~istream( )
-------->> istream::getln( )
-------->> istream::>>( &output )
---->> std::endl
-------->> std::endl::~std::endl( )