string\n\">return PyString_FromStringAndSize((char *)aDigest, 16); 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

return PyString_FromStringAndSize((char *)aDigest, 16);

Поиск

return PyString_FromStringAndSize((char *)aDigest, 16);

}

 

// и строка документации

 

PyDoc_STRVAR(digest_doc, "digest() -> string\n\ ...");

 

 

static PyObject * md5_hexdigest(md5object *self)

 

{

 

// Реализация метода на C

}

 

PyDoc_STRVAR(hexdigest_doc, "hexdigest() -> string\n...");

 

 

// Здесь было определение метода copy()

// Методы объекта в сборе.

// Для каждого метода указывается название, имя метода на C

// (с приведением к типу PyCFunction), способ передачи аргументов:

// METH_VARARGS (переменное кол-во) или METH_NOARGS (нет

аргументов)

 

// В конце массива - метка окончания спиcка аргументов. static PyMethodDef md5_methods[] = {

{"update",

(PyCFunction)md5_update,

METH_VARARGS,

 

update_doc},

(PyCFunction)md5_digest,

METH_NOARGS,

 

{"digest",

 

digest_doc},

 

 

 

{"hexdigest", (PyCFunction)md5_hexdigest, METH_NOARGS,

 

hexdigest_doc},

(PyCFunction)md5_copy,

METH_NOARGS, copy_doc},

 

{"copy",

 

{NULL, NULL}

 

/* sentinel */

 

};

 

 

 

 

// Атрибуты md5-объекта обслуживает эта функция, реализуя метод

// getattr.

static PyObject *

md5_getattr(md5object *self, char *name)

 

{

 


// атрибут-данное digest_size

 

if (strcmp(name, "digest_size") == 0) { return PyInt_FromLong(16);

 

}

// поиск атрибута-метода ведется в списке

 

return Py_FindMethod(md5_methods, (PyObject *)self, name);

 

}

 

// Строка документации к модулю md5 PyDoc_STRVAR(module_doc, "This module implements ...");

// Строка документации к классу md5 PyDoc_STRVAR(md5type_doc, "An md5 represents the object...");

 

// Структура для объекта MD5type с описаниями для интерпретатора static PyTypeObject MD5type = {

PyObject_HEAD_INIT(NULL)

0,                                   /*ob_size*/

"md5.md5",                   /*tp_name*/

sizeof(md5object),   /*tp_size*/

 

0,                                   /*tp_itemsize*/

 

/* methods */

(destructor)md5_dealloc, /*tp_dealloc*/



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 105; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.146 (0.007 с.)