CN110597763A - 一种函数索引表的生成方法及装置 - Google Patents

一种函数索引表的生成方法及装置 Download PDF

Info

Publication number
CN110597763A
CN110597763A CN201810515534.6A CN201810515534A CN110597763A CN 110597763 A CN110597763 A CN 110597763A CN 201810515534 A CN201810515534 A CN 201810515534A CN 110597763 A CN110597763 A CN 110597763A
Authority
CN
China
Prior art keywords
function
folder
identification information
source
default
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810515534.6A
Other languages
English (en)
Other versions
CN110597763B (zh
Inventor
邵超波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201810515534.6A priority Critical patent/CN110597763B/zh
Publication of CN110597763A publication Critical patent/CN110597763A/zh
Application granted granted Critical
Publication of CN110597763B publication Critical patent/CN110597763B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种函数索引表的生成方法,该方法包括:获取中间层内的每个函数的第一标识信息;针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的底层函数文件夹确定为该函数的来源;若没有查找到,则将所述中间层确定为该函数的来源;根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。应用该方法,开发人员可以通过函数索引表查找中间层内函数及其对应的来源,从而便于开发人员快速确定函数的来源。

Description

一种函数索引表的生成方法及装置
技术领域
本发明涉及系统开发技术领域,特别是涉及一种函数索引表的生成方法及装置。
背景技术
通常,在进行系统开发时,为了降低成本或提高性能,在同一系统中,会使用不同厂家的芯片。功能相同的底层函数在不同厂家芯片上的实现方式可能是不同的,因此,需要建立中间层,来屏蔽不同厂家芯片之间的差异。这样,开发人员可以直接通过中间层调用底层函数。
但是,在系统的维护过程中,开发人员经常需要对某一底层函数的代码进行编辑,因此需要明确各个底层函数的来源。而在现有方案中,开发人员并不知道底层函数的来源,需要在各个文件夹中查找待编辑的底层函数的来源,速度较慢。
发明内容
本发明实施例的目的在于提供一种函数索引表的生成方法及装置,以生成函数索引表,便于开发人员快速确定底层函数的来源。
具体技术方案如下:
本发明实施例提供了一种函数索引表的生成方法,所述方法包括:
获取中间层内的每个函数的第一标识信息;
针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的底层函数文件夹确定为该函数的来源;若没有查找到,则将所述中间层确定为该函数的来源;
根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
可选的,所述底层函数文件夹包括:平台函数文件夹;
所述针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的底层函数文件夹确定为该函数的来源,包括:
针对每个函数,在所述平台函数文件夹内,查找与该函数的第一标识信息相匹配的平台函数;其中,所述平台函数为:基于单一芯片实现的底层函数;
若查找到与该函数的第一标识信息相匹配的平台函数,则将所述平台函数文件夹确定为该函数的来源。
可选的,所述底层函数文件夹还包括:默认函数文件夹;
若查找不到与该函数的第一标识信息相匹配的平台函数,则在所述默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数;其中,所述默认函数为:基于部分芯片平台实现的底层函数;
若查找到与该函数的第一标识信息相匹配的默认函数,则将所述默认函数文件夹确定为该函数的来源。
可选的,所述获取中间层内的每个函数的第一标识信息,包括:获取中间层内的每个函数的指针变量名;
所述在所述默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数,包括:
根据默认函数的函数命名规则,处理所述函数的指针变量名,得到第二标识信息;
在所述默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数。
可选的,在所述获取中间层内的每个函数的指针变量名之前,所述方法还包括:
将中间层内所有函数的指针变量名存储至声明文件夹内;
所述获取中间层内的多个函数的指针变量名,包括:
从所述声明文件夹中,查找与中间层内的多个函数的指针变量名相匹配的字符串。
可选的,所述第一标识信息为指针变量名;
所述根据每个函数的第一标识信息及其所对应的来源,生成函数索引表,包括:
根据预先设定的索引生成规则、以及所述每个函数对应的来源,确定所述每个函数的来源信息;
将所述每个函数的指针变量名与其所对应的来源信息一一对应记录,得到函数索引表。
本发明实施例还提供了一种函数索引表的生成装置,所述装置包括:
标识信息获取模块,用于获取中间层内的每个函数的第一标识信息;
函数来源确定模块,用于针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的底层函数文件夹确定为该函数的来源;若没有查找到,则将所述中间层确定为该函数的来源;
索引生成模块,用于根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
可选的,所述底层函数文件夹包括:平台函数文件夹;
所述函数来源确定模块,具体用于针对每个函数,在所述平台函数文件夹内,查找与该函数的第一标识信息相匹配的平台函数;若查找到与该函数的第一标识信息相匹配的平台函数,则将所述平台函数文件夹确定为该函数的来源;其中,所述平台函数为:基于单一芯片实现的底层函数。
可选的,所述底层函数文件夹还包括:默认函数文件夹;
所述函数来源确定模块,还用于若查找不到与该函数的第一标识信息相匹配的平台函数,则在所述默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数;若查找到与该函数的第一标识信息相匹配的默认函数,则将所述默认函数文件夹确定为该函数的来源;其中,所述默认函数为:基于部分芯片平台实现的底层函数。
可选的,所述标识信息获取模块,具体用于获取中间层内的每个函数的指针变量名;
所述函数来源确定模块,还用于根据默认函数的函数命名规则,处理所述函数的指针变量名,得到第二标识信息;在所述默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数。
可选的,所述装置还包括:
指针存储模块,用于将中间层内所有函数的指针变量名存储至声明文件夹内;
所述标识信息获取模块,具体用于从所述声明文件夹中,查找与中间层内的多个函数的指针变量名相匹配的字符串。
可选的,所述第一标识信息为指针变量名;
所述索引生成模块,具体用于根据预先设定的索引生成规则、以及所述每个函数对应的来源,确定所述每个函数的来源信息;将所述每个函数的指针变量名与其所对应的来源信息一一对应记录,得到函数索引表。
本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的函数索引表的生成方法。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的函数索引表的生成方法。
本发明实施例提供的一种函数生成表的获取方法及装置,针对中间层内的每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数,根据查找结果,确定中间层内每个函数的来源,并根据中间层内函数的第一标识信息和其对应的来源,生成函数索引表,这样,开发人员可以通过函数索引表查找中间层内函数的来源,从而便于开发人员快速确定函数的来源。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为为本发明实施例中系统的整体框架示意图;
图2为本发明实施例提供的一种函数索引表的生成方法的流程示意图;
图3为为本发明实施例中中间层内的函数的几种实现方式的示意图;
图4为本发明实施例中系统的目录框架示意图;
图5为本发明实施例中生成的一种函数索引表的展示图;
图6为本发明提供的另一种函数索引表的生成方法的流程示意图;
图7为本发明实施例还提供的一种函数索引表的生成装置的结构示意图;
图8为本发明实施例提供的一种电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
出于节约成本、提高竞争力等考虑,在进行系统开发时,在同一系统中,往往会使用不同厂家的芯片。而对于这些不同厂家的芯片而言,其实现同一功能的底层函数的代码的实现方式也通常是不一样的。因此,为了便于开发人员在业务层的软件开发工作,建立了中间层,中间层对芯片内的底层函数进行封装,同时为业务层提供底层函数的接口,从而屏蔽不同厂家的芯片之间的差异。
如图1所示,为上述系统的整体框架示意图。该系统中,包括业务层、中间层和多个芯片平台,如平台1、平台2等等。其中,开发人员在业务层实现对软件的开发,实现具体的功能,例如:协议功能、预览功能、报警功能、录像功能、网络功能等等,中间层为业务层提供底层函数的接口,平台则用于实现底层函数的功能。也就是说,业务层在实现上述功能时,只需要访问中间层、再由中间层调用底层函数即可,无需开发人员在业务层的开发过程中考虑在不同的芯片内的函数的实现方式是否存在不同。
通过上述方案,方便了开发人员在业务层的软件开发工作,但是,在系统的应用和维护过程中,开发人员经常需要对中间层内封装的某一底层函数的代码进行编辑,此时,需要明确各个底层函数的来源,而在上述方案中,开发人员并不知道中间层内封装的底层函数的来源,需要在存储底层函数的各个文件夹中查找待编辑的底层函数的来源,速度较慢。
因此,为了解决上述问题,本发明提供了一种函数索引表的生成方法。
下面从总体上对本发明实施例提供的函数索引表的生成方法进行说明。
一种实现方式中,上述函数索引表的生成方法包括:
获取中间层内的每个函数的第一标识信息;
针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的函数文件夹确定为该函数的来源;若没有查找到,则将所述中间层确定为该函数的来源;
根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
由以上可见,本发明实施例提供的函数索引表的生成方法,针对中间层内的每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数,根据查找结果,确定中间层内每个函数的来源,将相匹配的底层函数所属的底层函数文件夹确定为中间层内函数的来源,并根据中间层内函数的第一标识信息和其对应的来源,生成函数索引表,这样,开发人员可以通过函数索引表查找中间层内函数及其对应的来源,从而便于开发人员快速确定函数的来源。
下面通过具体实施例,对本发明实施例提供的函数索引表的生成方法进行详细说明。
如图2所示,为本发明实施例提供的一种函数索引表的生成方法的流程示意图,包括如下步骤:
步骤S201:获取中间层内的每个函数的第一标识信息。
在系统的应用过程中,有时会发现一些底层函数中出现的漏洞,或者,在对系统进行维护时,会对底层函数进行更新,这时,就需要对中间层中封装的这些底层函数的代码进行编辑。在本方案中,通过生成函数索引表,存储底层函数与存储这些底层函数的文件夹之间的对应关系,帮助开发人员快速确定待编辑的底层函数的来源。
在函数索引表的生成过程中,首先,需要获取中间层内所有函数的第一标识信息,其中,中间层内的所有函数包括直接在中间层内实现的底层函数、以及中间层调用的在默认函数文件夹和各个芯片对应的平台函数文件夹内实现的底层函数。而函数的第一标识信息,与各个函数唯一对应,例如,可以是函数的名称或者指针变量名等等。
在一种实现方式中,可以将中间层内每个函数的指针声明都存储在声明文件夹中,则获取中间层内每个函数的第一标识信息的方法可以是在声明文件夹内查找与每个函数的指针声明的格式相匹配的字符串,作为这些函数的第一标识信息。举例而言,可以将中间层内每个函数的指针声明存储在系统的include文件夹内,而通常函数的指针声明方法为:返回值类型(*指针变量名)([形参列表]),因此,可以在include文件夹中查找以“*”开始,以“)”结束的字符串,这些字符串就是中间层内每个函数的指针变量名,同时可以作为第一标识信息。
或者,也可以在函数的实现过程中,就根据预设的规则对函数进行命名,这样,在获取中间层内每个函数的第一标识信息时,就可以直接在存储中间层代码的文件夹中查找。举例而言,可以为每个函数的名称添加预设的前缀和后缀,那么在存储中间层代码的文件夹中,查找预设的前缀和后缀中间的字符串,即为中间层内每个函数的名称,同时可以作为第一标识信息。
或者,还可以通过其他的方式获取中间层内每个函数的第一标识信息,本发明对此不做限定。
步骤S202:针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将相匹配的底层函数所属的函数文件夹确定为该函数的来源;若没有查找到,则将中间层确定为该函数的来源。
中间层内的各个函数可以来自于不同底层函数文件夹。具体的,如图3所示,为中间层内的函数的几种实现方式:
在方式1中,系统内所有芯片实现某一功能的底层函数的方式都是一样的,那么,该底层函数可以直接在中间层内实现,该底层函数的代码可以直接写在中间层对应的文件夹中;
在方式2中,各个芯片实现某一功能的底层函数的方式都是不一样的,那么,该底层函数只能在具体的平台中实现,中间层就只能调用各个芯片对应的具体的平台函数文件夹内存储的底层函数;
在方式3中,系统内大部分芯片实现某一功能的底层函数的方式是一样的,而小部分是不一样的,那么,可以将该底层函数在大部分芯片中相同的实现方式存储在默认函数文件夹内,将小部分不同的该底层函数的实现方式存储在其对应的芯片的平台函数文件夹中,中间层可以调用默认函数文件夹内的默认函数,或者,对那些实现方式不同的芯片而言,直接调用平台函数文件夹内的底层函数。
由上述中间层内的函数的实现方式可见,中间层内的各个函数的代码可能存储在中间层对应的文件夹中,也可能是存储在其他底层函数文件夹中,例如,默认函数文件夹和平台函数文件夹。
基于上述中间层内的函数的实现方式,在本方案中,获取了与各个函数唯一对应的第一标识信息后,就可以根据各个函数的第一标识信息确定其对应的底层函数的来源。具体的,针对中间层内的每个函数而言,可以在各个底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数,如果查找到,则将相匹配的底层函数所属的底层函数文件夹确定为该函数的来源,如果没有查找到,则将中间层确定为该函数的来源。
举例而言,在一种实现方式中,在获取与各个函数唯一对应的第一标识信息后:
第一步,针对每个函数,在平台函数文件夹内,查找与该函数的第一标识信息相匹配的平台函数,若查找到,则将平台函数文件夹确定为该函数的来源。
例如,如果中间层内的函数的第一标识信息为指针变量名或函数名,则在平台函数文件夹内查找与中间层内的函数的指针变量名或函数名相匹配的字符串。可以理解,如果在平台函数文件夹内存储着该函数的实现代码,则在平台函数文件夹内存在“.指针变量名=”字符串,该字符串可以与函数的第一标识信息相匹配。
如果在平台函数文件夹内查找到与函数的第一标识信息相匹配的平台函数,则该函数是基于单一芯片实现的底层函数,该函数在其所属的平台函数文件夹对应的芯片中的实现方式与其在其他芯片中的实现方式是不同的,开发人员需要到平台函数文件夹内对该函数进行编辑。
第二步,若在平台函数文件夹内查找不到,则在默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数,若查找到,则将默认函数文件夹确定为该函数的来源。
例如,如果中间层内的函数的第一标识信息为指针变量名或函数名,则在默认函数文件夹内查找与中间层内的函数的指针变量名或函数名相匹配的字符串。可以理解,如果在默认函数文件夹内存储着该函数的实现代码,则在默认函数文件夹内存在与函数的第一标识信息相匹配的字符串。
如果在默认函数文件夹内查找到与函数的第一标识信息相匹配的平台函数,则该函数是基于部分芯片平台实现的底层函数,该函数在所有调用该函数的芯片上的实现方式都是一样的,开发人员需要到默认函数文件夹内对该函数进行编辑。
第三步,若在平台函数文件夹和默认函数文件夹内均没有查找到,则将中间层确定为该函数的来源。也就是说,该函数在系统内的所有芯片上的实现方式都是一样的,开发人员可以直接在中间层内对该函数进行编辑。
其中,不同函数文件夹内的函数及各个函数的指针变量名的命名通常会遵循不同的命名规则,例如,在平台函数文件夹内,各个平台函数的命名规则是函数名与指针变量名相同,在默认函数文件夹内,各个默认函数的命名规则是函数名为指针变量名加预设的后缀;或者,各个平台函数的命名规则是函数名为指针变量名加相应的平台函数文件夹的标识字符串,各个默认函数的命名规则是函数名为指针变量名加预设的默认函数文件夹的标识字符串;等等,本发明实施例对此不做限定。
那么,在一种实现方式中,中间层内的每个函数的第一标识信息可以为该函数的指针变量名,而当在平台函数文件夹内查找不到该函数的指针变量名后,可以根据默认函数的函数命名规则,处理所述函数的指针变量名,例如,为指针变量名加上预设的前缀或后缀,得到第二标识信息,再在默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数。
举例而言,如果在默认函数文件夹内,默认函数的函数名的命名规则为默认函数的函数名为“指针变量名_default”,则对函数的指针变量名进行处理,得到第二标识信息,即在中间层内函数的指针变量名后加上“_default”,作为第二标识信息,如果在默认函数文件夹内可以查找到与第二标识信息相匹配的字符串,则将默认函数文件夹确定为该函数的来源。
进一步的,延续上述例子,如果中间层内的每个函数的第一标识信息为该函数的指针变量名,那么,可以预先将中间层内所有函数的指针变量名存储至声明文件夹内,这样,就可以直接从声明文件夹中,查找与中间层内的多个函数的指针变量名相匹配的字符串,从而使得获取中间层内的多个函数的第一标识信息的过程更加方便快速。
具体的,在上述例子中,系统的目录框架如图4所示,中间层中包括声明文件夹、默认函数文件夹以及中间层的实现函数文件夹,在各个芯片中分别有各个芯片对应的平台函数文件夹,其中,在声明文件夹中,包含中间层内所有函数的指针声明定义,在默认函数文件夹中,包含所有默认函数的实现代码,在各个平台函数文件夹中,包含在该平台函数文件夹对应的芯片上实现的底层函数的代码,在中间层的实现函数文件夹中,存储着中间层的实现函数的代码,其中包括来源于中间层的函数的实现代码、以及中间层对来源于默认函数文件夹和平台函数文件夹的函数的调用代码。
步骤S203:根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
确定中间层内每个函数的来源之后,就可以根据每个函数的第一标识信息及其所对应的来源,生成函数索引表,通过函数索引表,为开发人员提供中间层内的函数及其所属的文件夹的信息,以便于开发人员对函数进行编辑。
具体的,在一种实现方式中,如果中间层内的各个函数的第一标识信息为指针变量名,那么,在确定了各个函数的来源之后,就可以进一步根据预先设定的索引生成规则、以及每个函数对应的来源,确定每个函数的来源信息,然后将每个函数的指针变量名与其所对应的来源信息一一对应记录,得到函数索引表。
例如,如果索引生成规则为将函数名称与函数所属的文件夹名称对应展示,那么,可以根据每个函数的来源,确定其所属的文件夹的名称,将其所属的文件夹的名称作为该函数的来源信息,将每个函数的指针变量名与其所属的文件夹的名称一一对应记录,得到函数索引表。这样,如果需要对某一函数进行编辑,开发人员可以在函数索引表中查询到待编辑函数所属的文件夹的名称,进而对待编辑函数的实现代码进行编辑。
或者,如果预先设定在不同的底层函数文件夹中,函数的命名规则不同,且所有函数的命名都遵循其所属的底层函数文件夹的命名规则,那么,便可以通过函数名称确定其所属的底层函数文件夹。这种情况下,索引生成规则可以为将函数名称与函数的指针变量名对应展示,相对应的,将每个函数的指针变量名与其所对应的函数名称一一对应记录,得到函数索引表。这样,如果需要对某一函数进行编辑,开发人员可以在函数索引表中查询到待编辑函数所对应的函数名,再根据预先设定的函数的命名规则,可以了解到该待编辑函数所来源的文件夹,进而对待编辑函数的实现代码进行编辑。
如图5所示,为在上述情况下生成的函数索引表的示意图。如图5所示,左侧为中间层内函数的指针变量名,右侧为左侧的指针变量名对应的函数的名称,预先设定平台函数的命名规则是函数名为指针变量名删除指针标识“hw_dsp_”,默认函数的命名规则是函数名为指针变量名删除指针标识“hw_dsp_”并添加后缀“_default”。则在该函数索引表中,指针变量名为“hw_dsp_core_init”的函数的函数名为“core_init”,则该函数来源于平台函数文件夹,指针变量名为“hw_dsp_intel_set_witness_area”和“hw_dsp_intel_read_roadpic_to_buf”的两个函数的函数名分别为“dsp_intel_set_witness_area_default”和“dsp_intel_read_roadpic_to_buf_default”,则这两个函数来源于默认函数文件夹,而该函数索引表中的其他指针变量名所对应的函数,函数名均为“myself”,也就是说,这些函数都来源于中间层。
或者,函数索引表还可以为其他的形式,只要可以使得开发人员快速查询到中间层内函数的来源即可,本发明实施例对此不做限定。
由以上可见,本发明实施例提供的函数索引表的生成方法,针对中间层内的每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数,根据查找结果,确定中间层内每个函数的来源,确定中间层内函数的来源,并根据中间层内函数的第一标识信息和其对应的来源,生成函数索引表,这样,开发人员可以通过函数索引表查找中间层内函数及其对应的来源,从而便于开发人员快速确定函数的来源。
如图6所示,为本发明提供的另一种函数索引表的生成方法的流程示意图,包括如下步骤:
步骤S601:获取中间层内的每个函数的指针变量名。
在系统的应用过程中,有时会发现一些底层函数中出现的漏洞,或者,在对系统进行维护时,会对底层函数进行更新,这时,就需要对中间层中封装的这些底层函数的代码进行编辑。在本方案中,通过生成函数索引表,存储底层函数与存储这些底层函数的文件夹之间的对应关系,帮助开发人员快速确定待编辑的底层函数的来源。
在一种实现方式中,可以将中间层内每个函数的指针声明都存储在声明文件夹中,则获取中间层内每个函数的第一标识信息的方法可以是在声明文件夹内查找与每个函数的指针声明的格式相匹配的字符串,作为这些函数的第一标识信息。举例而言,可以将中间层内每个函数的指针声明存储在系统的include文件夹内,而通常函数的指针声明方法为:返回值类型(*指针变量名)([形参列表]),因此,可以在include文件夹中查找以“*”开始,以“)”结束的字符串,这些字符串就是中间层内每个函数的指针变量名,同时可以作为第一标识信息。
步骤S602:针对每个函数,在平台函数文件夹内,查找与该函数的指针变量名相匹配的平台函数;若查找到与该函数的指针变量名相匹配的平台函数,则将平台函数文件夹确定为该函数的来源;其中,平台函数为:基于单一芯片实现的底层函数。
如果在平台函数文件夹内存储着该函数的实现代码,则在平台函数文件夹内一定存在“.指针变量名=”字符串,可以与函数的第一标识信息相匹配。如果在平台函数文件夹内查找到与函数的指针变量名相匹配的平台函数,则该函数是基于单一芯片实现的底层函数,该函数在其所属的平台函数文件夹对应的芯片中的实现方式与其在其他芯片中的实现方式是不同的,开发人员需要到平台函数文件夹内对该函数进行编辑。
步骤S603:若查找不到与该函数的指针变量名相匹配的平台函数,则根据默认函数的函数命名规则,处理函数的指针变量名,得到第二标识信息。
步骤S604:在默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数;若查找到与该函数的指针变量名相匹配的默认函数,则将默认函数文件夹确定为该函数的来源;其中,默认函数为:基于部分芯片平台实现的底层函数。
举例而言,在一种实现方式中,如果在默认函数文件夹内,默认函数的函数名的命名规则为默认函数的函数名为“指针变量名_default”,则对函数的指针变量名进行处理,得到第二标识信息,即在中间层内函数的指针变量名后加上“_default”,作为第二标识信息,如果在默认函数文件夹内可以查找到与第二标识信息相匹配的字符串,则将默认函数文件夹确定为该函数的来源。
步骤S605:若没有查找到,则将中间层确定为该函数的来源。
在本方案中,获取了与各个函数唯一对应的指针变量名后,就可以根据各个函数的指针变量名确定其对应的底层函数的来源。具体的,针对中间层内的每个函数而言,可以在各个底层函数文件夹内,查找与该函数的指针变量名相匹配的底层函数,如果查找到,则将相匹配的底层函数所属的底层函数文件夹确定为该函数的来源,如果没有查找到,则将中间层确定为该函数的来源。
其中,不同函数文件夹内的函数的命名通常会遵循不同的命名规则,例如,在平台函数文件夹内,各个平台函数的命名规则是函数名与指针变量名相同,在默认函数文件夹内,各个默认函数的命名规则是函数名为指针变量名加预设的后缀或前缀,等等。那么,在一种实现方式中,当在平台函数文件夹内查找不到该函数的指针变量名后,可以根据默认函数的函数命名规则,处理所述函数的指针变量名,例如,为指针变量名加上预设的前缀或后缀,得到第二标识信息,再在默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数。
进一步的,延续上述例子,可以预先将中间层内所有函数的指针变量名存储至声明文件夹内,这样,就可以直接从声明文件夹中,查找与中间层内的多个函数的指针变量名相匹配的字符串,从而使得获取中间层内的多个函数的第一标识信息的过程更加方便快速。
步骤S606:根据每个函数的指针变量名及其所对应的来源,生成函数索引表。
确定中间层内每个函数的来源之后,就可以根据每个函数的指针变量名及其所对应的来源,生成函数索引表,通过函数索引表,为开发人员提供中间层内的函数及其所属的文件夹的信息,以便于开发人员对函数进行编辑。
具体的,在一种实现方式中,在确定了各个函数的来源之后,就可以进一步根据预先设定的索引生成规则、以及每个函数对应的来源,确定每个函数的来源信息,然后将每个函数的指针变量名与其所对应的来源信息一一对应记录,得到函数索引表。
例如,如果索引生成规则为将函数名称与函数所属的文件夹名称对应展示,则根据每个函数的来源,确定其所属的文件夹的名称,将其所属的文件夹的名称作为该函数的来源信息,将每个函数的指针变量名与其所属的文件夹的名称一一对应记录,得到函数索引表。这样,如果需要对某一函数进行编辑,开发人员可以在函数索引表中查询到待编辑函数所属的文件夹的名称,进而对待编辑函数的实现代码进行编辑。
或者,如果索引生成规则为将函数名称与函数名对应展示,则根据每个函数的来源,在其所属的文件夹内确定该函数的名称,将函数的名称作为该函数的来源信息,将每个函数的指针变量名与其所对应的函数名一一对应记录,得到函数索引表。这样,如果需要对某一函数进行编辑,开发人员可以在函数索引表中查询到待编辑函数所对应的函数名,而通常在不同的底层函数文件夹中,函数的命名规则是不同的,因此,开发人员通过函数名,也可以了解到该待编辑函数所来源的文件夹,进而对待编辑函数的实现代码进行编辑。
或者,函数索引表还可以为其他的形式,只要可以使得开发人员快速查询到中间层内函数的来源即可,本发明实施例对此不做限定。
由以上可见,本发明实施例提供的函数索引表的生成方法,通过中间层内函数的指针变量名,在平台函数文件夹和默认函数文件夹内查找相匹配的底层函数,将相匹配的底层函数所属的底层函数文件夹确定为中间层内函数的来源,或者,如果在平台函数文件夹和默认函数文件夹内均不存在相匹配的底层函数,则将中间层作为函数的来源,并根据中间层内函数的第一标识信息和其对应的来源,生成函数索引表,这样,开发人员可以通过函数索引表查找中间层内函数及其对应的来源,从而便于开发人员快速确定函数的来源。
如图7所示,本发明实施例还提供了一种函数索引表的生成装置的结构示意图,所述装置包括:
标识信息获取模块710,用于获取中间层内的每个函数的第一标识信息。
函数来源确定模块720,用于针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将相匹配的底层函数所属的底层函数文件夹确定为该函数的来源;若没有查找到,则将中间层确定为该函数的来源。
具体的,底层函数文件夹包括:平台函数文件夹,则函数来源确定模块720,具体用于针对每个函数,在平台函数文件夹内,查找与该函数的第一标识信息相匹配的平台函数;若查找到与该函数的第一标识信息相匹配的平台函数,则将平台函数文件夹确定为该函数的来源;其中,平台函数为:基于单一芯片实现的底层函数。
而且,底层函数文件夹还包括:默认函数文件夹,则所述函数来源确定模块720,还用于若查找不到与该函数的第一标识信息相匹配的平台函数,则在默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数;若查找到与该函数的第一标识信息相匹配的默认函数,则将默认函数文件夹确定为该函数的来源;其中,所述默认函数为:基于部分芯片平台实现的底层函数。
在一种实现方式中,标识信息获取模块710,具体用于获取中间层内的每个函数的指针变量名,函数来源确定模块720,还用于根据默认函数的函数命名规则,处理所述函数的指针变量名,得到第二标识信息;在默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数。
在一种实现方式中,该装置还包括指针存储模块,用于将中间层内所有函数的指针变量名存储至声明文件夹内,这样,标识信息获取模块710,可以从声明文件夹中,查找与中间层内的多个函数的指针变量名相匹配的字符串。
索引生成模块730,用于根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
在一种实现方式中,如果第一标识信息为指针变量名,则索引生成模块730,具体用于根据预先设定的索引生成规则、以及所述每个函数对应的来源,确定所述每个函数的来源信息;将所述每个函数的指针变量名与其所对应的来源信息一一对应记录,得到函数索引表。
由以上可见,本发明实施例提供的函数索引表的生成方法,针对中间层内的每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数,根据查找结果,确定中间层内每个函数的来源,并根据中间层内函数的第一标识信息和其对应的来源,生成函数索引表,这样,开发人员可以通过函数索引表查找中间层内函数及其对应的来源,从而便于开发人员快速确定函数的来源。
本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现如下步骤:
获取中间层内的每个函数的第一标识信息;
针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的函数文件夹确定为该函数的来源;若没有查找到,则将所述中间层确定为该函数的来源;
根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由以上可见,本发明实施例提供的函数索引表的生成方法,针对中间层内的每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数,根据查找结果,确定中间层内每个函数的来源,并根据中间层内函数的第一标识信息和其对应的来源,生成函数索引表,这样,开发人员可以通过函数索引表查找中间层内函数及其对应的来源,从而便于开发人员快速确定函数的来源。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的函数索引表的生成方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的函数索引表的生成方法
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (13)

