示例#1
0
struct o_document * o_document_copy(struct o_document * doc)
{
	struct o_document * new_doc = o_document_new();
	int i;
	int size;
	char ** keys = o_map_string_keys(doc->fields, &size);
	for (i = 0; i < size; ++i)
		o_map_string_put(new_doc->fields, keys[i], o_map_string_get(new_doc->fields, keys[i]));
	return new_doc;
}
示例#2
0
struct o_storage_factory * o_engine_get_factory(enum o_url_type type, char *path)
{
	struct o_engine *cur_engine = o_engine_get_instance();
	struct o_storage_factory * new_con;
	if ((new_con = o_map_string_get(cur_engine->factories, path)) == 0)
	{
		new_con = o_storage_factory_new(type, path);
		o_map_string_put(cur_engine->factories, path, new_con);
	}
	return new_con;
}
示例#3
0
struct o_connection * o_engine_get_connection(enum o_url_type type, char *path, char * username)
{
	struct o_engine *cur_engine = o_engine_get_instance();
	struct o_connection * new_con;
	char * key = createKey(path, username);
	if ((new_con = o_map_string_get(cur_engine->connections, key)) == 0)
	{
		new_con = o_connection_new(type, path);
		o_map_string_put(cur_engine->connections, key, new_con);
	}
	o_free(key);
	return new_con;
}
示例#4
0
struct o_storage * o_connection_storage_open(struct o_connection * conn, char * name, char * username, char * password)
{
	char * store_name = o_connection_build_storage_name(name, username);
	struct o_storage * str = o_map_string_get(conn->storages, store_name);
	if (str == 0)
	{
		conn->last_user = username;
		str = conn->storage_open(conn, name, username, password);
		o_map_string_put(conn->storages, store_name, str);
	}
	o_storage_reference(str);
	o_free(store_name);
	return str;
}
示例#5
0
struct o_document_value * o_document_field_get(struct o_document * doc, char * field_name)
{
	void * val = o_map_string_get(doc->fields, field_name);
	return (struct o_document_value *) val;
}
示例#6
0
int o_document_contains_field(struct o_document *doc, char * field_name)
{
	return o_map_string_get(doc->fields, field_name) != 0;
}