def _raw_ptr_ops(in_params):
    """Generate pointers to an array to use in place of CArray indexing.

    The ptr will have a name matching the input variable, but will have
    _data appended to the name.

    As a concrete example, `_raw_ptr_ops('raw X x, raw W w')` would return:

        ['X x_data = (X*)&(x[0]);', 'W w_data = (W*)&(w[0]);']

    """
    ops = []
    for in_p in in_params.split(","):
        in_p = in_p.strip()
        if in_p.startswith("raw "):
            _, typ, name = in_p.split(" ")
            ops.append(f"{typ}* {name}_data = ({typ}*)&({name}[0]);")
    return ops