1.一种函数索引表的生成方法,其特征在于,所述方法包括:
获取中间层内的每个函数的第一标识信息;
针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的底层函数文件夹确定为该函数的来源;若没有查找到,则将所述中间层确定为该函数的来源;
根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
2.根据权利要求1所述的方法,其特征在于,所述底层函数文件夹包括:平台函数文件夹;
所述针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的底层函数文件夹确定为该函数的来源,包括:
针对每个函数,在所述平台函数文件夹内,查找与该函数的第一标识信息相匹配的平台函数;其中,所述平台函数为:基于单一芯片实现的底层函数;
若查找到与该函数的第一标识信息相匹配的平台函数,则将所述平台函数文件夹确定为该函数的来源。
3.根据权利要求2所述的方法,其特征在于,所述底层函数文件夹还包括:默认函数文件夹;
若查找不到与该函数的第一标识信息相匹配的平台函数,则在所述默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数;其中,所述默认函数为:基于部分芯片平台实现的底层函数;
若查找到与该函数的第一标识信息相匹配的默认函数,则将所述默认函数文件夹确定为该函数的来源。
4.根据权利要求3所述的方法,其特征在于,所述获取中间层内的每个函数的第一标识信息,包括:获取中间层内的每个函数的指针变量名;
所述在所述默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数,包括:
根据默认函数的函数命名规则,处理所述函数的指针变量名,得到第二标识信息;
在所述默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数。
5.根据权利要求4所述的方法,其特征在于,在所述获取中间层内的每个函数的指针变量名之前,所述方法还包括:
将中间层内所有函数的指针变量名存储至声明文件夹内;
所述获取中间层内的多个函数的指针变量名,包括:
从所述声明文件夹中,查找与中间层内的多个函数的指针变量名相匹配的字符串。
6.根据权利要求1所述的方法,其特征在于,所述第一标识信息为指针变量名;
所述根据每个函数的第一标识信息及其所对应的来源,生成函数索引表,包括:
根据预先设定的索引生成规则、以及所述每个函数对应的来源,确定所述每个函数的来源信息;
将所述每个函数的指针变量名与其所对应的来源信息一一对应记录,得到函数索引表。
7.一种函数索引表的生成装置,其特征在于,所述装置包括:
标识信息获取模块,用于获取中间层内的每个函数的第一标识信息;
函数来源确定模块,用于针对每个函数,在底层函数文件夹内,查找与该函数的第一标识信息相匹配的底层函数;若查找到,则将所述相匹配的底层函数所属的底层函数文件夹确定为该函数的来源;若没有查找到,则将所述中间层确定为该函数的来源;
索引生成模块,用于根据每个函数的第一标识信息及其所对应的来源,生成函数索引表。
8.根据权利要求7所述的装置,其特征在于,所述底层函数文件夹包括:平台函数文件夹;
所述函数来源确定模块,具体用于针对每个函数,在所述平台函数文件夹内,查找与该函数的第一标识信息相匹配的平台函数;若查找到与该函数的第一标识信息相匹配的平台函数,则将所述平台函数文件夹确定为该函数的来源;其中,所述平台函数为:基于单一芯片实现的底层函数。
9.根据权利要求8所述的装置,其特征在于,所述底层函数文件夹还包括:默认函数文件夹;
所述函数来源确定模块,还用于若查找不到与该函数的第一标识信息相匹配的平台函数,则在所述默认函数文件夹内,查找与该函数的第一标识信息相匹配的默认函数;若查找到与该函数的第一标识信息相匹配的默认函数,则将所述默认函数文件夹确定为该函数的来源;其中,所述默认函数为:基于部分芯片平台实现的底层函数。
10.根据权利要求9所述的装置,其特征在于,所述标识信息获取模块,具体用于获取中间层内的每个函数的指针变量名;
所述函数来源确定模块,还用于根据默认函数的函数命名规则,处理所述函数的指针变量名,得到第二标识信息;在所述默认函数文件夹内,查找与该函数的第二标识信息相匹配的默认函数。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
指针存储模块,用于将中间层内所有函数的指针变量名存储至声明文件夹内;
所述标识信息获取模块,具体用于从所述声明文件夹中,查找与中间层内的多个函数的指针变量名相匹配的字符串。
12.根据权利要求7所述的装置,其特征在于,所述第一标识信息为指针变量名;
所述索引生成模块,具体用于根据预先设定的索引生成规则、以及所述每个函数对应的来源,确定所述每个函数的来源信息;将所述每个函数的指针变量名与其所对应的来源信息一一对应记录,得到函数索引表。
13.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
CN201810515534.6A 2018-05-25 2018-05-25 一种函数索引表的生成方法及装置 Active CN110597763B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810515534.6A CN110597763B (zh) 2018-05-25 2018-05-25 一种函数索引表的生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810515534.6A CN110597763B (zh) 2018-05-25 2018-05-25 一种函数索引表的生成方法及装置

