コード例 #1
0
def handle_vector(args, converter, kargs):
    global anon_vecs

    length = 0
    if isinstance(args[0], cpp_ast.CNumber):
        length = args[0].num
    else:
        raise TypeError("vector: invalid length argument: %s" % ars[0])
    tp = None
    if type(args[1]) == cpp_ast.CName:
        try:
            tp = RobustType(args[1].name)
        except KeyError:
            raise TypeError("vector: invalid data type argument: %s" % args[1])
    else:
        raise TypeError("vector: invalid data type argument: %s" % args[1])
    name = "_blb_anon_vec%d" % anon_vecs
    anon_vecs += 1
    model = DataModel(tp, [length], None, name)
    model._declare = True
    converter.data_model[name] = model
    return cpp_ast.CName(name)
コード例 #2
0
ファイル: blb_convert.py プロジェクト: davidhoward/BLB
    def get_register( self, dtype, dim ):
	""" Returns a pair of name, index representing a register. """
	idx = -1
	if not (dtype, dim) in self.registers:
	    self.registers[(dtype,dim)] = [] 
	reglist = self.registers[(dtype,dim)]
	for i in range( len( reglist ) ):
	    if reglist[i]:
		reglist[i] = False
		idx = i
		break
	if idx < 0:
	    reglist.append( False )
	    idx = len( reglist ) - 1
	regname = register_from_spec( dtype, dim, idx )
	try:
	    return self.get_or_create_model( cpp_ast.CName( regname ) ), idx
	except ValueError:
	    register = DataModel( dtype, [dim], name = regname )
	    self.data_model[ regname ] = register
	    register._declare = True
	    return register, idx
コード例 #3
0
ファイル: blb_convert.py プロジェクト: zhaoyan1117/BLB
 def get_register(self, dtype, dim):
     """ Returns a pair of name, index representing a register. """
     idx = -1
     if not (dtype, dim) in self.registers:
         self.registers[(dtype, dim)] = []
     reglist = self.registers[(dtype, dim)]
     for i in range(len(reglist)):
         if reglist[i]:
             reglist[i] = False
             idx = i
             break
     if idx < 0:
         reglist.append(False)
         idx = len(reglist) - 1
     regname = register_from_spec(dtype, dim, idx)
     try:
         return self.get_or_create_model(cpp_ast.CName(regname)), idx
     except ValueError:
         register = DataModel(dtype, [dim], name=regname)
         self.data_model[regname] = register
         register._declare = True
         return register, idx
コード例 #4
0
def handle_vector( args, converter, kargs ):
    global anon_vecs
    
    length = 0
    if isinstance( args[0], cpp_ast.CNumber ):
	length = args[0].num
    else:
	raise TypeError( "vector: invalid length argument: %s" % ars[0] )
    tp = None
    if type( args[1] ) == cpp_ast.CName:
	try:
	    tp = RobustType( args[1].name ) 
	except KeyError:
	    raise TypeError( "vector: invalid data type argument: %s" % args[1] )
    else:
	raise TypeError( "vector: invalid data type argument: %s" % args[1] )
    name = "_blb_anon_vec%d" % anon_vecs
    anon_vecs += 1
    model = DataModel( tp, [length], None, name )
    model._declare = True
    converter.data_model[ name ] = model
    return cpp_ast.CName( name )