Существует еще один способ, а не сообщение
//that way, send many object types diferentes
public anotherWayToReciveParameter(Object... objects)
{
//ready with array
final int length =objects.length;
System.out.println(length);
//for ready same list
Arrays.asList(objects);
}
, что более легко, зависит от контекста
Выезд tpl. Из обзора:
Tpl является библиотекой для сериализации C данные. Данные хранятся в его естественной двоичной форме. API является маленьким и пытается остаться "вне пути". По сравнению с использованием XML tpl быстрее и легче использовать в программах C. Tpl может сериализировать много типов данных C, включая структуры.
Я знаю, что Вы просите библиотеку. Если Вы не можете найти один (:: испуг:: Вы думали бы, что это было решенной проблемой!), вот схема для решения:
необходимо быть в состоянии записать генератор кода [1] для сериализации деревьев/графиков без (времени выполнения), предварительно обрабатывающего справедливо просто.
необходимо ли будет проанализировать структуру узла (typedef
обработка?), и запись включенные значения данных в прямо вперед виде, но обработке указатели с некоторой осторожностью.
Для указателя на другие объекты (т.е. char *name;
), который Вы знаете , отдельно ссылаются, можно сериализировать целевые данные непосредственно.
Для объектов, которые могли бы быть, умножают refernced, и для других узлов Вашего дерева необходимо будет представить структуру указателя. Каждому объекту присваивают номер сериализации, который является тем, что выписано оперативный из указателя. Поддержите структуру перевода между текущим положением памяти и числом сериализации. При обнаружении с указателем посмотрите, присваивают ли ему уже номер, в противном случае дайте его один и очередь, которые возражают для сериализации.
Чтение назад также требует node-#/memory-location шаг перевода и могло бы быть легче сделать в двух передачах: повторно создайте узлы с числами узла в слотах указателя (неверный указатель, быть предупрежденными) для обнаружения, куда каждый узел помещается, затем обойдите структуру, снова чинящую указатели.
я ничего не знаю о tpl, но Вы могли бы быть в состоянии осуществить контрейлерные перевозки на нем.
<час>формат on-disk/network должен, вероятно, быть структурирован с некоторой информацией о типе. Вам будет нужна искажающая имя схема.
<час>[1] КОРЕНЬ использование этот механизм для оказания очень гибкой поддержки сериализации в C++.
<час>Последнее дополнение: мне приходит в голову, что это не всегда столь легко, как я подразумевал выше. Считайте следующее (изобретенным и плохо разработанным) объявлением:
enum {
mask_none = 0x00,
mask_something = 0x01,
mask_another = 0x02,
/* ... */
mask_all = 0xff
};
typedef struct mask_map {
int mask_val;
char *mask_name;
} mask_map_t;
mask_map_t mask_list[] = {
{mask_something, "mask_something"},
{mask_another, "mask_another"},
/* ... */
};
struct saved_setup {
char* name;
/* various configuration data */
char* mask_name;
/* ... */
};
и предполагают что мы initalize struct saved_setup
объекты так, чтобы mask_name
точки в mask_list[foo].mask_name
.
, Когда мы идем для сериализации данных, что мы делаем с struct saved_setup.mask_name
?
необходимо будет заботиться в разработке структур данных и/или принести некоторую определенную для случая аналитику к процессу сериализации.
Можно смотреть на eet. Библиотека проекта просвещения сохранить типы данных C (включая вложенные структуры). Хотя почти все освобождает проекта просвещения, находятся в предварительном альфа-состоянии, eet уже выпущен. Я не уверен, однако, если это может обработать циклические ссылки. Вероятно, нет.
Я предполагаю, что Вы говорите о хранении структуры графика, если не тогда игнорируют...
, Если бы Ваше хранение графика, я лично думаю, лучшая идея реализовала бы функцию, которая преобразовывает Ваш график в матрицу смежности. Можно тогда сделать функцию, которая преобразовывает матрицу смежности в структуру данных графика.
Это обладает тремя преимуществами (который может или не может иметь значения в Вашем приложении):
я использовал этот метод во время проекта CS и определенно, как я сделал бы это снова.
можно читать больше о матрице смежности здесь: http://en.wikipedia.org/wiki/Modified_adjacency_matrix
Теоретически YAML должен делать то, что вы хотите http://code.google.com/p/yaml -cpp /
Сообщите мне, работает ли это для вас.