import __common__

def keyquery(cnam=None, cdim=None):
  if cnam is None and cdim is None:
    return( set(['INT:HEAD']) )
  else:
    return( set(['VAR','INT']) )

def getval(prob, cnam=None, cdim=None):
  if (cnam is None and cdim is None) or (prob.intvarnum == 0):
    return( prob.intvarnum )
  
  else:
    cnam = __common__.parse_cnam(cnam)
    cdim = __common__.parse_cdim(cdim)
    
    prob.intvar.sort()
    numint = 0
    curint = 0
    j = -1
    for k in range(prob.varstacknum):
      if cnam(prob.varstackdomain[k]) and cdim(prob.varstackdim[k]):
        for km in range(prob.varstackdim[k]):
          j += 1
  
          while j > prob.intvar[curint]:
            curint += 1
            if curint >= prob.intvarnum:
              return( numint )
  
          if j == prob.intvar[curint]:
            numint += 1
      else:
        j += prob.varstackdim[k]
  
    return( numint )
