XPCOM array

Mozilla December 20th, 2006

记录下 XPCOM 的 array 的使用.
一个传入 string array 的例子:
1. IDL 的定义

1
boolean Run(in PRUint32 count, [array, size_is(count)] in string args);

2. CPP 的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
NS_IMETHODIMP nsAntlerIPC::Run(PRUint32 count, const char **args, PRBool *_retval) {
    char **child_argv = NULL;
 
    child_argv = (char **)nsMemory::Alloc(sizeof(char *) * (count + 1));    
 
    if (!child_argv)
        return NS_ERROR_OUT_OF_MEMORY;
 
    PRUint32 i;
    for (i=0; i<count; i++) {
        child_argv[i] = NS_CONST_CAST(char*, args[i]); 
    }
    child_argv[count] = NULL;
 
    return NS_OK;
}

3. JS 的调用

?View Code JAVASCRIPT
1
2
var  argv = new Array("Just", "for", "test.");
obj.Run(argv.length, argv);

Related posts:

  1. XPCOM: Javascript function call
  2. XPCOM: Javascript function call alternative
  3. 一个 JavaScript 代码语法高亮类

Tags:



Leave a Comment