CN102117217A - 一种机顶盒脚本扩充函数的方法 - Google Patents
一种机顶盒脚本扩充函数的方法 Download PDFInfo
- Publication number
- CN102117217A CN102117217A CN 201010566972 CN201010566972A CN102117217A CN 102117217 A CN102117217 A CN 102117217A CN 201010566972 CN201010566972 CN 201010566972 CN 201010566972 A CN201010566972 A CN 201010566972A CN 102117217 A CN102117217 A CN 102117217A
- Authority
- CN
- China
- Prior art keywords
- function
- registering functional
- functional function
- top box
- script
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种机顶盒脚本扩充函数的方法,使用hash表登记注册方式对注册功能函数进行注册登记,将每个注册功能函数进行分类,并对每个类分配一独立的内存空间进行存储;并在内存空间中分配一个空间用来存储该注册功能函数名的字符串、固定长度的hash数值以及注册功能函数的指针等数据,当机顶盒脚本程序执行一注册功能函数时,机顶盒脚本解析引擎会对脚本程序所调用的注册功能函数的字符串进行hash运算,将得到的hash数值与空间中的固定长度的hash数值进行对比,相同时取出对应注册功能函数的指针交由脚本解析引擎调用。本发明加快了机顶盒脚本程序对所需函数进行调用的速率,提高了机顶盒运行的效率,给用户带来方便。
Description
【技术领域】
本发明涉及一种嵌入式技术领域,尤其涉及一种机顶盒脚本扩充函数的方法。
【背景技术】
随着国家数字电视的大规模普及,作为数字电视终端产品的数字电视机顶盒的功能也越来越强大,作为与用户使用最多的人机交互界面也越来越多样。为了更快更好的编写适合各种运营商提出的定制要求,机顶盒上使用脚本语言编写应用程序可以实现快速的开发,适应快速变化的用户需求。
由于使用脚本作为机顶盒应用程序的主要表现形式,机顶盒必须提供大量丰富的功能函数供脚本调用,传统注册功能函数到脚本解析引擎的方式,一般采用数组登记方式或者链表登记方式,使用数组登记方式:存储注册功能函数,一般使用从上到下的方式进行存储,先注册的函数先存储,查找时也是使用从上到下的方式进行查询,一一比对存储在数组中的注册功能函数的字符串名称是否和需要调用的脚本中的函数的字符串相同的,如果不同就继续比对下一个,如果相同,则调用对于的函数实现相应的功能。使用链表登记方式:存储注册功能函数,一般每添加一个注册函数就分配一个结点,并挂接在原链表的最后一个结点上,直到把所有注册函数挂接完毕为止。在脚本解析引擎在查询时,依着链表逐个的查找每个结点,一一比对存储在数组中的注册功能函数的字符串名称是否和需要调用的脚本中的函数的字符串相同的,如果不同就继续比对下一个,如果相同,则调用对于的函数实现相应的功能。
因此当脚本解析引擎调用相应的注册的功能函数时,需要花费大量的时间进行比对查找,当注册到脚本解析引擎中的功能函数越多时,查询的速度越慢,拖累整个脚本程序执行的效率。
【发明内容】
本发明要解决的技术问题,在于提供一种机顶盒脚本扩充函数的方法,克服了传统注册功能函数注册到脚本解析引擎的方式,当脚本解析引擎调用相应的注册的功能函数时,需要花费大量的时间进行比对查找,查询的速度慢,拖累整个脚本程序执行的效率问题。
本发明是这样实现的:一种机顶盒脚本扩充函数的方法,其特征在于:包括以下步骤:
步骤10、把机顶盒脚本调用的注册功能函数进行分类,每类函数对应一个类名,并对每个类分配一独立的内存空间进行存储;
步骤20、当机顶盒注册脚本程序时,获取一注册功能函数,并判断该函数对应的类在内存空间中是否存在,否,则分配一足够大的内存空间进行存储,是则判断该类的内存空间是否足够存储新的函数,否则继续分配一足够大的内存空间,再转入步骤30,是则直接进入步骤30;
步骤30、通过散列法把注册功能函数名的字符串转换为固定长度的数值,其散列法步骤如下:
步骤301、把注册功能函数名的字符串全部转换为大写
步骤302、将转换后的字符串从头到尾开始按4个字节来组合成一个32位整型数据,以此类推直到最后4个字节组合成一个32位整型数据,并把这些32位整型数据进行加减乘除,以及与或非运算,最终得到一32位的整型数据;
步骤303、把最终得到32位的整型数据作为该注册功能函数名的字符串对应的固定长度的hash数值。
步骤40、将注册功能函数所属类的内存空间中分配一个空间用来存储该注册功能函数名的字符串、所述固定长度的hash数值以及注册功能函数的指针及注册功能函数的相关内容,并将空间中的这些数据以链表的形式挂接在该注册功能函数所属类的空间下。
步骤50、当机顶盒脚本程序执行一注册功能函数时,机顶盒脚本解析引擎会对脚本程序所调用的注册功能函数的字符串进行hash运算,得到该注册功能函数对应的hash数值;
步骤60、机顶盒脚本程序分析注册功能函数所属的类,找出该类的内存空间,并根据该类存储的链表形式逐个的将所述根据函数字符串进行hash运算得到的hash数值与所述内存空间中的固定长度的hash数值进行比对,找出注册功能函数hash数值相同的数据,然后取出该注册功能函数的字符串进行比对,如果一样则取出对应注册功能函数的指针及注册功能函数的相关内容交由脚本解析引擎调用,如果不相同,则继续比对别的注册功能函数的hash数值。
本发明具有如下优点:使用hash表登记注册方式来对注册功能函数进行注册登记,能够实现对所需注册功能函数的快速查找,加速了机顶盒脚本程序的运行速度,提高了机顶盒运行的效率,给用户带来方便。
【附图说明】
图1为本发明方法流程示意图。
【具体实施方式】
下面参照图1结合实施例对本发明作进一步的说明。
机顶盒脚本扩充函数的方法,包括以下步骤:
步骤10、把机顶盒脚本调用的注册功能函数进行分类(分类的好处是可以快速定位),每类函数对应一个类名,并对每个类分配一独立的内存空间进行存储;
步骤20、当机顶盒注册脚本程序时,获取一注册功能函数,并判断该函数对应的类在内存空间中是否存在,否,则分配一足够大的内存空间(按照系统的资源情况,分配一定的内存出来)进行存储,是则判断该类的内存空间是否足够存储新的函数(新的函数:属于该类下的另一个注册功能函数),否则继续分配一足够大的内存空间,再转入步骤30,是则直接进入步骤30;
步骤30、通过散列法把注册功能函数名的字符串转换为固定长度的数值,其散列法步骤如下:
步骤301、把注册功能函数名的字符串全部转换为大写;
步骤302、将转换后的字符串从头到尾开始按4个字节来组合成一个32位整型数据,以此类推直到最后4个字节组合成一个32位整型数据,并把这些32位整型数据进行加减乘除,以及与或非运算,最终得到一32位的整型数据;
步骤303、把最终得到32位的整型数据作为该注册功能函数名的字符串对应的固定长度的hash数值;
步骤40、将注册功能函数所属类的内存空间中分配一个空间用来存储该注册功能函数名的字符串、所述固定长度的hash数值以及注册功能函数的指针及注册功能函数的相关内容,并将空间中的这些数据以链表的形式挂接在该注册功能函数所属类的空间下;
步骤50、当机顶盒脚本程序执行一注册功能函数时,机顶盒脚本解析引擎会对脚本程序所调用的注册功能函数的字符串进行hash运算,得到该注册功能函数对应的hash数值;
步骤60、机顶盒脚本程序分析注册功能函数所属的类,找出该类的内存空间,并将所述根据函数字符串进行hash运算得到的hash数值与所述内存空间中的固定长度的hash数值进行比对,找出注册功能函数hash数值相同的数据,然后取出该注册功能函数的字符串进行比对,如果一样则取出对应注册功能函数的指针及注册功能函数的相关内容(如函数的属性,特性等)交由脚本解析引擎调用,如果不相同,则继续比对别的注册功能函数的hash数值。
下面举一具体实施例对本发明作进一步说明。
步骤10、把机顶盒脚本调用的注册功能函数进行分类,如注册功能函数有:int islower(int c)、int isprint(int c)、system_api_setvalue(),其中intislower(int c)、int isprint(int c)为一类,system_api_setvalue()为另一类,并对每类函数对应一个类名,并对每个类分配一独立的内存空间进行存储;
步骤20、当机顶盒注册脚本程序时,获取一注册功能函数,并判断该函数对应的类在内存空间中是否存在,否,则分配一足够大的内存空间(按照系统的资源情况,分配一定的内存出来)进行存储,是则判断该类的内存空间是否足够存储新的函数(新的函数:属于该类下的另一个注册功能函数),否则继续分配一足够大的内存空间,再转入步骤30,是则直接进入步骤30;
步骤30、通过散列法把注册功能函数名的字符串转换为固定长度的数值,其散列法步骤如下:
步骤301、把注册功能函数名的字符串全部转换为大写,如函数的字符串名称为“system_api_setvalue”转为大写后为“SYSTEM_API_SETVALUE”;其函数指针为system_api_setvalue;
步骤302、通过下列处理后转换为32位整数数据值
以下函数用c语言描述
unsigned int hashFunction(char*name)
{
int hashvalue=0,loop;
const char*str=name;
while(*str!=′\0′)
{
hashvalue=(hashvalue<<4)+*str;
if((loop=(hashvalue&0xF0000000))!=0)
{
hashvalue=hashvalue∧(loop>>24);
hashvalue=hashvalue∧loop;
}
++str;
}
return hashvalue;
}
注:函数中name就是需要输入的大写函数名字符串,函数的返回值就是针对于这个函数的32位整数数据值。转换函数中的公式:hashvalue=(hashvalue<<4)+*str,只是作为一个例子,并不是一定使用相同的公式,只要能够转换出32位整数数据值的公式都可以使用。
通过上面的转换函数得出0xfdcf5645。
步骤303、把最终得到32位的整型数据作为该注册功能函数名的字符串对应的固定长度的hash数值;
步骤40、将注册功能函数所属类的内存空间中分配一个空间用来存储该注册功能函数名的字符串(如函数的字符串名称为“system_api_setvalue”)、所述固定长度的hash数值(其hash数值为:所述0xfdcf5645)以及注册功能函数的指针(函数的字符串名称为“system_api_setvalue”其指针为system_api_setvalue)及注册功能函数的相关内容(如函数的属性,特性等),并将空间中的这些数据以链表的形式挂接在该注册功能函数所属类的空间下;
步骤50、当机顶盒脚本程序执行一注册功能函数时(如此时执行的函数就是system_api_setvalue函数),机顶盒脚本解析引擎会对脚本程序所调用的注册功能函数的字符串进行hash运算(则运算出来的hash数值为0xfdcf5645),得到该注册功能函数对应的hash数值;
步骤60、机顶盒脚本程序分析注册功能函数所属的类,找出该类的内存空间,并将所述根据函数字符串进行hash运算得到的hash数值与所述内存空间中的固定长度的hash数值(如链表形式挂接在该注册功能函数所属类的空间下的0xfdcf5645)进行比对,找出注册功能函数hash数值相同的数据,然后取出该注册功能函数的字符串进行比对,如果一样则取出对应注册功能函数的指针(函数的字符串名称为“system_api_setvalue”其指针为system_api_setvalue)及注册功能函数的相关内容(如函数的属性,特性等)交由脚本解析引擎调用,如果不相同,则继续比对别的注册功能函数的hash数值。
总之,本发明使用hash表登记注册方式来对注册功能函数进行注册登记,能够实现对所需注册功能函数的快速查找。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (1)
1.一种机顶盒脚本扩充函数的方法,其特征在于:包括以下步骤:
步骤10、把机顶盒脚本调用的注册功能函数进行分类,每类函数对应一个类名,并对每个类分配一独立的内存空间进行存储;
步骤20、当机顶盒注册脚本程序时,获取一注册功能函数,并判断该函数对应的类在内存空间中是否存在,否,则分配一足够大的内存空间进行存储,是则判断该类的内存空间是否足够存储新的函数,否则继续分配一足够大的内存空间,再转入步骤30,是则直接进入步骤30;
步骤30、通过散列法把注册功能函数名的字符串转换为固定长度的数值,其散列法步骤如下:
步骤301、把注册功能函数名的字符串全部转换为大写;
步骤302、将转换后的字符串从头到尾开始按4个字节来组合成一个32位整型数据,以此类推直到最后4个字节组合成一个32位整型数据,并把这些32位整型数据进行加减乘除,以及与或非运算,最终得到一32位的整型数据;
步骤303、把最终得到32位的整型数据作为该注册功能函数名的字符串对应的固定长度的hash数值;
步骤40、将注册功能函数所属类的内存空间中分配一个空间用来存储该注册功能函数名的字符串、所述固定长度的hash数值以及注册功能函数的指针及注册功能函数的相关内容,并将空间中的这些数据以链表的形式挂接在该注册功能函数所属类的空间下;
步骤50、当机顶盒脚本程序执行一注册功能函数时,机顶盒脚本解析引擎会对脚本程序所调用的注册功能函数的字符串进行hash运算,得到该注册功能函数对应的hash数值;
步骤60、机顶盒脚本程序分析注册功能函数所属的类,找出该类的内存空间,并将所述根据函数字符串进行hash运算得到的hash数值与所述空间中的固定长度的hash数值进行比对,找出注册功能函数hash数值相同的数据,然后取出该注册功能函数的字符串进行比对,如果一样则取出对应注册功能函数的指针及注册功能函数的相关内容交由脚本解析引擎调用,如果不相同,则继续比对别的注册功能函数的hash数值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010566972A CN102117217B (zh) | 2010-11-29 | 2010-11-29 | 一种机顶盒脚本扩充函数的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010566972A CN102117217B (zh) | 2010-11-29 | 2010-11-29 | 一种机顶盒脚本扩充函数的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102117217A true CN102117217A (zh) | 2011-07-06 |
CN102117217B CN102117217B (zh) | 2012-10-03 |
Family
ID=44215999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010566972A Expired - Fee Related CN102117217B (zh) | 2010-11-29 | 2010-11-29 | 一种机顶盒脚本扩充函数的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102117217B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469186A (zh) * | 2016-08-29 | 2017-03-01 | 北京像素软件科技股份有限公司 | 一种字符串比较的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1487211A2 (en) * | 2003-06-11 | 2004-12-15 | Broadcom Corporation | Secure verification of an STB |
CN101304473A (zh) * | 2008-06-20 | 2008-11-12 | 中山大学 | 一种基于散列表的双向机顶盒会话信息维护方法 |
CN101365048A (zh) * | 2008-10-07 | 2009-02-11 | 北京四创多元网络科技有限公司 | 一种电视号发送、接收方法及其相应装置 |
CN101442658A (zh) * | 2008-12-25 | 2009-05-27 | 中兴通讯股份有限公司 | 网络电视增值业务中机顶盒用户接入及维护方法和系统 |
EP2219374A1 (en) * | 2009-02-13 | 2010-08-18 | Irdeto Access B.V. | Securely providing a control word from a smartcard to a conditional access module |
-
2010
- 2010-11-29 CN CN201010566972A patent/CN102117217B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1487211A2 (en) * | 2003-06-11 | 2004-12-15 | Broadcom Corporation | Secure verification of an STB |
CN101304473A (zh) * | 2008-06-20 | 2008-11-12 | 中山大学 | 一种基于散列表的双向机顶盒会话信息维护方法 |
CN101365048A (zh) * | 2008-10-07 | 2009-02-11 | 北京四创多元网络科技有限公司 | 一种电视号发送、接收方法及其相应装置 |
CN101442658A (zh) * | 2008-12-25 | 2009-05-27 | 中兴通讯股份有限公司 | 网络电视增值业务中机顶盒用户接入及维护方法和系统 |
EP2219374A1 (en) * | 2009-02-13 | 2010-08-18 | Irdeto Access B.V. | Securely providing a control word from a smartcard to a conditional access module |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469186A (zh) * | 2016-08-29 | 2017-03-01 | 北京像素软件科技股份有限公司 | 一种字符串比较的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102117217B (zh) | 2012-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101213940B1 (ko) | 확장가능한 파일 시스템 | |
EP2757521B1 (en) | Image search apparatus, image search method, program, and computer-readable recording medium | |
US8078628B2 (en) | Streaming faceted search | |
US11868710B2 (en) | Method and apparatus for displaying a text string copied from a first application in a second application | |
US20140358887A1 (en) | Application content search management | |
US20120117067A1 (en) | Method and apparatus for providing a range ordered tree structure | |
CN105988996B (zh) | 一种索引文件生成方法及装置 | |
CN104412266A (zh) | 用于具有动态排序的树结构的多维数据储存和文件系统的方法和装置 | |
CN102906747A (zh) | 用于可移动存储介质上的便携式索引的方法和装置 | |
CN102446087B (zh) | 指令预取方法与预取装置 | |
WO2012027975A1 (zh) | 一种提升业务脚本执行效率的装置及方法 | |
CN106649538A (zh) | 人脸搜索的方法及装置 | |
US9477664B2 (en) | Method and apparatus for querying media based on media characteristics | |
CN103123651A (zh) | 一种快速查看多个同类文件的方法、装置和移动设备 | |
CN102117217B (zh) | 一种机顶盒脚本扩充函数的方法 | |
CN103020186B (zh) | 一种基于嵌入式设备的文件检索方法、装置以及设备 | |
CN106919593A (zh) | 一种搜索的方法和装置 | |
CN106934066A (zh) | 一种元数据处理方法、装置和存储设备 | |
CN110955658A (zh) | 一种基于Java智能合约的数据组织和存储方法 | |
WO2018201993A1 (zh) | 图像绘制方法、终端及存储介质 | |
JP5673689B2 (ja) | 分析支援装置、分析支援方法、及び分析支援プログラム | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN110399337B (zh) | 基于数据驱动的文件自动化服务方法和系统 | |
CN102622354A (zh) | 一种基于特征向量的聚合数据快速查找方法 | |
CN113821514A (zh) | 数据拆分方法、装置、电子设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121003 Termination date: 20191129 |