Publications (2)

Publication Number Publication Date
CN110597763A true CN110597763A (zh) 2019-12-20
CN110597763B CN110597763B (zh) 2022-06-03

Family

ID=68848582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810515534.6A Active CN110597763B (zh) 2018-05-25 2018-05-25 一种函数索引表的生成方法及装置

Country Status (1)

Country Link
CN (1) CN110597763B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722440A (zh) * 2012-06-07 2012-10-10 中兴通讯股份有限公司 一种嵌入式系统可执行代码的调试装置、调试方法及嵌入式系统
CN102902629A (zh) * 2012-06-20 2013-01-30 华为技术有限公司 存储空间映射方法及装置
CN103631951A (zh) * 2013-12-12 2014-03-12 用友软件股份有限公司 一种基于元数据的批量取数函数的合并方法和装置
US9183120B1 (en) * 2013-06-04 2015-11-10 The Mathworks, Inc. Functional dependency analysis
CN105739981A (zh) * 2016-01-28 2016-07-06 厦门飞信网络科技有限公司 一种代码补全实现方法、装置和计算设备
CN106407111A (zh) * 2016-09-07 2017-02-15 努比亚技术有限公司 终端测试装置、终端测试设备及变量维护方法
CN107809383A (zh) * 2016-09-08 2018-03-16 腾讯科技(深圳)有限公司 一种基于mvc的路径映射方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722440A (zh) * 2012-06-07 2012-10-10 中兴通讯股份有限公司 一种嵌入式系统可执行代码的调试装置、调试方法及嵌入式系统
CN102902629A (zh) * 2012-06-20 2013-01-30 华为技术有限公司 存储空间映射方法及装置
US9183120B1 (en) * 2013-06-04 2015-11-10 The Mathworks, Inc. Functional dependency analysis
CN103631951A (zh) * 2013-12-12 2014-03-12 用友软件股份有限公司 一种基于元数据的批量取数函数的合并方法和装置
CN105739981A (zh) * 2016-01-28 2016-07-06 厦门飞信网络科技有限公司 一种代码补全实现方法、装置和计算设备
CN106407111A (zh) * 2016-09-07 2017-02-15 努比亚技术有限公司 终端测试装置、终端测试设备及变量维护方法
CN107809383A (zh) * 2016-09-08 2018-03-16 腾讯科技(深圳)有限公司 一种基于mvc的路径映射方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
冯荷飞等: "《Linux下本地文件快速搜索工具设计与实现》", 《软件工程》 *

