Exemplo n.º 1
0
 def _get_expl_text(self, symno):
     ret, _recs, _user_info, expl_text = gdxcc.gdxSymbolInfoX(
         self._h, symno)
     if ret > 0:
         return expl_text.encode(errors='replace').decode()
     else:
         return None
Exemplo n.º 2
0
 def get_sid_info(self,j):
     '''Return a dict of metadata for symbol with ID j.'''
     h = self.gdx_handle
     r, name, dims, stype = gdxcc.gdxSymbolInfo(h, j)
     assert r, '%d is not a valid symbol number' % j
     r, records, userinfo, description = gdxcc.gdxSymbolInfoX(h, j)
     assert r, '%d is not a valid symbol number' % j
     return {'name':name, 'stype':stype, 'desc':description, 'dim':dims}
Exemplo n.º 3
0
 def get_sid_info(self,j):
     if __gdxpy_mode__ != GDX_MODE_API:
         raise Exception('Function "get_sid_info" not available outside GDX API mode')
     h = self.gdxHandle
     r, name, dims, stype = gdxcc.gdxSymbolInfo(h, j)
     assert r, '%d is not a valid symbol number' % j
     r, records, userinfo, description = gdxcc.gdxSymbolInfoX(h, j)
     assert r, '%d is not a valid symbol number' % j
     return {'name':name, 'stype':stype, 'desc':description, 'dim':dims}
Exemplo n.º 4
0
def symbol_info(H, num):
    ret, name, dims, type = gdxcc.gdxSymbolInfo(H, num)
    if ret != 1:
        raise GDX_error(H, "Couldn't get symbol info")
    ret, records, userinfo, description = gdxcc.gdxSymbolInfoX(H, num)
    if ret != 1:
        raise GDX_error(H, "Couldn't get extended symbol info")

    if type == gdxcc.GMS_DT_PAR and dims == 0:
        typename = "Scalar"
    else:
        typename = symbol_type_text[type]

    full_typename = ""
    if type == gdxcc.GMS_DT_VAR:
        full_typename = variable_type_text[userinfo] + " "
    full_typename += typename

    domain = [None] * dims
    if dims > 0 and num > 0:
        ret, gdx_domain = gdxcc.gdxSymbolGetDomain(H, num)
        if ret != 1:
            raise GDX_error(H, "Couldn't get symbol domain")
        if len(gdx_domain) < dims:
            gdx_domain = None
        for i in range(dims):
            d = gdx_domain[i] if gdx_domain else 0
            domain[i] = {"index": d}
            if d == 0:
                domain[i]["key"] = "*"
            else:
                ret, domain[i]["key"], dummy1, dummy2 = gdxcc.gdxSymbolInfo(H, d)

    return {
        "name": name,
        "number": num,
        "type": type,
        "typename": typename,
        "full_typename": full_typename,
        "dims": dims,
        "records": records,
        "userinfo": userinfo,
        "description": description,
        "domain": domain,
    }
Exemplo n.º 5
0
def symbol_info(H, num):
    ret, name, dims, type = gdxcc.gdxSymbolInfo(H, num)
    if ret != 1: raise GDX_error(H, "Couldn't get symbol info")
    ret, records, userinfo, description = gdxcc.gdxSymbolInfoX(H, num)
    if ret != 1: raise GDX_error(H, "Couldn't get extended symbol info")

    if type == gdxcc.GMS_DT_PAR and dims == 0:
        typename = "Scalar"
    else:
        typename = symbol_type_text[type]

    full_typename = ""
    if type == gdxcc.GMS_DT_VAR:
        full_typename = variable_type_text[userinfo] + " "
    full_typename += typename

    domain = [None] * dims
    if dims > 0 and num > 0:
        ret, gdx_domain = gdxcc.gdxSymbolGetDomain(H, num)
        if ret != 1: raise GDX_error(H, "Couldn't get symbol domain")
        if len(gdx_domain) < dims: gdx_domain = None
        for i in range(dims):
            d = gdx_domain[i] if gdx_domain else 0
            domain[i] = { "index": d }
            if d == 0:
                domain[i]["key"] = "*"
            else:
                ret, domain[i]["key"], dummy1, dummy2 = gdxcc.gdxSymbolInfo(H, d)

    return {
      "name": name,
      "number": num,
      "type": type,
      "typename": typename,
      "full_typename": full_typename,
      "dims": dims,
      "records": records,
      "userinfo": userinfo,
      "description": description,
      "domain": domain
     }
Exemplo n.º 6
0
    def __init__(self,name,data_type,dims=0,file=None,index=None,
                 description='',variable_type=None,equation_type=None): 
        self._name = name
        self.description = description
        self._loaded = False
        self._data_type = GamsDataType(data_type)
        self._variable_type = None; self.variable_type = variable_type
        self._equation_type = None; self.equation_type = equation_type
        self._dataframe = None
        self._dims = []; self.dims = dims       
        assert self._dataframe is not None
        self._file = file
        self._index = index        

        if self.file is not None:
            # reading from file
            # get additional meta-data
            ret, records, userinfo, description = gdxcc.gdxSymbolInfoX(self.file.H,self.index)
            if ret != 1:
                raise GdxError(self.file.H,"Unable to get extended symbol information for {}".format(self.name))
            self._num_records = records
            if self.data_type == GamsDataType.Variable:
                self.variable_type = GamsVariableType(userinfo)
            elif self.data_type == GamsDataType.Equation:
                self.equation_type = GamsEquationType(userinfo)
            self.description = description
            if self.index > 0:
                ret, gdx_domain = gdxcc.gdxSymbolGetDomainX(self.file.H,self.index)
                if ret == 0:
                    raise GdxError(self.file.H,"Unable to get domain information for {}".format(self.name))
                assert len(gdx_domain) == len(self.dims), "Dimensional information read in from GDX should be consistent."
                self.dims = gdx_domain
            else:
                # universal set
                assert self.index == 0
                self._loaded = True
            return
        
        # writing new symbol
        self._loaded = True
        return