Module Sarek_native_gen_expr

type field_access =
  1. | Field_lid of Ppxlib.Longident.t Ppxlib.Location.loc
    (*

    An ordinary record label, usable in both pexp_field and pexp_record's override list -- so both readable and writable.

    *)
  2. | Field_fcm of string
    (*

    Inline first-class-module accessor name. READ-ONLY.

    *)
val field_access_of : loc:Ppxlib.location -> ctx:Sarek_native_gen_base.gen_context -> Sarek_types.typ -> string -> field_access
val gen_field_read : loc:Ppxlib.location -> ctx:Sarek_native_gen_base.gen_context -> Ppxlib__.Import.expression -> Sarek_types.typ -> string -> Ppxlib__.Import.expression
val gen_memory_access : loc:Ppxlib.location -> ctx:Sarek_native_gen_base.gen_context -> gen_expr: (loc:Ppxlib.location -> Sarek_typed_ast.texpr -> Ppxlib_ast.Ast.expression) -> Sarek_typed_ast.texpr -> Ppxlib.expression

Generate memory access operations (vectors, arrays, record fields)

val gen_let_binding : loc:Ppxlib__.Location.t -> ctx:Sarek_native_gen_base.gen_context -> gen_expr: (loc:Ppxlib__.Location.t -> Sarek_typed_ast.texpr -> Ppxlib_ast.Ast.expression) -> gen_expr_impl: (loc:Ppxlib__.Location.t -> ctx:Sarek_native_gen_base.gen_context -> Sarek_typed_ast.texpr -> Ppxlib_ast.Ast.expression) -> Sarek_typed_ast.texpr -> Ppxlib.expression

Generate let bindings (let, let mut, assignment)

val gen_control_flow : loc:Ppxlib.location -> gen_expr: (loc:Ppxlib.location -> Sarek_typed_ast.texpr -> Ppxlib_ast.Ast.expression) -> Sarek_typed_ast.texpr -> Ppxlib.expression

Generate control flow (if, for, while)

val gen_data_structure : loc:Ppxlib.location -> ctx:Sarek_native_gen_base.gen_context -> gen_expr: (loc:Ppxlib.location -> Sarek_typed_ast.texpr -> Ppxlib__.Import.expression) -> Sarek_typed_ast.texpr -> Ppxlib.expression

Generate data structures (records, variants, tuples, arrays)

val gen_special_expr : loc:Ppxlib__.Location.t -> gen_expr: (loc:Ppxlib__.Location.t -> Sarek_typed_ast.texpr -> Ppxlib.expression) -> Sarek_typed_ast.texpr -> Ppxlib.expression

Generate special expressions (return, global ref, native, pragma, open)

val gen_parallel_construct : ?current_module:Stdlib.String.t -> ?inline_types:Sarek_native_gen_base.StringSet.t -> loc:Ppxlib.location -> gen_expr: (loc:Ppxlib.location -> Sarek_typed_ast.texpr -> Ppxlib_ast.Ast.expression) -> Sarek_typed_ast.texpr -> Ppxlib.expression

Generate BSP parallel constructs (let%shared, let%superstep, let rec)