Ещё раз хай. Есть у меня другая задачка, которая тоже к 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> Заранее спасибо тому, кто поможет. |