Exemplo n.º 1
0
mclIvp* mclvGetIvp
(  const mclVector*  vec
,  long              idx
,  const mclIvp*     offset
)  
   {  mclIvp   sought
   ;  const mclp *base  =  offset ? offset : vec->ivps
   ;  dim n_ivps        =  vec->n_ivps - (base - vec->ivps)

   ;  mclpInstantiate(&sought, idx, 1.0)

   ;  return
         (vec->n_ivps)
      ?  bsearch(&sought, base, n_ivps, sizeof(mclIvp), mclpIdxCmp)
      :  NULL
;  }
Exemplo n.º 2
0
mclVector* mclvInsertIdx
(  mclVector*  vec
,  long        idx
,  double      val
)  
   {  ofs offset
   
   ;  if (!vec)
      {  vec = mclvInstantiate(NULL, 1, NULL)
      ;  mclpInstantiate(vec->ivps+0, idx, val)
   ;  }
      else if ((offset =  mclvGetIvpOffset(vec, idx, -1)) >= 0)
      vec->ivps[offset].val = val
   ;  else
      {  dim d = vec->n_ivps
      ;  mclvResize(vec, d+1)
      ;  while (d && vec->ivps[d-1].idx > idx)
            vec->ivps[d] = vec->ivps[d-1]
         ,  d--
      ;  vec->ivps[d].val = val
      ;  vec->ivps[d].idx = idx
   ;  }
      return vec
;  }
Exemplo n.º 3
0
void* mclpInit_v
(  void*                  ivp
)  
   {  return mclpInstantiate(ivp, -1, 1.0)
;  }
Exemplo n.º 4
0
mclIvp* mclpCreate
(  long   idx
,  double   value
)  
   {  return mclpInstantiate(NULL, idx, value)
;  }
Exemplo n.º 5
0
mclIvp* mclpInit
(  mclIvp*                 ivp
)  
   {  return mclpInstantiate(ivp, -1, 1.0)
;  }