annotate PyFeatureSet.cpp @ 114:35ea82e24988

Ignore a few more things
author Chris Cannam
date Tue, 26 Feb 2019 14:30:16 +0000
parents 27bab3a16c9a
children
rev   line source
fazekasgy@37 1 /*
fazekasgy@37 2
fazekasgy@37 3 * Vampy : This plugin is a wrapper around the Vamp plugin API.
fazekasgy@37 4 * It allows for writing Vamp plugins in Python.
fazekasgy@37 5
fazekasgy@37 6 * Centre for Digital Music, Queen Mary University of London.
fazekasgy@37 7 * Copyright (C) 2008-2009 Gyorgy Fazekas, QMUL. (See Vamp sources
fazekasgy@37 8 * for licence information.)
fazekasgy@37 9
fazekasgy@37 10 */
fazekasgy@37 11
fazekasgy@37 12 #include <Python.h>
fazekasgy@37 13 #include "PyFeatureSet.h"
fazekasgy@37 14 #include "vamp-sdk/Plugin.h"
fazekasgy@37 15
fazekasgy@37 16 using namespace std;
fazekasgy@37 17
fazekasgy@37 18 static int
fazekasgy@37 19 FeatureSet_init(FeatureSetObject *self, PyObject *args, PyObject *kwds)
fazekasgy@37 20 {
fazekasgy@37 21 if (PyDict_Type.tp_init((PyObject *)self, args, kwds) < 0)
fazekasgy@37 22 return -1;
fazekasgy@37 23 return 0;
fazekasgy@37 24 }
fazekasgy@37 25
fazekasgy@37 26 static int
fazekasgy@37 27 FeatureSetObject_ass_sub(FeatureSetObject *mp, PyObject *v, PyObject *w)
fazekasgy@37 28 {
fazekasgy@37 29 if (!PyInt_CheckExact(v)) {
fazekasgy@37 30 PyErr_SetString(PyExc_ValueError,
fazekasgy@37 31 "Output index must be positive integer.");
fazekasgy@37 32 return 0;
fazekasgy@37 33 }
fazekasgy@37 34 if (w == NULL)
fazekasgy@37 35 return PyDict_DelItem((PyObject *)mp, v);
fazekasgy@37 36 else
fazekasgy@37 37 return PyDict_SetItem((PyObject *)mp, v, w);
fazekasgy@37 38 }
fazekasgy@37 39
fazekasgy@37 40 #define FeatureSet_alloc PyType_GenericAlloc
fazekasgy@37 41 #define FeatureSet_free PyObject_Del
fazekasgy@37 42 //#define FeatureSet_as_mapping PyDict_Type.tp_as_mapping
fazekasgy@37 43
fazekasgy@37 44 static PyMappingMethods FeatureSet_as_mapping = *(PyDict_Type.tp_as_mapping);
fazekasgy@37 45
fazekasgy@37 46 PyTypeObject FeatureSet_Type = PyDict_Type;
fazekasgy@37 47
fazekasgy@37 48 void
fazekasgy@37 49 initFeatureSetType(void)
fazekasgy@37 50 {
fazekasgy@37 51 /*This type is derived from PyDict. We just override some slots here.*/
fazekasgy@37 52 /*The typical use case is index based assignment as opposed to object memeber access.*/
fazekasgy@37 53 FeatureSet_Type.ob_type = &PyType_Type;
fazekasgy@37 54 FeatureSet_Type.tp_base = &PyDict_Type;
fazekasgy@37 55 FeatureSet_Type.tp_bases = PyTuple_Pack(1, FeatureSet_Type.tp_base);
fazekasgy@37 56 FeatureSet_Type.tp_name = "vampy.FeatureSet";
fazekasgy@37 57 // FeatureSet_Type.tp_new = FeatureSet_new;
fazekasgy@37 58 FeatureSet_Type.tp_init = (initproc)FeatureSet_init;
fazekasgy@37 59 FeatureSet_Type.tp_basicsize = sizeof(FeatureSetObject);
fazekasgy@37 60 FeatureSet_as_mapping.mp_ass_subscript = (objobjargproc)FeatureSetObject_ass_sub;
fazekasgy@37 61 FeatureSet_Type.tp_as_mapping = &FeatureSet_as_mapping;
fazekasgy@37 62 }
fazekasgy@37 63