Страницы: 1
Ещё раз хай. Есть у меня другая задачка, которая тоже к Mozilla open source code относиться.
Имеется класс:
class IntArray {
public:
IntArray(int _length) {
length = _length;
data = new int[length];
cout << "in IntArray::IntArray" << endl;
}
~IntArray() {
delete [] data;
cout << "in IntArray::~IntArray" << endl;
}
int get(int pos, int *retval) {
cout << "in IntArray::get" << endl
if(pos<0 || pos>=length) {
cout << "NS_INTARRAY_GET_ERROR" <<endl;
return NS_INTARRAY_GET_ERROR;
}
*retval = data[pos];
cout << "pos=" << pos << ", value =" << *retval << endl;
return NS_OK;
}
int set(int pos, int value) {
cout << "in IntArray::set" << endl
if(pos<0 || pos>=length) {
cout << "NS_INTARRAY_SET_ERROR" <<endl;
return NS_INTARRAY_SET_ERROR;
}
data[pos] = value;
cout << "pos=" << pos << ", value =" << *retval << endl;
return NS_OK;
}
private:
int length;
int *data;
};
Необходимо представить класс в "XPCOM виде", и обеспечить возможность доступа к его методам из JavaScript.
Например, при открытии следующей страницы:
<html>
<script>
var array = new IntArray(20);
array.set(10,5);
array.get(10);
array = null;
</script>
</html>
в отладочном окне мы должны получить:
in IntArray::IntArray
in IntArray::set
pos=10, value=5
in IntArray::get
pos=10, value=5
in IntArray::~IntArray
Также необходимо убедиться что исключения перехватываются (see for example):
<html>
<script>
try {
var array = new IntArray(20);
array.set(50,5);
}
catch ( NS_INTARRAY_GET_ERROR ) {
document.write("NS_INTARRAY_GET_ERROR exception\n");
}
</script>
</html>
Заранее спасибо тому, кто поможет.
Отсутствует
Страницы: 1