static PyObject *app_translations_new(PyTypeObject *type, PyObject *UNUSED(args), PyObject *UNUSED(kw))
{
/*	printf("%s (%p)\n", __func__, _translations); */

	if (!_translations) {
		_translations = (BlenderAppTranslations *)type->tp_alloc(type, 0);
		if (_translations) {
			PyObject *py_ctxts;
			BLT_i18n_contexts_descriptor *ctxt;

			_translations->contexts = app_translations_contexts_make();

			py_ctxts = _PyDict_NewPresized(ARRAY_SIZE(_contexts));
			for (ctxt = _contexts; ctxt->c_id; ctxt++) {
				PyObject *val = PyUnicode_FromString(ctxt->py_id);
				PyDict_SetItemString(py_ctxts, ctxt->c_id, val);
				Py_DECREF(val);
			}
			_translations->contexts_C_to_py = PyDictProxy_New(py_ctxts);
			Py_DECREF(py_ctxts);  /* The actual dict is only owned by its proxy */

			_translations->py_messages = PyDict_New();
		}
	}

	return (PyObject *)_translations;
}
Exemple #2
0
PyMODINIT_FUNC
initweave(void)
{
	PyObject* module = Py_InitModule("weave", NULL);
	if(!module)
		return;
	
	PyWeave_SnifferType.tp_flags = Py_TPFLAGS_DEFAULT;
	PyWeave_SnifferType.tp_getset = PyWeave_SnifferGetSets;
	PyWeave_SnifferType.tp_methods = PyWeave_SnifferMethods;
	PyWeave_SnifferType.tp_members = PyWeave_SnifferMembers;

	if(PyType_Ready(&PyWeave_SnifferType) < 0)
		return;
	
	PyWeave_MessageType.tp_flags = Py_TPFLAGS_DEFAULT;
	PyWeave_MessageType.tp_getset = PyWeave_MessageGetSets;
	PyWeave_MessageType.tp_members = PyWeave_MessageMembers;
	PyWeave_MessageType.tp_repr = (reprfunc)PyWeave_Message_tp_repr;
	
	if(PyType_Ready(&PyWeave_MessageType) < 0)
		return;
	if(PyModule_AddObject(module, "Message", (PyObject*)&PyWeave_MessageType) < 0)
		return;
	
	PyWeave_ClientMessageType.tp_flags = Py_TPFLAGS_DEFAULT;
	PyWeave_ClientMessageType.tp_base = &PyWeave_MessageType;
	
	if(PyType_Ready(&PyWeave_ClientMessageType) < 0)
		return;
	if(PyModule_AddObject(module, "ClientMessage", (PyObject*)&PyWeave_ClientMessageType) < 0)
		return;
	
	PyWeave_ServerMessageType.tp_flags = Py_TPFLAGS_DEFAULT;
	PyWeave_ServerMessageType.tp_base = &PyWeave_MessageType;
	
	if(PyType_Ready(&PyWeave_ServerMessageType) < 0)
		return;
	if(PyModule_AddObject(module, "ServerMessage", (PyObject*)&PyWeave_ServerMessageType) < 0)
		return;
	
	PyWeave_SessionInfoType.tp_flags = Py_TPFLAGS_DEFAULT;
	PyWeave_SessionInfoType.tp_dealloc = (destructor)PyWeave_SessionInfo_tp_dealloc;
	PyWeave_SessionInfoType.tp_members = PyWeave_SessionInfoMembers;
	PyWeave_SessionInfoType.tp_getset = PyWeave_SessionInfoGetSets;
	if(PyType_Ready(&PyWeave_SessionInfoType) < 0)
		return;
	if(PyModule_AddObject(module, "SessionInfo", (PyObject*)&PyWeave_SessionInfoType) < 0)
		return;
	
	PyWeave_LogIterType.tp_flags = Py_TPFLAGS_DEFAULT;
	PyWeave_LogIterType.tp_dealloc = (destructor)PyWeave_LogIter_tp_dealloc;
	PyWeave_LogIterType.tp_iter = (getiterfunc)PyWeave_LogIter_tp_iter;
	PyWeave_LogIterType.tp_iternext = (iternextfunc)PyWeave_LogIter_tp_iternext;
	
	if(PyType_Ready(&PyWeave_LogIterType) < 0)
		return;
	if(PyModule_AddObject(module, "LogIter", (PyObject*)&PyWeave_LogIterType) < 0)
		return;
	
	PyWeave_LogType.tp_flags = Py_TPFLAGS_DEFAULT;
	PyWeave_LogType.tp_init = (initproc)PyWeave_Log_tp_init;
	PyWeave_LogType.tp_new = PyType_GenericNew;
	PyWeave_LogType.tp_iter = (getiterfunc)PyWeave_Log_tp_iter;
	
	if(PyType_Ready(&PyWeave_LogType) < 0)
		return;
	if(PyModule_AddObject(module, "Log", (PyObject*)&PyWeave_LogType) < 0)
		return;
	
	sniffer = PyObject_New(PyWeave_SnifferObject, &PyWeave_SnifferType);
	sniffer->message_handler = NULL;
	
	if(!sniffer || PyModule_AddObject(module, "Sniffer", (PyObject*)sniffer) < 0)
		return;
	
	Py_INCREF(&PyWeave_SnifferType);
	
	Weave::GameConnection::message_callback = PyWeave_message_callback;
	
	PyObject* opcode_dict = PyDict_New();
	if(!opcode_dict)
		return;
	
	unsigned int opcode_index;
	for(opcode_index = 0; opcode_index < Weave::Opcodes::count; opcode_index++)
	{
		if(PyModule_AddIntConstant(module, Weave::Opcodes::opcodes[opcode_index].name, (long)Weave::Opcodes::opcodes[opcode_index].opcode) < 0)
			return;
		
		PyObject* opcode_number = PyInt_FromLong((long)Weave::Opcodes::opcodes[opcode_index].opcode);
		PyObject* opcode_string = PyString_FromString(Weave::Opcodes::opcodes[opcode_index].name);
		
		PyDict_SetItem(opcode_dict, opcode_number, opcode_string);
	}
	
	PyObject* opcode_dict_proxy = PyDictProxy_New(opcode_dict);
	PyModule_AddObject(module, "opcodes", opcode_dict_proxy);
}
Exemple #3
0
PyObject* JySync_Init_PyDictProxy_From_JyDictProxy(jobject src, PyTypeObject* nonNativeSubtype)
{
	env(NULL);
	return PyDictProxy_New(JyNI_PyObject_FromJythonPyObject((*env)->GetObjectField(env,
		src, pyDictProxy_dictField)));
}
Exemple #4
0
/* specific data convert for chunk_crawler */
void
data_2_python(gpointer args, PyObject** pyobj_proxy){

	PyObject *pdatablock;

	switch(((struct motor_args*)args)->type_id){
		case 0:{
			break;
		}
		case 1:{
			break;
		}
		case 2:{
			/* type_id 2 represents meta2 */
			struct crawler_meta2_data_pack_s *data_block;
			data_block = ((struct motor_args*)args)->data_block;
			pdatablock = Py_BuildValue("{s:s, s:s, s:s, s:s}",
						"container_path", data_block->container_path,
						"container_id", data_block->container_id,
						"meta2_url", data_block->meta2_url,
						"ns_name", ((struct motor_args*)args)->ns_name);
			*pyobj_proxy = PyDictProxy_New(pdatablock);
			Py_XDECREF(pdatablock);
			break;
		}
		case 3:
		case 4:{ 
			/* type_id 3 represents crawler */
			PyObject *content_info = NULL, *chunk_info = NULL;
			struct crawler_chunk_data_pack_s *data_block;
			data_block = ((struct motor_args*)args)->data_block;

			/* data from content_info */
			if (data_block->content_info)
			content_info = Py_BuildValue("{s:s, s:s, s:s, s:s, s:s, s:s}", 
						"container_id", data_block->content_info->container_id,	/* the container id */
						"path", data_block->content_info->path,	/* the content name */
						"content_size", data_block->content_info->size,	/* the content size */
						"chunk_nb", data_block->content_info->chunk_nb,	/* the number of chunks */
						"metadata", data_block->content_info->metadata,	/* the user metadata */
						"system_metadata", data_block->content_info->system_metadata	/* the system metadata */
						);
			else
				content_info = Py_BuildValue("");
			/* data from chunk_info */
			if (data_block->chunk_info)
			chunk_info = Py_BuildValue("{s:s, s:s, s:s, s:s, s:s, s:s, s:s, s:s, s:s}", 
						"id", data_block->chunk_info->id,	/* the chunk id */
						"path", data_block->chunk_info->path,	/* the chunk path */
						"size", data_block->chunk_info->size,	/* the chunk size */
						"position", data_block->chunk_info->position,	/* the chunk position */
						"hash", data_block->chunk_info->hash,	/* the chunk hash */
						"metadata", data_block->chunk_info->metadata,	/* the chunk metadata */
						"container_id", data_block->chunk_info->container_id,	/* the container id */
						/*"last_scanned_time", data_block->chunk_info_extra->last_scanned_time,	 last_scanned_time */
						"compressedsize", data_block->chunk_info_extra->compressedsize,		/* size of compressed chunk */
						"metadatacompress", data_block->chunk_info_extra->metadatacompress	/* metadata of compressed chunk */
						);
			else
				chunk_info = Py_BuildValue("");
			/* build the pdatablock */
			pdatablock = Py_BuildValue("{s:O, s:O, s:l, s:l, s:l, s:s, s:s}",
						"content_info", content_info,
						"chunk_info", chunk_info,
						"atime", data_block->atime,
						"ctime", data_block->ctime,
						"mtime", data_block->mtime,
						"chunk_path", data_block->chunk_path,
						"ns_name", ((struct motor_args*)args)->ns_name
						);
			*pyobj_proxy = PyDictProxy_New(pdatablock);
			Py_XDECREF(pdatablock);
			Py_XDECREF(content_info);
			Py_XDECREF(chunk_info);
			break;
		}
		case 5:{
            /* type_id 5 represents sqlx */
            struct crawler_sqlx_data_pack_s *data_block;
            data_block = ((struct motor_args*)args)->data_block;
            pdatablock = Py_BuildValue("{s:s, s:s, s:s, s:s, s:s, s:s}",
			            "sqlx_path", data_block->sqlx_path,
						"sqlx_seq", data_block->sqlx_seq,
						"sqlx_cid", data_block->sqlx_cid,
						"sqlx_type", data_block->sqlx_type,
						"sqlx_url", data_block->sqlx_url,
						"ns_name", ((struct motor_args*)args)->ns_name);
			*pyobj_proxy = PyDictProxy_New(pdatablock);
			Py_XDECREF(pdatablock);
			break;
		}
		default:{
			ERROR("type_id: %d not defined in c2python.c", ((struct motor_args*)args)->type_id);
			break;
		}
	}
}