当前位置: 首页>>代码示例>>C++>>正文


C++ PyTypeObject::tp_hash方法代码示例

本文整理汇总了C++中PyTypeObject::tp_hash方法的典型用法代码示例。如果您正苦于以下问题:C++ PyTypeObject::tp_hash方法的具体用法?C++ PyTypeObject::tp_hash怎么用?C++ PyTypeObject::tp_hash使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PyTypeObject的用法示例。


在下文中一共展示了PyTypeObject::tp_hash方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1:

BOOL 
Ps_LogObject(PyObject *object, int _type)
{
	FILE *file;
	PyTypeObject *type;
	PyObject *tmp;
	if(object == NULL)
		return FALSE;
	type = object->ob_type;

	GET_LOG_LOCK();
	switch(_type)
	{
	case Ps_LOG_ERROR:
		file = log_error;
		break;
	case Ps_LOG_WARING:
		file = log_waring;
		break;
	default:
		file = log_normal;
		break; 
	}
	assert(file);
	if(!type)
	{
		fprintf(file, "Object at %p is unknowntype\n", object);
		return FALSE;
	}
	fputs("--------------------\n", file);
	/*打印object的名字*/
	if(type->tp_name)
	{
		fprintf(file, "Object %s info:\n", type->tp_name);
	}
	else
	{
		fprintf(file, "Object at %p info:\n", object);
	}
	/*打印文档信息*/
	if(type->tp_doc)
		fprintf(file, "doc: %s\n", type->tp_doc);
	/*打印内存分配信息*/
	fprintf(file, "base size is %d\n", type->tp_basicsize);
	if(type->tp_itemsize)
	{
		fprintf(file, "Length changable object, Item size is %d\n", type->tp_itemsize);
	}
	else
		fputs("Length unchangable object.\n", file);
	/*repr和str的内容*/
	if(type->tp_repr)
	{
		tmp = type->tp_repr(object);
		if(tmp && PyString_Check(tmp) && PyString_AsString(tmp))
		{
			fprintf(file, "repr:%s\n", PyString_AsString(tmp));
		}
		else
		{
			fprintf(file, "repr:--Waring-- __repr__ donesn't return a PyStringObject\n");
		}
	}
	if(type->tp_str)
	{
		tmp = type->tp_str(object);
		if(tmp && PyString_Check(tmp) && PyString_AsString(tmp))
		{
			fprintf(file, "str:%s\n", PyString_AsString(tmp));
		}
		else
		{
			fprintf(file, "str:--Waring-- __str__ donesn't return a PyStringObject\n");
		}
	}
	/*HASH值*/
	if(type->tp_hash)
	{
		fprintf(file, "hash value: %ld\n", type->tp_hash(object));
	}
	/*是否是可调用的*/
	if(type->tp_call)
	{
		fprintf(file, "It's a callable object\n");
	}
	else
		fputs("It's an uncallable object\n", file);
	/*是否可迭代*/
	if(type->tp_iter && type->tp_iternext)
		fputs("It's a iterable object\n", file);
	else
		fputs("It's an uniterable object\n", file);

	fputs("----------------------\n", file);
	RELEASE_LOG_LOCK();
	return TRUE;
}
开发者ID:yuriyao,项目名称:PS,代码行数:97,代码来源:log.c


注:本文中的PyTypeObject::tp_hash方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。