npvlc开发:NPVariant 提取出const char*部分数据的方法
来源:互联网 发布:c4.5算法python实现 编辑:程序博客网 时间:2024/05/21 20:24
最近在用NPAPI开发基于vlc的Firefox插件,基于开源项目npvlc进行定制修改,在这过程中遇到一些问题记录一下。
问题:从NPVariant 类型参数 提取出stringValue,然后从stringValue提取出 const char*部分数据
方法如下:
首先看 NPVariant定义:
typedef struct _NPVariant { NPVariantType type; union { bool boolValue; int32_t intValue; double doubleValue; NPString stringValue; NPObject *objectValue; } value;} NPVariant;
NPVariant提供NPVARIANT_TO_STRING(args[0]), NPVARIANT_TO_OBJECT(args[0]), NPVARIANT_TO_BOOLEAN(args[0]) 等操作【args为:NPVariant *args】,这些操作定义如下:
#define NPVARIANT_IS_VOID(_v) ((_v).type == NPVariantType_Void)#define NPVARIANT_IS_NULL(_v) ((_v).type == NPVariantType_Null)#define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool)#define NPVARIANT_IS_INT32(_v) ((_v).type == NPVariantType_Int32)#define NPVARIANT_IS_DOUBLE(_v) ((_v).type == NPVariantType_Double)#define NPVARIANT_IS_STRING(_v) ((_v).type == NPVariantType_String)#define NPVARIANT_IS_OBJECT(_v) ((_v).type == NPVariantType_Object)#define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue)#define NPVARIANT_TO_INT32(_v) ((_v).value.intValue)#define NPVARIANT_TO_DOUBLE(_v) ((_v).value.doubleValue)#define NPVARIANT_TO_STRING(_v) ((_v).value.stringValue)#define NPVARIANT_TO_OBJECT(_v) ((_v).value.objectValue)
而NPString定义如下:
typedef struct _NPString { const NPUTF8 *UTF8Characters; uint32_t UTF8Length;} NPString;
所以,很简单:从NPVariant 类型参数 提取出 const char*部分数据的方法是:
const char* outString = (NPVARIANT_TO_STRING(args[0])).UTF8Characters;
等价于:
const char* outString = args[0].value.stringValue.UTF8Characters;
同理
int outLength = (NPVARIANT_TO_STRING(args[0])).UTF8Length;
等价于:
int outLength= args[0].value.stringValue.UTF8Length;
- npvlc开发:NPVariant 提取出const char*部分数据的方法
- const char * 出告警
- 提取出Action公共的部分BaseAction
- 服务器开发之四 char star 和 const char star的转化的方法
- 强制修改const char*类型的数据
- 强制修改const char*类型的数据
- 提取出Dao中公共的部分BaseDao
- CString转换成const char*的方法
- const char*转LPCWSTR的方法记录
- const char *|char const char * 与char * const 的区别
- const char*, char const*, char*const区分方法
- 关于char * ,const char* 转 LPCWSTR 无效的方法
- sscanf()提取数据的方法
- const char * char * const strcpy 及数据存储区的总结
- const char*, char const*, char *const 的区别
- const char*, char const*, char*const的区别
- const char*, char const* and char *const 的区别
- const char*, char const* and char *const 的区别
- WaitMessage
- 你应该关注的几个Eclipse超酷插件
- Myeclipse中部署tomcat及项目在浏览器中运行
- android与服务器各种通信方式的区别
- dll Loadlibaray TLS
- npvlc开发:NPVariant 提取出const char*部分数据的方法
- 融合会议 IMS
- Selenium的延迟等待
- POJ 1160 Post Office (经典dp)
- SendMessage
- 写给想当程序员的朋友
- SQLServer跨库查询--分布式查询
- 视频帧率
- PostMessage