コード例 #1
0
    def make_constructor(self,obj,name,parent=None,InOut_Filter=None, VaribleSignalFilter = None ):
        primary = hdl.get_primary_object(obj)

        TypeName = hdl.get_type_simple(primary)
        member = primary.getMember()  

        VariableList = "  variable ret : "  + TypeName+ " := " + TypeName +"_null;"

        name = TypeName +"_ctr"
        
        fl = flat_member_list(primary, [])
        

        Constructor_Default_arguments=self.get_constroctor_default_list(obj)
        argList = [
            join_str(x["name"],Delimeter="_") + " : integer := " + str(value(x["symbol"]))
            for x in Constructor_Default_arguments 
            ]
        Argliststr = join_str(argList,Delimeter="; ",IgnoreIfEmpty=True)

        body= [
            "    ret." + join_str(x["name"],Delimeter=".")  + " := "+  hdl.get_type_simple(x["symbol"]) + "_ctr(" + join_str(x["name"],Delimeter="_")   +");\n"
            for x in Constructor_Default_arguments 
        ]
        body = join_str(body,IgnoreIfEmpty=True)
        body += "    return ret;\n"

        func = v_function(body=body, returnType=TypeName, argumentList=Argliststr,VariableList=VariableList,name=name,IsEmpty=False,isFreeFunction=True)
        setattr(parent, name, func)
コード例 #2
0
    def _vhdl__call_member_func(self, obj, name, args, astParser=None):

        primary = hdl.get_primary_object(obj)
        obj.__hdl_converter__ = primary.__hdl_converter__

        call_obj = hdl.get_get_call_member_function(obj, name, args)
        ret = call_obj.HDL_Call(astParser, args, obj)
        return ret
コード例 #3
0
    def prepare_for_conversion(self,obj):
        primary = hdl.get_primary_object(obj)
        obj.__hdl_converter__ = primary.__hdl_converter__
        if not primary.__hdl_converter__.extractedTypes:
            primary.__hdl_converter__.extractedTypes += vc_helper.extract_components(primary)

        members = obj.getMember()
        for m in members:
            hdl.prepare_for_conversion(m["symbol"])
コード例 #4
0
    def impl_architecture_body(self, obj):
        primary = hdl.get_primary_object(obj)
        obj.__hdl_converter__ = primary.__hdl_converter__
        ret = []
        for x in obj.__hdl_converter__.archetecture_list:
            ret.append(hdl.impl_architecture_body(x["symbol"]))

        ret = join_str(ret, LineBeginning="  ")
        ret = ret.replace("!!SELF!!", str(obj.__hdl_name__))
        return ret
コード例 #5
0
    def get_constroctor_default_list(self, obj):
        primary = hdl.get_primary_object(obj)
        if primary.__hdl_converter__.Constructor_Default_arguments:
            return primary.__hdl_converter__.Constructor_Default_arguments

        fl = flat_member_list(primary, [])
        primary.__hdl_converter__.Constructor_Default_arguments = [
            x for x in fl
            if not x["symbol"].__abstract_type_info__.UseDefaultCtr
        ]
        return primary.__hdl_converter__.Constructor_Default_arguments
コード例 #6
0
    def get_functions(self):
        
  
        primary = hdl.get_primary_object(self.freeFunction)
        self.freeFunction.__hdl_converter__ = primary.__hdl_converter__
        self.freeFunction.__hdl_converter__.MissingTemplate = False

        
        print_cnvt(str(gTemplateIndent) +'<processing name="'  + self.freeFunction.FuncName +'" MemfunctionCalls="' +str(len(self.freeFunction.__hdl_converter__.MemfunctionCalls)) +'">')
        self.__request_function_with_default_arguments__()
        print_cnvt(str(gTemplateIndent)+'</processing>')   


        fun_ret = self.__implement_requested_functions__()
        
        return fun_ret
コード例 #7
0
    def impl_get_init_values(self,
                             obj,
                             parent=None,
                             InOut_Filter=None,
                             VaribleSignalFilter=None,
                             ForceExpand=False):
        primary = hdl.get_primary_object(obj)

        if ForceExpand:
            member = obj.getMember()
            Content = [
                hdl.def_record_Member_Default(x["symbol"], x["name"],
                                              obj.getMember(name=x["name"]),
                                              InOut_Filter) for x in member
            ]
            start = "(\n"
            ret = join_str(Content,
                           start=start,
                           end="\n  )",
                           Delimeter=",\n",
                           LineBeginning="    ",
                           IgnoreIfEmpty=True)
            return ret

        TypeName = hdl.get_type_simple(parent)
        name = TypeName + "_ctr"
        Constructor_Default_arguments = self.get_constroctor_default_list(obj)
        fl = flat_member_list(obj, [])
        # print(name, Constructor_Default_arguments, fl)

        argList = [
            join_str(x["name"], Delimeter="_") + "  =>  " +
            str(value(x["symbol"])) for i, x in enumerate(fl)
            if not x["symbol"].__abstract_type_info__.UseDefaultCtr
            if len(Constructor_Default_arguments) > i and value(x["symbol"]) !=
            value(Constructor_Default_arguments[i]["symbol"])
        ]
        Argliststr = join_str(argList,
                              Delimeter=", ",
                              IgnoreIfEmpty=True,
                              start="(",
                              end=")")

        ret = name + Argliststr
        return ret
コード例 #8
0
 def reset_TemplateMissing(self, obj):
     primary = hdl.get_primary_object(obj)
     primary.__hdl_converter__.MissingTemplate  = False  
コード例 #9
0
 def FlagFor_TemplateMissing(self, obj):
     obj.__hdl_converter__.MissingTemplate  = True
     primary = hdl.get_primary_object(obj)
     primary.__hdl_converter__.MissingTemplate  = True
コード例 #10
0
 def get_MemfunctionCalls(self,obj):
     primary = hdl.get_primary_object(obj)
     return primary.__hdl_converter__.MemfunctionCalls
コード例 #11
0
 def isTemplateMissing(self,obj):
     primary = hdl.get_primary_object(obj)
     return primary.__hdl_converter__.MissingTemplate