2012-06-14 2 views
1

Я разрабатываю расширение Firefox, и мне нужно выполнить некоторые высокоскоростные вычисления, используя структурированные данные, представленные в настоящее время в виде объекта Javascript. Для этого я планирую написать библиотеку C для вызова с помощью js-ctypes. Есть ли способ передать объект Javascript в родную библиотеку с использованием JS-ctypes? Пример данных:Передача структурированных данных на собственный код с использованием JS-ctypes

{vendors: 
{Oracle: {products: 
{Exadata: {spec1: 111, spec2: 222}, Exalogic: 
{spec1: 111, spec2: 222}}}, IBM: {products: {WebSphere: {spec1: 111, spec2:222}}} 
}} 

Заранее спасибо.

ответ

2

Вы можете передавать только те типы, которые действительны на C. И поскольку C не имеет понятия о типах словарей или подобных данных, вы не можете передать их на свой код C. Таким образом, у вас в основном есть два варианта:

  1. Вы используете JSON.stringify(), чтобы превратить этот объект в строку. Затем вам нужно найти библиотеку C, которая может анализировать JSON и позволит вам как-то работать с ней.
  2. Вы преобразовываете данные JavaScript в типы, которые C может понять напрямую. Например, вы можете передать array из Vendor structures с каждой структурой Vendor, содержащей указатель на массив из Product структур. Конечно, ваш C-код должен знать размер массива - это должен быть параметр функции для прежнего массива и поле структуры Vendor для последнего.
+0

большое спасибо, Владимир! Тогда я продолжу изучение C. –