Also Published As

Publication number Publication date
CN110597763B (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
CN109669709B (zh) 一种区块链升级的数据迁移方法及数据迁移系统
CN109885577B (zh) 数据处理方法、装置、终端及存储介质
CN107066519B (zh) 一种任务检测方法及装置
CN109241003B (zh) 文件管理方法和装置
CN111818175B (zh) 企业服务总线配置文件生成方法、装置、设备和存储介质
CN111124480B (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN111241040A (zh) 信息获取方法、装置、电子设备及计算机存储介质
CN111694992A (zh) 一种数据处理方法和装置
CN113064556A (zh) 一种bios的数据存储方法、装置、设备及存储介质
US20090259654A1 (en) Information processing apparatus, control method thereof, and storage medium
CN110597763B (zh) 一种函数索引表的生成方法及装置
KR101828466B1 (ko) 파일시스템을 기반으로 하는 저장장치에서 객체기반 스토리지 인터페이스를 제공하는 방법 및 장치
CN110874216A (zh) 一种完备代码生成方法、装置、设备和存储介质
CN111443920B (zh) 一种框架迁移方法及装置
CN108132971B (zh) 数据库碎片文件的分析方法和装置
CN111881220A (zh) 列表存储下的数据操作方法、装置、电子设备和存储介质
CN110888643A (zh) 页面处理方法及装置
CN107844491B (zh) 一种在分布式系统中实现强一致性读操作的方法与设备
CN110968559A (zh) 一种图集生成方法和装置
CN116303581B (zh) 异构数据库间分流查询负载适配方法、系统、设备及介质
CN111061721B (zh) 数据处理方法及装置
CN111858494B (zh) 文件获取方法、装置、存储介质及电子设备
CN111459411B (zh) 数据迁移方法、装置、设备及存储介质
CN113641731B (zh) 模糊搜索优化方法、装置、电子设备和可读存储介质
CN112733510A (zh) 一种财务凭证生成方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant