R/014_lin_ops_CVXcanon.R

Defines functions CVXcanon.build_matrix

#####
## DO NOT EDIT THIS FILE!! EDIT THE SOURCE INSTEAD: rsrc_tree/lin_ops/CVXcanon.R
#####

## R-SPECIFIC: C++ CVXcanon bridge (Rcpp wrapper)

CVXcanon.build_matrix <- function(constraints, id_to_col, var_length,
                                   param_to_size = integer(0),
                                   constr_offsets) {
  ## Returns a ProblemData accessor object.
  ## var_length: total number of variable columns (constants go at column var_length).
  ## param_to_size: named integer vector, param_id -> param_size (empty for non-DPP).
  ptr <- NA
  if (missing(constr_offsets)) {
    ptr <- .Call('_CVXR_build_matrix_0',
                 constraints$getXPtr(),
                 id_to_col,
                 as.integer(var_length),
                 param_to_size,
                 PACKAGE = 'CVXR')
  } else {
    ptr <- .Call('_CVXR_build_matrix_1',
                 constraints$getXPtr(),
                 id_to_col,
                 as.integer(var_length),
                 param_to_size,
                 constr_offsets,
                 PACKAGE = 'CVXR')
  }

  ## Set extraction to CONSTANT_ID (-1), vec_idx = 0 (non-DPP path)
  .Call('_CVXR_ProblemData__set_param_id', ptr, -1L, PACKAGE = "CVXR")
  .Call('_CVXR_ProblemData__set_vec_idx', ptr, 0L, PACKAGE = "CVXR")

  getV <- function() {
    .Call('_CVXR_ProblemData__getV', ptr, PACKAGE = "CVXR")
  }

  getI <- function() {
    .Call('_CVXR_ProblemData__getI', ptr, PACKAGE = "CVXR")
  }

  getJ <- function() {
    .Call('_CVXR_ProblemData__getJ', ptr, PACKAGE = "CVXR")
  }

  getParamIds <- function() {
    .Call('_CVXR_ProblemData__get_param_ids', ptr, PACKAGE = "CVXR")
  }

  getNumVecs <- function(pid) {
    .Call('_CVXR_ProblemData__get_num_vecs', ptr, as.integer(pid), PACKAGE = "CVXR")
  }

  setParamId <- function(pid) {
    .Call('_CVXR_ProblemData__set_param_id', ptr, as.integer(pid), PACKAGE = "CVXR")
  }

  setVecIdx <- function(idx) {
    .Call('_CVXR_ProblemData__set_vec_idx', ptr, as.integer(idx), PACKAGE = "CVXR")
  }

  list(getV = getV, getI = getI, getJ = getJ,
       getParamIds = getParamIds, getNumVecs = getNumVecs,
       setParamId = setParamId, setVecIdx = setVecIdx)
}

Try the CVXR package in your browser

Any scripts or data that you put into this service are public.

CVXR documentation built on March 6, 2026, 9:10 a.m.