Exemplo n.º 1
0
// NOTE ADD LAMDBA PARSER HERE
Expr*
Parser::lambda_expr()
{
  require(bslash_tok);

  //Match the identifier inserted earlier
  Token n = match(identifier_tok);
  // parameter-clause
  Decl_seq parms;
  match(lparen_tok);
  while (lookahead() != rparen_tok)
  {

    Decl* p = parameter_decl();

    parms.push_back(p);
    if (match_if(comma_tok))
    {
      continue;
    }
    else
      break;
  }
  match(rparen_tok);

  // return-type
  match(arrow_tok);
  Type const* t = type();
  // must be function-definition
  Stmt* s = block_stmt();

  //return a lambda expression
  return on_lambda(n, parms, t, s);
}
Exemplo n.º 2
0
LRESULT core_win32::window_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, bool& is_handled)
{
    switch (message)
    {
    case WM_CREATE:
        on_create();
        break;
    case WM_LAMBDA:
        on_lambda(reinterpret_cast<ui_task_type*>(lparam));
        break;
    case WM_SIZE:
        on_size(LOWORD(lparam), HIWORD(lparam), static_cast<int>(wparam));
        break;
    case WM_SETFOCUS:
    case WM_KILLFOCUS:
        on_focus_changed(message == WM_SETFOCUS);
        break;
    case WM_ENTERSIZEMOVE:
    case WM_EXITSIZEMOVE:
        on_enter_exit_sizemove(message == WM_ENTERSIZEMOVE);
        break;
    case WM_GETMINMAXINFO:
        on_get_minmax_info(reinterpret_cast<MINMAXINFO*>(lparam));
        break;
    case WM_DESTROY:
        on_destroy();
        break;
    default:
        is_handled = false;
        break;
    }
    return 0;
}