summaryrefslogtreecommitdiff
path: root/python/src/sa
diff options
context:
space:
mode:
authorVictor Chahuneau <vchahune@cs.cmu.edu>2013-08-26 20:12:32 -0400
committerVictor Chahuneau <vchahune@cs.cmu.edu>2013-08-26 20:12:32 -0400
commitca9b58716214148eeaeaa3076e1a1dc8f8bb5892 (patch)
treebfa2fd84c86e0fdd499110e86fd464b391379df1 /python/src/sa
parent9d5071692ceab8d09c2bfdba24f6b927ec84b7f9 (diff)
Improve the package structure of pycdec
This change should not break anything, but now you can run: python setup.py build_ext --inplace and use the cleaner: PYTHONPATH=/path/to/cdec/python python -m ...
Diffstat (limited to 'python/src/sa')
-rw-r--r--python/src/sa/_sa.c80507
-rw-r--r--python/src/sa/_sa.pxd45
-rw-r--r--python/src/sa/_sa.pyx30
-rw-r--r--python/src/sa/alignment.pxi107
-rw-r--r--python/src/sa/bilex.pxi413
-rw-r--r--python/src/sa/data_array.pxi157
-rw-r--r--python/src/sa/features.pxi33
-rw-r--r--python/src/sa/float_list.pxi73
-rw-r--r--python/src/sa/int_list.pxi178
-rw-r--r--python/src/sa/lcp.pxi89
-rw-r--r--python/src/sa/precomputation.pxi454
-rw-r--r--python/src/sa/rule.pxi192
-rw-r--r--python/src/sa/rulefactory.pxi2224
-rw-r--r--python/src/sa/str_map.pxi23
-rw-r--r--python/src/sa/strmap.cc232
-rw-r--r--python/src/sa/strmap.h22
-rw-r--r--python/src/sa/suffix_array.pxi250
-rw-r--r--python/src/sa/sym.pxi125
-rw-r--r--python/src/sa/veb.pxi392
19 files changed, 0 insertions, 85546 deletions
diff --git a/python/src/sa/_sa.c b/python/src/sa/_sa.c
deleted file mode 100644
index 2e565e22..00000000
--- a/python/src/sa/_sa.c
+++ /dev/null
@@ -1,80507 +0,0 @@
-/* Generated by Cython 0.19.1 on Sun Jun 2 14:47:43 2013 */
-
-#define PY_SSIZE_T_CLEAN
-#ifndef CYTHON_USE_PYLONG_INTERNALS
-#ifdef PYLONG_BITS_IN_DIGIT
-#define CYTHON_USE_PYLONG_INTERNALS 0
-#else
-#include "pyconfig.h"
-#ifdef PYLONG_BITS_IN_DIGIT
-#define CYTHON_USE_PYLONG_INTERNALS 1
-#else
-#define CYTHON_USE_PYLONG_INTERNALS 0
-#endif
-#endif
-#endif
-#include "Python.h"
-#ifndef Py_PYTHON_H
- #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02040000
- #error Cython requires Python 2.4+.
-#else
-#include <stddef.h> /* For offsetof */
-#ifndef offsetof
-#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
- #ifndef __stdcall
- #define __stdcall
- #endif
- #ifndef __cdecl
- #define __cdecl
- #endif
- #ifndef __fastcall
- #define __fastcall
- #endif
-#endif
-#ifndef DL_IMPORT
- #define DL_IMPORT(t) t
-#endif
-#ifndef DL_EXPORT
- #define DL_EXPORT(t) t
-#endif
-#ifndef PY_LONG_LONG
- #define PY_LONG_LONG LONG_LONG
-#endif
-#ifndef Py_HUGE_VAL
- #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
-#define CYTHON_COMPILING_IN_PYPY 1
-#define CYTHON_COMPILING_IN_CPYTHON 0
-#else
-#define CYTHON_COMPILING_IN_PYPY 0
-#define CYTHON_COMPILING_IN_CPYTHON 1
-#endif
-#if PY_VERSION_HEX < 0x02050000
- typedef int Py_ssize_t;
- #define PY_SSIZE_T_MAX INT_MAX
- #define PY_SSIZE_T_MIN INT_MIN
- #define PY_FORMAT_SIZE_T ""
- #define CYTHON_FORMAT_SSIZE_T ""
- #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
- #define PyInt_AsSsize_t(o) __Pyx_PyInt_AsInt(o)
- #define PyNumber_Index(o) ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
- (PyErr_Format(PyExc_TypeError, \
- "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
- (PyObject*)0))
- #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
- !PyComplex_Check(o))
- #define PyIndex_Check __Pyx_PyIndex_Check
- #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
- #define __PYX_BUILD_PY_SSIZE_T "i"
-#else
- #define __PYX_BUILD_PY_SSIZE_T "n"
- #define CYTHON_FORMAT_SSIZE_T "z"
- #define __Pyx_PyIndex_Check PyIndex_Check
-#endif
-#if PY_VERSION_HEX < 0x02060000
- #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
- #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
- #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size)
- #define PyVarObject_HEAD_INIT(type, size) \
- PyObject_HEAD_INIT(type) size,
- #define PyType_Modified(t)
- typedef struct {
- void *buf;
- PyObject *obj;
- Py_ssize_t len;
- Py_ssize_t itemsize;
- int readonly;
- int ndim;
- char *format;
- Py_ssize_t *shape;
- Py_ssize_t *strides;
- Py_ssize_t *suboffsets;
- void *internal;
- } Py_buffer;
- #define PyBUF_SIMPLE 0
- #define PyBUF_WRITABLE 0x0001
- #define PyBUF_FORMAT 0x0004
- #define PyBUF_ND 0x0008
- #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
- #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
- #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
- #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
- #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
- #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
- #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
- typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
- typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
-#endif
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
- PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#else
- #define __Pyx_BUILTIN_MODULE_NAME "builtins"
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
- PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-#endif
-#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
- #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define Py_TPFLAGS_CHECKTYPES 0
- #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
- #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#if PY_VERSION_HEX < 0x02060000
- #define Py_TPFLAGS_HAVE_VERSION_TAG 0
-#endif
-#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
- #define CYTHON_PEP393_ENABLED 1
- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \
- 0 : _PyUnicode_Ready((PyObject *)(op)))
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
- #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
-#else
- #define CYTHON_PEP393_ENABLED 0
- #define __Pyx_PyUnicode_READY(op) (0)
- #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
- #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
- #define __Pyx_PyUnicode_READ(k, d, i) ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBaseString_Type PyUnicode_Type
- #define PyStringObject PyUnicodeObject
- #define PyString_Type PyUnicode_Type
- #define PyString_Check PyUnicode_Check
- #define PyString_CheckExact PyUnicode_CheckExact
-#endif
-#if PY_VERSION_HEX < 0x02060000
- #define PyBytesObject PyStringObject
- #define PyBytes_Type PyString_Type
- #define PyBytes_Check PyString_Check
- #define PyBytes_CheckExact PyString_CheckExact
- #define PyBytes_FromString PyString_FromString
- #define PyBytes_FromStringAndSize PyString_FromStringAndSize
- #define PyBytes_FromFormat PyString_FromFormat
- #define PyBytes_DecodeEscape PyString_DecodeEscape
- #define PyBytes_AsString PyString_AsString
- #define PyBytes_AsStringAndSize PyString_AsStringAndSize
- #define PyBytes_Size PyString_Size
- #define PyBytes_AS_STRING PyString_AS_STRING
- #define PyBytes_GET_SIZE PyString_GET_SIZE
- #define PyBytes_Repr PyString_Repr
- #define PyBytes_Concat PyString_Concat
- #define PyBytes_ConcatAndDel PyString_ConcatAndDel
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
- #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
-#else
- #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \
- PyString_Check(obj) || PyUnicode_Check(obj))
- #define __Pyx_PyBaseString_CheckExact(obj) (Py_TYPE(obj) == &PyBaseString_Type)
-#endif
-#if PY_VERSION_HEX < 0x02060000
- #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type)
- #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type)
-#endif
-#ifndef PySet_CheckExact
- #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
-#endif
-#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
-#if PY_MAJOR_VERSION >= 3
- #define PyIntObject PyLongObject
- #define PyInt_Type PyLong_Type
- #define PyInt_Check(op) PyLong_Check(op)
- #define PyInt_CheckExact(op) PyLong_CheckExact(op)
- #define PyInt_FromString PyLong_FromString
- #define PyInt_FromUnicode PyLong_FromUnicode
- #define PyInt_FromLong PyLong_FromLong
- #define PyInt_FromSize_t PyLong_FromSize_t
- #define PyInt_FromSsize_t PyLong_FromSsize_t
- #define PyInt_AsLong PyLong_AsLong
- #define PyInt_AS_LONG PyLong_AS_LONG
- #define PyInt_AsSsize_t PyLong_AsSsize_t
- #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
- #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyBoolObject PyLongObject
-#endif
-#if PY_VERSION_HEX < 0x03020000
- typedef long Py_hash_t;
- #define __Pyx_PyInt_FromHash_t PyInt_FromLong
- #define __Pyx_PyInt_AsHash_t PyInt_AsLong
-#else
- #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
- #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
-#endif
-#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
- #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
- #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
- #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
-#else
- #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
- (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
- (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
- (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
- #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
- (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
- (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
- (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
- #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
- (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
- (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
- (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
-#endif
-#if PY_MAJOR_VERSION >= 3
- #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
-#endif
-#if PY_VERSION_HEX < 0x02050000
- #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n)))
- #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
- #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n)))
-#else
- #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n))
- #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
- #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n))
-#endif
-#if PY_VERSION_HEX < 0x02050000
- #define __Pyx_NAMESTR(n) ((char *)(n))
- #define __Pyx_DOCSTR(n) ((char *)(n))
-#else
- #define __Pyx_NAMESTR(n) (n)
- #define __Pyx_DOCSTR(n) (n)
-#endif
-#ifndef CYTHON_INLINE
- #if defined(__GNUC__)
- #define CYTHON_INLINE __inline__
- #elif defined(_MSC_VER)
- #define CYTHON_INLINE __inline
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_INLINE inline
- #else
- #define CYTHON_INLINE
- #endif
-#endif
-#ifndef CYTHON_RESTRICT
- #if defined(__GNUC__)
- #define CYTHON_RESTRICT __restrict__
- #elif defined(_MSC_VER)
- #define CYTHON_RESTRICT __restrict
- #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #define CYTHON_RESTRICT restrict
- #else
- #define CYTHON_RESTRICT
- #endif
-#endif
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
- /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and
- a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is
- a quiet NaN. */
- float value;
- memset(&value, 0xFF, sizeof(value));
- return value;
-}
-#endif
-
-
-#if PY_MAJOR_VERSION >= 3
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
-#else
- #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
- #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
-#endif
-
-#ifndef __PYX_EXTERN_C
- #ifdef __cplusplus
- #define __PYX_EXTERN_C extern "C"
- #else
- #define __PYX_EXTERN_C extern
- #endif
-#endif
-
-#if defined(WIN32) || defined(MS_WINDOWS)
-#define _USE_MATH_DEFINES
-#endif
-#include <math.h>
-#define __PYX_HAVE___sa
-#define __PYX_HAVE_API___sa
-#include "string.h"
-#include "stdio.h"
-#include "stdlib.h"
-#include "strmap.h"
-#include "math.h"
-#ifdef _OPENMP
-#include <omp.h>
-#endif /* _OPENMP */
-
-#ifdef PYREX_WITHOUT_ASSERTIONS
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-#ifndef CYTHON_UNUSED
-# if defined(__GNUC__)
-# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
-# define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-# define CYTHON_UNUSED
-# endif
-#endif
-typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
- const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
-
-#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
-#define __PYX_DEFAULT_STRING_ENCODING ""
-#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
-#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
-static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
-#define __Pyx_PyBytes_FromString PyBytes_FromString
-#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*);
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
- #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
- #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_FromUString(s) __Pyx_PyObject_FromString((char*)s)
-#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s)
-#define __Pyx_PyStr_FromUString(s) __Pyx_PyStr_FromString((char*)s)
-#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((char*)s)
-#if PY_MAJOR_VERSION < 3
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
-{
- const Py_UNICODE *u_end = u;
- while (*u_end++) ;
- return u_end - u - 1;
-}
-#else
-#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
-#endif
-#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
-#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
-#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
-#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
-static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
-#else
-#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
-#endif
-#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-static int __Pyx_sys_getdefaultencoding_not_ascii;
-static int __Pyx_init_sys_getdefaultencoding_params() {
- PyObject* sys = NULL;
- PyObject* default_encoding = NULL;
- PyObject* ascii_chars_u = NULL;
- PyObject* ascii_chars_b = NULL;
- sys = PyImport_ImportModule("sys");
- if (sys == NULL) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
- if (default_encoding == NULL) goto bad;
- if (strcmp(PyBytes_AsString(default_encoding), "ascii") == 0) {
- __Pyx_sys_getdefaultencoding_not_ascii = 0;
- } else {
- const char* default_encoding_c = PyBytes_AS_STRING(default_encoding);
- char ascii_chars[128];
- int c;
- for (c = 0; c < 128; c++) {
- ascii_chars[c] = c;
- }
- __Pyx_sys_getdefaultencoding_not_ascii = 1;
- ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
- if (ascii_chars_u == NULL) goto bad;
- ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
- if (ascii_chars_b == NULL || strncmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
- PyErr_Format(
- PyExc_ValueError,
- "This module compiled with c_string_encoding=ascii, but default encoding '%s' is not a superset of ascii.",
- default_encoding_c);
- goto bad;
- }
- }
- Py_XDECREF(sys);
- Py_XDECREF(default_encoding);
- Py_XDECREF(ascii_chars_u);
- Py_XDECREF(ascii_chars_b);
- return 0;
-bad:
- Py_XDECREF(sys);
- Py_XDECREF(default_encoding);
- Py_XDECREF(ascii_chars_u);
- Py_XDECREF(ascii_chars_b);
- return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
-static char* __PYX_DEFAULT_STRING_ENCODING;
-static int __Pyx_init_sys_getdefaultencoding_params() {
- PyObject* sys = NULL;
- PyObject* default_encoding = NULL;
- char* default_encoding_c;
- sys = PyImport_ImportModule("sys");
- if (sys == NULL) goto bad;
- default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
- if (default_encoding == NULL) goto bad;
- default_encoding_c = PyBytes_AS_STRING(default_encoding);
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
- strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
- Py_DECREF(sys);
- Py_DECREF(default_encoding);
- return 0;
-bad:
- Py_XDECREF(sys);
- Py_XDECREF(default_encoding);
- return -1;
-}
-#endif
-#endif
-
-
-#ifdef __GNUC__
- /* Test for GCC > 2.95 */
- #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
- #define likely(x) __builtin_expect(!!(x), 1)
- #define unlikely(x) __builtin_expect(!!(x), 0)
- #else /* __GNUC__ > 2 ... */
- #define likely(x) (x)
- #define unlikely(x) (x)
- #endif /* __GNUC__ > 2 ... */
-#else /* __GNUC__ */
- #define likely(x) (x)
- #define unlikely(x) (x)
-#endif /* __GNUC__ */
-
-static PyObject *__pyx_m;
-static PyObject *__pyx_d;
-static PyObject *__pyx_b;
-static PyObject *__pyx_empty_tuple;
-static PyObject *__pyx_empty_bytes;
-static int __pyx_lineno;
-static int __pyx_clineno = 0;
-static const char * __pyx_cfilenm= __FILE__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
- "_sa.pyx",
- "float_list.pxi",
- "int_list.pxi",
- "data_array.pxi",
- "alignment.pxi",
- "bilex.pxi",
- "veb.pxi",
- "rule.pxi",
- "rulefactory.pxi",
- "lcp.pxi",
- "sym.pxi",
- "precomputation.pxi",
- "suffix_array.pxi",
- "features.pxi",
- "str_map.pxi",
-};
-
-/*--- Type declarations ---*/
-struct __pyx_obj_3_sa_HieroCachingRuleFactory;
-struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence;
-struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr;
-struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr;
-struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats;
-struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr;
-struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr;
-struct __pyx_obj_3_sa_IntList;
-struct __pyx_obj_3_sa_VEBIterator;
-struct __pyx_obj_3_sa_BiLex;
-struct __pyx_obj_3_sa_VEB;
-struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words;
-struct __pyx_obj_3_sa_LCP;
-struct __pyx_obj_3_sa_DataArray;
-struct __pyx_obj_3_sa_BitSetIterator;
-struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr;
-struct __pyx_obj_3_sa_Precomputation;
-struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments;
-struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr;
-struct __pyx_obj_3_sa_SuffixArray;
-struct __pyx_obj_3_sa___pyx_scope_struct_16___str__;
-struct __pyx_obj_3_sa_Alphabet;
-struct __pyx_obj_3_sa_Rule;
-struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr;
-struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance;
-struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr;
-struct __pyx_obj_3_sa_PhraseLocation;
-struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__;
-struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule;
-struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr;
-struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule;
-struct __pyx_obj_3_sa___pyx_scope_struct_28___str__;
-struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext;
-struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words;
-struct __pyx_obj_3_sa_FeatureVector;
-struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice;
-struct __pyx_obj_3_sa___pyx_scope_struct_19_input;
-struct __pyx_obj_3_sa_Scorer;
-struct __pyx_obj_3_sa_Alignment;
-struct __pyx_obj_3_sa_BitSet;
-struct __pyx_obj_3_sa_Sampler;
-struct __pyx_obj_3_sa_StringMap;
-struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases;
-struct __pyx_obj_3_sa_TrieNode;
-struct __pyx_obj_3_sa_ExtendedTrieNode;
-struct __pyx_obj_3_sa_TrieMap;
-struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr;
-struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice;
-struct __pyx_obj_3_sa_Phrase;
-struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__;
-struct __pyx_obj_3_sa___pyx_scope_struct____iter__;
-struct __pyx_obj_3_sa_TrieTable;
-struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr;
-struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr;
-struct __pyx_obj_3_sa_FloatList;
-struct __pyx_t_3_sa__node;
-struct __pyx_t_3_sa__BitSet;
-struct __pyx_t_3_sa__VEB;
-struct __pyx_t_3_sa__Trie_Edge;
-struct __pyx_t_3_sa__Trie_Node;
-struct __pyx_t_3_sa_match_node;
-struct __pyx_t_3_sa_Matching;
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":9
- * from libc.string cimport memset, strcpy
- *
- * cdef struct _node: # <<<<<<<<<<<<<<
- * _node* smaller
- * _node* bigger
- */
-struct __pyx_t_3_sa__node {
- struct __pyx_t_3_sa__node *smaller;
- struct __pyx_t_3_sa__node *bigger;
- int key;
- int val;
-};
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":30
- * _init_lower_mask()
- *
- * cdef struct _BitSet: # <<<<<<<<<<<<<<
- * long bitset
- * int min_val
- */
-struct __pyx_t_3_sa__BitSet {
- long bitset;
- int min_val;
- int max_val;
- int size;
-};
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":168
- * return result
- *
- * cdef struct _VEB: # <<<<<<<<<<<<<<
- * int top_universe_size
- * int num_bottom_bits
- */
-struct __pyx_t_3_sa__VEB {
- int top_universe_size;
- int num_bottom_bits;
- int max_val;
- int min_val;
- int size;
- void *top;
- void **bottom;
-};
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":10
- * cdef struct _Trie_Node # forward decl
- *
- * cdef struct _Trie_Edge: # <<<<<<<<<<<<<<
- * int val
- * _Trie_Node* node
- */
-struct __pyx_t_3_sa__Trie_Edge {
- int val;
- struct __pyx_t_3_sa__Trie_Node *node;
- struct __pyx_t_3_sa__Trie_Edge *bigger;
- struct __pyx_t_3_sa__Trie_Edge *smaller;
-};
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":8
- * from libc.string cimport memset, memcpy
- *
- * cdef struct _Trie_Node # forward decl # <<<<<<<<<<<<<<
- *
- * cdef struct _Trie_Edge:
- */
-struct __pyx_t_3_sa__Trie_Node {
- struct __pyx_t_3_sa__Trie_Edge *root;
- int *arr;
- int arr_len;
-};
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":76
- *
- * # linked list structure for storing matches in BaselineRuleFactory
- * cdef struct match_node: # <<<<<<<<<<<<<<
- * int* match
- * match_node* next
- */
-struct __pyx_t_3_sa_match_node {
- int *match;
- struct __pyx_t_3_sa_match_node *next;
-};
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":172
- *
- * # struct used to encapsulate a single matching
- * cdef struct Matching: # <<<<<<<<<<<<<<
- * int* arr
- * int start
- */
-struct __pyx_t_3_sa_Matching {
- int *arr;
- int start;
- int end;
- int sent_id;
- int size;
-};
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":228
- *
- *
- * cdef class HieroCachingRuleFactory: # <<<<<<<<<<<<<<
- * '''This RuleFactory implements a caching
- * method using TrieTable, which makes phrase
- */
-struct __pyx_obj_3_sa_HieroCachingRuleFactory {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *__pyx_vtab;
- struct __pyx_obj_3_sa_TrieTable *rules;
- struct __pyx_obj_3_sa_Sampler *sampler;
- struct __pyx_obj_3_sa_Scorer *scorer;
- int max_chunks;
- int max_target_chunks;
- int max_length;
- int max_target_length;
- int max_nonterminals;
- int max_initial_size;
- int train_max_initial_size;
- int min_gap_size;
- int train_min_gap_size;
- int category;
- PyObject *precomputed_index;
- PyObject *precomputed_collocations;
- PyObject *precompute_file;
- PyObject *max_rank;
- int precompute_rank;
- int precompute_secondary_rank;
- int use_baeza_yates;
- int use_index;
- int use_collocations;
- float by_slack_factor;
- PyObject *prev_norm_prefix;
- float extract_time;
- float intersect_time;
- struct __pyx_obj_3_sa_SuffixArray *fsa;
- struct __pyx_obj_3_sa_DataArray *fda;
- struct __pyx_obj_3_sa_DataArray *eda;
- struct __pyx_obj_3_sa_Alignment *alignment;
- struct __pyx_obj_3_sa_IntList *eid2symid;
- struct __pyx_obj_3_sa_IntList *fid2symid;
- int tight_phrases;
- int require_aligned_terminal;
- int require_aligned_chunks;
- struct __pyx_obj_3_sa_IntList *findexes;
- struct __pyx_obj_3_sa_IntList *findexes1;
- int online;
- PyObject *samples_f;
- PyObject *phrases_f;
- PyObject *phrases_e;
- PyObject *phrases_fe;
- PyObject *phrases_al;
- PyObject *bilex_f;
- PyObject *bilex_e;
- PyObject *bilex_fe;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118
- * for arc in node for node in lattice)
- *
- * def decode_sentence(lattice): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence {
- PyObject_HEAD
- PyObject *__pyx_v_lattice;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":187
- * fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]
- * if self.word_alignments is not None:
- * fields.append(' '.join('%d-%d' % a for a in self.alignments())) # <<<<<<<<<<<<<<
- * return ' ||| '.join(fields)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *__pyx_outer_scope;
- PyObject *__pyx_v_a;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1187
- * # Online rule extraction and scoring
- * if self.online:
- * f_syms = tuple(word[0][0] for word in fwords) # <<<<<<<<<<<<<<
- * for f, lex_i, lex_j in self.get_f_phrases(f_syms):
- * spanlen = (lex_j - lex_i) + 1
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_19_input *__pyx_outer_scope;
- PyObject *__pyx_v_word;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":36
- * logger.info("LCP array completed")
- *
- * def compute_stats(self, int max_n): # <<<<<<<<<<<<<<
- * """Note: the output of this function is not exact. In
- * particular, the frequency associated with each word is
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats {
- PyObject_HEAD
- int __pyx_v_N;
- int __pyx_v_freq;
- int __pyx_v_h;
- int __pyx_v_i;
- int __pyx_v_ii;
- int __pyx_v_iii;
- int __pyx_v_j;
- int __pyx_v_k;
- int __pyx_v_max_n;
- int __pyx_v_n;
- PyObject *__pyx_v_ngram;
- struct __pyx_obj_3_sa_IntList *__pyx_v_ngram_start;
- PyObject *__pyx_v_ngram_starts;
- int __pyx_v_rs;
- struct __pyx_obj_3_sa_IntList *__pyx_v_run_start;
- struct __pyx_obj_3_sa_LCP *__pyx_v_self;
- int __pyx_v_valid;
- struct __pyx_obj_3_sa_VEB *__pyx_v_veb;
- int __pyx_t_0;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":122
- *
- * def encode_words(words):
- * return tuple(sym_fromstring(word, True) for word in words) # <<<<<<<<<<<<<<
- *
- * def decode_words(syms):
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *__pyx_outer_scope;
- PyObject *__pyx_v_word;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":21
- *
- * def __str__(self):
- * return ' '.join('%s=%s' % feat for feat in self) # <<<<<<<<<<<<<<
- *
- * cdef class Scorer:
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *__pyx_outer_scope;
- PyObject *__pyx_v_feat;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "_sa.pxd":12
- * cdef void read_handle(self, FILE* f)
- *
- * cdef class IntList: # <<<<<<<<<<<<<<
- * cdef int size
- * cdef int increment
- */
-struct __pyx_obj_3_sa_IntList {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_IntList *__pyx_vtab;
- int size;
- int increment;
- int len;
- int *arr;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":340
- *
- *
- * cdef class VEBIterator: # <<<<<<<<<<<<<<
- * cdef _VEB* v
- * cdef int next_val
- */
-struct __pyx_obj_3_sa_VEBIterator {
- PyObject_HEAD
- struct __pyx_t_3_sa__VEB *v;
- int next_val;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":47
- *
- *
- * cdef class BiLex: # <<<<<<<<<<<<<<
- * cdef FloatList col1
- * cdef FloatList col2
- */
-struct __pyx_obj_3_sa_BiLex {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_BiLex *__pyx_vtab;
- struct __pyx_obj_3_sa_FloatList *col1;
- struct __pyx_obj_3_sa_FloatList *col2;
- struct __pyx_obj_3_sa_IntList *f_index;
- struct __pyx_obj_3_sa_IntList *e_index;
- PyObject *id2eword;
- PyObject *id2fword;
- PyObject *eword2id;
- PyObject *fword2id;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":354
- *
- *
- * cdef class VEB: # <<<<<<<<<<<<<<
- * cdef _VEB* veb
- * cdef int _findsucc(self, int i)
- */
-struct __pyx_obj_3_sa_VEB {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_VEB *__pyx_vtab;
- struct __pyx_t_3_sa__VEB *veb;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- * def encode_words(words): # <<<<<<<<<<<<<<
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words {
- PyObject_HEAD
- PyObject *__pyx_v_words;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":5
- * as k most frequent n-grams"""
- *
- * cdef class LCP: # <<<<<<<<<<<<<<
- * cdef SuffixArray sa
- * cdef IntList lcp
- */
-struct __pyx_obj_3_sa_LCP {
- PyObject_HEAD
- struct __pyx_obj_3_sa_SuffixArray *sa;
- struct __pyx_obj_3_sa_IntList *lcp;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":9
- * from libc.string cimport memset, strcpy
- *
- * cdef class DataArray: # <<<<<<<<<<<<<<
- * cdef public word2id
- * cdef public id2word
- */
-struct __pyx_obj_3_sa_DataArray {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_DataArray *__pyx_vtab;
- PyObject *word2id;
- PyObject *id2word;
- struct __pyx_obj_3_sa_IntList *data;
- struct __pyx_obj_3_sa_IntList *sent_id;
- struct __pyx_obj_3_sa_IntList *sent_index;
- int use_sent_id;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":100
- *
- *
- * cdef class BitSetIterator: # <<<<<<<<<<<<<<
- * cdef _BitSet* b
- * cdef int next_val
- */
-struct __pyx_obj_3_sa_BitSetIterator {
- PyObject_HEAD
- struct __pyx_t_3_sa__BitSet *b;
- int next_val;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2116
- * f = Phrase(f_sym)
- * e = Phrase(e_sym)
- * a = tuple(self.alignment.link(i, j) for i, j in links) # <<<<<<<<<<<<<<
- * return (f, e, a, lex_f_i, lex_f_j)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *__pyx_outer_scope;
- PyObject *__pyx_v_i;
- PyObject *__pyx_v_j;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":188
- *
- *
- * cdef class Precomputation: # <<<<<<<<<<<<<<
- * cdef int precompute_rank
- * cdef int precompute_secondary_rank
- */
-struct __pyx_obj_3_sa_Precomputation {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_Precomputation *__pyx_vtab;
- int precompute_rank;
- int precompute_secondary_rank;
- int max_length;
- int max_nonterminals;
- int train_max_initial_size;
- int train_min_gap_size;
- PyObject *precomputed_index;
- PyObject *precomputed_collocations;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":190
- * return ' ||| '.join(fields)
- *
- * def alignments(self): # <<<<<<<<<<<<<<
- * for point in self.word_alignments:
- * yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments {
- PyObject_HEAD
- PyObject *__pyx_v_point;
- struct __pyx_obj_3_sa_Rule *__pyx_v_self;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":125
- *
- * def decode_words(syms):
- * return tuple(sym_tostring(sym) for sym in syms) # <<<<<<<<<<<<<<
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *__pyx_outer_scope;
- PyObject *__pyx_v_sym;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":6
- * from libc.stdio cimport FILE, fclose, fopen
- *
- * cdef class SuffixArray: # <<<<<<<<<<<<<<
- * cdef DataArray darray
- * cdef IntList sa
- */
-struct __pyx_obj_3_sa_SuffixArray {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_SuffixArray *__pyx_vtab;
- struct __pyx_obj_3_sa_DataArray *darray;
- struct __pyx_obj_3_sa_IntList *sa;
- struct __pyx_obj_3_sa_IntList *ha;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":183
- * return self.f.arity()
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * cdef unsigned i
- * fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ {
- PyObject_HEAD
- struct __pyx_obj_3_sa_Rule *__pyx_v_self;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":7
- * cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1
- *
- * cdef class Alphabet: # <<<<<<<<<<<<<<
- * cdef readonly StringMap terminals, nonterminals
- * cdef int first_nonterminal, last_nonterminal
- */
-struct __pyx_obj_3_sa_Alphabet {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_Alphabet *__pyx_vtab;
- struct __pyx_obj_3_sa_StringMap *terminals;
- struct __pyx_obj_3_sa_StringMap *nonterminals;
- int first_nonterminal;
- int last_nonterminal;
- PyObject *id2sym;
-};
-
-
-/* "_sa.pxd":35
- * cdef public int chunklen(self, int k)
- *
- * cdef class Rule: # <<<<<<<<<<<<<<
- * cdef int lhs
- * cdef readonly Phrase f, e
- */
-struct __pyx_obj_3_sa_Rule {
- PyObject_HEAD
- int lhs;
- struct __pyx_obj_3_sa_Phrase *f;
- struct __pyx_obj_3_sa_Phrase *e;
- struct __pyx_obj_3_sa_FeatureVector *scores;
- int n_scores;
- PyObject *word_alignments;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":112
- * def make_lattice(words):
- * word_ids = (sym_fromstring(word, True) for word in words)
- * return tuple(((word, None, 1), ) for word in word_ids) # <<<<<<<<<<<<<<
- *
- * def decode_lattice(lattice):
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *__pyx_outer_scope;
- PyObject *__pyx_v_word;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1885
- * # Aggregate stats from a training instance
- * # (Extract rules, update counts)
- * def add_instance(self, f_words, e_words, alignment): # <<<<<<<<<<<<<<
- *
- * self.online = True
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance {
- PyObject_HEAD
- PyObject *__pyx_v_al;
- PyObject *__pyx_v_cover;
- PyObject *__pyx_v_e_nt_cover;
- PyObject *__pyx_v_e_words;
- PyObject *__pyx_v_ef_span;
- PyObject *__pyx_v_extract;
- PyObject *__pyx_v_f_len;
- PyObject *__pyx_v_f_words;
- PyObject *__pyx_v_fe_span;
- PyObject *__pyx_v_rules;
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74
- * def read_bitext(self, char* filename, int side):
- * with gzip_or_text(filename) as fp:
- * data = (line.split(' ||| ')[side] for line in fp) # <<<<<<<<<<<<<<
- * self.read_text_data(data)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *__pyx_outer_scope;
- PyObject *__pyx_v_line;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":84
- * # in the suffix array; if discontiguous, it is the set of
- * # actual locations (packed into an array)
- * cdef class PhraseLocation: # <<<<<<<<<<<<<<
- * cdef int sa_low
- * cdef int sa_high
- */
-struct __pyx_obj_3_sa_PhraseLocation {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_PhraseLocation *__pyx_vtab;
- int sa_low;
- int sa_high;
- int arr_low;
- int arr_high;
- struct __pyx_obj_3_sa_IntList *arr;
- int num_subpatterns;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":141
- * return self.syms[i]
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef int i
- * for i from 0 <= i < self.n:
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ {
- PyObject_HEAD
- int __pyx_v_i;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_self;
- int __pyx_t_0;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2055
- *
- * # Create a rule from source, target, non-terminals, and alignments
- * def form_rule(self, f_i, e_i, f_span, e_span, nt, al): # <<<<<<<<<<<<<<
- *
- * # Substitute in non-terminals
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule {
- PyObject_HEAD
- PyObject *__pyx_v_links;
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2121
- * # Rule string from rule
- * def fmt_rule(self, f, e, a):
- * a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a) # <<<<<<<<<<<<<<
- * return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *__pyx_outer_scope;
- PyObject *__pyx_v_packed;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2120
- *
- * # Rule string from rule
- * def fmt_rule(self, f, e, a): # <<<<<<<<<<<<<<
- * a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)
- * return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule {
- PyObject_HEAD
- PyObject *__pyx_v_a;
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":20
- * yield (FD.word(self.names[i]), self.values[i])
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * return ' '.join('%s=%s' % feat for feat in self)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ {
- PyObject_HEAD
- struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":72
- * self.read_text_data(fp)
- *
- * def read_bitext(self, char* filename, int side): # <<<<<<<<<<<<<<
- * with gzip_or_text(filename) as fp:
- * data = (line.split(' ||| ')[side] for line in fp)
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext {
- PyObject_HEAD
- PyObject *__pyx_v_fp;
- int __pyx_v_side;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- * def decode_words(syms): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for sym in syms)
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words {
- PyObject_HEAD
- PyObject *__pyx_v_syms;
-};
-
-
-/* "_sa.pxd":25
- * cdef void read_handle(self, FILE* f)
- *
- * cdef class FeatureVector: # <<<<<<<<<<<<<<
- * cdef IntList names
- * cdef FloatList values
- */
-struct __pyx_obj_3_sa_FeatureVector {
- PyObject_HEAD
- struct __pyx_obj_3_sa_IntList *names;
- struct __pyx_obj_3_sa_FloatList *values;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114
- * return tuple(((word, None, 1), ) for word in word_ids)
- *
- * def decode_lattice(lattice): # <<<<<<<<<<<<<<
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc
- * for arc in node for node in lattice)
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice {
- PyObject_HEAD
- PyObject *__pyx_v_lattice;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":973
- * return sorted(result);
- *
- * def input(self, fwords, meta): # <<<<<<<<<<<<<<
- * '''When this function is called on the RuleFactory,
- * it looks up all of the rules that can be used to translate
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_19_input {
- PyObject_HEAD
- PyObject *__pyx_v_alignment;
- PyObject *__pyx_v_als;
- PyObject *__pyx_v_alslist;
- int __pyx_v_alt;
- int __pyx_v_alt_id;
- int __pyx_v_arity;
- struct __pyx_obj_3_sa_IntList *__pyx_v_chunklen;
- PyObject *__pyx_v_count;
- PyObject *__pyx_v_e;
- PyObject *__pyx_v_elist;
- PyObject *__pyx_v_extract;
- PyObject *__pyx_v_extract_start;
- PyObject *__pyx_v_extract_stop;
- PyObject *__pyx_v_extracts;
- PyObject *__pyx_v_f;
- PyObject *__pyx_v_f_syms;
- PyObject *__pyx_v_fcount;
- int __pyx_v_flen;
- PyObject *__pyx_v_fphrases;
- PyObject *__pyx_v_frontier;
- PyObject *__pyx_v_frontier_nodes;
- PyObject *__pyx_v_fwords;
- PyObject *__pyx_v_genexpr;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_hiero_phrase;
- long __pyx_v_hit;
- int __pyx_v_i;
- PyObject *__pyx_v_input_match;
- PyObject *__pyx_v_intersect_start_time;
- PyObject *__pyx_v_intersect_stop_time;
- PyObject *__pyx_v_is_shadow_path;
- int __pyx_v_j;
- int __pyx_v_k;
- PyObject *__pyx_v_key;
- PyObject *__pyx_v_lex_i;
- PyObject *__pyx_v_lex_j;
- PyObject *__pyx_v_loc;
- PyObject *__pyx_v_locs;
- int __pyx_v_lookup_required;
- struct __pyx_t_3_sa_Matching __pyx_v_matching;
- PyObject *__pyx_v_max_locs;
- PyObject *__pyx_v_meta;
- PyObject *__pyx_v_new_frontier;
- PyObject *__pyx_v_new_node;
- PyObject *__pyx_v_next_states;
- PyObject *__pyx_v_node;
- PyObject *__pyx_v_nodes_isteps_away_buffer;
- int __pyx_v_nualt;
- int __pyx_v_num_samples;
- int __pyx_v_num_subpatterns;
- PyObject *__pyx_v_pathlen;
- PyObject *__pyx_v_phrase;
- struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_phrase_location;
- PyObject *__pyx_v_prefix;
- PyObject *__pyx_v_reachable_buffer;
- PyObject *__pyx_v_sa_range;
- struct __pyx_obj_3_sa_IntList *__pyx_v_sample;
- struct __pyx_obj_3_sa_FeatureVector *__pyx_v_scores;
- PyObject *__pyx_v_seen_phrases;
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self;
- PyObject *__pyx_v_spanlen;
- float __pyx_v_start_time;
- PyObject *__pyx_v_stop_time;
- PyObject *__pyx_v_suffix_link;
- int __pyx_v_suffix_link_xcat;
- PyObject *__pyx_v_suffix_link_xcat_index;
- PyObject *__pyx_v_word_id;
- int __pyx_v_x1;
- int __pyx_v_xcat;
- PyObject *__pyx_v_xcat_index;
- PyObject *__pyx_v_xnode;
- PyObject *__pyx_v_xroot;
- Py_ssize_t __pyx_t_0;
- Py_ssize_t __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3;
- PyObject *__pyx_t_4;
- PyObject *__pyx_t_5;
- int __pyx_t_6;
- Py_ssize_t __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- Py_ssize_t __pyx_t_9;
- PyObject *(*__pyx_t_10)(PyObject *);
- PyObject *(*__pyx_t_11)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":23
- * return ' '.join('%s=%s' % feat for feat in self)
- *
- * cdef class Scorer: # <<<<<<<<<<<<<<
- * cdef models
- * def __init__(self, *models):
- */
-struct __pyx_obj_3_sa_Scorer {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_Scorer *__pyx_vtab;
- PyObject *models;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":10
- * cdef int ALIGNMENT_CODE = 1 << 16
- *
- * cdef class Alignment: # <<<<<<<<<<<<<<
- * cdef IntList links
- * cdef IntList sent_index
- */
-struct __pyx_obj_3_sa_Alignment {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_Alignment *__pyx_vtab;
- struct __pyx_obj_3_sa_IntList *links;
- struct __pyx_obj_3_sa_IntList *sent_index;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":118
- * # (entirely C-implemented) _BitSet struct.
- * # Very slow; use only for debugging
- * cdef class BitSet: # <<<<<<<<<<<<<<
- *
- * cdef _BitSet* b
- */
-struct __pyx_obj_3_sa_BitSet {
- PyObject_HEAD
- struct __pyx_t_3_sa__BitSet *b;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":106
- *
- *
- * cdef class Sampler: # <<<<<<<<<<<<<<
- * '''A Sampler implements a logic for choosing
- * samples from a population range'''
- */
-struct __pyx_obj_3_sa_Sampler {
- PyObject_HEAD
- int sample_size;
- struct __pyx_obj_3_sa_IntList *sa;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":8
- * char* stringmap_word(StrMap *vocab, int i)
- *
- * cdef class StringMap: # <<<<<<<<<<<<<<
- * cdef StrMap *vocab
- * cdef char *word(self, int i)
- */
-struct __pyx_obj_3_sa_StringMap {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_StringMap *__pyx_vtab;
- StrMap *vocab;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2167
- * # (Used for EGivenFCoherent)
- * # Return set of (fphrase, lex_i, lex_j)
- * def get_f_phrases(self, f_words): # <<<<<<<<<<<<<<
- *
- * f_len = len(f_words)
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases {
- PyObject_HEAD
- PyObject *__pyx_v_extract;
- PyObject *__pyx_v_f_len;
- PyObject *__pyx_v_f_words;
- PyObject *__pyx_v_phrases;
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":46
- * cdef int EPSILON = sym_fromstring('*EPS*', True)
- *
- * cdef class TrieNode: # <<<<<<<<<<<<<<
- * cdef public children
- *
- */
-struct __pyx_obj_3_sa_TrieNode {
- PyObject_HEAD
- PyObject *children;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":52
- * self.children = {}
- *
- * cdef class ExtendedTrieNode(TrieNode): # <<<<<<<<<<<<<<
- * cdef public phrase
- * cdef public phrase_location
- */
-struct __pyx_obj_3_sa_ExtendedTrieNode {
- struct __pyx_obj_3_sa_TrieNode __pyx_base;
- PyObject *phrase;
- PyObject *phrase_location;
- PyObject *suffix_link;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":109
- * trie_node_to_map(edge.node, result, prefix, include_zeros)
- *
- * cdef class TrieMap: # <<<<<<<<<<<<<<
- *
- * cdef _Trie_Node** root
- */
-struct __pyx_obj_3_sa_TrieMap {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_TrieMap *__pyx_vtab;
- struct __pyx_t_3_sa__Trie_Node **root;
- int V;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115
- *
- * def decode_lattice(lattice):
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc # <<<<<<<<<<<<<<
- * for arc in node for node in lattice)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *__pyx_outer_scope;
- PyObject *__pyx_v_arc;
- PyObject *__pyx_v_dist;
- PyObject *__pyx_v_node;
- PyObject *__pyx_v_sym;
- PyObject *__pyx_v_weight;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
- PyObject *__pyx_t_3;
- PyObject *__pyx_t_4;
- Py_ssize_t __pyx_t_5;
- PyObject *(*__pyx_t_6)(PyObject *);
- Py_ssize_t __pyx_t_7;
- PyObject *(*__pyx_t_8)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110
- * return sym_isvar(sym)
- *
- * def make_lattice(words): # <<<<<<<<<<<<<<
- * word_ids = (sym_fromstring(word, True) for word in words)
- * return tuple(((word, None, 1), ) for word in word_ids)
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice {
- PyObject_HEAD
- PyObject *__pyx_v_word_ids;
- PyObject *__pyx_v_words;
-};
-
-
-/* "_sa.pxd":29
- * cdef FloatList values
- *
- * cdef class Phrase: # <<<<<<<<<<<<<<
- * cdef int *syms
- * cdef int n, *varpos, n_vars
- */
-struct __pyx_obj_3_sa_Phrase {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_Phrase *__pyx_vtab;
- int *syms;
- int n;
- int *varpos;
- int n_vars;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":15
- * self.values.append(value)
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef unsigned i
- * for i in range(self.names.len):
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ {
- PyObject_HEAD
- unsigned int __pyx_v_i;
- struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self;
- int __pyx_t_0;
- unsigned int __pyx_t_1;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":81
- * free(self.arr)
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef int i
- * for i in range(self.len):
- */
-struct __pyx_obj_3_sa___pyx_scope_struct____iter__ {
- PyObject_HEAD
- int __pyx_v_i;
- struct __pyx_obj_3_sa_IntList *__pyx_v_self;
- int __pyx_t_0;
- int __pyx_t_1;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":63
- *
- *
- * cdef class TrieTable: # <<<<<<<<<<<<<<
- * cdef public int extended
- * cdef public int count
- */
-struct __pyx_obj_3_sa_TrieTable {
- PyObject_HEAD
- int extended;
- int count;
- PyObject *root;
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":111
- *
- * def make_lattice(words):
- * word_ids = (sym_fromstring(word, True) for word in words) # <<<<<<<<<<<<<<
- * return tuple(((word, None, 1), ) for word in word_ids)
- *
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *__pyx_outer_scope;
- PyObject *__pyx_v_word;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":119
- *
- * def decode_sentence(lattice):
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice) # <<<<<<<<<<<<<<
- *
- * def encode_words(words):
- */
-struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr {
- PyObject_HEAD
- struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *__pyx_outer_scope;
- PyObject *__pyx_v__;
- PyObject *__pyx_v_sym;
- PyObject *__pyx_t_0;
- Py_ssize_t __pyx_t_1;
- PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "_sa.pxd":3
- * from libc.stdio cimport FILE
- *
- * cdef class FloatList: # <<<<<<<<<<<<<<
- * cdef int size
- * cdef int increment
- */
-struct __pyx_obj_3_sa_FloatList {
- PyObject_HEAD
- struct __pyx_vtabstruct_3_sa_FloatList *__pyx_vtab;
- int size;
- int increment;
- int len;
- float *arr;
-};
-
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":9
- * from libc.string cimport memset, strcpy
- *
- * cdef class DataArray: # <<<<<<<<<<<<<<
- * cdef public word2id
- * cdef public id2word
- */
-
-struct __pyx_vtabstruct_3_sa_DataArray {
- void (*read_handle)(struct __pyx_obj_3_sa_DataArray *, FILE *);
- void (*write_handle)(struct __pyx_obj_3_sa_DataArray *, FILE *);
-};
-static struct __pyx_vtabstruct_3_sa_DataArray *__pyx_vtabptr_3_sa_DataArray;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":10
- * cdef int ALIGNMENT_CODE = 1 << 16
- *
- * cdef class Alignment: # <<<<<<<<<<<<<<
- * cdef IntList links
- * cdef IntList sent_index
- */
-
-struct __pyx_vtabstruct_3_sa_Alignment {
- int (*link)(struct __pyx_obj_3_sa_Alignment *, int, int);
- PyObject *(*_unlink)(struct __pyx_obj_3_sa_Alignment *, int, int *, int *);
- int *(*_get_sent_links)(struct __pyx_obj_3_sa_Alignment *, int, int *);
-};
-static struct __pyx_vtabstruct_3_sa_Alignment *__pyx_vtabptr_3_sa_Alignment;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":4
- * from libc.string cimport strsep, strcpy, strlen
- *
- * cdef class Phrase: # <<<<<<<<<<<<<<
- *
- * def __cinit__(self, words):
- */
-
-struct __pyx_vtabstruct_3_sa_Phrase {
- int (*chunkpos)(struct __pyx_obj_3_sa_Phrase *, int);
- int (*chunklen)(struct __pyx_obj_3_sa_Phrase *, int);
-};
-static struct __pyx_vtabstruct_3_sa_Phrase *__pyx_vtabptr_3_sa_Phrase;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":84
- * # in the suffix array; if discontiguous, it is the set of
- * # actual locations (packed into an array)
- * cdef class PhraseLocation: # <<<<<<<<<<<<<<
- * cdef int sa_low
- * cdef int sa_high
- */
-
-struct __pyx_vtabstruct_3_sa_PhraseLocation {
- int (*contains)(struct __pyx_obj_3_sa_PhraseLocation *, int);
-};
-static struct __pyx_vtabstruct_3_sa_PhraseLocation *__pyx_vtabptr_3_sa_PhraseLocation;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":47
- *
- *
- * cdef class BiLex: # <<<<<<<<<<<<<<
- * cdef FloatList col1
- * cdef FloatList col2
- */
-
-struct __pyx_vtabstruct_3_sa_BiLex {
- PyObject *(*compute_from_data)(struct __pyx_obj_3_sa_BiLex *, struct __pyx_obj_3_sa_SuffixArray *, struct __pyx_obj_3_sa_DataArray *, struct __pyx_obj_3_sa_Alignment *);
- PyObject *(*_add_node)(struct __pyx_obj_3_sa_BiLex *, struct __pyx_t_3_sa__node *, int *, float, int *);
- PyObject *(*write_wordlist)(struct __pyx_obj_3_sa_BiLex *, PyObject *, FILE *);
- PyObject *(*read_wordlist)(struct __pyx_obj_3_sa_BiLex *, PyObject *, PyObject *, FILE *);
- PyObject *(*swap)(struct __pyx_obj_3_sa_BiLex *, int, int);
- PyObject *(*qsort)(struct __pyx_obj_3_sa_BiLex *, int, int, PyObject *);
-};
-static struct __pyx_vtabstruct_3_sa_BiLex *__pyx_vtabptr_3_sa_BiLex;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":9
- * from libc.string cimport memset, memcpy
- *
- * cdef class IntList: # <<<<<<<<<<<<<<
- *
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- */
-
-struct __pyx_vtabstruct_3_sa_IntList {
- void (*set)(struct __pyx_obj_3_sa_IntList *, int, int);
- void (*_append)(struct __pyx_obj_3_sa_IntList *, int);
- void (*_extend)(struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_IntList *);
- void (*_extend_arr)(struct __pyx_obj_3_sa_IntList *, int *, int);
- void (*_clear)(struct __pyx_obj_3_sa_IntList *);
- void (*write_handle)(struct __pyx_obj_3_sa_IntList *, FILE *);
- void (*read_handle)(struct __pyx_obj_3_sa_IntList *, FILE *);
-};
-static struct __pyx_vtabstruct_3_sa_IntList *__pyx_vtabptr_3_sa_IntList;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":109
- * trie_node_to_map(edge.node, result, prefix, include_zeros)
- *
- * cdef class TrieMap: # <<<<<<<<<<<<<<
- *
- * cdef _Trie_Node** root
- */
-
-struct __pyx_vtabstruct_3_sa_TrieMap {
- struct __pyx_t_3_sa__Trie_Node *(*_insert)(struct __pyx_obj_3_sa_TrieMap *, int *, int);
- struct __pyx_t_3_sa__Trie_Node *(*_contains)(struct __pyx_obj_3_sa_TrieMap *, int *, int);
-};
-static struct __pyx_vtabstruct_3_sa_TrieMap *__pyx_vtabptr_3_sa_TrieMap;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":188
- *
- *
- * cdef class Precomputation: # <<<<<<<<<<<<<<
- * cdef int precompute_rank
- * cdef int precompute_secondary_rank
- */
-
-struct __pyx_vtabstruct_3_sa_Precomputation {
- PyObject *(*read_map)(struct __pyx_obj_3_sa_Precomputation *, FILE *);
- PyObject *(*write_map)(struct __pyx_obj_3_sa_Precomputation *, PyObject *, FILE *);
-};
-static struct __pyx_vtabstruct_3_sa_Precomputation *__pyx_vtabptr_3_sa_Precomputation;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":23
- * return ' '.join('%s=%s' % feat for feat in self)
- *
- * cdef class Scorer: # <<<<<<<<<<<<<<
- * cdef models
- * def __init__(self, *models):
- */
-
-struct __pyx_vtabstruct_3_sa_Scorer {
- struct __pyx_obj_3_sa_FeatureVector *(*score)(struct __pyx_obj_3_sa_Scorer *, PyObject *);
-};
-static struct __pyx_vtabstruct_3_sa_Scorer *__pyx_vtabptr_3_sa_Scorer;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":9
- * from libc.string cimport memset, strcpy, strlen
- *
- * cdef class FloatList: # <<<<<<<<<<<<<<
- *
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- */
-
-struct __pyx_vtabstruct_3_sa_FloatList {
- void (*set)(struct __pyx_obj_3_sa_FloatList *, int, float);
- void (*write_handle)(struct __pyx_obj_3_sa_FloatList *, FILE *);
- void (*read_handle)(struct __pyx_obj_3_sa_FloatList *, FILE *);
-};
-static struct __pyx_vtabstruct_3_sa_FloatList *__pyx_vtabptr_3_sa_FloatList;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":354
- *
- *
- * cdef class VEB: # <<<<<<<<<<<<<<
- * cdef _VEB* veb
- * cdef int _findsucc(self, int i)
- */
-
-struct __pyx_vtabstruct_3_sa_VEB {
- int (*_findsucc)(struct __pyx_obj_3_sa_VEB *, int);
- int (*_insert)(struct __pyx_obj_3_sa_VEB *, int);
- int (*_first)(struct __pyx_obj_3_sa_VEB *);
-};
-static struct __pyx_vtabstruct_3_sa_VEB *__pyx_vtabptr_3_sa_VEB;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":7
- * cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1
- *
- * cdef class Alphabet: # <<<<<<<<<<<<<<
- * cdef readonly StringMap terminals, nonterminals
- * cdef int first_nonterminal, last_nonterminal
- */
-
-struct __pyx_vtabstruct_3_sa_Alphabet {
- int (*isvar)(struct __pyx_obj_3_sa_Alphabet *, int);
- int (*isword)(struct __pyx_obj_3_sa_Alphabet *, int);
- int (*getindex)(struct __pyx_obj_3_sa_Alphabet *, int);
- int (*setindex)(struct __pyx_obj_3_sa_Alphabet *, int, int);
- int (*clearindex)(struct __pyx_obj_3_sa_Alphabet *, int);
- int (*match)(struct __pyx_obj_3_sa_Alphabet *, int, int);
- char *(*tocat)(struct __pyx_obj_3_sa_Alphabet *, int);
- int (*fromcat)(struct __pyx_obj_3_sa_Alphabet *, char *);
- char *(*tostring)(struct __pyx_obj_3_sa_Alphabet *, int);
- int (*fromstring)(struct __pyx_obj_3_sa_Alphabet *, char *, int);
-};
-static struct __pyx_vtabstruct_3_sa_Alphabet *__pyx_vtabptr_3_sa_Alphabet;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":6
- * from libc.stdio cimport FILE, fclose, fopen
- *
- * cdef class SuffixArray: # <<<<<<<<<<<<<<
- * cdef DataArray darray
- * cdef IntList sa
- */
-
-struct __pyx_vtabstruct_3_sa_SuffixArray {
- int (*__pyx___search_high)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int);
- int (*__pyx___search_low)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int);
- PyObject *(*__pyx___get_range)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int, int);
- PyObject *(*__pyx___lookup_helper)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int);
-};
-static struct __pyx_vtabstruct_3_sa_SuffixArray *__pyx_vtabptr_3_sa_SuffixArray;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":8
- * char* stringmap_word(StrMap *vocab, int i)
- *
- * cdef class StringMap: # <<<<<<<<<<<<<<
- * cdef StrMap *vocab
- * cdef char *word(self, int i)
- */
-
-struct __pyx_vtabstruct_3_sa_StringMap {
- char *(*word)(struct __pyx_obj_3_sa_StringMap *, int);
- int (*index)(struct __pyx_obj_3_sa_StringMap *, char *);
-};
-static struct __pyx_vtabstruct_3_sa_StringMap *__pyx_vtabptr_3_sa_StringMap;
-
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":228
- *
- *
- * cdef class HieroCachingRuleFactory: # <<<<<<<<<<<<<<
- * '''This RuleFactory implements a caching
- * method using TrieTable, which makes phrase
- */
-
-struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory {
- PyObject *(*set_idmap)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_DataArray *);
- int *(*baeza_yates_helper)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *);
- long (*compare_matchings_set)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, struct __pyx_t_3_sa_Matching *, int, int);
- long (*compare_matchings)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_t_3_sa_Matching *, struct __pyx_t_3_sa_Matching *, int, int);
- int *(*merge_helper)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *);
- void (*sort_phrase_loc)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_Phrase *);
- PyObject *(*intersect_helper)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_PhraseLocation *, int);
- PyObject *(*loc2str)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_PhraseLocation *);
- struct __pyx_obj_3_sa_PhraseLocation *(*intersect)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, PyObject *, PyObject *, struct __pyx_obj_3_sa_Phrase *);
- int (*find_fixpoint)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, PyObject *, int *, int *, int *, int *, int, int, int *, int *, int *, int *, int, int, int, int, int, int, int, int, int, int, int);
- PyObject *(*find_projection)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int *);
- int *(*int_arr_extend)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int *, int *, int);
- PyObject *(*extract_phrases)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int, int, int, int *, int *, int *, int, int, int);
- struct __pyx_obj_3_sa_IntList *(*create_alignments)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_IntList *);
- PyObject *(*extract)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_t_3_sa_Matching *, int *, int);
-};
-static struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *__pyx_vtabptr_3_sa_HieroCachingRuleFactory;
-#ifndef CYTHON_REFNANNY
- #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
- typedef struct {
- void (*INCREF)(void*, PyObject*, int);
- void (*DECREF)(void*, PyObject*, int);
- void (*GOTREF)(void*, PyObject*, int);
- void (*GIVEREF)(void*, PyObject*, int);
- void* (*SetupContext)(const char*, int, const char*);
- void (*FinishContext)(void**);
- } __Pyx_RefNannyAPIStruct;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
- static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
- #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
-#ifdef WITH_THREAD
- #define __Pyx_RefNannySetupContext(name, acquire_gil) \
- if (acquire_gil) { \
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
- PyGILState_Release(__pyx_gilstate_save); \
- } else { \
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
- }
-#else
- #define __Pyx_RefNannySetupContext(name, acquire_gil) \
- __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
- #define __Pyx_RefNannyFinishContext() \
- __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
- #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
- #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
- #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
- #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
- #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
- #define __Pyx_RefNannyDeclarations
- #define __Pyx_RefNannySetupContext(name, acquire_gil)
- #define __Pyx_RefNannyFinishContext()
- #define __Pyx_INCREF(r) Py_INCREF(r)
- #define __Pyx_DECREF(r) Py_DECREF(r)
- #define __Pyx_GOTREF(r)
- #define __Pyx_GIVEREF(r)
- #define __Pyx_XINCREF(r) Py_XINCREF(r)
- #define __Pyx_XDECREF(r) Py_XDECREF(r)
- #define __Pyx_XGOTREF(r)
- #define __Pyx_XGIVEREF(r)
-#endif /* CYTHON_REFNANNY */
-#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
-#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
- PyTypeObject* tp = Py_TYPE(obj);
- if (likely(tp->tp_getattro))
- return tp->tp_getattro(obj, attr_name);
-#if PY_MAJOR_VERSION < 3
- if (likely(tp->tp_getattr))
- return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
-#endif
- return PyObject_GetAttr(obj, attr_name);
-}
-#else
-#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
-#endif
-
-static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/
-
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/
-
-static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg, Py_ssize_t start,
- Py_ssize_t end, int direction)
-{
- const char* self_ptr = PyBytes_AS_STRING(self);
- Py_ssize_t self_len = PyBytes_GET_SIZE(self);
- const char* sub_ptr;
- Py_ssize_t sub_len;
- int retval;
-#if PY_VERSION_HEX >= 0x02060000
- Py_buffer view;
- view.obj = NULL;
-#endif
- if ( PyBytes_Check(arg) ) {
- sub_ptr = PyBytes_AS_STRING(arg);
- sub_len = PyBytes_GET_SIZE(arg);
- }
-#if PY_MAJOR_VERSION < 3
- else if ( PyUnicode_Check(arg) ) {
- return PyUnicode_Tailmatch(self, arg, start, end, direction);
- }
-#endif
- else {
-#if PY_VERSION_HEX < 0x02060000
- if (unlikely(PyObject_AsCharBuffer(arg, &sub_ptr, &sub_len)))
- return -1;
-#else
- if (unlikely(PyObject_GetBuffer(self, &view, PyBUF_SIMPLE) == -1))
- return -1;
- sub_ptr = (const char*) view.buf;
- sub_len = view.len;
-#endif
- }
- if (end > self_len)
- end = self_len;
- else if (end < 0)
- end += self_len;
- if (end < 0)
- end = 0;
- if (start < 0)
- start += self_len;
- if (start < 0)
- start = 0;
- if (direction > 0) {
- if (end-sub_len > start)
- start = end - sub_len;
- }
- if (start + sub_len <= end)
- retval = !memcmp(self_ptr+start, sub_ptr, sub_len);
- else
- retval = 0;
-#if PY_VERSION_HEX >= 0x02060000
- if (view.obj)
- PyBuffer_Release(&view);
-#endif
- return retval;
-}
-static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr, Py_ssize_t start,
- Py_ssize_t end, int direction)
-{
- if (unlikely(PyTuple_Check(substr))) {
- Py_ssize_t i, count = PyTuple_GET_SIZE(substr);
- for (i = 0; i < count; i++) {
- int result;
-#if CYTHON_COMPILING_IN_CPYTHON
- result = __Pyx_PyBytes_SingleTailmatch(self, PyTuple_GET_ITEM(substr, i),
- start, end, direction);
-#else
- PyObject* sub = PySequence_GetItem(substr, i);
- if (unlikely(!sub)) return -1;
- result = __Pyx_PyBytes_SingleTailmatch(self, sub, start, end, direction);
- Py_DECREF(sub);
-#endif
- if (result) {
- return result;
- }
- }
- return 0;
- }
- return __Pyx_PyBytes_SingleTailmatch(self, substr, start, end, direction);
-}
-
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
-
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
- PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
- const char* function_name); /*proto*/
-
-static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
- Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
-
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
-
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
-
-static void __Pyx_WriteUnraisable(const char *name, int clineno,
- int lineno, const char *filename); /*proto*/
-
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
-
-static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
- PyListObject* L = (PyListObject*) list;
- Py_ssize_t len = Py_SIZE(list);
- if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
- Py_INCREF(x);
- PyList_SET_ITEM(list, len, x);
- Py_SIZE(list) = len+1;
- return 0;
- }
- return PyList_Append(list, x);
-}
-#else
-#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
-#endif
-
-#define __Pyx_GetItemInt(o, i, size, to_py_func, is_list, wraparound, boundscheck) \
- (((size) <= sizeof(Py_ssize_t)) ? \
- __Pyx_GetItemInt_Fast(o, i, is_list, wraparound, boundscheck) : \
- __Pyx_GetItemInt_Generic(o, to_py_func(i)))
-#define __Pyx_GetItemInt_List(o, i, size, to_py_func, is_list, wraparound, boundscheck) \
- (((size) <= sizeof(Py_ssize_t)) ? \
- __Pyx_GetItemInt_List_Fast(o, i, wraparound, boundscheck) : \
- __Pyx_GetItemInt_Generic(o, to_py_func(i)))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func, is_list, wraparound, boundscheck) \
- (((size) <= sizeof(Py_ssize_t)) ? \
- __Pyx_GetItemInt_Tuple_Fast(o, i, wraparound, boundscheck) : \
- __Pyx_GetItemInt_Generic(o, to_py_func(i)))
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck);
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
- int is_list, int wraparound, int boundscheck);
-
-static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) {
- int result = PySequence_Contains(seq, item);
- return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
-
-static PyObject* __Pyx_PyObject_CallMethodTuple(PyObject* obj, PyObject* method_name, PyObject* args) {
- PyObject *method, *result = NULL;
- if (unlikely(!args)) return NULL;
- method = __Pyx_PyObject_GetAttrStr(obj, method_name);
- if (unlikely(!method)) goto bad;
- result = PyObject_Call(method, args, NULL);
- Py_DECREF(method);
-bad:
- Py_DECREF(args);
- return result;
-}
-#define __Pyx_PyObject_CallMethod3(obj, name, arg1, arg2, arg3) \
- __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(3, arg1, arg2, arg3))
-#define __Pyx_PyObject_CallMethod2(obj, name, arg1, arg2) \
- __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(2, arg1, arg2))
-#define __Pyx_PyObject_CallMethod1(obj, name, arg1) \
- __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(1, arg1))
-#define __Pyx_PyObject_CallMethod0(obj, name) \
- __Pyx_PyObject_CallMethodTuple(obj, name, (Py_INCREF(__pyx_empty_tuple), __pyx_empty_tuple))
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x); /*proto*/
-
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
-
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
- PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
- PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
- int has_cstart, int has_cstop, int wraparound);
-
-static CYTHON_INLINE int __Pyx_div_int(int, int); /* proto */
-
-#ifndef __PYX_FORCE_INIT_THREADS
- #define __PYX_FORCE_INIT_THREADS 0
-#endif
-
-#define UNARY_NEG_WOULD_OVERFLOW(x) (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
-
-static CYTHON_INLINE int __Pyx_mod_int(int, int); /* proto */
-
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
-
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
-
-static CYTHON_INLINE int __Pyx_IterFinish(void); /*proto*/
-
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/
-
-#define __Pyx_SetItemInt(o, i, v, size, to_py_func, is_list, wraparound, boundscheck) \
- (((size) <= sizeof(Py_ssize_t)) ? \
- __Pyx_SetItemInt_Fast(o, i, v, is_list, wraparound, boundscheck) : \
- __Pyx_SetItemInt_Generic(o, to_py_func(i), v))
-static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
-static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
- int is_list, int wraparound, int boundscheck);
-
-static double __Pyx__PyObject_AsDouble(PyObject* obj); /* proto */
-#if CYTHON_COMPILING_IN_PYPY
-#define __Pyx_PyObject_AsDouble(obj) \
-(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) : \
- likely(PyInt_CheckExact(obj)) ? \
- PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj))
-#else
-#define __Pyx_PyObject_AsDouble(obj) \
-((likely(PyFloat_CheckExact(obj))) ? \
- PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj))
-#endif
-
-static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
-
-static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */
-
-static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
- const char *name, int exact); /*proto*/
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
- PyListObject* L = (PyListObject*) list;
- Py_ssize_t len = Py_SIZE(list);
- if (likely(L->allocated > len)) {
- Py_INCREF(x);
- PyList_SET_ITEM(list, len, x);
- Py_SIZE(list) = len+1;
- return 0;
- }
- return PyList_Append(list, x);
-}
-#else
-#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
-#endif
-
-static CYTHON_INLINE int __Pyx_PyDict_Contains(PyObject* item, PyObject* dict, int eq) {
- int result = PyDict_Contains(dict, item);
- return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
-
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
-
-static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/
-
-static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2,
- int is_tuple, int has_known_size, int decref_tuple);
-
-static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
- Py_ssize_t* p_orig_length, int* p_is_dict);
-static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
- PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
-
-#if PY_VERSION_HEX < 0x02050000
-#ifndef PyAnySet_CheckExact
-#define PyAnySet_CheckExact(ob) \
- ((ob)->ob_type == &PySet_Type || \
- (ob)->ob_type == &PyFrozenSet_Type)
-#define PySet_New(iterable) \
- PyObject_CallFunctionObjArgs((PyObject *)&PySet_Type, (iterable), NULL)
-#define Pyx_PyFrozenSet_New(iterable) \
- PyObject_CallFunctionObjArgs((PyObject *)&PyFrozenSet_Type, (iterable), NULL)
-#define PySet_Size(anyset) \
- PyObject_Size((anyset))
-#define PySet_Contains(anyset, key) \
- PySequence_Contains((anyset), (key))
-#define PySet_Pop(set) \
- PyObject_CallMethod(set, (char *)"pop", NULL)
-static CYTHON_INLINE int PySet_Clear(PyObject *set) {
- PyObject *ret = PyObject_CallMethod(set, (char *)"clear", NULL);
- if (!ret) return -1;
- Py_DECREF(ret); return 0;
-}
-static CYTHON_INLINE int PySet_Discard(PyObject *set, PyObject *key) {
- PyObject *ret = PyObject_CallMethod(set, (char *)"discard", (char *)"O", key);
- if (!ret) return -1;
- Py_DECREF(ret); return 0;
-}
-static CYTHON_INLINE int PySet_Add(PyObject *set, PyObject *key) {
- PyObject *ret = PyObject_CallMethod(set, (char *)"add", (char *)"O", key);
- if (!ret) return -1;
- Py_DECREF(ret); return 0;
-}
-#endif /* PyAnySet_CheckExact (<= Py2.4) */
-#endif /* < Py2.5 */
-
-static CYTHON_INLINE long __Pyx_mod_long(long, long); /* proto */
-
-#if PY_MAJOR_VERSION >= 3
-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
- PyObject *value;
- value = PyDict_GetItemWithError(d, key);
- if (unlikely(!value)) {
- if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
- }
- return NULL;
- }
- Py_INCREF(value);
- return value;
-}
-#else
- #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
-#endif
-
-#define __Pyx_CyFunction_USED 1
-#include <structmember.h>
-#define __Pyx_CYFUNCTION_STATICMETHOD 0x01
-#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
-#define __Pyx_CYFUNCTION_CCLASS 0x04
-#define __Pyx_CyFunction_GetClosure(f) \
- (((__pyx_CyFunctionObject *) (f))->func_closure)
-#define __Pyx_CyFunction_GetClassObj(f) \
- (((__pyx_CyFunctionObject *) (f))->func_classobj)
-#define __Pyx_CyFunction_Defaults(type, f) \
- ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
-#define __Pyx_CyFunction_SetDefaultsGetter(f, g) \
- ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
-typedef struct {
- PyCFunctionObject func;
- int flags;
- PyObject *func_dict;
- PyObject *func_weakreflist;
- PyObject *func_name;
- PyObject *func_qualname;
- PyObject *func_doc;
- PyObject *func_code;
- PyObject *func_closure;
- PyObject *func_classobj; /* No-args super() class cell */
- void *defaults;
- int defaults_pyobjects;
- PyObject *defaults_tuple; /* Const defaults tuple */
- PyObject *defaults_kwdict; /* Const kwonly defaults dict */
- PyObject *(*defaults_getter)(PyObject *);
- PyObject *func_annotations; /* function annotations dict */
-} __pyx_CyFunctionObject;
-static PyTypeObject *__pyx_CyFunctionType = 0;
-#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, code) \
- __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, code)
-static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
- int flags, PyObject* qualname,
- PyObject *self, PyObject *module,
- PyObject* code);
-static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
- size_t size,
- int pyobjects);
-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
- PyObject *tuple);
-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
- PyObject *dict);
-static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
- PyObject *dict);
-static int __Pyx_CyFunction_init(void);
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Pop(PyObject* L); /*proto*/
-
-#include <string.h>
-
-static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
-
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/
-
-static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
-static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
-
-static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
-
-static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
-
-static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
-
-static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
-
-static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
-
-static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
-
-static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
-
-static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
-
-static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
-
-static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
-
-static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
-
-static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
-
-static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
-
-static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
-
-static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
-
-static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
-
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
-
-#define __Pyx_Generator_USED
-#include <structmember.h>
-#include <frameobject.h>
-typedef PyObject *(*__pyx_generator_body_t)(PyObject *, PyObject *);
-typedef struct {
- PyObject_HEAD
- __pyx_generator_body_t body;
- PyObject *closure;
- PyObject *exc_type;
- PyObject *exc_value;
- PyObject *exc_traceback;
- PyObject *gi_weakreflist;
- PyObject *classobj;
- PyObject *yieldfrom;
- int resume_label;
- char is_running; // using T_BOOL for property below requires char value
-} __pyx_GeneratorObject;
-static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
- PyObject *closure);
-static int __pyx_Generator_init(void);
-static int __Pyx_Generator_clear(PyObject* self);
-#if 1 || PY_VERSION_HEX < 0x030300B0
-static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue);
-#else
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue)
-#endif
-
-static int __Pyx_check_binary_version(void);
-
-static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
-
-typedef struct {
- int code_line;
- PyCodeObject* code_object;
-} __Pyx_CodeObjectCacheEntry;
-struct __Pyx_CodeObjectCache {
- int count;
- int max_count;
- __Pyx_CodeObjectCacheEntry* entries;
-};
-static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
-static PyCodeObject *__pyx_find_code_object(int code_line);
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
-
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename); /*proto*/
-
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
-
-
-/* Module declarations from 'libc.string' */
-
-/* Module declarations from 'libc.stdio' */
-
-/* Module declarations from 'libc.stdlib' */
-
-/* Module declarations from 'libc.math' */
-
-/* Module declarations from '_sa' */
-static PyTypeObject *__pyx_ptype_3_sa_HieroCachingRuleFactory = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_17_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_20_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_12_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_29_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa_IntList = 0;
-static PyTypeObject *__pyx_ptype_3_sa_VEBIterator = 0;
-static PyTypeObject *__pyx_ptype_3_sa_BiLex = 0;
-static PyTypeObject *__pyx_ptype_3_sa_VEB = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_11_encode_words = 0;
-static PyTypeObject *__pyx_ptype_3_sa_LCP = 0;
-static PyTypeObject *__pyx_ptype_3_sa_DataArray = 0;
-static PyTypeObject *__pyx_ptype_3_sa_BitSetIterator = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_23_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa_Precomputation = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_18_alignments = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_14_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa_SuffixArray = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_16___str__ = 0;
-static PyTypeObject *__pyx_ptype_3_sa_Alphabet = 0;
-static PyTypeObject *__pyx_ptype_3_sa_Rule = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_6_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_21_add_instance = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_2_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa_PhraseLocation = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_15___iter__ = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_22_form_rule = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_25_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_28___str__ = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_13_decode_words = 0;
-static PyTypeObject *__pyx_ptype_3_sa_FeatureVector = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_19_input = 0;
-static PyTypeObject *__pyx_ptype_3_sa_Scorer = 0;
-static PyTypeObject *__pyx_ptype_3_sa_Alignment = 0;
-static PyTypeObject *__pyx_ptype_3_sa_BitSet = 0;
-static PyTypeObject *__pyx_ptype_3_sa_Sampler = 0;
-static PyTypeObject *__pyx_ptype_3_sa_StringMap = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases = 0;
-static PyTypeObject *__pyx_ptype_3_sa_TrieNode = 0;
-static PyTypeObject *__pyx_ptype_3_sa_ExtendedTrieNode = 0;
-static PyTypeObject *__pyx_ptype_3_sa_TrieMap = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_8_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice = 0;
-static PyTypeObject *__pyx_ptype_3_sa_Phrase = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_27___iter__ = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct____iter__ = 0;
-static PyTypeObject *__pyx_ptype_3_sa_TrieTable = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_5_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_10_genexpr = 0;
-static PyTypeObject *__pyx_ptype_3_sa_FloatList = 0;
-static int __pyx_v_3_sa_ALIGNMENT_CODE;
-static int __pyx_v_3_sa_MIN_BOTTOM_SIZE;
-static int __pyx_v_3_sa_MIN_BOTTOM_BITS;
-static int __pyx_v_3_sa_LOWER_MASK[32];
-static int __pyx_v_3_sa_INDEX_SHIFT;
-static int __pyx_v_3_sa_INDEX_MASK;
-static struct __pyx_obj_3_sa_Alphabet *__pyx_v_3_sa_ALPHABET = 0;
-static int __pyx_v_3_sa_PRECOMPUTE;
-static int __pyx_v_3_sa_MERGE;
-static int __pyx_v_3_sa_BAEZA_YATES;
-static int __pyx_v_3_sa_EPSILON;
-static struct __pyx_obj_3_sa_StringMap *__pyx_v_3_sa_FD = 0;
-static char *__pyx_f_3_sa_sym_tostring(int); /*proto*/
-static int __pyx_f_3_sa_sym_isvar(int); /*proto*/
-static int __pyx_f_3_sa_sym_getindex(int); /*proto*/
-static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int); /*proto*/
-static PyObject *__pyx_f_3_sa_del_node(struct __pyx_t_3_sa__node *); /*proto*/
-static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *, int); /*proto*/
-static void __pyx_f_3_sa__init_lower_mask(void); /*proto*/
-static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void); /*proto*/
-static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *, int); /*proto*/
-static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *, int); /*proto*/
-static int __pyx_f_3_sa_bitset_contains(struct __pyx_t_3_sa__BitSet *, int); /*proto*/
-static PyObject *__pyx_f_3_sa_dec2bin(long); /*proto*/
-static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int); /*proto*/
-static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *, int); /*proto*/
-static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *); /*proto*/
-static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *, int); /*proto*/
-static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *, int); /*proto*/
-static int __pyx_f_3_sa_sym_setindex(int, int); /*proto*/
-static int __pyx_f_3_sa_sym_fromstring(char *, int); /*proto*/
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void); /*proto*/
-static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int); /*proto*/
-static PyObject *__pyx_f_3_sa_free_trie_node(struct __pyx_t_3_sa__Trie_Node *); /*proto*/
-static PyObject *__pyx_f_3_sa_free_trie_edge(struct __pyx_t_3_sa__Trie_Edge *); /*proto*/
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_find(struct __pyx_t_3_sa__Trie_Node *, int); /*proto*/
-static PyObject *__pyx_f_3_sa_trie_node_data_append(struct __pyx_t_3_sa__Trie_Node *, int); /*proto*/
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3_sa__Trie_Node *, int); /*proto*/
-static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *, PyObject *, PyObject *, int); /*proto*/
-static PyObject *__pyx_f_3_sa_trie_edge_to_map(struct __pyx_t_3_sa__Trie_Edge *, PyObject *, PyObject *, int); /*proto*/
-static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *, int *, int, int, int *); /*proto*/
-static int *__pyx_f_3_sa_append_combined_matching(int *, struct __pyx_t_3_sa_Matching *, struct __pyx_t_3_sa_Matching *, int, int, int *); /*proto*/
-static int *__pyx_f_3_sa_extend_arr(int *, int *, int *, int); /*proto*/
-static int __pyx_f_3_sa_median(int, int, int); /*proto*/
-static void __pyx_f_3_sa_find_comparable_matchings(int, int, int *, int, int, int *, int *); /*proto*/
-#define __Pyx_MODULE_NAME "_sa"
-int __pyx_module_is_main__sa = 0;
-
-/* Implementation of '_sa' */
-static PyObject *__pyx_builtin_open;
-static PyObject *__pyx_builtin_IndexError;
-static PyObject *__pyx_builtin_range;
-static PyObject *__pyx_builtin_ValueError;
-static PyObject *__pyx_builtin_TypeError;
-static PyObject *__pyx_builtin_enumerate;
-static PyObject *__pyx_builtin_map;
-static PyObject *__pyx_builtin_Exception;
-static PyObject *__pyx_builtin_zip;
-static PyObject *__pyx_builtin_StopIteration;
-static PyObject *__pyx_builtin_cmp;
-static PyObject *__pyx_builtin_sorted;
-static PyObject *__pyx_builtin_max;
-static PyObject *__pyx_pf_3_sa_monitor_cpu(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_2gzip_or_text(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_filename); /* proto */
-static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, int __pyx_v_size, int __pyx_v_increment, int __pyx_v_initial_len); /* proto */
-static void __pyx_pf_3_sa_9FloatList_2__dealloc__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static int __pyx_pf_3_sa_9FloatList_6__setitem__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val); /* proto */
-static Py_ssize_t __pyx_pf_3_sa_9FloatList_8__len__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9FloatList_10append(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, float __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9FloatList_14read(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_size, int __pyx_v_increment, int __pyx_v_initial_len); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_end); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_8_doquicksort(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_end); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_10sort(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_12reset(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */
-static void __pyx_pf_3_sa_7IntList_14__dealloc__(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_16__iter__(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
-static int __pyx_pf_3_sa_7IntList_21__setitem__(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val); /* proto */
-static Py_ssize_t __pyx_pf_3_sa_7IntList_23__len__(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_25get_size(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_27append(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_29extend(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_31write(struct __pyx_obj_3_sa_IntList *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_7IntList_33read(struct __pyx_obj_3_sa_IntList *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static int __pyx_pf_3_sa_9StringMap___cinit__(struct __pyx_obj_3_sa_StringMap *__pyx_v_self); /* proto */
-static void __pyx_pf_3_sa_9StringMap_2__dealloc__(struct __pyx_obj_3_sa_StringMap *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_from_text, PyObject *__pyx_v_side, int __pyx_v_use_sent_id); /* proto */
-static Py_ssize_t __pyx_pf_3_sa_9DataArray_2__len__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_4get_sentence_id(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_8get_id(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_word); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_10__getitem__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_loc); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_12get_sentence_bounds(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_loc); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_11read_bitext_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename, int __pyx_v_side); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_22read_binary(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_24write_binary(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_f); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_7word2id___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9DataArray_7word2id_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_9DataArray_7word2id_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_7id2word___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9DataArray_7id2word_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_9DataArray_7id2word_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_4data___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9DataArray_4data_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_9DataArray_4data_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_7sent_id___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9DataArray_7sent_id_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_9DataArray_7sent_id_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9DataArray_10sent_index___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9DataArray_10sent_index_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_9DataArray_10sent_index_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_unlink(CYTHON_UNUSED struct __pyx_obj_3_sa_Alignment *__pyx_v_self, PyObject *__pyx_v_link); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_2get_sent_links(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, int __pyx_v_sent_id); /* proto */
-static int __pyx_pf_3_sa_9Alignment_4__cinit__(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_from_text); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_8read_binary(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_12write_binary(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_9Alignment_16alignment(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_from_text, PyObject *__pyx_v_from_data, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_earray, PyObject *__pyx_v_fsarray, PyObject *__pyx_v_alignment); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_6get_e_id(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_eword); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_8get_f_id(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_fword); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_fword, PyObject *__pyx_v_eword, PyObject *__pyx_v_col); /* proto */
-static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_14BitSetIterator___next__(struct __pyx_obj_3_sa_BitSetIterator *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_6BitSet___cinit__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self); /* proto */
-static void __pyx_pf_3_sa_6BitSet_2__dealloc__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6BitSet_4__iter__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6BitSet_6insert(struct __pyx_obj_3_sa_BitSet *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_6BitSet_8findsucc(struct __pyx_obj_3_sa_BitSet *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_6BitSet_10__str__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6BitSet_12min(struct __pyx_obj_3_sa_BitSet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6BitSet_14max(struct __pyx_obj_3_sa_BitSet *__pyx_v_self); /* proto */
-static Py_ssize_t __pyx_pf_3_sa_6BitSet_16__len__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_6BitSet_18__contains__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_11VEBIterator___next__(struct __pyx_obj_3_sa_VEBIterator *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_3VEB___cinit__(struct __pyx_obj_3_sa_VEB *__pyx_v_self, int __pyx_v_size); /* proto */
-static void __pyx_pf_3_sa_3VEB_2__dealloc__(struct __pyx_obj_3_sa_VEB *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_3VEB_4__iter__(struct __pyx_obj_3_sa_VEB *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_3VEB_6insert(struct __pyx_obj_3_sa_VEB *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_3VEB_8findsucc(struct __pyx_obj_3_sa_VEB *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static Py_ssize_t __pyx_pf_3_sa_3VEB_10__len__(struct __pyx_obj_3_sa_VEB *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_3VEB_12__contains__(struct __pyx_obj_3_sa_VEB *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sa); /* proto */
-static PyObject *__pyx_pf_3_sa_3LCP_2compute_stats(struct __pyx_obj_3_sa_LCP *__pyx_v_self, int __pyx_v_max_n); /* proto */
-static int __pyx_pf_3_sa_8Alphabet___cinit__(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self); /* proto */
-static void __pyx_pf_3_sa_8Alphabet_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_3_sa_Alphabet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_8Alphabet_9terminals___get__(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_8Alphabet_12nonterminals___get__(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_4isvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sym); /* proto */
-static PyObject *__pyx_pf_3_sa_12make_lattice_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_12make_lattice_3genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6make_lattice(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_words); /* proto */
-static PyObject *__pyx_pf_3_sa_14decode_lattice_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_8decode_lattice(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lattice); /* proto */
-static PyObject *__pyx_pf_3_sa_15decode_sentence_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_10decode_sentence(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lattice); /* proto */
-static PyObject *__pyx_pf_3_sa_12encode_words_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_12encode_words(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_words); /* proto */
-static PyObject *__pyx_pf_3_sa_12decode_words_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_14decode_words(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_syms); /* proto */
-static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_words); /* proto */
-static void __pyx_pf_3_sa_6Phrase_2__dealloc__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_4__str__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_10arity(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_12getvarpos(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_14getvar(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_16clen(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_k); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_ci); /* proto */
-#if PY_MAJOR_VERSION < 3
-static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-#endif
-static Py_hash_t __pyx_pf_3_sa_6Phrase_22__hash__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static Py_ssize_t __pyx_pf_3_sa_6Phrase_24__len__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_26__getitem__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_28__iter__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_31subst(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_children); /* proto */
-static PyObject *__pyx_pf_3_sa_6Phrase_5words___get__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_self, int __pyx_v_lhs, struct __pyx_obj_3_sa_Phrase *__pyx_v_f, struct __pyx_obj_3_sa_Phrase *__pyx_v_e, PyObject *__pyx_v_scores, PyObject *__pyx_v_word_alignments); /* proto */
-static Py_hash_t __pyx_pf_3_sa_4Rule_2__hash__(struct __pyx_obj_3_sa_Rule *__pyx_v_self); /* proto */
-#if PY_MAJOR_VERSION < 3
-static int __pyx_pf_3_sa_4Rule_4__cmp__(struct __pyx_obj_3_sa_Rule *__pyx_v_self, struct __pyx_obj_3_sa_Rule *__pyx_v_other); /* proto */
-#endif
-static PyObject *__pyx_pf_3_sa_4Rule_6fmerge(struct __pyx_obj_3_sa_Rule *__pyx_v_self, struct __pyx_obj_3_sa_Phrase *__pyx_v_f); /* proto */
-static PyObject *__pyx_pf_3_sa_4Rule_8arity(struct __pyx_obj_3_sa_Rule *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_4Rule_7__str___genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_4Rule_12alignments(struct __pyx_obj_3_sa_Rule *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_4Rule_1f___get__(struct __pyx_obj_3_sa_Rule *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_4Rule_1e___get__(struct __pyx_obj_3_sa_Rule *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_7TrieMap___cinit__(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, int __pyx_v_alphabet_size); /* proto */
-static void __pyx_pf_3_sa_7TrieMap_2__dealloc__(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, PyObject *__pyx_v_pattern); /* proto */
-static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, PyObject *__pyx_v_pattern); /* proto */
-static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, PyObject *__pyx_v_flag); /* proto */
-static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, PyObject *__pyx_v_fsarray, PyObject *__pyx_v_from_stats, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_precompute_rank, PyObject *__pyx_v_precompute_secondary_rank, PyObject *__pyx_v_max_length, PyObject *__pyx_v_max_nonterminals, PyObject *__pyx_v_train_max_initial_size, PyObject *__pyx_v_train_min_gap_size); /* proto */
-static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, PyObject *__pyx_v_stats, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sarray); /* proto */
-static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_from_text, PyObject *__pyx_v_side); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_2__getitem__(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_side); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, int __pyx_v_i, int __pyx_v_j, int __pyx_v_h, struct __pyx_obj_3_sa_IntList *__pyx_v_isa, PyObject *__pyx_v_pad); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_8write_text(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename); /* proto */
-static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_word, int __pyx_v_offset, int __pyx_v_low, int __pyx_v_high); /* proto */
-static int __pyx_pf_3_sa_8TrieNode___cinit__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_8TrieNode_8children___get__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_8TrieNode_8children_2__set__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_8TrieNode_8children_4__del__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_16ExtendedTrieNode___cinit__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_phrase, PyObject *__pyx_v_phrase_location, PyObject *__pyx_v_suffix_link); /* proto */
-static PyObject *__pyx_pf_3_sa_16ExtendedTrieNode_6phrase___get__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_16ExtendedTrieNode_6phrase_2__set__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_16ExtendedTrieNode_6phrase_4__del__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location___get__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location_2__set__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location_4__del__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link___get__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link_2__set__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link_4__del__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9TrieTable___cinit__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_extended); /* proto */
-static PyObject *__pyx_pf_3_sa_9TrieTable_8extended___get__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9TrieTable_8extended_2__set__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static PyObject *__pyx_pf_3_sa_9TrieTable_5count___get__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9TrieTable_5count_2__set__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static PyObject *__pyx_pf_3_sa_9TrieTable_4root___get__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_9TrieTable_4root_2__set__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_3_sa_9TrieTable_4root_4__del__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_self, int __pyx_v_sa_low, int __pyx_v_sa_high, int __pyx_v_arr_low, int __pyx_v_arr_high, PyObject *__pyx_v_arr, int __pyx_v_num_subpatterns); /* proto */
-static int __pyx_pf_3_sa_7Sampler___cinit__(struct __pyx_obj_3_sa_Sampler *__pyx_v_self, int __pyx_v_sample_size, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray); /* proto */
-static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *__pyx_v_self, struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_phrase_location); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda1(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda2(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda3(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
-static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_Alignment *__pyx_v_alignment, float __pyx_v_by_slack_factor, char *__pyx_v_category, PyObject *__pyx_v_max_chunks, unsigned int __pyx_v_max_initial_size, unsigned int __pyx_v_max_length, unsigned int __pyx_v_max_nonterminals, PyObject *__pyx_v_max_target_chunks, PyObject *__pyx_v_max_target_length, unsigned int __pyx_v_min_gap_size, PyObject *__pyx_v_precompute_file, unsigned int __pyx_v_precompute_secondary_rank, unsigned int __pyx_v_precompute_rank, int __pyx_v_require_aligned_terminal, int __pyx_v_require_aligned_chunks, unsigned int __pyx_v_train_max_initial_size, unsigned int __pyx_v_train_min_gap_size, int __pyx_v_tight_phrases, int __pyx_v_use_baeza_yates, int __pyx_v_use_collocations, int __pyx_v_use_index); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray, struct __pyx_obj_3_sa_DataArray *__pyx_v_edarray, struct __pyx_obj_3_sa_Sampler *__pyx_v_sampler, struct __pyx_obj_3_sa_Scorer *__pyx_v_scorer); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_pattern); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_pattern); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_10get_precomputed_collocation(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_phrase); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_frontier, PyObject *__pyx_v_res, PyObject *__pyx_v_fwords); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_away(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_skip, PyObject *__pyx_v_i, PyObject *__pyx_v_spanlen, PyObject *__pyx_v_pathlen, PyObject *__pyx_v_fwords, PyObject *__pyx_v_next_states, PyObject *__pyx_v_reachable_buffer); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_fwords, PyObject *__pyx_v_ifrom, PyObject *__pyx_v_dist); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_fwords, PyObject *__pyx_v_ifrom, PyObject *__pyx_v_ito); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v__columns, PyObject *__pyx_v_curr_idx, PyObject *__pyx_v_min_dist); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda5(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda4(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda6(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_5input_2genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_22input(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_fwords, PyObject *__pyx_v_meta); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(PyObject *__pyx_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_f_j, PyObject *__pyx_v_e_i, PyObject *__pyx_v_e_j, PyObject *__pyx_v_min_bound, PyObject *__pyx_v_wc, PyObject *__pyx_v_links, PyObject *__pyx_v_nt, PyObject *__pyx_v_nt_open); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_words, PyObject *__pyx_v_e_words, PyObject *__pyx_v_alignment); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
-static PyObject *__pyx_lambda_funcdef_lambda8(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_9form_rule_2genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_e_i, PyObject *__pyx_v_f_span, PyObject *__pyx_v_e_span, PyObject *__pyx_v_nt, PyObject *__pyx_v_al); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29fmt_rule(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f, PyObject *__pyx_v_e, PyObject *__pyx_v_a); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_35online_ctx_lookup(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f, PyObject *__pyx_v_e); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(PyObject *__pyx_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_f_j, PyObject *__pyx_v_lex_i, PyObject *__pyx_v_lex_j, PyObject *__pyx_v_wc, PyObject *__pyx_v_ntc, PyObject *__pyx_v_syms); /* proto */
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_words); /* proto */
-static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vec, PyObject *__pyx_v_i, PyObject *__pyx_v_j); /* proto */
-static PyObject *__pyx_pf_3_sa_18span_inc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vec, PyObject *__pyx_v_i, PyObject *__pyx_v_j); /* proto */
-static PyObject *__pyx_pf_3_sa_20span_dec(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vec, PyObject *__pyx_v_i, PyObject *__pyx_v_j); /* proto */
-static int __pyx_pf_3_sa_13FeatureVector___cinit__(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_13FeatureVector_2set(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self, unsigned int __pyx_v_name, float __pyx_v_value); /* proto */
-static PyObject *__pyx_pf_3_sa_13FeatureVector_4__iter__(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str___genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str__(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self); /* proto */
-static int __pyx_pf_3_sa_6Scorer___init__(struct __pyx_obj_3_sa_Scorer *__pyx_v_self, PyObject *__pyx_v_models); /* proto */
-static PyObject *__pyx_tp_new_3_sa_HieroCachingRuleFactory(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_IntList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_VEBIterator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_BiLex(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_VEB(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_LCP(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_DataArray(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_BitSetIterator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_Precomputation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_18_alignments(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_SuffixArray(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_16___str__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_Alphabet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_Rule(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_PhraseLocation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_15___iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_28___str__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_FeatureVector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_19_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_Scorer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_Alignment(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_BitSet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_Sampler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_StringMap(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_TrieNode(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_ExtendedTrieNode(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_TrieMap(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_Phrase(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_TrieTable(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_3_sa_FloatList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static char __pyx_k_1[] = ".gz";
-static char __pyx_k_2[] = "Requested index %d of %d-length FloatList";
-static char __pyx_k_3[] = "IntList[";
-static char __pyx_k_4[] = ",";
-static char __pyx_k_5[] = "]";
-static char __pyx_k_6[] = "len=";
-static char __pyx_k_7[] = "%s not in IntList";
-static char __pyx_k_8[] = "Requested index %d of %d-length IntList";
-static char __pyx_k_9[] = "Requested index %d:%d of %d-length IntList";
-static char __pyx_k_10[] = "Illegal key type %s for IntList";
-static char __pyx_k_14[] = "%s ";
-static char __pyx_k_15[] = "\n";
-static char __pyx_k_19[] = " ||| ";
-static char __pyx_k_23[] = "%d ";
-static char __pyx_k_27[] = "%s %d ";
-static char __pyx_k_29[] = "write_enhanced_handle";
-static char __pyx_k_33[] = "-";
-static char __pyx_k_37[] = "%d-%d ";
-static char __pyx_k_44[] = "%d-%d out of bounds (I=%d,J=%d) in line %d\n";
-static char __pyx_k_47[] = "";
-static char __pyx_k_48[] = "Sort error in CLex";
-static char __pyx_k_50[] = " ";
-static char __pyx_k_52[] = "%d %f %f ";
-static char __pyx_k_54[] = "%d %s ";
-static char __pyx_k_58[] = "%s %s %.6f %.6f\n";
-static char __pyx_k_60[] = " (";
-static char __pyx_k_61[] = ")";
-static char __pyx_k_62[] = "Constructing LCP array";
-static char __pyx_k_64[] = "LCP array completed";
-static char __pyx_k_66[] = "[%s,%d]";
-static char __pyx_k_67[] = "[%s]";
-static char __pyx_k_68[] = "\\";
-static char __pyx_k_69[] = " ";
-static char __pyx_k_70[] = "Invalid LHS symbol: %d";
-static char __pyx_k_71[] = "%d-%d";
-static char __pyx_k_72[] = "precompute_secondary_rank";
-static char __pyx_k_73[] = "train_max_initial_size";
-static char __pyx_k_74[] = "Precomputing frequent intersections";
-static char __pyx_k_76[] = " Computing inverted indexes...";
-static char __pyx_k_78[] = " Computing collocations...";
-static char __pyx_k_80[] = " %d sentences";
-static char __pyx_k_85[] = "X ";
-static char __pyx_k_86[] = "ERROR: unexpected pattern %s in set of precomputed collocations";
-static char __pyx_k_87[] = "RANK %d\tCOUNT, COST: %d %d\tCUMUL: %d, %d";
-static char __pyx_k_88[] = "Precomputed collocations for %d patterns out of %d possible (upper bound %d)";
-static char __pyx_k_89[] = "Precomputed inverted index for %d patterns ";
-static char __pyx_k_90[] = "Precomputation took %f seconds";
-static char __pyx_k_91[] = " Bucket sort took %f seconds";
-static char __pyx_k_92[] = " Refining, sort depth = %d";
-static char __pyx_k_93[] = " Refinement took %f seconds";
-static char __pyx_k_94[] = " Finalizing sort...";
-static char __pyx_k_96[] = "Suffix array construction took %f seconds";
-static char __pyx_k_97[] = "Unexpected condition found in q3sort: sort from %d to %d";
-static char __pyx_k__0[] = "0";
-static char __pyx_k__1[] = "1";
-static char __pyx_k__E[] = "E";
-static char __pyx_k__F[] = "F";
-static char __pyx_k__a[] = "a";
-static char __pyx_k__e[] = "e";
-static char __pyx_k__f[] = "f";
-static char __pyx_k__h[] = "h";
-static char __pyx_k__i[] = "i";
-static char __pyx_k__j[] = "j";
-static char __pyx_k__k[] = "k";
-static char __pyx_k__r[] = "r";
-static char __pyx_k__w[] = "w";
-static char __pyx_k__x[] = "x";
-static char __pyx_k__y[] = "y";
-static char __pyx_k_102[] = "Sampling strategy: uniform, max sample size = %d";
-static char __pyx_k_103[] = "Sampling strategy: no sampling";
-static char __pyx_k_105[] = "require_aligned_terminal";
-static char __pyx_k_106[] = "require_aligned_chunks";
-static char __pyx_k_107[] = "[X]";
-static char __pyx_k_108[] = "Must specify an alignment object";
-static char __pyx_k_110[] = "HieroCachingRuleFactory.__cinit__.<locals>.<lambda>";
-static char __pyx_k_111[] = "Reading precomputed data from file %s... ";
-static char __pyx_k_112[] = "Precomputation done with max nonterminals %d, decoder uses %d";
-static char __pyx_k_113[] = "Precomputation done with max terminals %d, decoder uses %d";
-static char __pyx_k_114[] = "Precomputation done with max initial size %d, decoder uses %d";
-static char __pyx_k_115[] = "Precomputation done with min gap size %d, decoder uses %d";
-static char __pyx_k_116[] = "Converting %d hash keys on precomputed inverted index... ";
-static char __pyx_k_117[] = "Converting %d hash keys on precomputed collocations... ";
-static char __pyx_k_118[] = "Processing precomputations took %f seconds";
-static char __pyx_k_119[] = "{";
- static char __pyx_k_120[] = "(";
-static char __pyx_k_121[] = "}";
-static char __pyx_k_122[] = "get_precomputed_collocation";
-static char __pyx_k_123[] = "double binary";
-static char __pyx_k_124[] = "HieroCachingRuleFactory.input.<locals>.lambda4.<locals>.<lambda>";
-static char __pyx_k_125[] = "Keyword trie error";
-static char __pyx_k_127[] = "HieroCachingRuleFactory.input.<locals>.<lambda>";
-static char __pyx_k_128[] = "get_all_nodes_isteps_away";
-static char __pyx_k_129[] = "Total time for rule lookup, extraction, and scoring = %f seconds";
-static char __pyx_k_130[] = " Extract time = %f seconds";
-static char __pyx_k_131[] = " Intersect time = %f seconds";
-static char __pyx_k_132[] = "No aligned terminals";
-static char __pyx_k_133[] = "Unaligned chunk";
-static char __pyx_k_134[] = "Gaps are not tight phrases";
-static char __pyx_k_135[] = "Inside edges of preceding subphrase are not tight";
-static char __pyx_k_136[] = "Inside edges of following subphrase are not tight";
-static char __pyx_k_137[] = "Subphrase [%d, %d] failed integrity check";
-static char __pyx_k_138[] = "Didn't extract anything from [%d, %d] -> [%d, %d]";
-static char __pyx_k_139[] = "Unable to extract basic phrase";
-static char __pyx_k_143[] = "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi";
-static char __pyx_k_144[] = "HieroCachingRuleFactory.add_instance.<locals>.extract";
-static char __pyx_k_146[] = "HieroCachingRuleFactory.form_rule.<locals>.<lambda>";
-static char __pyx_k_149[] = "{0}-{1}";
-static char __pyx_k_150[] = "[X] ||| {0} ||| {1} ||| {2}";
-static char __pyx_k_151[] = "------------------------------";
-static char __pyx_k_153[] = " Online Stats ";
-static char __pyx_k_157[] = " : ";
-static char __pyx_k_163[] = "OnlineFeatureContext";
-static char __pyx_k_166[] = "HieroCachingRuleFactory.get_f_phrases.<locals>.extract";
-static char __pyx_k_167[] = "%s=%s";
-static char __pyx_k_169[] = "/Users/vchahun/Sandbox/cdec/python/src/sa/_sa.pyx";
-static char __pyx_k_172[] = "cdec.sa";
-static char __pyx_k_176[] = "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi";
-static char __pyx_k_187[] = "*EPS*";
-static char __pyx_k__FE[] = "FE";
-static char __pyx_k__al[] = "al";
-static char __pyx_k__fe[] = "fe";
-static char __pyx_k__gc[] = "gc";
-static char __pyx_k__nt[] = "nt";
-static char __pyx_k__sa[] = "sa";
-static char __pyx_k__wc[] = "wc";
-static char __pyx_k___sa[] = "_sa";
-static char __pyx_k__arr[] = "arr";
-static char __pyx_k__cmp[] = "cmp";
-static char __pyx_k__col[] = "col";
-static char __pyx_k__e_i[] = "e_i";
-static char __pyx_k__e_j[] = "e_j";
-static char __pyx_k__end[] = "end";
-static char __pyx_k__f_i[] = "f_i";
-static char __pyx_k__f_j[] = "f_j";
-static char __pyx_k__get[] = "get";
-static char __pyx_k__isa[] = "isa";
-static char __pyx_k__ito[] = "ito";
-static char __pyx_k__key[] = "key";
-static char __pyx_k__lhs[] = "lhs";
-static char __pyx_k__low[] = "low";
-static char __pyx_k__map[] = "map";
-static char __pyx_k__max[] = "max";
-static char __pyx_k__ntc[] = "ntc";
-static char __pyx_k__pad[] = "pad";
-static char __pyx_k__pop[] = "pop";
-static char __pyx_k__res[] = "res";
-static char __pyx_k__set[] = "set";
-static char __pyx_k__sym[] = "sym";
-static char __pyx_k__vec[] = "vec";
-static char __pyx_k__zip[] = "zip";
-static char __pyx_k__NULL[] = "NULL";
-static char __pyx_k__args[] = "args";
-static char __pyx_k__dist[] = "dist";
-static char __pyx_k__gzip[] = "gzip";
-static char __pyx_k__high[] = "high";
-static char __pyx_k__info[] = "info";
-static char __pyx_k__join[] = "join";
-static char __pyx_k__link[] = "link";
-static char __pyx_k__meta[] = "meta";
-static char __pyx_k__name[] = "name";
-static char __pyx_k__open[] = "open";
-static char __pyx_k__seek[] = "seek";
-static char __pyx_k__send[] = "send";
-static char __pyx_k__side[] = "side";
-static char __pyx_k__size[] = "size";
-static char __pyx_k__skip[] = "skip";
-static char __pyx_k__stop[] = "stop";
-static char __pyx_k__syms[] = "syms";
-static char __pyx_k__warn[] = "warn";
-static char __pyx_k__word[] = "word";
-static char __pyx_k___SEP_[] = "_SEP_";
-static char __pyx_k__arity[] = "arity";
-static char __pyx_k__chain[] = "chain";
-static char __pyx_k__close[] = "close";
-static char __pyx_k__debug[] = "debug";
-static char __pyx_k__eword[] = "eword";
-static char __pyx_k__fword[] = "fword";
-static char __pyx_k__ifrom[] = "ifrom";
-static char __pyx_k__index[] = "index";
-static char __pyx_k__isvar[] = "isvar";
-static char __pyx_k__lex_i[] = "lex_i";
-static char __pyx_k__lex_j[] = "lex_j";
-static char __pyx_k__links[] = "links";
-static char __pyx_k__merge[] = "merge";
-static char __pyx_k__range[] = "range";
-static char __pyx_k__reset[] = "reset";
-static char __pyx_k__split[] = "split";
-static char __pyx_k__start[] = "start";
-static char __pyx_k__stats[] = "stats";
-static char __pyx_k__throw[] = "throw";
-static char __pyx_k__toMap[] = "toMap";
-static char __pyx_k__value[] = "value";
-static char __pyx_k__words[] = "words";
-static char __pyx_k__write[] = "write";
-static char __pyx_k__append[] = "append";
-static char __pyx_k__e_span[] = "e_span";
-static char __pyx_k__e_text[] = "e_text";
-static char __pyx_k__earray[] = "earray";
-static char __pyx_k__extend[] = "extend";
-static char __pyx_k__f_span[] = "f_span";
-static char __pyx_k__f_text[] = "f_text";
-static char __pyx_k__fcount[] = "fcount";
-static char __pyx_k__format[] = "format";
-static char __pyx_k__fwords[] = "fwords";
-static char __pyx_k__get_id[] = "get_id";
-static char __pyx_k__insert[] = "insert";
-static char __pyx_k__link_i[] = "link_i";
-static char __pyx_k__link_j[] = "link_j";
-static char __pyx_k__logger[] = "logger";
-static char __pyx_k__lookup[] = "lookup";
-static char __pyx_k__offset[] = "offset";
-static char __pyx_k__online[] = "online";
-static char __pyx_k__phrase[] = "phrase";
-static char __pyx_k__q3sort[] = "q3sort";
-static char __pyx_k__sa_low[] = "sa_low";
-static char __pyx_k__sample[] = "sample";
-static char __pyx_k__sarray[] = "sarray";
-static char __pyx_k__scorer[] = "scorer";
-static char __pyx_k__scores[] = "scores";
-static char __pyx_k__sorted[] = "sorted";
-static char __pyx_k__source[] = "source";
-static char __pyx_k__unlink[] = "unlink";
-static char __pyx_k__Counter[] = "Counter";
-static char __pyx_k__advance[] = "advance";
-static char __pyx_k__arr_low[] = "arr_low";
-static char __pyx_k__bilex_e[] = "bilex_e";
-static char __pyx_k__bilex_f[] = "bilex_f";
-static char __pyx_k__collect[] = "collect";
-static char __pyx_k__e_words[] = "e_words";
-static char __pyx_k__edarray[] = "edarray";
-static char __pyx_k__ephrase[] = "ephrase";
-static char __pyx_k__extract[] = "extract";
-static char __pyx_k__f_words[] = "f_words";
-static char __pyx_k__fphrase[] = "fphrase";
-static char __pyx_k__fsarray[] = "fsarray";
-static char __pyx_k__genexpr[] = "genexpr";
-static char __pyx_k__lattice[] = "lattice";
-static char __pyx_k__logging[] = "logging";
-static char __pyx_k__matches[] = "matches";
-static char __pyx_k__new_e_i[] = "new_e_i";
-static char __pyx_k__new_e_j[] = "new_e_j";
-static char __pyx_k__nt_open[] = "nt_open";
-static char __pyx_k__pathlen[] = "pathlen";
-static char __pyx_k__sa_high[] = "sa_high";
-static char __pyx_k__sampler[] = "sampler";
-static char __pyx_k__spanlen[] = "spanlen";
-static char __pyx_k__GzipFile[] = "GzipFile";
-static char __pyx_k____exit__[] = "__exit__";
-static char __pyx_k____main__[] = "__main__";
-static char __pyx_k____name__[] = "__name__";
-static char __pyx_k____test__[] = "__test__";
-static char __pyx_k___columns[] = "_columns";
-static char __pyx_k__arr_high[] = "arr_high";
-static char __pyx_k__bilex_fe[] = "bilex_fe";
-static char __pyx_k__category[] = "category";
-static char __pyx_k__children[] = "children";
-static char __pyx_k__curr_idx[] = "curr_idx";
-static char __pyx_k__extended[] = "extended";
-static char __pyx_k__filename[] = "filename";
-static char __pyx_k__fmt_rule[] = "fmt_rule";
-static char __pyx_k__frontier[] = "frontier";
-static char __pyx_k__get_e_id[] = "get_e_id";
-static char __pyx_k__get_f_id[] = "get_f_id";
-static char __pyx_k__get_word[] = "get_word";
-static char __pyx_k__getchunk[] = "getchunk";
-static char __pyx_k__min_dist[] = "min_dist";
-static char __pyx_k__resource[] = "resource";
-static char __pyx_k__ru_stime[] = "ru_stime";
-static char __pyx_k__ru_utime[] = "ru_utime";
-static char __pyx_k__shortest[] = "shortest";
-static char __pyx_k__span_dec[] = "span_dec";
-static char __pyx_k__span_inc[] = "span_inc";
-static char __pyx_k__word_ids[] = "word_ids";
-static char __pyx_k__Exception[] = "Exception";
-static char __pyx_k__INCREMENT[] = "INCREMENT";
-static char __pyx_k__TypeError[] = "TypeError";
-static char __pyx_k____enter__[] = "__enter__";
-static char __pyx_k__alignment[] = "alignment";
-static char __pyx_k__enumerate[] = "enumerate";
-static char __pyx_k__form_rule[] = "form_rule";
-static char __pyx_k__from_data[] = "from_data";
-static char __pyx_k__from_text[] = "from_text";
-static char __pyx_k__getLogger[] = "getLogger";
-static char __pyx_k__getrusage[] = "getrusage";
-static char __pyx_k__increment[] = "increment";
-static char __pyx_k__iteritems[] = "iteritems";
-static char __pyx_k__itertools[] = "itertools";
-static char __pyx_k__min_bound[] = "min_bound";
-static char __pyx_k__new_lex_i[] = "new_lex_i";
-static char __pyx_k__new_lex_j[] = "new_lex_j";
-static char __pyx_k__paircount[] = "paircount";
-static char __pyx_k__partition[] = "partition";
-static char __pyx_k__reachable[] = "reachable";
-static char __pyx_k__read_text[] = "read_text";
-static char __pyx_k__use_index[] = "use_index";
-static char __pyx_k__IndexError[] = "IndexError";
-static char __pyx_k__ValueError[] = "ValueError";
-static char __pyx_k____import__[] = "__import__";
-static char __pyx_k__alignments[] = "alignments";
-static char __pyx_k__from_stats[] = "from_stats";
-static char __pyx_k__input_span[] = "input_span";
-static char __pyx_k__itervalues[] = "itervalues";
-static char __pyx_k__max_chunks[] = "max_chunks";
-static char __pyx_k__max_length[] = "max_length";
-static char __pyx_k__namedtuple[] = "namedtuple";
-static char __pyx_k__plus_links[] = "plus_links";
-static char __pyx_k__precompute[] = "precompute";
-static char __pyx_k__span_check[] = "span_check";
-static char __pyx_k__write_text[] = "write_text";
-static char __pyx_k__END_OF_FILE[] = "END_OF_FILE";
-static char __pyx_k__END_OF_LINE[] = "END_OF_LINE";
-static char __pyx_k__RUSAGE_SELF[] = "RUSAGE_SELF";
-static char __pyx_k__collections[] = "collections";
-static char __pyx_k__defaultdict[] = "defaultdict";
-static char __pyx_k__from_binary[] = "from_binary";
-static char __pyx_k__initial_len[] = "initial_len";
-static char __pyx_k__input_match[] = "input_match";
-static char __pyx_k__monitor_cpu[] = "monitor_cpu";
-static char __pyx_k__next_states[] = "next_states";
-static char __pyx_k__old_last_nt[] = "old_last_nt";
-static char __pyx_k__precomputed[] = "precomputed";
-static char __pyx_k__read_binary[] = "read_binary";
-static char __pyx_k__read_bitext[] = "read_bitext";
-static char __pyx_k__sample_size[] = "sample_size";
-static char __pyx_k__suffix_link[] = "suffix_link";
-static char __pyx_k__use_sent_id[] = "use_sent_id";
-static char __pyx_k___doquicksort[] = "_doquicksort";
-static char __pyx_k__decode_words[] = "decode_words";
-static char __pyx_k__encode_words[] = "encode_words";
-static char __pyx_k__gzip_or_text[] = "gzip_or_text";
-static char __pyx_k__make_lattice[] = "make_lattice";
-static char __pyx_k__min_gap_size[] = "min_gap_size";
-static char __pyx_k__nt_collision[] = "nt_collision";
-static char __pyx_k__StopIteration[] = "StopIteration";
-static char __pyx_k__alphabet_size[] = "alphabet_size";
-static char __pyx_k__from_iterable[] = "from_iterable";
-static char __pyx_k__fsample_count[] = "fsample_count";
-static char __pyx_k__get_f_phrases[] = "get_f_phrases";
-static char __pyx_k__new_min_bound[] = "new_min_bound";
-static char __pyx_k__test_sentence[] = "test_sentence";
-static char __pyx_k__tight_phrases[] = "tight_phrases";
-static char __pyx_k__FeatureContext[] = "FeatureContext";
-static char __pyx_k____pyx_vtable__[] = "__pyx_vtable__";
-static char __pyx_k__decode_lattice[] = "decode_lattice";
-static char __pyx_k__pattern2phrase[] = "pattern2phrase";
-static char __pyx_k__read_text_data[] = "read_text_data";
-static char __pyx_k__by_slack_factor[] = "by_slack_factor";
-static char __pyx_k__decode_sentence[] = "decode_sentence";
-static char __pyx_k__get_next_states[] = "get_next_states";
-static char __pyx_k__num_subpatterns[] = "num_subpatterns";
-static char __pyx_k__phrase_location[] = "phrase_location";
-static char __pyx_k__precompute_file[] = "precompute_file";
-static char __pyx_k__precompute_rank[] = "precompute_rank";
-static char __pyx_k__use_baeza_yates[] = "use_baeza_yates";
-static char __pyx_k__word_alignments[] = "word_alignments";
-static char __pyx_k__INITIAL_CAPACITY[] = "INITIAL_CAPACITY";
-static char __pyx_k__max_initial_size[] = "max_initial_size";
-static char __pyx_k__max_nonterminals[] = "max_nonterminals";
-static char __pyx_k__reachable_buffer[] = "reachable_buffer";
-static char __pyx_k__use_collocations[] = "use_collocations";
-static char __pyx_k__dump_online_rules[] = "dump_online_rules";
-static char __pyx_k__max_target_chunks[] = "max_target_chunks";
-static char __pyx_k__max_target_length[] = "max_target_length";
-static char __pyx_k__online_ctx_lookup[] = "online_ctx_lookup";
-static char __pyx_k__train_min_gap_size[] = "train_min_gap_size";
-static char __pyx_k__pattern2phrase_plus[] = "pattern2phrase_plus";
-static PyObject *__pyx_kp_s_1;
-static PyObject *__pyx_kp_s_10;
-static PyObject *__pyx_kp_s_102;
-static PyObject *__pyx_kp_s_103;
-static PyObject *__pyx_n_s_105;
-static PyObject *__pyx_n_s_106;
-static PyObject *__pyx_kp_s_108;
-static PyObject *__pyx_n_s_110;
-static PyObject *__pyx_kp_s_111;
-static PyObject *__pyx_kp_s_112;
-static PyObject *__pyx_kp_s_113;
-static PyObject *__pyx_kp_s_114;
-static PyObject *__pyx_kp_s_115;
-static PyObject *__pyx_kp_s_116;
-static PyObject *__pyx_kp_s_117;
-static PyObject *__pyx_kp_s_118;
-static PyObject *__pyx_kp_s_119;
-static PyObject *__pyx_kp_s_120;
-static PyObject *__pyx_kp_s_121;
-static PyObject *__pyx_n_s_122;
-static PyObject *__pyx_kp_s_123;
-static PyObject *__pyx_n_s_124;
-static PyObject *__pyx_kp_s_125;
-static PyObject *__pyx_n_s_127;
-static PyObject *__pyx_n_s_128;
-static PyObject *__pyx_kp_s_129;
-static PyObject *__pyx_kp_s_130;
-static PyObject *__pyx_kp_s_131;
-static PyObject *__pyx_kp_s_132;
-static PyObject *__pyx_kp_s_133;
-static PyObject *__pyx_kp_s_134;
-static PyObject *__pyx_kp_s_135;
-static PyObject *__pyx_kp_s_136;
-static PyObject *__pyx_kp_s_137;
-static PyObject *__pyx_kp_s_138;
-static PyObject *__pyx_kp_s_139;
-static PyObject *__pyx_kp_s_14;
-static PyObject *__pyx_kp_s_143;
-static PyObject *__pyx_n_s_144;
-static PyObject *__pyx_n_s_146;
-static PyObject *__pyx_kp_s_149;
-static PyObject *__pyx_kp_s_15;
-static PyObject *__pyx_kp_s_150;
-static PyObject *__pyx_kp_s_151;
-static PyObject *__pyx_kp_s_153;
-static PyObject *__pyx_kp_s_157;
-static PyObject *__pyx_n_s_163;
-static PyObject *__pyx_n_s_166;
-static PyObject *__pyx_kp_s_167;
-static PyObject *__pyx_kp_s_169;
-static PyObject *__pyx_kp_s_172;
-static PyObject *__pyx_kp_s_176;
-static PyObject *__pyx_kp_s_19;
-static PyObject *__pyx_kp_s_2;
-static PyObject *__pyx_kp_s_23;
-static PyObject *__pyx_kp_s_27;
-static PyObject *__pyx_n_s_29;
-static PyObject *__pyx_kp_s_3;
-static PyObject *__pyx_kp_s_33;
-static PyObject *__pyx_kp_s_37;
-static PyObject *__pyx_kp_s_4;
-static PyObject *__pyx_kp_s_44;
-static PyObject *__pyx_kp_s_47;
-static PyObject *__pyx_kp_s_48;
-static PyObject *__pyx_kp_s_5;
-static PyObject *__pyx_kp_s_50;
-static PyObject *__pyx_kp_s_52;
-static PyObject *__pyx_kp_s_54;
-static PyObject *__pyx_kp_s_58;
-static PyObject *__pyx_kp_s_6;
-static PyObject *__pyx_kp_s_60;
-static PyObject *__pyx_kp_s_61;
-static PyObject *__pyx_kp_s_62;
-static PyObject *__pyx_kp_s_64;
-static PyObject *__pyx_kp_s_66;
-static PyObject *__pyx_kp_s_67;
-static PyObject *__pyx_kp_s_68;
-static PyObject *__pyx_kp_s_69;
-static PyObject *__pyx_kp_s_7;
-static PyObject *__pyx_kp_s_70;
-static PyObject *__pyx_kp_s_71;
-static PyObject *__pyx_n_s_72;
-static PyObject *__pyx_n_s_73;
-static PyObject *__pyx_kp_s_74;
-static PyObject *__pyx_kp_s_76;
-static PyObject *__pyx_kp_s_78;
-static PyObject *__pyx_kp_s_8;
-static PyObject *__pyx_kp_s_80;
-static PyObject *__pyx_kp_s_85;
-static PyObject *__pyx_kp_s_86;
-static PyObject *__pyx_kp_s_87;
-static PyObject *__pyx_kp_s_88;
-static PyObject *__pyx_kp_s_89;
-static PyObject *__pyx_kp_s_9;
-static PyObject *__pyx_kp_s_90;
-static PyObject *__pyx_kp_s_91;
-static PyObject *__pyx_kp_s_92;
-static PyObject *__pyx_kp_s_93;
-static PyObject *__pyx_kp_s_94;
-static PyObject *__pyx_kp_s_96;
-static PyObject *__pyx_kp_s_97;
-static PyObject *__pyx_kp_s__0;
-static PyObject *__pyx_kp_s__1;
-static PyObject *__pyx_n_s__Counter;
-static PyObject *__pyx_n_s__E;
-static PyObject *__pyx_n_s__END_OF_FILE;
-static PyObject *__pyx_n_s__END_OF_LINE;
-static PyObject *__pyx_n_s__Exception;
-static PyObject *__pyx_n_s__F;
-static PyObject *__pyx_n_s__FE;
-static PyObject *__pyx_n_s__FeatureContext;
-static PyObject *__pyx_n_s__GzipFile;
-static PyObject *__pyx_n_s__INCREMENT;
-static PyObject *__pyx_n_s__INITIAL_CAPACITY;
-static PyObject *__pyx_n_s__IndexError;
-static PyObject *__pyx_n_s__NULL;
-static PyObject *__pyx_n_s__RUSAGE_SELF;
-static PyObject *__pyx_n_s__StopIteration;
-static PyObject *__pyx_n_s__TypeError;
-static PyObject *__pyx_n_s__ValueError;
-static PyObject *__pyx_n_s____enter__;
-static PyObject *__pyx_n_s____exit__;
-static PyObject *__pyx_n_s____import__;
-static PyObject *__pyx_n_s____main__;
-static PyObject *__pyx_n_s____name__;
-static PyObject *__pyx_n_s____pyx_vtable__;
-static PyObject *__pyx_n_s____test__;
-static PyObject *__pyx_n_s___columns;
-static PyObject *__pyx_n_s___doquicksort;
-static PyObject *__pyx_n_s___sa;
-static PyObject *__pyx_n_s__a;
-static PyObject *__pyx_n_s__advance;
-static PyObject *__pyx_n_s__al;
-static PyObject *__pyx_n_s__alignment;
-static PyObject *__pyx_n_s__alignments;
-static PyObject *__pyx_n_s__alphabet_size;
-static PyObject *__pyx_n_s__append;
-static PyObject *__pyx_n_s__args;
-static PyObject *__pyx_n_s__arity;
-static PyObject *__pyx_n_s__arr;
-static PyObject *__pyx_n_s__arr_high;
-static PyObject *__pyx_n_s__arr_low;
-static PyObject *__pyx_n_s__bilex_e;
-static PyObject *__pyx_n_s__bilex_f;
-static PyObject *__pyx_n_s__bilex_fe;
-static PyObject *__pyx_n_s__by_slack_factor;
-static PyObject *__pyx_n_s__category;
-static PyObject *__pyx_n_s__chain;
-static PyObject *__pyx_n_s__children;
-static PyObject *__pyx_n_s__close;
-static PyObject *__pyx_n_s__cmp;
-static PyObject *__pyx_n_s__col;
-static PyObject *__pyx_n_s__collect;
-static PyObject *__pyx_n_s__collections;
-static PyObject *__pyx_n_s__curr_idx;
-static PyObject *__pyx_n_s__debug;
-static PyObject *__pyx_n_s__decode_lattice;
-static PyObject *__pyx_n_s__decode_sentence;
-static PyObject *__pyx_n_s__decode_words;
-static PyObject *__pyx_n_s__defaultdict;
-static PyObject *__pyx_n_s__dist;
-static PyObject *__pyx_n_s__dump_online_rules;
-static PyObject *__pyx_n_s__e;
-static PyObject *__pyx_n_s__e_i;
-static PyObject *__pyx_n_s__e_j;
-static PyObject *__pyx_n_s__e_span;
-static PyObject *__pyx_n_s__e_text;
-static PyObject *__pyx_n_s__e_words;
-static PyObject *__pyx_n_s__earray;
-static PyObject *__pyx_n_s__edarray;
-static PyObject *__pyx_n_s__encode_words;
-static PyObject *__pyx_n_s__end;
-static PyObject *__pyx_n_s__enumerate;
-static PyObject *__pyx_n_s__ephrase;
-static PyObject *__pyx_n_s__eword;
-static PyObject *__pyx_n_s__extend;
-static PyObject *__pyx_n_s__extended;
-static PyObject *__pyx_n_s__extract;
-static PyObject *__pyx_n_s__f;
-static PyObject *__pyx_n_s__f_i;
-static PyObject *__pyx_n_s__f_j;
-static PyObject *__pyx_n_s__f_span;
-static PyObject *__pyx_n_s__f_text;
-static PyObject *__pyx_n_s__f_words;
-static PyObject *__pyx_n_s__fcount;
-static PyObject *__pyx_n_s__fe;
-static PyObject *__pyx_n_s__filename;
-static PyObject *__pyx_n_s__fmt_rule;
-static PyObject *__pyx_n_s__form_rule;
-static PyObject *__pyx_n_s__format;
-static PyObject *__pyx_n_s__fphrase;
-static PyObject *__pyx_n_s__from_binary;
-static PyObject *__pyx_n_s__from_data;
-static PyObject *__pyx_n_s__from_iterable;
-static PyObject *__pyx_n_s__from_stats;
-static PyObject *__pyx_n_s__from_text;
-static PyObject *__pyx_n_s__frontier;
-static PyObject *__pyx_n_s__fsample_count;
-static PyObject *__pyx_n_s__fsarray;
-static PyObject *__pyx_n_s__fword;
-static PyObject *__pyx_n_s__fwords;
-static PyObject *__pyx_n_s__gc;
-static PyObject *__pyx_n_s__genexpr;
-static PyObject *__pyx_n_s__get;
-static PyObject *__pyx_n_s__getLogger;
-static PyObject *__pyx_n_s__get_e_id;
-static PyObject *__pyx_n_s__get_f_id;
-static PyObject *__pyx_n_s__get_f_phrases;
-static PyObject *__pyx_n_s__get_id;
-static PyObject *__pyx_n_s__get_next_states;
-static PyObject *__pyx_n_s__get_word;
-static PyObject *__pyx_n_s__getchunk;
-static PyObject *__pyx_n_s__getrusage;
-static PyObject *__pyx_n_s__gzip;
-static PyObject *__pyx_n_s__gzip_or_text;
-static PyObject *__pyx_n_s__h;
-static PyObject *__pyx_n_s__high;
-static PyObject *__pyx_n_s__i;
-static PyObject *__pyx_n_s__ifrom;
-static PyObject *__pyx_n_s__increment;
-static PyObject *__pyx_n_s__index;
-static PyObject *__pyx_n_s__info;
-static PyObject *__pyx_n_s__initial_len;
-static PyObject *__pyx_n_s__input_match;
-static PyObject *__pyx_n_s__input_span;
-static PyObject *__pyx_n_s__insert;
-static PyObject *__pyx_n_s__isa;
-static PyObject *__pyx_n_s__isvar;
-static PyObject *__pyx_n_s__iteritems;
-static PyObject *__pyx_n_s__itertools;
-static PyObject *__pyx_n_s__itervalues;
-static PyObject *__pyx_n_s__ito;
-static PyObject *__pyx_n_s__j;
-static PyObject *__pyx_n_s__join;
-static PyObject *__pyx_n_s__k;
-static PyObject *__pyx_n_s__key;
-static PyObject *__pyx_n_s__lattice;
-static PyObject *__pyx_n_s__lex_i;
-static PyObject *__pyx_n_s__lex_j;
-static PyObject *__pyx_n_s__lhs;
-static PyObject *__pyx_n_s__link;
-static PyObject *__pyx_n_s__link_i;
-static PyObject *__pyx_n_s__link_j;
-static PyObject *__pyx_n_s__links;
-static PyObject *__pyx_n_s__logger;
-static PyObject *__pyx_n_s__logging;
-static PyObject *__pyx_n_s__lookup;
-static PyObject *__pyx_n_s__low;
-static PyObject *__pyx_n_s__make_lattice;
-static PyObject *__pyx_n_s__map;
-static PyObject *__pyx_n_s__matches;
-static PyObject *__pyx_n_s__max;
-static PyObject *__pyx_n_s__max_chunks;
-static PyObject *__pyx_n_s__max_initial_size;
-static PyObject *__pyx_n_s__max_length;
-static PyObject *__pyx_n_s__max_nonterminals;
-static PyObject *__pyx_n_s__max_target_chunks;
-static PyObject *__pyx_n_s__max_target_length;
-static PyObject *__pyx_n_s__merge;
-static PyObject *__pyx_n_s__meta;
-static PyObject *__pyx_n_s__min_bound;
-static PyObject *__pyx_n_s__min_dist;
-static PyObject *__pyx_n_s__min_gap_size;
-static PyObject *__pyx_n_s__monitor_cpu;
-static PyObject *__pyx_n_s__name;
-static PyObject *__pyx_n_s__namedtuple;
-static PyObject *__pyx_n_s__new_e_i;
-static PyObject *__pyx_n_s__new_e_j;
-static PyObject *__pyx_n_s__new_lex_i;
-static PyObject *__pyx_n_s__new_lex_j;
-static PyObject *__pyx_n_s__new_min_bound;
-static PyObject *__pyx_n_s__next_states;
-static PyObject *__pyx_n_s__nt;
-static PyObject *__pyx_n_s__nt_collision;
-static PyObject *__pyx_n_s__nt_open;
-static PyObject *__pyx_n_s__ntc;
-static PyObject *__pyx_n_s__num_subpatterns;
-static PyObject *__pyx_n_s__offset;
-static PyObject *__pyx_n_s__old_last_nt;
-static PyObject *__pyx_n_s__online;
-static PyObject *__pyx_n_s__online_ctx_lookup;
-static PyObject *__pyx_n_s__open;
-static PyObject *__pyx_n_s__pad;
-static PyObject *__pyx_n_s__paircount;
-static PyObject *__pyx_n_s__partition;
-static PyObject *__pyx_n_s__pathlen;
-static PyObject *__pyx_n_s__pattern2phrase;
-static PyObject *__pyx_n_s__pattern2phrase_plus;
-static PyObject *__pyx_n_s__phrase;
-static PyObject *__pyx_n_s__phrase_location;
-static PyObject *__pyx_n_s__plus_links;
-static PyObject *__pyx_n_s__pop;
-static PyObject *__pyx_n_s__precompute;
-static PyObject *__pyx_n_s__precompute_file;
-static PyObject *__pyx_n_s__precompute_rank;
-static PyObject *__pyx_n_s__precomputed;
-static PyObject *__pyx_n_s__q3sort;
-static PyObject *__pyx_n_s__range;
-static PyObject *__pyx_n_s__reachable;
-static PyObject *__pyx_n_s__reachable_buffer;
-static PyObject *__pyx_n_s__read_binary;
-static PyObject *__pyx_n_s__read_bitext;
-static PyObject *__pyx_n_s__read_text;
-static PyObject *__pyx_n_s__read_text_data;
-static PyObject *__pyx_n_s__res;
-static PyObject *__pyx_n_s__reset;
-static PyObject *__pyx_n_s__resource;
-static PyObject *__pyx_n_s__ru_stime;
-static PyObject *__pyx_n_s__ru_utime;
-static PyObject *__pyx_n_s__sa;
-static PyObject *__pyx_n_s__sa_high;
-static PyObject *__pyx_n_s__sa_low;
-static PyObject *__pyx_n_s__sample;
-static PyObject *__pyx_n_s__sample_size;
-static PyObject *__pyx_n_s__sampler;
-static PyObject *__pyx_n_s__sarray;
-static PyObject *__pyx_n_s__scorer;
-static PyObject *__pyx_n_s__scores;
-static PyObject *__pyx_n_s__seek;
-static PyObject *__pyx_n_s__send;
-static PyObject *__pyx_n_s__set;
-static PyObject *__pyx_n_s__shortest;
-static PyObject *__pyx_n_s__side;
-static PyObject *__pyx_n_s__size;
-static PyObject *__pyx_n_s__skip;
-static PyObject *__pyx_n_s__sorted;
-static PyObject *__pyx_n_s__source;
-static PyObject *__pyx_n_s__span_check;
-static PyObject *__pyx_n_s__span_dec;
-static PyObject *__pyx_n_s__span_inc;
-static PyObject *__pyx_n_s__spanlen;
-static PyObject *__pyx_n_s__split;
-static PyObject *__pyx_n_s__start;
-static PyObject *__pyx_n_s__stats;
-static PyObject *__pyx_n_s__stop;
-static PyObject *__pyx_n_s__suffix_link;
-static PyObject *__pyx_n_s__sym;
-static PyObject *__pyx_n_s__syms;
-static PyObject *__pyx_n_s__test_sentence;
-static PyObject *__pyx_n_s__throw;
-static PyObject *__pyx_n_s__tight_phrases;
-static PyObject *__pyx_n_s__toMap;
-static PyObject *__pyx_n_s__train_min_gap_size;
-static PyObject *__pyx_n_s__unlink;
-static PyObject *__pyx_n_s__use_baeza_yates;
-static PyObject *__pyx_n_s__use_collocations;
-static PyObject *__pyx_n_s__use_index;
-static PyObject *__pyx_n_s__use_sent_id;
-static PyObject *__pyx_n_s__value;
-static PyObject *__pyx_n_s__vec;
-static PyObject *__pyx_n_s__w;
-static PyObject *__pyx_n_s__warn;
-static PyObject *__pyx_n_s__wc;
-static PyObject *__pyx_n_s__word;
-static PyObject *__pyx_n_s__word_alignments;
-static PyObject *__pyx_n_s__word_ids;
-static PyObject *__pyx_n_s__words;
-static PyObject *__pyx_n_s__write;
-static PyObject *__pyx_n_s__write_text;
-static PyObject *__pyx_n_s__x;
-static PyObject *__pyx_n_s__y;
-static PyObject *__pyx_n_s__zip;
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_2;
-static PyObject *__pyx_int_3;
-static PyObject *__pyx_int_5;
-static PyObject *__pyx_int_7;
-static PyObject *__pyx_int_neg_1;
-static PyObject *__pyx_int_10;
-static PyObject *__pyx_int_20;
-static PyObject *__pyx_int_1000;
-static PyObject *__pyx_k_43;
-static PyObject *__pyx_k_101;
-static PyObject *__pyx_k_slice_22;
-static PyObject *__pyx_k_tuple_11;
-static PyObject *__pyx_k_tuple_12;
-static PyObject *__pyx_k_tuple_13;
-static PyObject *__pyx_k_tuple_16;
-static PyObject *__pyx_k_tuple_17;
-static PyObject *__pyx_k_tuple_18;
-static PyObject *__pyx_k_tuple_20;
-static PyObject *__pyx_k_tuple_21;
-static PyObject *__pyx_k_tuple_24;
-static PyObject *__pyx_k_tuple_25;
-static PyObject *__pyx_k_tuple_26;
-static PyObject *__pyx_k_tuple_28;
-static PyObject *__pyx_k_tuple_30;
-static PyObject *__pyx_k_tuple_31;
-static PyObject *__pyx_k_tuple_32;
-static PyObject *__pyx_k_tuple_34;
-static PyObject *__pyx_k_tuple_35;
-static PyObject *__pyx_k_tuple_36;
-static PyObject *__pyx_k_tuple_38;
-static PyObject *__pyx_k_tuple_39;
-static PyObject *__pyx_k_tuple_40;
-static PyObject *__pyx_k_tuple_41;
-static PyObject *__pyx_k_tuple_42;
-static PyObject *__pyx_k_tuple_45;
-static PyObject *__pyx_k_tuple_46;
-static PyObject *__pyx_k_tuple_49;
-static PyObject *__pyx_k_tuple_51;
-static PyObject *__pyx_k_tuple_53;
-static PyObject *__pyx_k_tuple_55;
-static PyObject *__pyx_k_tuple_56;
-static PyObject *__pyx_k_tuple_57;
-static PyObject *__pyx_k_tuple_59;
-static PyObject *__pyx_k_tuple_63;
-static PyObject *__pyx_k_tuple_65;
-static PyObject *__pyx_k_tuple_75;
-static PyObject *__pyx_k_tuple_77;
-static PyObject *__pyx_k_tuple_79;
-static PyObject *__pyx_k_tuple_81;
-static PyObject *__pyx_k_tuple_82;
-static PyObject *__pyx_k_tuple_83;
-static PyObject *__pyx_k_tuple_84;
-static PyObject *__pyx_k_tuple_95;
-static PyObject *__pyx_k_tuple_98;
-static PyObject *__pyx_k_tuple_99;
-static PyObject *__pyx_k_slice_140;
-static PyObject *__pyx_k_slice_145;
-static PyObject *__pyx_k_slice_147;
-static PyObject *__pyx_k_slice_148;
-static PyObject *__pyx_k_tuple_100;
-static PyObject *__pyx_k_tuple_104;
-static PyObject *__pyx_k_tuple_109;
-static PyObject *__pyx_k_tuple_126;
-static PyObject *__pyx_k_tuple_141;
-static PyObject *__pyx_k_tuple_152;
-static PyObject *__pyx_k_tuple_154;
-static PyObject *__pyx_k_tuple_155;
-static PyObject *__pyx_k_tuple_156;
-static PyObject *__pyx_k_tuple_158;
-static PyObject *__pyx_k_tuple_159;
-static PyObject *__pyx_k_tuple_160;
-static PyObject *__pyx_k_tuple_161;
-static PyObject *__pyx_k_tuple_162;
-static PyObject *__pyx_k_tuple_164;
-static PyObject *__pyx_k_tuple_170;
-static PyObject *__pyx_k_tuple_173;
-static PyObject *__pyx_k_tuple_174;
-static PyObject *__pyx_k_tuple_177;
-static PyObject *__pyx_k_tuple_179;
-static PyObject *__pyx_k_tuple_181;
-static PyObject *__pyx_k_tuple_183;
-static PyObject *__pyx_k_tuple_185;
-static PyObject *__pyx_k_tuple_188;
-static PyObject *__pyx_k_tuple_190;
-static PyObject *__pyx_k_tuple_192;
-static PyObject *__pyx_k_codeobj_142;
-static PyObject *__pyx_k_codeobj_165;
-static PyObject *__pyx_k_codeobj_168;
-static PyObject *__pyx_k_codeobj_171;
-static PyObject *__pyx_k_codeobj_175;
-static PyObject *__pyx_k_codeobj_178;
-static PyObject *__pyx_k_codeobj_180;
-static PyObject *__pyx_k_codeobj_182;
-static PyObject *__pyx_k_codeobj_184;
-static PyObject *__pyx_k_codeobj_186;
-static PyObject *__pyx_k_codeobj_189;
-static PyObject *__pyx_k_codeobj_191;
-static PyObject *__pyx_k_codeobj_193;
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_1monitor_cpu(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_1monitor_cpu = {__Pyx_NAMESTR("monitor_cpu"), (PyCFunction)__pyx_pw_3_sa_1monitor_cpu, METH_NOARGS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_1monitor_cpu(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("monitor_cpu (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_monitor_cpu(__pyx_self);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_sa.pyx":5
- * import gzip
- *
- * def monitor_cpu(): # <<<<<<<<<<<<<<
- * return (resource.getrusage(resource.RUSAGE_SELF).ru_utime+
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime)
- */
-
-static PyObject *__pyx_pf_3_sa_monitor_cpu(CYTHON_UNUSED PyObject *__pyx_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("monitor_cpu", 0);
-
- /* "_sa.pyx":6
- *
- * def monitor_cpu():
- * return (resource.getrusage(resource.RUSAGE_SELF).ru_utime+ # <<<<<<<<<<<<<<
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime)
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__getrusage); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__RUSAGE_SELF); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__ru_utime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "_sa.pyx":7
- * def monitor_cpu():
- * return (resource.getrusage(resource.RUSAGE_SELF).ru_utime+
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime) # <<<<<<<<<<<<<<
- *
- * def gzip_or_text(char* filename):
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__getrusage); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__RUSAGE_SELF); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__ru_stime); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.monitor_cpu", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_3gzip_or_text(PyObject *__pyx_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_3gzip_or_text = {__Pyx_NAMESTR("gzip_or_text"), (PyCFunction)__pyx_pw_3_sa_3gzip_or_text, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_3gzip_or_text(PyObject *__pyx_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("gzip_or_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.gzip_or_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_2gzip_or_text(__pyx_self, ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_sa.pyx":9
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime)
- *
- * def gzip_or_text(char* filename): # <<<<<<<<<<<<<<
- * if filename.endswith('.gz'):
- * return gzip.GzipFile(filename)
- */
-
-static PyObject *__pyx_pf_3_sa_2gzip_or_text(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_filename) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("gzip_or_text", 0);
-
- /* "_sa.pyx":10
- *
- * def gzip_or_text(char* filename):
- * if filename.endswith('.gz'): # <<<<<<<<<<<<<<
- * return gzip.GzipFile(filename)
- * else:
- */
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = __Pyx_PyBytes_Tailmatch(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_kp_s_1), 0, PY_SSIZE_T_MAX, 1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- if ((__pyx_t_2 != 0)) {
-
- /* "_sa.pyx":11
- * def gzip_or_text(char* filename):
- * if filename.endswith('.gz'):
- * return gzip.GzipFile(filename) # <<<<<<<<<<<<<<
- * else:
- * return open(filename)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__GzipFile); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "_sa.pyx":13
- * return gzip.GzipFile(filename)
- * else:
- * return open(filename) # <<<<<<<<<<<<<<
- *
- * logger = logging.getLogger('cdec.sa')
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.gzip_or_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9FloatList_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_9FloatList_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_size;
- int __pyx_v_increment;
- int __pyx_v_initial_len;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__increment,&__pyx_n_s__initial_len,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__increment);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__initial_len);
- if (value) { values[2] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- if (values[0]) {
- __pyx_v_size = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_size = ((int)0);
- }
- if (values[1]) {
- __pyx_v_increment = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_increment == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_increment = ((int)1);
- }
- if (values[2]) {
- __pyx_v_initial_len = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_initial_len == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_initial_len = ((int)0);
- }
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.FloatList.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9FloatList___cinit__(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self), __pyx_v_size, __pyx_v_increment, __pyx_v_initial_len);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":11
- * cdef class FloatList:
- *
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0): # <<<<<<<<<<<<<<
- * if initial_len > size:
- * size = initial_len
- */
-
-static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, int __pyx_v_size, int __pyx_v_increment, int __pyx_v_initial_len) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":12
- *
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- * if initial_len > size: # <<<<<<<<<<<<<<
- * size = initial_len
- * self.size = size
- */
- __pyx_t_1 = ((__pyx_v_initial_len > __pyx_v_size) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":13
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- * if initial_len > size:
- * size = initial_len # <<<<<<<<<<<<<<
- * self.size = size
- * self.increment = increment
- */
- __pyx_v_size = __pyx_v_initial_len;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":14
- * if initial_len > size:
- * size = initial_len
- * self.size = size # <<<<<<<<<<<<<<
- * self.increment = increment
- * self.len = initial_len
- */
- __pyx_v_self->size = __pyx_v_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":15
- * size = initial_len
- * self.size = size
- * self.increment = increment # <<<<<<<<<<<<<<
- * self.len = initial_len
- * self.arr = <float*> malloc(size*sizeof(float))
- */
- __pyx_v_self->increment = __pyx_v_increment;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":16
- * self.size = size
- * self.increment = increment
- * self.len = initial_len # <<<<<<<<<<<<<<
- * self.arr = <float*> malloc(size*sizeof(float))
- * memset(self.arr, 0, initial_len*sizeof(float))
- */
- __pyx_v_self->len = __pyx_v_initial_len;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":17
- * self.increment = increment
- * self.len = initial_len
- * self.arr = <float*> malloc(size*sizeof(float)) # <<<<<<<<<<<<<<
- * memset(self.arr, 0, initial_len*sizeof(float))
- *
- */
- __pyx_v_self->arr = ((float *)malloc((__pyx_v_size * (sizeof(float)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":18
- * self.len = initial_len
- * self.arr = <float*> malloc(size*sizeof(float))
- * memset(self.arr, 0, initial_len*sizeof(float)) # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- memset(__pyx_v_self->arr, 0, (__pyx_v_initial_len * (sizeof(float))));
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_9FloatList_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_9FloatList_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_9FloatList_2__dealloc__(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":20
- * memset(self.arr, 0, initial_len*sizeof(float))
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * free(self.arr)
- *
- */
-
-static void __pyx_pf_3_sa_9FloatList_2__dealloc__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":21
- *
- * def __dealloc__(self):
- * free(self.arr) # <<<<<<<<<<<<<<
- *
- * def __getitem__(self, i):
- */
- free(__pyx_v_self->arr);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9FloatList_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_9FloatList_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9FloatList_4__getitem__(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":23
- * free(self.arr)
- *
- * def __getitem__(self, i): # <<<<<<<<<<<<<<
- * j = i
- * if i<0:
- */
-
-static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_v_j = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_t_5;
- Py_ssize_t __pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__getitem__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":24
- *
- * def __getitem__(self, i):
- * j = i # <<<<<<<<<<<<<<
- * if i<0:
- * j = self.len + i
- */
- __Pyx_INCREF(__pyx_v_i);
- __pyx_v_j = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":25
- * def __getitem__(self, i):
- * j = i
- * if i<0: # <<<<<<<<<<<<<<
- * j = self.len + i
- * if j<0 or j>=self.len:
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":26
- * j = i
- * if i<0:
- * j = self.len + i # <<<<<<<<<<<<<<
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_v_j);
- __pyx_v_j = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":27
- * if i<0:
- * j = self.len + i
- * if j<0 or j>=self.len: # <<<<<<<<<<<<<<
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- * return self.arr[j]
- */
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_j, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (!__pyx_t_2) {
- __pyx_t_3 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_j, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_5 = __pyx_t_4;
- } else {
- __pyx_t_5 = __pyx_t_2;
- }
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":28
- * j = self.len + i
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len)) # <<<<<<<<<<<<<<
- * return self.arr[j]
- *
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_2), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":29
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- * return self.arr[j] # <<<<<<<<<<<<<<
- *
- * cdef void set(self, int i, float v):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_j); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->arr[__pyx_t_6])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.FloatList.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_j);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":31
- * return self.arr[j]
- *
- * cdef void set(self, int i, float v): # <<<<<<<<<<<<<<
- * j = i
- * if i<0:
- */
-
-static void __pyx_f_3_sa_9FloatList_set(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, int __pyx_v_i, float __pyx_v_v) {
- int __pyx_v_j;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("set", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":32
- *
- * cdef void set(self, int i, float v):
- * j = i # <<<<<<<<<<<<<<
- * if i<0:
- * j = self.len + i
- */
- __pyx_v_j = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":33
- * cdef void set(self, int i, float v):
- * j = i
- * if i<0: # <<<<<<<<<<<<<<
- * j = self.len + i
- * if j<0 or j>=self.len:
- */
- __pyx_t_1 = ((__pyx_v_i < 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":34
- * j = i
- * if i<0:
- * j = self.len + i # <<<<<<<<<<<<<<
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- */
- __pyx_v_j = (__pyx_v_self->len + __pyx_v_i);
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":35
- * if i<0:
- * j = self.len + i
- * if j<0 or j>=self.len: # <<<<<<<<<<<<<<
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- * self.arr[j] = v
- */
- __pyx_t_1 = ((__pyx_v_j < 0) != 0);
- if (!__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_j >= __pyx_v_self->len) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":36
- * j = self.len + i
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len)) # <<<<<<<<<<<<<<
- * self.arr[j] = v
- *
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_4 = 0;
- __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_2), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_5));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":37
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- * self.arr[j] = v # <<<<<<<<<<<<<<
- *
- * def __setitem__(self, i, val):
- */
- (__pyx_v_self->arr[__pyx_v_j]) = __pyx_v_v;
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_WriteUnraisable("_sa.FloatList.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9FloatList_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val); /*proto*/
-static int __pyx_pw_3_sa_9FloatList_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9FloatList_6__setitem__(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self), ((PyObject *)__pyx_v_i), ((PyObject *)__pyx_v_val));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":39
- * self.arr[j] = v
- *
- * def __setitem__(self, i, val): # <<<<<<<<<<<<<<
- * self.set(i, val)
- *
- */
-
-static int __pyx_pf_3_sa_9FloatList_6__setitem__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- float __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setitem__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":40
- *
- * def __setitem__(self, i, val):
- * self.set(i, val) # <<<<<<<<<<<<<<
- *
- * def __len__(self):
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_v_val); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->__pyx_vtab)->set(__pyx_v_self, __pyx_t_1, __pyx_t_2);
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.FloatList.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_3_sa_9FloatList_9__len__(PyObject *__pyx_v_self); /*proto*/
-static Py_ssize_t __pyx_pw_3_sa_9FloatList_9__len__(PyObject *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9FloatList_8__len__(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":42
- * self.set(i, val)
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return self.len
- *
- */
-
-static Py_ssize_t __pyx_pf_3_sa_9FloatList_8__len__(struct __pyx_obj_3_sa_FloatList *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":43
- *
- * def __len__(self):
- * return self.len # <<<<<<<<<<<<<<
- *
- * def append(self, float val):
- */
- __pyx_r = __pyx_v_self->len;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9FloatList_11append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
-static PyObject *__pyx_pw_3_sa_9FloatList_11append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
- float __pyx_v_val;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("append (wrapper)", 0);
- assert(__pyx_arg_val); {
- __pyx_v_val = __pyx_PyFloat_AsFloat(__pyx_arg_val); if (unlikely((__pyx_v_val == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.FloatList.append", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9FloatList_10append(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self), ((float)__pyx_v_val));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":45
- * return self.len
- *
- * def append(self, float val): # <<<<<<<<<<<<<<
- * if self.len == self.size:
- * self.size = self.size + self.increment
- */
-
-static PyObject *__pyx_pf_3_sa_9FloatList_10append(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, float __pyx_v_val) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("append", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":46
- *
- * def append(self, float val):
- * if self.len == self.size: # <<<<<<<<<<<<<<
- * self.size = self.size + self.increment
- * self.arr = <float*> realloc(self.arr, self.size*sizeof(float))
- */
- __pyx_t_1 = ((__pyx_v_self->len == __pyx_v_self->size) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":47
- * def append(self, float val):
- * if self.len == self.size:
- * self.size = self.size + self.increment # <<<<<<<<<<<<<<
- * self.arr = <float*> realloc(self.arr, self.size*sizeof(float))
- * self.arr[self.len] = val
- */
- __pyx_v_self->size = (__pyx_v_self->size + __pyx_v_self->increment);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":48
- * if self.len == self.size:
- * self.size = self.size + self.increment
- * self.arr = <float*> realloc(self.arr, self.size*sizeof(float)) # <<<<<<<<<<<<<<
- * self.arr[self.len] = val
- * self.len = self.len + 1
- */
- __pyx_v_self->arr = ((float *)realloc(__pyx_v_self->arr, (__pyx_v_self->size * (sizeof(float)))));
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":49
- * self.size = self.size + self.increment
- * self.arr = <float*> realloc(self.arr, self.size*sizeof(float))
- * self.arr[self.len] = val # <<<<<<<<<<<<<<
- * self.len = self.len + 1
- *
- */
- (__pyx_v_self->arr[__pyx_v_self->len]) = __pyx_v_val;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":50
- * self.arr = <float*> realloc(self.arr, self.size*sizeof(float))
- * self.arr[self.len] = val
- * self.len = self.len + 1 # <<<<<<<<<<<<<<
- *
- * cdef void write_handle(self, FILE* f):
- */
- __pyx_v_self->len = (__pyx_v_self->len + 1);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":52
- * self.len = self.len + 1
- *
- * cdef void write_handle(self, FILE* f): # <<<<<<<<<<<<<<
- * fwrite(&(self.len), sizeof(float), 1, f)
- * fwrite(self.arr, sizeof(float), self.len, f)
- */
-
-static void __pyx_f_3_sa_9FloatList_write_handle(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, FILE *__pyx_v_f) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":53
- *
- * cdef void write_handle(self, FILE* f):
- * fwrite(&(self.len), sizeof(float), 1, f) # <<<<<<<<<<<<<<
- * fwrite(self.arr, sizeof(float), self.len, f)
- *
- */
- fwrite((&__pyx_v_self->len), (sizeof(float)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":54
- * cdef void write_handle(self, FILE* f):
- * fwrite(&(self.len), sizeof(float), 1, f)
- * fwrite(self.arr, sizeof(float), self.len, f) # <<<<<<<<<<<<<<
- *
- * def write(self, char* filename):
- */
- fwrite(__pyx_v_self->arr, (sizeof(float)), __pyx_v_self->len, __pyx_v_f);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9FloatList_13write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9FloatList_13write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.FloatList.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9FloatList_12write(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":56
- * fwrite(self.arr, sizeof(float), self.len, f)
- *
- * def write(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "w")
- */
-
-static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":58
- * def write(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "w") # <<<<<<<<<<<<<<
- * self.write_handle(f)
- * fclose(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":59
- * cdef FILE* f
- * f = fopen(filename, "w")
- * self.write_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->__pyx_vtab)->write_handle(__pyx_v_self, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":60
- * f = fopen(filename, "w")
- * self.write_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * cdef void read_handle(self, FILE* f):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":62
- * fclose(f)
- *
- * cdef void read_handle(self, FILE* f): # <<<<<<<<<<<<<<
- * free(self.arr)
- * fread(&(self.len), sizeof(float), 1, f)
- */
-
-static void __pyx_f_3_sa_9FloatList_read_handle(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, FILE *__pyx_v_f) {
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("read_handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":63
- *
- * cdef void read_handle(self, FILE* f):
- * free(self.arr) # <<<<<<<<<<<<<<
- * fread(&(self.len), sizeof(float), 1, f)
- * self.arr = <float*> malloc(self.len * sizeof(float))
- */
- free(__pyx_v_self->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":64
- * cdef void read_handle(self, FILE* f):
- * free(self.arr)
- * fread(&(self.len), sizeof(float), 1, f) # <<<<<<<<<<<<<<
- * self.arr = <float*> malloc(self.len * sizeof(float))
- * self.size = self.len
- */
- fread((&__pyx_v_self->len), (sizeof(float)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":65
- * free(self.arr)
- * fread(&(self.len), sizeof(float), 1, f)
- * self.arr = <float*> malloc(self.len * sizeof(float)) # <<<<<<<<<<<<<<
- * self.size = self.len
- * fread(self.arr, sizeof(float), self.len, f)
- */
- __pyx_v_self->arr = ((float *)malloc((__pyx_v_self->len * (sizeof(float)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":66
- * fread(&(self.len), sizeof(float), 1, f)
- * self.arr = <float*> malloc(self.len * sizeof(float))
- * self.size = self.len # <<<<<<<<<<<<<<
- * fread(self.arr, sizeof(float), self.len, f)
- *
- */
- __pyx_t_1 = __pyx_v_self->len;
- __pyx_v_self->size = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":67
- * self.arr = <float*> malloc(self.len * sizeof(float))
- * self.size = self.len
- * fread(self.arr, sizeof(float), self.len, f) # <<<<<<<<<<<<<<
- *
- * def read(self, char* filename):
- */
- fread(__pyx_v_self->arr, (sizeof(float)), __pyx_v_self->len, __pyx_v_f);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9FloatList_15read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9FloatList_15read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.FloatList.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9FloatList_14read(((struct __pyx_obj_3_sa_FloatList *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":69
- * fread(self.arr, sizeof(float), self.len, f)
- *
- * def read(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "r")
- */
-
-static PyObject *__pyx_pf_3_sa_9FloatList_14read(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":71
- * def read(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "r") # <<<<<<<<<<<<<<
- * self.read_handle(f)
- * fclose(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":72
- * cdef FILE* f
- * f = fopen(filename, "r")
- * self.read_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- */
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->__pyx_vtab)->read_handle(__pyx_v_self, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":73
- * f = fopen(filename, "r")
- * self.read_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_7IntList_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_7IntList_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_size;
- int __pyx_v_increment;
- int __pyx_v_initial_len;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__increment,&__pyx_n_s__initial_len,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__increment);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__initial_len);
- if (value) { values[2] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- if (values[0]) {
- __pyx_v_size = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_size = ((int)0);
- }
- if (values[1]) {
- __pyx_v_increment = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_increment == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_increment = ((int)1);
- }
- if (values[2]) {
- __pyx_v_initial_len = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_initial_len == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_initial_len = ((int)0);
- }
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.IntList.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7IntList___cinit__(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), __pyx_v_size, __pyx_v_increment, __pyx_v_initial_len);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":11
- * cdef class IntList:
- *
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0): # <<<<<<<<<<<<<<
- * if initial_len > size:
- * size = initial_len
- */
-
-static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_size, int __pyx_v_increment, int __pyx_v_initial_len) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":12
- *
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- * if initial_len > size: # <<<<<<<<<<<<<<
- * size = initial_len
- * self.size = size
- */
- __pyx_t_1 = ((__pyx_v_initial_len > __pyx_v_size) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":13
- * def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- * if initial_len > size:
- * size = initial_len # <<<<<<<<<<<<<<
- * self.size = size
- * self.increment = increment
- */
- __pyx_v_size = __pyx_v_initial_len;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":14
- * if initial_len > size:
- * size = initial_len
- * self.size = size # <<<<<<<<<<<<<<
- * self.increment = increment
- * self.len = initial_len
- */
- __pyx_v_self->size = __pyx_v_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":15
- * size = initial_len
- * self.size = size
- * self.increment = increment # <<<<<<<<<<<<<<
- * self.len = initial_len
- * self.arr = <int*> malloc(size*sizeof(int))
- */
- __pyx_v_self->increment = __pyx_v_increment;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":16
- * self.size = size
- * self.increment = increment
- * self.len = initial_len # <<<<<<<<<<<<<<
- * self.arr = <int*> malloc(size*sizeof(int))
- * memset(self.arr, 0, initial_len*sizeof(int))
- */
- __pyx_v_self->len = __pyx_v_initial_len;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":17
- * self.increment = increment
- * self.len = initial_len
- * self.arr = <int*> malloc(size*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(self.arr, 0, initial_len*sizeof(int))
- *
- */
- __pyx_v_self->arr = ((int *)malloc((__pyx_v_size * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":18
- * self.len = initial_len
- * self.arr = <int*> malloc(size*sizeof(int))
- * memset(self.arr, 0, initial_len*sizeof(int)) # <<<<<<<<<<<<<<
- *
- * def __str__(self):
- */
- memset(__pyx_v_self->arr, 0, (__pyx_v_initial_len * (sizeof(int))));
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_3__str__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_3__str__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_2__str__(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":20
- * memset(self.arr, 0, initial_len*sizeof(int))
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * cdef unsigned i
- * ret = "IntList["
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- PyObject *__pyx_v_ret = NULL;
- int __pyx_v_idx;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__str__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":22
- * def __str__(self):
- * cdef unsigned i
- * ret = "IntList[" # <<<<<<<<<<<<<<
- * for idx in range(self.size):
- * if idx>0:
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_3));
- __pyx_v_ret = ((PyObject *)__pyx_kp_s_3);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":23
- * cdef unsigned i
- * ret = "IntList["
- * for idx in range(self.size): # <<<<<<<<<<<<<<
- * if idx>0:
- * ret += ","
- */
- __pyx_t_1 = __pyx_v_self->size;
- for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
- __pyx_v_idx = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":24
- * ret = "IntList["
- * for idx in range(self.size):
- * if idx>0: # <<<<<<<<<<<<<<
- * ret += ","
- * ret += str(self.arr[idx])
- */
- __pyx_t_3 = ((__pyx_v_idx > 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":25
- * for idx in range(self.size):
- * if idx>0:
- * ret += "," # <<<<<<<<<<<<<<
- * ret += str(self.arr[idx])
- * ret += "]"
- */
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_ret, ((PyObject *)__pyx_kp_s_4)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_v_ret);
- __pyx_v_ret = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":26
- * if idx>0:
- * ret += ","
- * ret += str(self.arr[idx]) # <<<<<<<<<<<<<<
- * ret += "]"
- * ret += "len="
- */
- __pyx_t_4 = PyInt_FromLong((__pyx_v_self->arr[__pyx_v_idx])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_ret, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_v_ret);
- __pyx_v_ret = __pyx_t_5;
- __pyx_t_5 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":27
- * ret += ","
- * ret += str(self.arr[idx])
- * ret += "]" # <<<<<<<<<<<<<<
- * ret += "len="
- * ret += str(self.len)
- */
- __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_ret, ((PyObject *)__pyx_kp_s_5)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_v_ret);
- __pyx_v_ret = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":28
- * ret += str(self.arr[idx])
- * ret += "]"
- * ret += "len=" # <<<<<<<<<<<<<<
- * ret += str(self.len)
- * return ret
- */
- __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_ret, ((PyObject *)__pyx_kp_s_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_v_ret);
- __pyx_v_ret = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":29
- * ret += "]"
- * ret += "len="
- * ret += str(self.len) # <<<<<<<<<<<<<<
- * return ret
- *
- */
- __pyx_t_5 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_ret, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_v_ret);
- __pyx_v_ret = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":30
- * ret += "len="
- * ret += str(self.len)
- * return ret # <<<<<<<<<<<<<<
- *
- * def index(self, int val):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_ret);
- __pyx_r = __pyx_v_ret;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.IntList.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_ret);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_5index(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_5index(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
- int __pyx_v_val;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("index (wrapper)", 0);
- assert(__pyx_arg_val); {
- __pyx_v_val = __Pyx_PyInt_AsInt(__pyx_arg_val); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.IntList.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7IntList_4index(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((int)__pyx_v_val));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":32
- * return ret
- *
- * def index(self, int val): # <<<<<<<<<<<<<<
- * cdef unsigned i
- * for i in range(self.len):
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_val) {
- unsigned int __pyx_v_i;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- unsigned int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("index", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":34
- * def index(self, int val):
- * cdef unsigned i
- * for i in range(self.len): # <<<<<<<<<<<<<<
- * if self.arr[i] == val:
- * return i
- */
- __pyx_t_1 = __pyx_v_self->len;
- for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
- __pyx_v_i = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":35
- * cdef unsigned i
- * for i in range(self.len):
- * if self.arr[i] == val: # <<<<<<<<<<<<<<
- * return i
- * raise ValueError('%s not in IntList' % val)
- */
- __pyx_t_3 = (((__pyx_v_self->arr[__pyx_v_i]) == __pyx_v_val) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":36
- * for i in range(self.len):
- * if self.arr[i] == val:
- * return i # <<<<<<<<<<<<<<
- * raise ValueError('%s not in IntList' % val)
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyLong_FromUnsignedLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":37
- * if self.arr[i] == val:
- * return i
- * raise ValueError('%s not in IntList' % val) # <<<<<<<<<<<<<<
- *
- * def partition(self,start,end):
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_val); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_5));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.IntList.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_7partition(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_7partition(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_start = 0;
- PyObject *__pyx_v_end = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("partition (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__end,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__end)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("partition", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "partition") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_start = values[0];
- __pyx_v_end = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("partition", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.IntList.partition", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7IntList_6partition(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), __pyx_v_start, __pyx_v_end);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":39
- * raise ValueError('%s not in IntList' % val)
- *
- * def partition(self,start,end): # <<<<<<<<<<<<<<
- * pivot = self.arr[end]
- * bottom = start-1
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_end) {
- PyObject *__pyx_v_pivot = NULL;
- PyObject *__pyx_v_bottom = NULL;
- PyObject *__pyx_v_top = NULL;
- long __pyx_v_done;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- Py_ssize_t __pyx_t_5;
- int __pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("partition", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":40
- *
- * def partition(self,start,end):
- * pivot = self.arr[end] # <<<<<<<<<<<<<<
- * bottom = start-1
- * top = end
- */
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_end); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->arr[__pyx_t_1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_pivot = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":41
- * def partition(self,start,end):
- * pivot = self.arr[end]
- * bottom = start-1 # <<<<<<<<<<<<<<
- * top = end
- * done = 0
- */
- __pyx_t_2 = PyNumber_Subtract(__pyx_v_start, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_bottom = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":42
- * pivot = self.arr[end]
- * bottom = start-1
- * top = end # <<<<<<<<<<<<<<
- * done = 0
- * while not done:
- */
- __Pyx_INCREF(__pyx_v_end);
- __pyx_v_top = __pyx_v_end;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":43
- * bottom = start-1
- * top = end
- * done = 0 # <<<<<<<<<<<<<<
- * while not done:
- * while not done:
- */
- __pyx_v_done = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":44
- * top = end
- * done = 0
- * while not done: # <<<<<<<<<<<<<<
- * while not done:
- * bottom += 1
- */
- while (1) {
- __pyx_t_3 = ((!(__pyx_v_done != 0)) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":45
- * done = 0
- * while not done:
- * while not done: # <<<<<<<<<<<<<<
- * bottom += 1
- * if bottom == top:
- */
- while (1) {
- __pyx_t_3 = ((!(__pyx_v_done != 0)) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":46
- * while not done:
- * while not done:
- * bottom += 1 # <<<<<<<<<<<<<<
- * if bottom == top:
- * done = 1
- */
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_bottom, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_bottom);
- __pyx_v_bottom = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":47
- * while not done:
- * bottom += 1
- * if bottom == top: # <<<<<<<<<<<<<<
- * done = 1
- * break
- */
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_bottom, __pyx_v_top, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":48
- * bottom += 1
- * if bottom == top:
- * done = 1 # <<<<<<<<<<<<<<
- * break
- * if self.arr[bottom] > pivot:
- */
- __pyx_v_done = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":49
- * if bottom == top:
- * done = 1
- * break # <<<<<<<<<<<<<<
- * if self.arr[bottom] > pivot:
- * self.arr[top] = self.arr[bottom]
- */
- goto __pyx_L6_break;
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":50
- * done = 1
- * break
- * if self.arr[bottom] > pivot: # <<<<<<<<<<<<<<
- * self.arr[top] = self.arr[bottom]
- * break
- */
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_bottom); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->arr[__pyx_t_1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_v_pivot, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":51
- * break
- * if self.arr[bottom] > pivot:
- * self.arr[top] = self.arr[bottom] # <<<<<<<<<<<<<<
- * break
- * while not done:
- */
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_bottom); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_top); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- (__pyx_v_self->arr[__pyx_t_5]) = (__pyx_v_self->arr[__pyx_t_1]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":52
- * if self.arr[bottom] > pivot:
- * self.arr[top] = self.arr[bottom]
- * break # <<<<<<<<<<<<<<
- * while not done:
- * top -= 1
- */
- goto __pyx_L6_break;
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
- __pyx_L6_break:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":53
- * self.arr[top] = self.arr[bottom]
- * break
- * while not done: # <<<<<<<<<<<<<<
- * top -= 1
- * if top == bottom:
- */
- while (1) {
- __pyx_t_3 = ((!(__pyx_v_done != 0)) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":54
- * break
- * while not done:
- * top -= 1 # <<<<<<<<<<<<<<
- * if top == bottom:
- * done = 1
- */
- __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_v_top, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_v_top);
- __pyx_v_top = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":55
- * while not done:
- * top -= 1
- * if top == bottom: # <<<<<<<<<<<<<<
- * done = 1
- * break
- */
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_top, __pyx_v_bottom, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":56
- * top -= 1
- * if top == bottom:
- * done = 1 # <<<<<<<<<<<<<<
- * break
- * if self.arr[top] < pivot:
- */
- __pyx_v_done = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":57
- * if top == bottom:
- * done = 1
- * break # <<<<<<<<<<<<<<
- * if self.arr[top] < pivot:
- * self.arr[bottom] = self.arr[top]
- */
- goto __pyx_L10_break;
- goto __pyx_L11;
- }
- __pyx_L11:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":58
- * done = 1
- * break
- * if self.arr[top] < pivot: # <<<<<<<<<<<<<<
- * self.arr[bottom] = self.arr[top]
- * break
- */
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_top); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = PyInt_FromLong((__pyx_v_self->arr[__pyx_t_1])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_v_pivot, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":59
- * break
- * if self.arr[top] < pivot:
- * self.arr[bottom] = self.arr[top] # <<<<<<<<<<<<<<
- * break
- * self.arr[top] = pivot
- */
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_top); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_bottom); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- (__pyx_v_self->arr[__pyx_t_5]) = (__pyx_v_self->arr[__pyx_t_1]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":60
- * if self.arr[top] < pivot:
- * self.arr[bottom] = self.arr[top]
- * break # <<<<<<<<<<<<<<
- * self.arr[top] = pivot
- * return top
- */
- goto __pyx_L10_break;
- goto __pyx_L12;
- }
- __pyx_L12:;
- }
- __pyx_L10_break:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":61
- * self.arr[bottom] = self.arr[top]
- * break
- * self.arr[top] = pivot # <<<<<<<<<<<<<<
- * return top
- *
- */
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_pivot); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_top); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- (__pyx_v_self->arr[__pyx_t_1]) = __pyx_t_6;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":62
- * break
- * self.arr[top] = pivot
- * return top # <<<<<<<<<<<<<<
- *
- * def _doquicksort(self,start,end):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_top);
- __pyx_r = __pyx_v_top;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.IntList.partition", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_pivot);
- __Pyx_XDECREF(__pyx_v_bottom);
- __Pyx_XDECREF(__pyx_v_top);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_9_doquicksort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_9_doquicksort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_start = 0;
- PyObject *__pyx_v_end = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_doquicksort (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__end,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__end)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("_doquicksort", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_doquicksort") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_start = values[0];
- __pyx_v_end = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_doquicksort", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.IntList._doquicksort", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7IntList_8_doquicksort(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), __pyx_v_start, __pyx_v_end);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":64
- * return top
- *
- * def _doquicksort(self,start,end): # <<<<<<<<<<<<<<
- * if start < end:
- * split = self.partition(start,end)
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_8_doquicksort(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_end) {
- PyObject *__pyx_v_split = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_doquicksort", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":65
- *
- * def _doquicksort(self,start,end):
- * if start < end: # <<<<<<<<<<<<<<
- * split = self.partition(start,end)
- * self._doquicksort(start,split-1)
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_start, __pyx_v_end, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":66
- * def _doquicksort(self,start,end):
- * if start < end:
- * split = self.partition(start,end) # <<<<<<<<<<<<<<
- * self._doquicksort(start,split-1)
- * self._doquicksort(split+1,end)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__partition); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_start);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_start);
- __Pyx_GIVEREF(__pyx_v_start);
- __Pyx_INCREF(__pyx_v_end);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_end);
- __Pyx_GIVEREF(__pyx_v_end);
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_split = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":67
- * if start < end:
- * split = self.partition(start,end)
- * self._doquicksort(start,split-1) # <<<<<<<<<<<<<<
- * self._doquicksort(split+1,end)
- * else:
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_split, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_start);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_start);
- __Pyx_GIVEREF(__pyx_v_start);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":68
- * split = self.partition(start,end)
- * self._doquicksort(start,split-1)
- * self._doquicksort(split+1,end) # <<<<<<<<<<<<<<
- * else:
- * return
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyNumber_Add(__pyx_v_split, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_end);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_end);
- __Pyx_GIVEREF(__pyx_v_end);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":70
- * self._doquicksort(split+1,end)
- * else:
- * return # <<<<<<<<<<<<<<
- *
- * def sort(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.IntList._doquicksort", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_split);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_11sort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_11sort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sort (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_10sort(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":72
- * return
- *
- * def sort(self): # <<<<<<<<<<<<<<
- * self._doquicksort(0,self.len-1)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_10sort(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("sort", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":73
- *
- * def sort(self):
- * self._doquicksort(0,self.len-1) # <<<<<<<<<<<<<<
- *
- * def reset(self):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->len - 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.IntList.sort", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_13reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_13reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("reset (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_12reset(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":75
- * self._doquicksort(0,self.len-1)
- *
- * def reset(self): # <<<<<<<<<<<<<<
- * self.len = 0
- *
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_12reset(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("reset", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":76
- *
- * def reset(self):
- * self.len = 0 # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- __pyx_v_self->len = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_7IntList_15__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_7IntList_15__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_7IntList_14__dealloc__(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":78
- * self.len = 0
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * free(self.arr)
- *
- */
-
-static void __pyx_pf_3_sa_7IntList_14__dealloc__(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":79
- *
- * def __dealloc__(self):
- * free(self.arr) # <<<<<<<<<<<<<<
- *
- * def __iter__(self):
- */
- free(__pyx_v_self->arr);
-
- __Pyx_RefNannyFinishContext();
-}
-static PyObject *__pyx_gb_3_sa_7IntList_18generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_17__iter__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_17__iter__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_16__iter__(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":81
- * free(self.arr)
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef int i
- * for i in range(self.len):
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_16__iter__(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__iter__", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)__pyx_tp_new_3_sa___pyx_scope_struct____iter__(__pyx_ptype_3_sa___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_7IntList_18generator, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.IntList.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_7IntList_18generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":83
- * def __iter__(self):
- * cdef int i
- * for i in range(self.len): # <<<<<<<<<<<<<<
- * yield self.arr[i]
- *
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->len;
- for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
- __pyx_cur_scope->__pyx_v_i = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":84
- * cdef int i
- * for i in range(self.len):
- * yield self.arr[i] # <<<<<<<<<<<<<<
- *
- * def __getitem__(self, index):
- */
- __pyx_t_3 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_self->arr[__pyx_cur_scope->__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_20__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_20__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_19__getitem__(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((PyObject *)__pyx_v_index));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":86
- * yield self.arr[i]
- *
- * def __getitem__(self, index): # <<<<<<<<<<<<<<
- * cdef int i, j, k
- * if isinstance(index, int):
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_index) {
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_k;
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
- int __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__getitem__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":88
- * def __getitem__(self, index):
- * cdef int i, j, k
- * if isinstance(index, int): # <<<<<<<<<<<<<<
- * j = index
- * if j < 0:
- */
- __pyx_t_1 = PyInt_Check(__pyx_v_index);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":89
- * cdef int i, j, k
- * if isinstance(index, int):
- * j = index # <<<<<<<<<<<<<<
- * if j < 0:
- * j = self.len + j
- */
- __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_v_index); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_j = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":90
- * if isinstance(index, int):
- * j = index
- * if j < 0: # <<<<<<<<<<<<<<
- * j = self.len + j
- * if j<0 or j>=self.len:
- */
- __pyx_t_2 = ((__pyx_v_j < 0) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":91
- * j = index
- * if j < 0:
- * j = self.len + j # <<<<<<<<<<<<<<
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))
- */
- __pyx_v_j = (__pyx_v_self->len + __pyx_v_j);
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":92
- * if j < 0:
- * j = self.len + j
- * if j<0 or j>=self.len: # <<<<<<<<<<<<<<
- * raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))
- * return self.arr[j]
- */
- __pyx_t_2 = ((__pyx_v_j < 0) != 0);
- if (!__pyx_t_2) {
- __pyx_t_1 = ((__pyx_v_j >= __pyx_v_self->len) != 0);
- __pyx_t_4 = __pyx_t_1;
- } else {
- __pyx_t_4 = __pyx_t_2;
- }
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":93
- * j = self.len + j
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length IntList" % (index, self.len)) # <<<<<<<<<<<<<<
- * return self.arr[j]
- * elif isinstance(index, slice):
- */
- __pyx_t_5 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_index);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_index);
- __Pyx_GIVEREF(__pyx_v_index);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_5));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":94
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))
- * return self.arr[j] # <<<<<<<<<<<<<<
- * elif isinstance(index, slice):
- * i = index.start
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyInt_FromLong((__pyx_v_self->arr[__pyx_v_j])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":95
- * raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))
- * return self.arr[j]
- * elif isinstance(index, slice): # <<<<<<<<<<<<<<
- * i = index.start
- * j = index.stop
- */
- __pyx_t_4 = PySlice_Check(__pyx_v_index);
- __pyx_t_2 = (__pyx_t_4 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":96
- * return self.arr[j]
- * elif isinstance(index, slice):
- * i = index.start # <<<<<<<<<<<<<<
- * j = index.stop
- * if i < 0:
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__start); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_i = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":97
- * elif isinstance(index, slice):
- * i = index.start
- * j = index.stop # <<<<<<<<<<<<<<
- * if i < 0:
- * i = self.len + i
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__stop); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_j = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":98
- * i = index.start
- * j = index.stop
- * if i < 0: # <<<<<<<<<<<<<<
- * i = self.len + i
- * if j < 0:
- */
- __pyx_t_2 = ((__pyx_v_i < 0) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":99
- * j = index.stop
- * if i < 0:
- * i = self.len + i # <<<<<<<<<<<<<<
- * if j < 0:
- * j = self.len + j
- */
- __pyx_v_i = (__pyx_v_self->len + __pyx_v_i);
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":100
- * if i < 0:
- * i = self.len + i
- * if j < 0: # <<<<<<<<<<<<<<
- * j = self.len + j
- * if i < 0 or i >= self.len or j < 0 or j > self.len:
- */
- __pyx_t_2 = ((__pyx_v_j < 0) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":101
- * i = self.len + i
- * if j < 0:
- * j = self.len + j # <<<<<<<<<<<<<<
- * if i < 0 or i >= self.len or j < 0 or j > self.len:
- * raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))
- */
- __pyx_v_j = (__pyx_v_self->len + __pyx_v_j);
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":102
- * if j < 0:
- * j = self.len + j
- * if i < 0 or i >= self.len or j < 0 or j > self.len: # <<<<<<<<<<<<<<
- * raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))
- * result = ()
- */
- __pyx_t_2 = ((__pyx_v_i < 0) != 0);
- if (!__pyx_t_2) {
- __pyx_t_4 = ((__pyx_v_i >= __pyx_v_self->len) != 0);
- if (!__pyx_t_4) {
- __pyx_t_1 = ((__pyx_v_j < 0) != 0);
- if (!__pyx_t_1) {
- __pyx_t_7 = ((__pyx_v_j > __pyx_v_self->len) != 0);
- __pyx_t_8 = __pyx_t_7;
- } else {
- __pyx_t_8 = __pyx_t_1;
- }
- __pyx_t_1 = __pyx_t_8;
- } else {
- __pyx_t_1 = __pyx_t_4;
- }
- __pyx_t_4 = __pyx_t_1;
- } else {
- __pyx_t_4 = __pyx_t_2;
- }
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":103
- * j = self.len + j
- * if i < 0 or i >= self.len or j < 0 or j > self.len:
- * raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len)) # <<<<<<<<<<<<<<
- * result = ()
- * for k from i <= k < j:
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__start); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__stop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_9);
- __pyx_t_5 = 0;
- __pyx_t_6 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_9));
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_9));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_9));
- __pyx_t_9 = 0;
- __pyx_t_9 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_Raise(__pyx_t_9, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":104
- * if i < 0 or i >= self.len or j < 0 or j > self.len:
- * raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))
- * result = () # <<<<<<<<<<<<<<
- * for k from i <= k < j:
- * result = result + (self.arr[k],)
- */
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- __pyx_v_result = __pyx_empty_tuple;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":105
- * raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))
- * result = ()
- * for k from i <= k < j: # <<<<<<<<<<<<<<
- * result = result + (self.arr[k],)
- * return result
- */
- __pyx_t_3 = __pyx_v_j;
- for (__pyx_v_k = __pyx_v_i; __pyx_v_k < __pyx_t_3; __pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":106
- * result = ()
- * for k from i <= k < j:
- * result = result + (self.arr[k],) # <<<<<<<<<<<<<<
- * return result
- * else:
- */
- __pyx_t_9 = PyInt_FromLong((__pyx_v_self->arr[__pyx_v_k])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_9 = PyNumber_Add(((PyObject *)__pyx_v_result), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_9));
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_result));
- __pyx_v_result = ((PyObject*)__pyx_t_9);
- __pyx_t_9 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":107
- * for k from i <= k < j:
- * result = result + (self.arr[k],)
- * return result # <<<<<<<<<<<<<<
- * else:
- * raise TypeError("Illegal key type %s for IntList" % type(index))
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- __pyx_r = ((PyObject *)__pyx_v_result);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":109
- * return result
- * else:
- * raise TypeError("Illegal key type %s for IntList" % type(index)) # <<<<<<<<<<<<<<
- *
- * cdef void set(self, int i, int val):
- */
- __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)Py_TYPE(__pyx_v_index))); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_9));
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_9));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_9));
- __pyx_t_9 = 0;
- __pyx_t_9 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_Raise(__pyx_t_9, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_sa.IntList.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":111
- * raise TypeError("Illegal key type %s for IntList" % type(index))
- *
- * cdef void set(self, int i, int val): # <<<<<<<<<<<<<<
- * j = i
- * if i<0:
- */
-
-static void __pyx_f_3_sa_7IntList_set(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_i, int __pyx_v_val) {
- int __pyx_v_j;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("set", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":112
- *
- * cdef void set(self, int i, int val):
- * j = i # <<<<<<<<<<<<<<
- * if i<0:
- * j = self.len + i
- */
- __pyx_v_j = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":113
- * cdef void set(self, int i, int val):
- * j = i
- * if i<0: # <<<<<<<<<<<<<<
- * j = self.len + i
- * if j<0 or j>=self.len:
- */
- __pyx_t_1 = ((__pyx_v_i < 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":114
- * j = i
- * if i<0:
- * j = self.len + i # <<<<<<<<<<<<<<
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length IntList" % (i, self.len))
- */
- __pyx_v_j = (__pyx_v_self->len + __pyx_v_i);
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":115
- * if i<0:
- * j = self.len + i
- * if j<0 or j>=self.len: # <<<<<<<<<<<<<<
- * raise IndexError("Requested index %d of %d-length IntList" % (i, self.len))
- * self.arr[j] = val
- */
- __pyx_t_1 = ((__pyx_v_j < 0) != 0);
- if (!__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_j >= __pyx_v_self->len) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":116
- * j = self.len + i
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length IntList" % (i, self.len)) # <<<<<<<<<<<<<<
- * self.arr[j] = val
- *
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_4 = 0;
- __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_5));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":117
- * if j<0 or j>=self.len:
- * raise IndexError("Requested index %d of %d-length IntList" % (i, self.len))
- * self.arr[j] = val # <<<<<<<<<<<<<<
- *
- * def __setitem__(self, i, val):
- */
- (__pyx_v_self->arr[__pyx_v_j]) = __pyx_v_val;
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_WriteUnraisable("_sa.IntList.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_7IntList_22__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val); /*proto*/
-static int __pyx_pw_3_sa_7IntList_22__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_21__setitem__(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((PyObject *)__pyx_v_i), ((PyObject *)__pyx_v_val));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":119
- * self.arr[j] = val
- *
- * def __setitem__(self, i, val): # <<<<<<<<<<<<<<
- * self.set(i, val)
- *
- */
-
-static int __pyx_pf_3_sa_7IntList_21__setitem__(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__setitem__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":120
- *
- * def __setitem__(self, i, val):
- * self.set(i, val) # <<<<<<<<<<<<<<
- *
- * def __len__(self):
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_val); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->set(__pyx_v_self, __pyx_t_1, __pyx_t_2);
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.IntList.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_3_sa_7IntList_24__len__(PyObject *__pyx_v_self); /*proto*/
-static Py_ssize_t __pyx_pw_3_sa_7IntList_24__len__(PyObject *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_23__len__(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":122
- * self.set(i, val)
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return self.len
- *
- */
-
-static Py_ssize_t __pyx_pf_3_sa_7IntList_23__len__(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":123
- *
- * def __len__(self):
- * return self.len # <<<<<<<<<<<<<<
- *
- * def get_size(self):
- */
- __pyx_r = __pyx_v_self->len;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_26get_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_26get_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_size (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_25get_size(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":125
- * return self.len
- *
- * def get_size(self): # <<<<<<<<<<<<<<
- * return self.size
- *
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_25get_size(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_size", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":126
- *
- * def get_size(self):
- * return self.size # <<<<<<<<<<<<<<
- *
- * def append(self, int val):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.IntList.get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_28append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_28append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
- int __pyx_v_val;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("append (wrapper)", 0);
- assert(__pyx_arg_val); {
- __pyx_v_val = __Pyx_PyInt_AsInt(__pyx_arg_val); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.IntList.append", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7IntList_27append(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((int)__pyx_v_val));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":128
- * return self.size
- *
- * def append(self, int val): # <<<<<<<<<<<<<<
- * self._append(val)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_27append(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_val) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("append", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":129
- *
- * def append(self, int val):
- * self._append(val) # <<<<<<<<<<<<<<
- *
- * cdef void _append(self, int val):
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->_append(__pyx_v_self, __pyx_v_val);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":131
- * self._append(val)
- *
- * cdef void _append(self, int val): # <<<<<<<<<<<<<<
- * if self.len == self.size:
- * self.size = self.size + self.increment
- */
-
-static void __pyx_f_3_sa_7IntList__append(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_val) {
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("_append", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":132
- *
- * cdef void _append(self, int val):
- * if self.len == self.size: # <<<<<<<<<<<<<<
- * self.size = self.size + self.increment
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- */
- __pyx_t_1 = ((__pyx_v_self->len == __pyx_v_self->size) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":133
- * cdef void _append(self, int val):
- * if self.len == self.size:
- * self.size = self.size + self.increment # <<<<<<<<<<<<<<
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- * self.arr[self.len] = val
- */
- __pyx_v_self->size = (__pyx_v_self->size + __pyx_v_self->increment);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":134
- * if self.len == self.size:
- * self.size = self.size + self.increment
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int)) # <<<<<<<<<<<<<<
- * self.arr[self.len] = val
- * self.len = self.len + 1
- */
- __pyx_v_self->arr = ((int *)realloc(__pyx_v_self->arr, (__pyx_v_self->size * (sizeof(int)))));
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":135
- * self.size = self.size + self.increment
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- * self.arr[self.len] = val # <<<<<<<<<<<<<<
- * self.len = self.len + 1
- *
- */
- (__pyx_v_self->arr[__pyx_v_self->len]) = __pyx_v_val;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":136
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- * self.arr[self.len] = val
- * self.len = self.len + 1 # <<<<<<<<<<<<<<
- *
- * def extend(self, other):
- */
- __pyx_v_self->len = (__pyx_v_self->len + 1);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_30extend(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_30extend(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("extend (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7IntList_29extend(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((PyObject *)__pyx_v_other));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":138
- * self.len = self.len + 1
- *
- * def extend(self, other): # <<<<<<<<<<<<<<
- * self._extend(other)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_29extend(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_other) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("extend", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":139
- *
- * def extend(self, other):
- * self._extend(other) # <<<<<<<<<<<<<<
- *
- * cdef void _extend(self, IntList other):
- */
- if (!(likely(((__pyx_v_other) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->_extend(__pyx_v_self, ((struct __pyx_obj_3_sa_IntList *)__pyx_v_other));
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.IntList.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":141
- * self._extend(other)
- *
- * cdef void _extend(self, IntList other): # <<<<<<<<<<<<<<
- * self._extend_arr(other.arr, other.len)
- *
- */
-
-static void __pyx_f_3_sa_7IntList__extend(struct __pyx_obj_3_sa_IntList *__pyx_v_self, struct __pyx_obj_3_sa_IntList *__pyx_v_other) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_extend", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":142
- *
- * cdef void _extend(self, IntList other):
- * self._extend_arr(other.arr, other.len) # <<<<<<<<<<<<<<
- *
- * cdef void _extend_arr(self, int* other, int other_len):
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->_extend_arr(__pyx_v_self, __pyx_v_other->arr, __pyx_v_other->len);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":144
- * self._extend_arr(other.arr, other.len)
- *
- * cdef void _extend_arr(self, int* other, int other_len): # <<<<<<<<<<<<<<
- * if self.size < self.len + other_len:
- * self.size = self.len + other_len
- */
-
-static void __pyx_f_3_sa_7IntList__extend_arr(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int *__pyx_v_other, int __pyx_v_other_len) {
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("_extend_arr", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":145
- *
- * cdef void _extend_arr(self, int* other, int other_len):
- * if self.size < self.len + other_len: # <<<<<<<<<<<<<<
- * self.size = self.len + other_len
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- */
- __pyx_t_1 = ((__pyx_v_self->size < (__pyx_v_self->len + __pyx_v_other_len)) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":146
- * cdef void _extend_arr(self, int* other, int other_len):
- * if self.size < self.len + other_len:
- * self.size = self.len + other_len # <<<<<<<<<<<<<<
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- * memcpy(self.arr+self.len, other, other_len*sizeof(int))
- */
- __pyx_v_self->size = (__pyx_v_self->len + __pyx_v_other_len);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":147
- * if self.size < self.len + other_len:
- * self.size = self.len + other_len
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int)) # <<<<<<<<<<<<<<
- * memcpy(self.arr+self.len, other, other_len*sizeof(int))
- * self.len = self.len + other_len
- */
- __pyx_v_self->arr = ((int *)realloc(__pyx_v_self->arr, (__pyx_v_self->size * (sizeof(int)))));
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":148
- * self.size = self.len + other_len
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- * memcpy(self.arr+self.len, other, other_len*sizeof(int)) # <<<<<<<<<<<<<<
- * self.len = self.len + other_len
- *
- */
- memcpy((__pyx_v_self->arr + __pyx_v_self->len), __pyx_v_other, (__pyx_v_other_len * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":149
- * self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- * memcpy(self.arr+self.len, other, other_len*sizeof(int))
- * self.len = self.len + other_len # <<<<<<<<<<<<<<
- *
- * cdef void _clear(self):
- */
- __pyx_v_self->len = (__pyx_v_self->len + __pyx_v_other_len);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":151
- * self.len = self.len + other_len
- *
- * cdef void _clear(self): # <<<<<<<<<<<<<<
- * free(self.arr)
- * self.len = 0
- */
-
-static void __pyx_f_3_sa_7IntList__clear(struct __pyx_obj_3_sa_IntList *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_clear", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":152
- *
- * cdef void _clear(self):
- * free(self.arr) # <<<<<<<<<<<<<<
- * self.len = 0
- * self.size = 0
- */
- free(__pyx_v_self->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":153
- * cdef void _clear(self):
- * free(self.arr)
- * self.len = 0 # <<<<<<<<<<<<<<
- * self.size = 0
- * self.arr = <int*> malloc(0)
- */
- __pyx_v_self->len = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":154
- * free(self.arr)
- * self.len = 0
- * self.size = 0 # <<<<<<<<<<<<<<
- * self.arr = <int*> malloc(0)
- *
- */
- __pyx_v_self->size = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":155
- * self.len = 0
- * self.size = 0
- * self.arr = <int*> malloc(0) # <<<<<<<<<<<<<<
- *
- * cdef void write_handle(self, FILE* f):
- */
- __pyx_v_self->arr = ((int *)malloc(0));
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":157
- * self.arr = <int*> malloc(0)
- *
- * cdef void write_handle(self, FILE* f): # <<<<<<<<<<<<<<
- * fwrite(&(self.len), sizeof(int), 1, f)
- * fwrite(self.arr, sizeof(int), self.len, f)
- */
-
-static void __pyx_f_3_sa_7IntList_write_handle(struct __pyx_obj_3_sa_IntList *__pyx_v_self, FILE *__pyx_v_f) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":158
- *
- * cdef void write_handle(self, FILE* f):
- * fwrite(&(self.len), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(self.arr, sizeof(int), self.len, f)
- *
- */
- fwrite((&__pyx_v_self->len), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":159
- * cdef void write_handle(self, FILE* f):
- * fwrite(&(self.len), sizeof(int), 1, f)
- * fwrite(self.arr, sizeof(int), self.len, f) # <<<<<<<<<<<<<<
- *
- * def write(self, char* filename):
- */
- fwrite(__pyx_v_self->arr, (sizeof(int)), __pyx_v_self->len, __pyx_v_f);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_32write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_32write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.IntList.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7IntList_31write(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":161
- * fwrite(self.arr, sizeof(int), self.len, f)
- *
- * def write(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "w")
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_31write(struct __pyx_obj_3_sa_IntList *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":163
- * def write(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "w") # <<<<<<<<<<<<<<
- * self.write_handle(f)
- * fclose(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":164
- * cdef FILE* f
- * f = fopen(filename, "w")
- * self.write_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->write_handle(__pyx_v_self, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":165
- * f = fopen(filename, "w")
- * self.write_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * cdef void read_handle(self, FILE* f):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":167
- * fclose(f)
- *
- * cdef void read_handle(self, FILE* f): # <<<<<<<<<<<<<<
- * (self.arr)
- * fread(&(self.len), sizeof(int), 1, f)
- */
-
-static void __pyx_f_3_sa_7IntList_read_handle(struct __pyx_obj_3_sa_IntList *__pyx_v_self, FILE *__pyx_v_f) {
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("read_handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":168
- *
- * cdef void read_handle(self, FILE* f):
- * (self.arr) # <<<<<<<<<<<<<<
- * fread(&(self.len), sizeof(int), 1, f)
- * self.arr = <int*> malloc(self.len * sizeof(int))
- */
- __pyx_v_self->arr;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":169
- * cdef void read_handle(self, FILE* f):
- * (self.arr)
- * fread(&(self.len), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * self.arr = <int*> malloc(self.len * sizeof(int))
- * self.size = self.len
- */
- fread((&__pyx_v_self->len), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":170
- * (self.arr)
- * fread(&(self.len), sizeof(int), 1, f)
- * self.arr = <int*> malloc(self.len * sizeof(int)) # <<<<<<<<<<<<<<
- * self.size = self.len
- * fread(self.arr, sizeof(int), self.len, f)
- */
- __pyx_v_self->arr = ((int *)malloc((__pyx_v_self->len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":171
- * fread(&(self.len), sizeof(int), 1, f)
- * self.arr = <int*> malloc(self.len * sizeof(int))
- * self.size = self.len # <<<<<<<<<<<<<<
- * fread(self.arr, sizeof(int), self.len, f)
- *
- */
- __pyx_t_1 = __pyx_v_self->len;
- __pyx_v_self->size = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":172
- * self.arr = <int*> malloc(self.len * sizeof(int))
- * self.size = self.len
- * fread(self.arr, sizeof(int), self.len, f) # <<<<<<<<<<<<<<
- *
- * def read(self, char* filename):
- */
- fread(__pyx_v_self->arr, (sizeof(int)), __pyx_v_self->len, __pyx_v_f);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7IntList_34read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_7IntList_34read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.IntList.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7IntList_33read(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":174
- * fread(self.arr, sizeof(int), self.len, f)
- *
- * def read(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "r")
- */
-
-static PyObject *__pyx_pf_3_sa_7IntList_33read(struct __pyx_obj_3_sa_IntList *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":176
- * def read(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "r") # <<<<<<<<<<<<<<
- * self.read_handle(f)
- * fclose(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":177
- * cdef FILE* f
- * f = fopen(filename, "r")
- * self.read_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->read_handle(__pyx_v_self, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":178
- * f = fopen(filename, "r")
- * self.read_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9StringMap_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_9StringMap_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
- __pyx_r = __pyx_pf_3_sa_9StringMap___cinit__(((struct __pyx_obj_3_sa_StringMap *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":13
- * cdef int index(self, char *s)
- *
- * def __cinit__(self): # <<<<<<<<<<<<<<
- * self.vocab = stringmap_new()
- *
- */
-
-static int __pyx_pf_3_sa_9StringMap___cinit__(struct __pyx_obj_3_sa_StringMap *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":14
- *
- * def __cinit__(self):
- * self.vocab = stringmap_new() # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- __pyx_v_self->vocab = stringmap_new();
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_9StringMap_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_9StringMap_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_9StringMap_2__dealloc__(((struct __pyx_obj_3_sa_StringMap *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":16
- * self.vocab = stringmap_new()
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * stringmap_delete(self.vocab)
- *
- */
-
-static void __pyx_pf_3_sa_9StringMap_2__dealloc__(struct __pyx_obj_3_sa_StringMap *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":17
- *
- * def __dealloc__(self):
- * stringmap_delete(self.vocab) # <<<<<<<<<<<<<<
- *
- * cdef char *word(self, int i):
- */
- stringmap_delete(__pyx_v_self->vocab);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":19
- * stringmap_delete(self.vocab)
- *
- * cdef char *word(self, int i): # <<<<<<<<<<<<<<
- * return stringmap_word(self.vocab, i)
- *
- */
-
-static char *__pyx_f_3_sa_9StringMap_word(struct __pyx_obj_3_sa_StringMap *__pyx_v_self, int __pyx_v_i) {
- char *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("word", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":20
- *
- * cdef char *word(self, int i):
- * return stringmap_word(self.vocab, i) # <<<<<<<<<<<<<<
- *
- * cdef int index(self, char *s):
- */
- __pyx_r = stringmap_word(__pyx_v_self->vocab, __pyx_v_i);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":22
- * return stringmap_word(self.vocab, i)
- *
- * cdef int index(self, char *s): # <<<<<<<<<<<<<<
- * return stringmap_index(self.vocab, s)
- */
-
-static int __pyx_f_3_sa_9StringMap_index(struct __pyx_obj_3_sa_StringMap *__pyx_v_self, char *__pyx_v_s) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("index", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":23
- *
- * cdef int index(self, char *s):
- * return stringmap_index(self.vocab, s) # <<<<<<<<<<<<<<
- */
- __pyx_r = stringmap_index(__pyx_v_self->vocab, __pyx_v_s);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_from_binary = 0;
- PyObject *__pyx_v_from_text = 0;
- PyObject *__pyx_v_side = 0;
- int __pyx_v_use_sent_id;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,&__pyx_n_s__side,&__pyx_n_s__use_sent_id,0};
- PyObject* values[4] = {0,0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":17
- * cdef bint use_sent_id
- *
- * def __cinit__(self, from_binary=None, from_text=None, side=None, bint use_sent_id=False): # <<<<<<<<<<<<<<
- * self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}
- * self.id2word = ["END_OF_FILE", "END_OF_LINE"]
- */
- values[0] = ((PyObject *)Py_None);
- values[1] = ((PyObject *)Py_None);
- values[2] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_binary);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_text);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side);
- if (value) { values[2] = value; kw_args--; }
- }
- case 3:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__use_sent_id);
- if (value) { values[3] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_from_binary = values[0];
- __pyx_v_from_text = values[1];
- __pyx_v_side = values[2];
- if (values[3]) {
- __pyx_v_use_sent_id = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_use_sent_id == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_use_sent_id = ((int)0);
- }
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.DataArray.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9DataArray___cinit__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), __pyx_v_from_binary, __pyx_v_from_text, __pyx_v_side, __pyx_v_use_sent_id);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_from_text, PyObject *__pyx_v_side, int __pyx_v_use_sent_id) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- long __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":18
- *
- * def __cinit__(self, from_binary=None, from_text=None, side=None, bint use_sent_id=False):
- * self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1} # <<<<<<<<<<<<<<
- * self.id2word = ["END_OF_FILE", "END_OF_LINE"]
- * self.data = IntList(1000,1000)
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__END_OF_FILE), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__END_OF_LINE), __pyx_int_1) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->word2id);
- __Pyx_DECREF(__pyx_v_self->word2id);
- __pyx_v_self->word2id = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":19
- * def __cinit__(self, from_binary=None, from_text=None, side=None, bint use_sent_id=False):
- * self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}
- * self.id2word = ["END_OF_FILE", "END_OF_LINE"] # <<<<<<<<<<<<<<
- * self.data = IntList(1000,1000)
- * self.sent_id = IntList(1000,1000)
- */
- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_n_s__END_OF_FILE));
- PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__END_OF_FILE));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__END_OF_FILE));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__END_OF_LINE));
- PyList_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_s__END_OF_LINE));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__END_OF_LINE));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->id2word);
- __Pyx_DECREF(__pyx_v_self->id2word);
- __pyx_v_self->id2word = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":20
- * self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}
- * self.id2word = ["END_OF_FILE", "END_OF_LINE"]
- * self.data = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.sent_id = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000)
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->data);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->data));
- __pyx_v_self->data = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":21
- * self.id2word = ["END_OF_FILE", "END_OF_LINE"]
- * self.data = IntList(1000,1000)
- * self.sent_id = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.sent_index = IntList(1000,1000)
- * self.use_sent_id = use_sent_id
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->sent_id);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sent_id));
- __pyx_v_self->sent_id = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":22
- * self.data = IntList(1000,1000)
- * self.sent_id = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.use_sent_id = use_sent_id
- * if from_binary:
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->sent_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sent_index));
- __pyx_v_self->sent_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":23
- * self.sent_id = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000)
- * self.use_sent_id = use_sent_id # <<<<<<<<<<<<<<
- * if from_binary:
- * self.read_binary(from_binary)
- */
- __pyx_v_self->use_sent_id = __pyx_v_use_sent_id;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":24
- * self.sent_index = IntList(1000,1000)
- * self.use_sent_id = use_sent_id
- * if from_binary: # <<<<<<<<<<<<<<
- * self.read_binary(from_binary)
- * elif from_text:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":25
- * self.use_sent_id = use_sent_id
- * if from_binary:
- * self.read_binary(from_binary) # <<<<<<<<<<<<<<
- * elif from_text:
- * if side:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_from_binary);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_binary);
- __Pyx_GIVEREF(__pyx_v_from_binary);
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":26
- * if from_binary:
- * self.read_binary(from_binary)
- * elif from_text: # <<<<<<<<<<<<<<
- * if side:
- * self.read_bitext(from_text, (0 if side == 'source' else 1))
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":27
- * self.read_binary(from_binary)
- * elif from_text:
- * if side: # <<<<<<<<<<<<<<
- * self.read_bitext(from_text, (0 if side == 'source' else 1))
- * else:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_side); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":28
- * elif from_text:
- * if side:
- * self.read_bitext(from_text, (0 if side == 'source' else 1)) # <<<<<<<<<<<<<<
- * else:
- * self.read_text(from_text)
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_bitext); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_side, ((PyObject *)__pyx_n_s__source), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_2) {
- __pyx_t_5 = 0;
- } else {
- __pyx_t_5 = 1;
- }
- __pyx_t_3 = PyInt_FromLong(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_from_text);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_from_text);
- __Pyx_GIVEREF(__pyx_v_from_text);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":30
- * self.read_bitext(from_text, (0 if side == 'source' else 1))
- * else:
- * self.read_text(from_text) # <<<<<<<<<<<<<<
- *
- * def __len__(self):
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_from_text);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_from_text);
- __Pyx_GIVEREF(__pyx_v_from_text);
- __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __pyx_L4:;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.DataArray.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_3_sa_9DataArray_3__len__(PyObject *__pyx_v_self); /*proto*/
-static Py_ssize_t __pyx_pw_3_sa_9DataArray_3__len__(PyObject *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_2__len__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":32
- * self.read_text(from_text)
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return len(self.data)
- *
- */
-
-static Py_ssize_t __pyx_pf_3_sa_9DataArray_2__len__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__len__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":33
- *
- * def __len__(self):
- * return len(self.data) # <<<<<<<<<<<<<<
- *
- * def get_sentence_id(self, i):
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_self->data);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_2;
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.DataArray.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_5get_sentence_id(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_5get_sentence_id(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_sentence_id (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_4get_sentence_id(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":35
- * return len(self.data)
- *
- * def get_sentence_id(self, i): # <<<<<<<<<<<<<<
- * return self.sent_id.arr[i]
- *
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_4get_sentence_id(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_sentence_id", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":36
- *
- * def get_sentence_id(self, i):
- * return self.sent_id.arr[i] # <<<<<<<<<<<<<<
- *
- * def get_sentence(self, i):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->sent_id->arr[__pyx_t_1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.DataArray.get_sentence_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_7get_sentence(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_7get_sentence(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_sentence (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_6get_sentence(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":38
- * return self.sent_id.arr[i]
- *
- * def get_sentence(self, i): # <<<<<<<<<<<<<<
- * cdef int j, start, stop
- * sent = []
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_i) {
- int __pyx_v_start;
- int __pyx_v_stop;
- PyObject *__pyx_v_sent = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_sentence", 0);
- __Pyx_INCREF(__pyx_v_i);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":40
- * def get_sentence(self, i):
- * cdef int j, start, stop
- * sent = [] # <<<<<<<<<<<<<<
- * start = self.sent_index.arr[i]
- * stop = self.sent_index.arr[i+1]
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_sent = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":41
- * cdef int j, start, stop
- * sent = []
- * start = self.sent_index.arr[i] # <<<<<<<<<<<<<<
- * stop = self.sent_index.arr[i+1]
- * for i from start <= i < stop:
- */
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_start = (__pyx_v_self->sent_index->arr[__pyx_t_2]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":42
- * sent = []
- * start = self.sent_index.arr[i]
- * stop = self.sent_index.arr[i+1] # <<<<<<<<<<<<<<
- * for i from start <= i < stop:
- * sent.append(self.id2word[self.data.arr[i]])
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_stop = (__pyx_v_self->sent_index->arr[__pyx_t_2]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":43
- * start = self.sent_index.arr[i]
- * stop = self.sent_index.arr[i+1]
- * for i from start <= i < stop: # <<<<<<<<<<<<<<
- * sent.append(self.id2word[self.data.arr[i]])
- * return sent
- */
- __pyx_t_3 = __pyx_v_stop;
- for (__pyx_t_4 = __pyx_v_start; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
- __pyx_t_1 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":44
- * stop = self.sent_index.arr[i+1]
- * for i from start <= i < stop:
- * sent.append(self.id2word[self.data.arr[i]]) # <<<<<<<<<<<<<<
- * return sent
- *
- */
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->id2word, (__pyx_v_self->data->arr[__pyx_t_2]), sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_sent, __pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":43
- * start = self.sent_index.arr[i]
- * stop = self.sent_index.arr[i+1]
- * for i from start <= i < stop: # <<<<<<<<<<<<<<
- * sent.append(self.id2word[self.data.arr[i]])
- * return sent
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":45
- * for i from start <= i < stop:
- * sent.append(self.id2word[self.data.arr[i]])
- * return sent # <<<<<<<<<<<<<<
- *
- * def get_id(self, word):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_sent));
- __pyx_r = ((PyObject *)__pyx_v_sent);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.DataArray.get_sentence", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_sent);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_9get_id(PyObject *__pyx_v_self, PyObject *__pyx_v_word); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_9get_id(PyObject *__pyx_v_self, PyObject *__pyx_v_word) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_id (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_8get_id(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_word));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":47
- * return sent
- *
- * def get_id(self, word): # <<<<<<<<<<<<<<
- * if not word in self.word2id:
- * self.word2id[word] = len(self.id2word)
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_8get_id(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_word) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_id", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":48
- *
- * def get_id(self, word):
- * if not word in self.word2id: # <<<<<<<<<<<<<<
- * self.word2id[word] = len(self.id2word)
- * self.id2word.append(word)
- */
- __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_word, __pyx_v_self->word2id, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":49
- * def get_id(self, word):
- * if not word in self.word2id:
- * self.word2id[word] = len(self.id2word) # <<<<<<<<<<<<<<
- * self.id2word.append(word)
- * return self.word2id[word]
- */
- __pyx_t_3 = __pyx_v_self->id2word;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyObject_SetItem(__pyx_v_self->word2id, __pyx_v_word, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":50
- * if not word in self.word2id:
- * self.word2id[word] = len(self.id2word)
- * self.id2word.append(word) # <<<<<<<<<<<<<<
- * return self.word2id[word]
- *
- */
- __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->id2word, __pyx_v_word); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":51
- * self.word2id[word] = len(self.id2word)
- * self.id2word.append(word)
- * return self.word2id[word] # <<<<<<<<<<<<<<
- *
- * def __getitem__(self, loc):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyObject_GetItem(__pyx_v_self->word2id, __pyx_v_word); if (!__pyx_t_3) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.DataArray.get_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_loc); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_loc) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_10__getitem__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_loc));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":53
- * return self.word2id[word]
- *
- * def __getitem__(self, loc): # <<<<<<<<<<<<<<
- * return self.id2word[self.data.arr[loc]]
- *
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_10__getitem__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_loc) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__getitem__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":54
- *
- * def __getitem__(self, loc):
- * return self.id2word[self.data.arr[loc]] # <<<<<<<<<<<<<<
- *
- * def get_sentence_bounds(self, loc):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_loc); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->id2word, (__pyx_v_self->data->arr[__pyx_t_1]), sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.DataArray.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_13get_sentence_bounds(PyObject *__pyx_v_self, PyObject *__pyx_v_loc); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_13get_sentence_bounds(PyObject *__pyx_v_self, PyObject *__pyx_v_loc) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_sentence_bounds (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_12get_sentence_bounds(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_loc));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":56
- * return self.id2word[self.data.arr[loc]]
- *
- * def get_sentence_bounds(self, loc): # <<<<<<<<<<<<<<
- * cdef int sid = self.sent_id.arr[loc]
- * return (self.sent_index.arr[sid], self.sent_index.arr[sid+1])
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_12get_sentence_bounds(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_loc) {
- int __pyx_v_sid;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_sentence_bounds", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":57
- *
- * def get_sentence_bounds(self, loc):
- * cdef int sid = self.sent_id.arr[loc] # <<<<<<<<<<<<<<
- * return (self.sent_index.arr[sid], self.sent_index.arr[sid+1])
- *
- */
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_loc); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_sid = (__pyx_v_self->sent_id->arr[__pyx_t_1]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":58
- * def get_sentence_bounds(self, loc):
- * cdef int sid = self.sent_id.arr[loc]
- * return (self.sent_index.arr[sid], self.sent_index.arr[sid+1]) # <<<<<<<<<<<<<<
- *
- * def write_text(self, char* filename):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->sent_index->arr[__pyx_v_sid])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyInt_FromLong((__pyx_v_self->sent_index->arr[(__pyx_v_sid + 1)])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_2 = 0;
- __pyx_t_3 = 0;
- __pyx_r = ((PyObject *)__pyx_t_4);
- __pyx_t_4 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.DataArray.get_sentence_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_15write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_15write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.DataArray.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9DataArray_14write_text(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":60
- * return (self.sent_index.arr[sid], self.sent_index.arr[sid+1])
- *
- * def write_text(self, char* filename): # <<<<<<<<<<<<<<
- * with open(filename, "w") as f:
- * for w_id in self.data:
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_w_id = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- int __pyx_t_10;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- int __pyx_t_14;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":61
- *
- * def write_text(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * for w_id in self.data:
- * if w_id > 1:
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_f = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":62
- * def write_text(self, char* filename):
- * with open(filename, "w") as f:
- * for w_id in self.data: # <<<<<<<<<<<<<<
- * if w_id > 1:
- * f.write("%s " % self.get_word(w_id))
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->data)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->data))) {
- __pyx_t_4 = ((PyObject *)__pyx_v_self->data); __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_self->data)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_9(__pyx_t_4);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_w_id);
- __pyx_v_w_id = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":63
- * with open(filename, "w") as f:
- * for w_id in self.data:
- * if w_id > 1: # <<<<<<<<<<<<<<
- * f.write("%s " % self.get_word(w_id))
- * if w_id == 1:
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_w_id, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":64
- * for w_id in self.data:
- * if w_id > 1:
- * f.write("%s " % self.get_word(w_id)) # <<<<<<<<<<<<<<
- * if w_id == 1:
- * f.write("\n")
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_word); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_v_w_id);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_w_id);
- __Pyx_GIVEREF(__pyx_v_w_id);
- __pyx_t_12 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_14), __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_11));
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_t_11));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
- __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L18;
- }
- __pyx_L18:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":65
- * if w_id > 1:
- * f.write("%s " % self.get_word(w_id))
- * if w_id == 1: # <<<<<<<<<<<<<<
- * f.write("\n")
- *
- */
- __pyx_t_11 = PyObject_RichCompare(__pyx_v_w_id, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":66
- * f.write("%s " % self.get_word(w_id))
- * if w_id == 1:
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def read_text(self, char* filename):
- */
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- goto __pyx_L19;
- }
- __pyx_L19:;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":61
- *
- * def write_text(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * for w_id in self.data:
- * if w_id > 1:
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.DataArray.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_12, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_13 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (__pyx_t_10 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_14 = ((!(__pyx_t_10 != 0)) != 0);
- if (__pyx_t_14) {
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_ErrRestore(__pyx_t_4, __pyx_t_12, __pyx_t_11);
- __pyx_t_4 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0;
- {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L22;
- }
- __pyx_L22:;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_17, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L23;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L1_error;
- __pyx_L23:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_sa.DataArray.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_w_id);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_17read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_17read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.DataArray.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9DataArray_16read_text(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":68
- * f.write("\n")
- *
- * def read_text(self, char* filename): # <<<<<<<<<<<<<<
- * with gzip_or_text(filename) as fp:
- * self.read_text_data(fp)
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_fp = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":69
- *
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as fp: # <<<<<<<<<<<<<<
- * self.read_text_data(fp)
- *
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_fp = __pyx_t_1;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":70
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as fp:
- * self.read_text_data(fp) # <<<<<<<<<<<<<<
- *
- * def read_bitext(self, char* filename, int side):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_fp);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_fp);
- __Pyx_GIVEREF(__pyx_v_fp);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":69
- *
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as fp: # <<<<<<<<<<<<<<
- * self.read_text_data(fp)
- *
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.DataArray.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_10 = PyObject_Call(__pyx_t_4, __pyx_t_8, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
- __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L18;
- }
- __pyx_L18:;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_4) {
- __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_18, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L19;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L1_error;
- __pyx_L19:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_sa.DataArray.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_fp);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_19read_bitext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_19read_bitext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- char *__pyx_v_filename;
- int __pyx_v_side;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_bitext (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__side,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("read_bitext", 1, 2, 2, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_bitext") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_filename = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_side = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("read_bitext", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.DataArray.read_bitext", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9DataArray_18read_bitext(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), __pyx_v_filename, __pyx_v_side);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_9DataArray_11read_bitext_2generator6(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74
- * def read_bitext(self, char* filename, int side):
- * with gzip_or_text(filename) as fp:
- * data = (line.split(' ||| ')[side] for line in fp) # <<<<<<<<<<<<<<
- * self.read_text_data(data)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_11read_bitext_genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_2_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_9DataArray_11read_bitext_2generator6, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.DataArray.read_bitext.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_9DataArray_11read_bitext_2generator6(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fp)) { __Pyx_RaiseClosureNameError("fp"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fp) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fp)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_fp; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_line);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_line);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_line = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_20), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_side, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":72
- * self.read_text_data(fp)
- *
- * def read_bitext(self, char* filename, int side): # <<<<<<<<<<<<<<
- * with gzip_or_text(filename) as fp:
- * data = (line.split(' ||| ')[side] for line in fp)
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename, int __pyx_v_side) {
- struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *__pyx_cur_scope;
- PyObject *__pyx_v_data = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_bitext", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)__pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext(__pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_side = __pyx_v_side;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":73
- *
- * def read_bitext(self, char* filename, int side):
- * with gzip_or_text(filename) as fp: # <<<<<<<<<<<<<<
- * data = (line.split(' ||| ')[side] for line in fp)
- * self.read_text_data(data)
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_fp = __pyx_t_1;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74
- * def read_bitext(self, char* filename, int side):
- * with gzip_or_text(filename) as fp:
- * data = (line.split(' ||| ')[side] for line in fp) # <<<<<<<<<<<<<<
- * self.read_text_data(data)
- *
- */
- __pyx_t_1 = __pyx_pf_3_sa_9DataArray_11read_bitext_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_data = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":75
- * with gzip_or_text(filename) as fp:
- * data = (line.split(' ||| ')[side] for line in fp)
- * self.read_text_data(data) # <<<<<<<<<<<<<<
- *
- * def read_text_data(self, data):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
- __Pyx_GIVEREF(__pyx_v_data);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":73
- *
- * def read_bitext(self, char* filename, int side):
- * with gzip_or_text(filename) as fp: # <<<<<<<<<<<<<<
- * data = (line.split(' ||| ')[side] for line in fp)
- * self.read_text_data(data)
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.DataArray.read_bitext", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_10 = PyObject_Call(__pyx_t_4, __pyx_t_8, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1);
- __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L18;
- }
- __pyx_L18:;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_4) {
- __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_21, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L19;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L1_error;
- __pyx_L19:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_sa.DataArray.read_bitext", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_data);
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_21read_text_data(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_21read_text_data(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_text_data (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_20read_text_data(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_data));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":77
- * self.read_text_data(data)
- *
- * def read_text_data(self, data): # <<<<<<<<<<<<<<
- * cdef int word_count = 0
- * for line_num, line in enumerate(data):
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_data) {
- int __pyx_v_word_count;
- PyObject *__pyx_v_line_num = NULL;
- PyObject *__pyx_v_line = NULL;
- PyObject *__pyx_v_word = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- PyObject *(*__pyx_t_4)(PyObject *);
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- Py_ssize_t __pyx_t_7;
- PyObject *(*__pyx_t_8)(PyObject *);
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_text_data", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":78
- *
- * def read_text_data(self, data):
- * cdef int word_count = 0 # <<<<<<<<<<<<<<
- * for line_num, line in enumerate(data):
- * self.sent_index.append(word_count)
- */
- __pyx_v_word_count = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":79
- * def read_text_data(self, data):
- * cdef int word_count = 0
- * for line_num, line in enumerate(data): # <<<<<<<<<<<<<<
- * self.sent_index.append(word_count)
- * for word in line.split():
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_1 = __pyx_int_0;
- if (PyList_CheckExact(__pyx_v_data) || PyTuple_CheckExact(__pyx_v_data)) {
- __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_5 = __pyx_t_4(__pyx_t_2);
- if (unlikely(!__pyx_t_5)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_5);
- }
- __Pyx_XDECREF(__pyx_v_line);
- __pyx_v_line = __pyx_t_5;
- __pyx_t_5 = 0;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_line_num);
- __pyx_v_line_num = __pyx_t_1;
- __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_1 = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":80
- * cdef int word_count = 0
- * for line_num, line in enumerate(data):
- * self.sent_index.append(word_count) # <<<<<<<<<<<<<<
- * for word in line.split():
- * self.data.append(self.get_id(word))
- */
- __pyx_t_5 = PyInt_FromLong(__pyx_v_word_count); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":81
- * for line_num, line in enumerate(data):
- * self.sent_index.append(word_count)
- * for word in line.split(): # <<<<<<<<<<<<<<
- * self.data.append(self.get_id(word))
- * if self.use_sent_id:
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
- __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
- } else {
- __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- for (;;) {
- if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_6)) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_6)) {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_5 = __pyx_t_8(__pyx_t_6);
- if (unlikely(!__pyx_t_5)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_5);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":82
- * self.sent_index.append(word_count)
- * for word in line.split():
- * self.data.append(self.get_id(word)) # <<<<<<<<<<<<<<
- * if self.use_sent_id:
- * self.sent_id.append(line_num)
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_id); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_INCREF(__pyx_v_word);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_word);
- __Pyx_GIVEREF(__pyx_v_word);
- __pyx_t_10 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->data), __pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":83
- * for word in line.split():
- * self.data.append(self.get_id(word))
- * if self.use_sent_id: # <<<<<<<<<<<<<<
- * self.sent_id.append(line_num)
- * word_count = word_count + 1
- */
- __pyx_t_11 = (__pyx_v_self->use_sent_id != 0);
- if (__pyx_t_11) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":84
- * self.data.append(self.get_id(word))
- * if self.use_sent_id:
- * self.sent_id.append(line_num) # <<<<<<<<<<<<<<
- * word_count = word_count + 1
- * self.data.append(1)
- */
- __pyx_t_9 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_id), __pyx_v_line_num); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":85
- * if self.use_sent_id:
- * self.sent_id.append(line_num)
- * word_count = word_count + 1 # <<<<<<<<<<<<<<
- * self.data.append(1)
- * if self.use_sent_id:
- */
- __pyx_v_word_count = (__pyx_v_word_count + 1);
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":86
- * self.sent_id.append(line_num)
- * word_count = word_count + 1
- * self.data.append(1) # <<<<<<<<<<<<<<
- * if self.use_sent_id:
- * self.sent_id.append(line_num)
- */
- __pyx_t_6 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->data), __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":87
- * word_count = word_count + 1
- * self.data.append(1)
- * if self.use_sent_id: # <<<<<<<<<<<<<<
- * self.sent_id.append(line_num)
- * word_count = word_count + 1
- */
- __pyx_t_11 = (__pyx_v_self->use_sent_id != 0);
- if (__pyx_t_11) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":88
- * self.data.append(1)
- * if self.use_sent_id:
- * self.sent_id.append(line_num) # <<<<<<<<<<<<<<
- * word_count = word_count + 1
- * self.data.append(0)
- */
- __pyx_t_6 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_id), __pyx_v_line_num); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":89
- * if self.use_sent_id:
- * self.sent_id.append(line_num)
- * word_count = word_count + 1 # <<<<<<<<<<<<<<
- * self.data.append(0)
- * self.sent_index.append(word_count)
- */
- __pyx_v_word_count = (__pyx_v_word_count + 1);
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":90
- * self.sent_id.append(line_num)
- * word_count = word_count + 1
- * self.data.append(0) # <<<<<<<<<<<<<<
- * self.sent_index.append(word_count)
- *
- */
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->data), __pyx_int_0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":91
- * word_count = word_count + 1
- * self.data.append(0)
- * self.sent_index.append(word_count) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_word_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_sa.DataArray.read_text_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_line_num);
- __Pyx_XDECREF(__pyx_v_line);
- __Pyx_XDECREF(__pyx_v_word);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_23read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_23read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.DataArray.read_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9DataArray_22read_binary(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":94
- *
- *
- * def read_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "r")
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_22read_binary(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":96
- * def read_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "r") # <<<<<<<<<<<<<<
- * self.read_handle(f)
- * fclose(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":97
- * cdef FILE* f
- * f = fopen(filename, "r")
- * self.read_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->__pyx_vtab)->read_handle(__pyx_v_self, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":98
- * f = fopen(filename, "r")
- * self.read_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * cdef void read_handle(self, FILE* f):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":100
- * fclose(f)
- *
- * cdef void read_handle(self, FILE* f): # <<<<<<<<<<<<<<
- * cdef int num_words, word_len
- * cdef unsigned i
- */
-
-static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, FILE *__pyx_v_f) {
- int __pyx_v_num_words;
- int __pyx_v_word_len;
- CYTHON_UNUSED unsigned int __pyx_v_i;
- char *__pyx_v_word;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- unsigned int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":105
- * cdef char* word
- *
- * self.data.read_handle(f) # <<<<<<<<<<<<<<
- * self.sent_index.read_handle(f)
- * self.sent_id.read_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->data->__pyx_vtab)->read_handle(__pyx_v_self->data, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":106
- *
- * self.data.read_handle(f)
- * self.sent_index.read_handle(f) # <<<<<<<<<<<<<<
- * self.sent_id.read_handle(f)
- * fread(&(num_words), sizeof(int), 1, f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->read_handle(__pyx_v_self->sent_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":107
- * self.data.read_handle(f)
- * self.sent_index.read_handle(f)
- * self.sent_id.read_handle(f) # <<<<<<<<<<<<<<
- * fread(&(num_words), sizeof(int), 1, f)
- * for i in range(num_words):
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_id->__pyx_vtab)->read_handle(__pyx_v_self->sent_id, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":108
- * self.sent_index.read_handle(f)
- * self.sent_id.read_handle(f)
- * fread(&(num_words), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * for i in range(num_words):
- * fread(&(word_len), sizeof(int), 1, f)
- */
- fread((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":109
- * self.sent_id.read_handle(f)
- * fread(&(num_words), sizeof(int), 1, f)
- * for i in range(num_words): # <<<<<<<<<<<<<<
- * fread(&(word_len), sizeof(int), 1, f)
- * word = <char*> malloc (word_len * sizeof(char))
- */
- __pyx_t_1 = __pyx_v_num_words;
- for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
- __pyx_v_i = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":110
- * fread(&(num_words), sizeof(int), 1, f)
- * for i in range(num_words):
- * fread(&(word_len), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * word = <char*> malloc (word_len * sizeof(char))
- * fread(word, sizeof(char), word_len, f)
- */
- fread((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":111
- * for i in range(num_words):
- * fread(&(word_len), sizeof(int), 1, f)
- * word = <char*> malloc (word_len * sizeof(char)) # <<<<<<<<<<<<<<
- * fread(word, sizeof(char), word_len, f)
- * self.word2id[word] = len(self.id2word)
- */
- __pyx_v_word = ((char *)malloc((__pyx_v_word_len * (sizeof(char)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":112
- * fread(&(word_len), sizeof(int), 1, f)
- * word = <char*> malloc (word_len * sizeof(char))
- * fread(word, sizeof(char), word_len, f) # <<<<<<<<<<<<<<
- * self.word2id[word] = len(self.id2word)
- * self.id2word.append(word)
- */
- fread(__pyx_v_word, (sizeof(char)), __pyx_v_word_len, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":113
- * word = <char*> malloc (word_len * sizeof(char))
- * fread(word, sizeof(char), word_len, f)
- * self.word2id[word] = len(self.id2word) # <<<<<<<<<<<<<<
- * self.id2word.append(word)
- * free(word)
- */
- __pyx_t_3 = __pyx_v_self->id2word;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- if (PyObject_SetItem(__pyx_v_self->word2id, ((PyObject *)__pyx_t_5), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":114
- * fread(word, sizeof(char), word_len, f)
- * self.word2id[word] = len(self.id2word)
- * self.id2word.append(word) # <<<<<<<<<<<<<<
- * free(word)
- * if len(self.sent_id) == 0:
- */
- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->id2word, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":115
- * self.word2id[word] = len(self.id2word)
- * self.id2word.append(word)
- * free(word) # <<<<<<<<<<<<<<
- * if len(self.sent_id) == 0:
- * self.use_sent_id = False
- */
- free(__pyx_v_word);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":116
- * self.id2word.append(word)
- * free(word)
- * if len(self.sent_id) == 0: # <<<<<<<<<<<<<<
- * self.use_sent_id = False
- * else:
- */
- __pyx_t_5 = ((PyObject *)__pyx_v_self->sent_id);
- __Pyx_INCREF(__pyx_t_5);
- __pyx_t_4 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = ((__pyx_t_4 == 0) != 0);
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":117
- * free(word)
- * if len(self.sent_id) == 0:
- * self.use_sent_id = False # <<<<<<<<<<<<<<
- * else:
- * self.use_sent_id = True
- */
- __pyx_v_self->use_sent_id = 0;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":119
- * self.use_sent_id = False
- * else:
- * self.use_sent_id = True # <<<<<<<<<<<<<<
- *
- * cdef void write_handle(self, FILE* f):
- */
- __pyx_v_self->use_sent_id = 1;
- }
- __pyx_L5:;
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_WriteUnraisable("_sa.DataArray.read_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":121
- * self.use_sent_id = True
- *
- * cdef void write_handle(self, FILE* f): # <<<<<<<<<<<<<<
- * cdef int word_len
- * cdef int num_words
- */
-
-static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, FILE *__pyx_v_f) {
- int __pyx_v_word_len;
- int __pyx_v_num_words;
- PyObject *__pyx_v_word = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *(*__pyx_t_4)(PyObject *);
- Py_ssize_t __pyx_t_5;
- char *__pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":125
- * cdef int num_words
- *
- * self.data.write_handle(f) # <<<<<<<<<<<<<<
- * self.sent_index.write_handle(f)
- * self.sent_id.write_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->data->__pyx_vtab)->write_handle(__pyx_v_self->data, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":126
- *
- * self.data.write_handle(f)
- * self.sent_index.write_handle(f) # <<<<<<<<<<<<<<
- * self.sent_id.write_handle(f)
- * num_words = len(self.id2word) - 2
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->write_handle(__pyx_v_self->sent_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":127
- * self.data.write_handle(f)
- * self.sent_index.write_handle(f)
- * self.sent_id.write_handle(f) # <<<<<<<<<<<<<<
- * num_words = len(self.id2word) - 2
- * fwrite(&(num_words), sizeof(int), 1, f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_id->__pyx_vtab)->write_handle(__pyx_v_self->sent_id, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":128
- * self.sent_index.write_handle(f)
- * self.sent_id.write_handle(f)
- * num_words = len(self.id2word) - 2 # <<<<<<<<<<<<<<
- * fwrite(&(num_words), sizeof(int), 1, f)
- * for word in self.id2word[2:]:
- */
- __pyx_t_1 = __pyx_v_self->id2word;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_num_words = (__pyx_t_2 - 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":129
- * self.sent_id.write_handle(f)
- * num_words = len(self.id2word) - 2
- * fwrite(&(num_words), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * for word in self.id2word[2:]:
- * word_len = len(word) + 1
- */
- fwrite((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":130
- * num_words = len(self.id2word) - 2
- * fwrite(&(num_words), sizeof(int), 1, f)
- * for word in self.id2word[2:]: # <<<<<<<<<<<<<<
- * word_len = len(word) + 1
- * fwrite(&(word_len), sizeof(int), 1, f)
- */
- __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_self->id2word, 2, 0, NULL, NULL, &__pyx_k_slice_22, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {
- __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_4(__pyx_t_3);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":131
- * fwrite(&(num_words), sizeof(int), 1, f)
- * for word in self.id2word[2:]:
- * word_len = len(word) + 1 # <<<<<<<<<<<<<<
- * fwrite(&(word_len), sizeof(int), 1, f)
- * fwrite(<char *>word, sizeof(char), word_len, f)
- */
- __pyx_t_5 = PyObject_Length(__pyx_v_word); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_word_len = (__pyx_t_5 + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":132
- * for word in self.id2word[2:]:
- * word_len = len(word) + 1
- * fwrite(&(word_len), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(<char *>word, sizeof(char), word_len, f)
- *
- */
- fwrite((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":133
- * word_len = len(word) + 1
- * fwrite(&(word_len), sizeof(int), 1, f)
- * fwrite(<char *>word, sizeof(char), word_len, f) # <<<<<<<<<<<<<<
- *
- * def write_binary(self, char* filename):
- */
- __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_word); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- fwrite(((char *)__pyx_t_6), (sizeof(char)), __pyx_v_word_len, __pyx_v_f);
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_WriteUnraisable("_sa.DataArray.write_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_word);
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_25write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_25write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.DataArray.write_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9DataArray_24write_binary(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":135
- * fwrite(<char *>word, sizeof(char), word_len, f)
- *
- * def write_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "w")
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_24write_binary(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":137
- * def write_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "w") # <<<<<<<<<<<<<<
- * self.write_handle(f)
- * fclose(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":138
- * cdef FILE* f
- * f = fopen(filename, "w")
- * self.write_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->__pyx_vtab)->write_handle(__pyx_v_self, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":139
- * f = fopen(filename, "w")
- * self.write_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * def write_enhanced_handle(self, f):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_27write_enhanced_handle(PyObject *__pyx_v_self, PyObject *__pyx_v_f); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_27write_enhanced_handle(PyObject *__pyx_v_self, PyObject *__pyx_v_f) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_enhanced_handle (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_26write_enhanced_handle(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_f));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":141
- * fclose(f)
- *
- * def write_enhanced_handle(self, f): # <<<<<<<<<<<<<<
- * for i in self.data:
- * f.write("%d " %i)
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_f) {
- PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_v_word = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_enhanced_handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":142
- *
- * def write_enhanced_handle(self, f):
- * for i in self.data: # <<<<<<<<<<<<<<
- * f.write("%d " %i)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->data)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->data))) {
- __pyx_t_1 = ((PyObject *)__pyx_v_self->data); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_self->data)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":143
- * def write_enhanced_handle(self, f):
- * for i in self.data:
- * f.write("%d " %i) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for i in self.sent_index:
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_5));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":144
- * for i in self.data:
- * f.write("%d " %i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i in self.sent_index:
- * f.write("%d " %i)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":145
- * f.write("%d " %i)
- * f.write("\n")
- * for i in self.sent_index: # <<<<<<<<<<<<<<
- * f.write("%d " %i)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->sent_index)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->sent_index))) {
- __pyx_t_5 = ((PyObject *)__pyx_v_self->sent_index); __Pyx_INCREF(__pyx_t_5); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_self->sent_index)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = Py_TYPE(__pyx_t_5)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_5)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_5)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_5)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_3(__pyx_t_5);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":146
- * f.write("\n")
- * for i in self.sent_index:
- * f.write("%d " %i) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for i in self.sent_id:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_6));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":147
- * for i in self.sent_index:
- * f.write("%d " %i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i in self.sent_id:
- * f.write("%d " %i)
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_25), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":148
- * f.write("%d " %i)
- * f.write("\n")
- * for i in self.sent_id: # <<<<<<<<<<<<<<
- * f.write("%d " %i)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->sent_id)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->sent_id))) {
- __pyx_t_6 = ((PyObject *)__pyx_v_self->sent_id); __Pyx_INCREF(__pyx_t_6); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_6 = PyObject_GetIter(((PyObject *)__pyx_v_self->sent_id)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = Py_TYPE(__pyx_t_6)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_6)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_6)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_5 = __pyx_t_3(__pyx_t_6);
- if (unlikely(!__pyx_t_5)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_5);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":149
- * f.write("\n")
- * for i in self.sent_id:
- * f.write("%d " %i) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for word in self.id2word:
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_4));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":150
- * for i in self.sent_id:
- * f.write("%d " %i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for word in self.id2word:
- * f.write("%s %d " % (word, self.word2id[word]))
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_26), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":151
- * f.write("%d " %i)
- * f.write("\n")
- * for word in self.id2word: # <<<<<<<<<<<<<<
- * f.write("%s %d " % (word, self.word2id[word]))
- * f.write("\n")
- */
- if (PyList_CheckExact(__pyx_v_self->id2word) || PyTuple_CheckExact(__pyx_v_self->id2word)) {
- __pyx_t_4 = __pyx_v_self->id2word; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_self->id2word); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_6 = __pyx_t_3(__pyx_t_4);
- if (unlikely(!__pyx_t_6)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_6);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":152
- * f.write("\n")
- * for word in self.id2word:
- * f.write("%s %d " % (word, self.word2id[word])) # <<<<<<<<<<<<<<
- * f.write("\n")
- *
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyObject_GetItem(__pyx_v_self->word2id, __pyx_v_word); if (!__pyx_t_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_word);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_word);
- __Pyx_GIVEREF(__pyx_v_word);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_27), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":153
- * for word in self.id2word:
- * f.write("%s %d " % (word, self.word2id[word]))
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def write_enhanced(self, char* filename):
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_28), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_sa.DataArray.write_enhanced_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_word);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_29write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_29write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.DataArray.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9DataArray_28write_enhanced(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":155
- * f.write("\n")
- *
- * def write_enhanced(self, char* filename): # <<<<<<<<<<<<<<
- * with open(filename, "w") as f:
- * self.write_enhanced_handle(self, f)
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_enhanced", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":156
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * self.write_enhanced_handle(self, f)
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_f = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":157
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f:
- * self.write_enhanced_handle(self, f) # <<<<<<<<<<<<<<
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_29); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_self));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
- __Pyx_INCREF(__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":156
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * self.write_enhanced_handle(self, f)
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.DataArray.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_10 = PyObject_Call(__pyx_t_3, __pyx_t_8, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_4);
- __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L18;
- }
- __pyx_L18:;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_30, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L19;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L1_error;
- __pyx_L19:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_sa.DataArray.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_7word2id_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_7word2id_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7word2id___get__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":10
- *
- * cdef class DataArray:
- * cdef public word2id # <<<<<<<<<<<<<<
- * cdef public id2word
- * cdef public IntList data
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_7word2id___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->word2id);
- __pyx_r = __pyx_v_self->word2id;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_7word2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_7word2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7word2id_2__set__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_7word2id_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->word2id);
- __Pyx_DECREF(__pyx_v_self->word2id);
- __pyx_v_self->word2id = __pyx_v_value;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_7word2id_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_7word2id_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7word2id_4__del__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_7word2id_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->word2id);
- __Pyx_DECREF(__pyx_v_self->word2id);
- __pyx_v_self->word2id = Py_None;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_7id2word_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_7id2word_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7id2word___get__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":11
- * cdef class DataArray:
- * cdef public word2id
- * cdef public id2word # <<<<<<<<<<<<<<
- * cdef public IntList data
- * cdef public IntList sent_id
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_7id2word___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->id2word);
- __pyx_r = __pyx_v_self->id2word;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_7id2word_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_7id2word_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7id2word_2__set__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_7id2word_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->id2word);
- __Pyx_DECREF(__pyx_v_self->id2word);
- __pyx_v_self->id2word = __pyx_v_value;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_7id2word_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_7id2word_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7id2word_4__del__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_7id2word_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->id2word);
- __Pyx_DECREF(__pyx_v_self->id2word);
- __pyx_v_self->id2word = Py_None;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_4data_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_4data___get__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":12
- * cdef public word2id
- * cdef public id2word
- * cdef public IntList data # <<<<<<<<<<<<<<
- * cdef public IntList sent_id
- * cdef public IntList sent_index
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_4data___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->data));
- __pyx_r = ((PyObject *)__pyx_v_self->data);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_4data_2__set__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_4data_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->data);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->data));
- __pyx_v_self->data = ((struct __pyx_obj_3_sa_IntList *)__pyx_v_value);
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.DataArray.data.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_4data_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_4data_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_4data_4__del__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_4data_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->data);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->data));
- __pyx_v_self->data = ((struct __pyx_obj_3_sa_IntList *)Py_None);
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_7sent_id_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_7sent_id_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7sent_id___get__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":13
- * cdef public id2word
- * cdef public IntList data
- * cdef public IntList sent_id # <<<<<<<<<<<<<<
- * cdef public IntList sent_index
- * cdef bint use_sent_id
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_7sent_id___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->sent_id));
- __pyx_r = ((PyObject *)__pyx_v_self->sent_id);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_7sent_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_7sent_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7sent_id_2__set__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_7sent_id_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->sent_id);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sent_id));
- __pyx_v_self->sent_id = ((struct __pyx_obj_3_sa_IntList *)__pyx_v_value);
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.DataArray.sent_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_7sent_id_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_7sent_id_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_7sent_id_4__del__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_7sent_id_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->sent_id);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sent_id));
- __pyx_v_self->sent_id = ((struct __pyx_obj_3_sa_IntList *)Py_None);
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9DataArray_10sent_index_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9DataArray_10sent_index_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_10sent_index___get__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":14
- * cdef public IntList data
- * cdef public IntList sent_id
- * cdef public IntList sent_index # <<<<<<<<<<<<<<
- * cdef bint use_sent_id
- *
- */
-
-static PyObject *__pyx_pf_3_sa_9DataArray_10sent_index___get__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->sent_index));
- __pyx_r = ((PyObject *)__pyx_v_self->sent_index);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_10sent_index_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_10sent_index_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_10sent_index_2__set__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_10sent_index_2__set__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->sent_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sent_index));
- __pyx_v_self->sent_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_v_value);
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.DataArray.sent_index.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9DataArray_10sent_index_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_9DataArray_10sent_index_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9DataArray_10sent_index_4__del__(((struct __pyx_obj_3_sa_DataArray *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9DataArray_10sent_index_4__del__(struct __pyx_obj_3_sa_DataArray *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->sent_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sent_index));
- __pyx_v_self->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None);
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_f_3_sa_9Alignment_link(CYTHON_UNUSED struct __pyx_obj_3_sa_Alignment *__pyx_v_self, int __pyx_v_i, int __pyx_v_j) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("link", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":16
- * cdef int link(self, int i, int j):
- * """Integerizes an alignment link pair"""
- * return i * ALIGNMENT_CODE + j # <<<<<<<<<<<<<<
- *
- * def unlink(self, link):
- */
- __pyx_r = ((__pyx_v_i * __pyx_v_3_sa_ALIGNMENT_CODE) + __pyx_v_j);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_1unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_link); /*proto*/
-static char __pyx_doc_3_sa_9Alignment_unlink[] = "De-integerizes an alignment link pair";
-static PyObject *__pyx_pw_3_sa_9Alignment_1unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_link) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("unlink (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9Alignment_unlink(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((PyObject *)__pyx_v_link));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":18
- * return i * ALIGNMENT_CODE + j
- *
- * def unlink(self, link): # <<<<<<<<<<<<<<
- * """De-integerizes an alignment link pair"""
- * return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE)
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_unlink(CYTHON_UNUSED struct __pyx_obj_3_sa_Alignment *__pyx_v_self, PyObject *__pyx_v_link) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("unlink", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":20
- * def unlink(self, link):
- * """De-integerizes an alignment link pair"""
- * return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE) # <<<<<<<<<<<<<<
- *
- * cdef _unlink(self, int link, int* f, int* e):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_link, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyNumber_Remainder(__pyx_v_link, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_2 = 0;
- __pyx_t_3 = 0;
- __pyx_r = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.Alignment.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":22
- * return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE)
- *
- * cdef _unlink(self, int link, int* f, int* e): # <<<<<<<<<<<<<<
- * f[0] = link / ALIGNMENT_CODE
- * e[0] = link % ALIGNMENT_CODE
- */
-
-static PyObject *__pyx_f_3_sa_9Alignment__unlink(CYTHON_UNUSED struct __pyx_obj_3_sa_Alignment *__pyx_v_self, int __pyx_v_link, int *__pyx_v_f, int *__pyx_v_e) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_unlink", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":23
- *
- * cdef _unlink(self, int link, int* f, int* e):
- * f[0] = link / ALIGNMENT_CODE # <<<<<<<<<<<<<<
- * e[0] = link % ALIGNMENT_CODE
- *
- */
- if (unlikely(__pyx_v_3_sa_ALIGNMENT_CODE == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_3_sa_ALIGNMENT_CODE == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_link))) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_OverflowError, "value too large to perform division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- (__pyx_v_f[0]) = __Pyx_div_int(__pyx_v_link, __pyx_v_3_sa_ALIGNMENT_CODE);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":24
- * cdef _unlink(self, int link, int* f, int* e):
- * f[0] = link / ALIGNMENT_CODE
- * e[0] = link % ALIGNMENT_CODE # <<<<<<<<<<<<<<
- *
- * def get_sent_links(self, int sent_id):
- */
- if (unlikely(__pyx_v_3_sa_ALIGNMENT_CODE == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- (__pyx_v_e[0]) = __Pyx_mod_int(__pyx_v_link, __pyx_v_3_sa_ALIGNMENT_CODE);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.Alignment._unlink", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_3get_sent_links(PyObject *__pyx_v_self, PyObject *__pyx_arg_sent_id); /*proto*/
-static PyObject *__pyx_pw_3_sa_9Alignment_3get_sent_links(PyObject *__pyx_v_self, PyObject *__pyx_arg_sent_id) {
- int __pyx_v_sent_id;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_sent_links (wrapper)", 0);
- assert(__pyx_arg_sent_id); {
- __pyx_v_sent_id = __Pyx_PyInt_AsInt(__pyx_arg_sent_id); if (unlikely((__pyx_v_sent_id == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Alignment.get_sent_links", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9Alignment_2get_sent_links(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((int)__pyx_v_sent_id));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":26
- * e[0] = link % ALIGNMENT_CODE
- *
- * def get_sent_links(self, int sent_id): # <<<<<<<<<<<<<<
- * cdef IntList sent_links
- * cdef int* arr
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_2get_sent_links(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, int __pyx_v_sent_id) {
- struct __pyx_obj_3_sa_IntList *__pyx_v_sent_links = 0;
- int *__pyx_v_arr;
- int __pyx_v_arr_len;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_sent_links", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":30
- * cdef int* arr
- * cdef int arr_len
- * sent_links = IntList() # <<<<<<<<<<<<<<
- * arr = self._get_sent_links(sent_id, &arr_len)
- * sent_links._extend_arr(arr, arr_len*2)
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_sent_links = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":31
- * cdef int arr_len
- * sent_links = IntList()
- * arr = self._get_sent_links(sent_id, &arr_len) # <<<<<<<<<<<<<<
- * sent_links._extend_arr(arr, arr_len*2)
- * free(arr)
- */
- __pyx_v_arr = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->_get_sent_links(__pyx_v_self, __pyx_v_sent_id, (&__pyx_v_arr_len));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":32
- * sent_links = IntList()
- * arr = self._get_sent_links(sent_id, &arr_len)
- * sent_links._extend_arr(arr, arr_len*2) # <<<<<<<<<<<<<<
- * free(arr)
- * return sent_links
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_sent_links->__pyx_vtab)->_extend_arr(__pyx_v_sent_links, __pyx_v_arr, (__pyx_v_arr_len * 2));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":33
- * arr = self._get_sent_links(sent_id, &arr_len)
- * sent_links._extend_arr(arr, arr_len*2)
- * free(arr) # <<<<<<<<<<<<<<
- * return sent_links
- *
- */
- free(__pyx_v_arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":34
- * sent_links._extend_arr(arr, arr_len*2)
- * free(arr)
- * return sent_links # <<<<<<<<<<<<<<
- *
- * cdef int* _get_sent_links(self, int sent_id, int* num_links):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_sent_links));
- __pyx_r = ((PyObject *)__pyx_v_sent_links);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.Alignment.get_sent_links", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_sent_links);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":36
- * return sent_links
- *
- * cdef int* _get_sent_links(self, int sent_id, int* num_links): # <<<<<<<<<<<<<<
- * cdef int* sent_links
- * cdef int i, start, end
- */
-
-static int *__pyx_f_3_sa_9Alignment__get_sent_links(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, int __pyx_v_sent_id, int *__pyx_v_num_links) {
- int *__pyx_v_sent_links;
- int __pyx_v_i;
- int __pyx_v_start;
- int __pyx_v_end;
- int *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_get_sent_links", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":39
- * cdef int* sent_links
- * cdef int i, start, end
- * start = self.sent_index.arr[sent_id] # <<<<<<<<<<<<<<
- * end = self.sent_index.arr[sent_id+1]
- * num_links[0] = end - start
- */
- __pyx_v_start = (__pyx_v_self->sent_index->arr[__pyx_v_sent_id]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":40
- * cdef int i, start, end
- * start = self.sent_index.arr[sent_id]
- * end = self.sent_index.arr[sent_id+1] # <<<<<<<<<<<<<<
- * num_links[0] = end - start
- * sent_links = <int*> malloc(2*num_links[0]*sizeof(int))
- */
- __pyx_v_end = (__pyx_v_self->sent_index->arr[(__pyx_v_sent_id + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":41
- * start = self.sent_index.arr[sent_id]
- * end = self.sent_index.arr[sent_id+1]
- * num_links[0] = end - start # <<<<<<<<<<<<<<
- * sent_links = <int*> malloc(2*num_links[0]*sizeof(int))
- * for i from 0 <= i < num_links[0]:
- */
- (__pyx_v_num_links[0]) = (__pyx_v_end - __pyx_v_start);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":42
- * end = self.sent_index.arr[sent_id+1]
- * num_links[0] = end - start
- * sent_links = <int*> malloc(2*num_links[0]*sizeof(int)) # <<<<<<<<<<<<<<
- * for i from 0 <= i < num_links[0]:
- * self._unlink(self.links.arr[start + i], sent_links + (2*i), sent_links + (2*i) + 1)
- */
- __pyx_v_sent_links = ((int *)malloc(((2 * (__pyx_v_num_links[0])) * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":43
- * num_links[0] = end - start
- * sent_links = <int*> malloc(2*num_links[0]*sizeof(int))
- * for i from 0 <= i < num_links[0]: # <<<<<<<<<<<<<<
- * self._unlink(self.links.arr[start + i], sent_links + (2*i), sent_links + (2*i) + 1)
- * return sent_links
- */
- __pyx_t_1 = (__pyx_v_num_links[0]);
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":44
- * sent_links = <int*> malloc(2*num_links[0]*sizeof(int))
- * for i from 0 <= i < num_links[0]:
- * self._unlink(self.links.arr[start + i], sent_links + (2*i), sent_links + (2*i) + 1) # <<<<<<<<<<<<<<
- * return sent_links
- *
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->_unlink(__pyx_v_self, (__pyx_v_self->links->arr[(__pyx_v_start + __pyx_v_i)]), (__pyx_v_sent_links + (2 * __pyx_v_i)), ((__pyx_v_sent_links + (2 * __pyx_v_i)) + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":45
- * for i from 0 <= i < num_links[0]:
- * self._unlink(self.links.arr[start + i], sent_links + (2*i), sent_links + (2*i) + 1)
- * return sent_links # <<<<<<<<<<<<<<
- *
- * def __cinit__(self, from_binary=None, from_text=None):
- */
- __pyx_r = __pyx_v_sent_links;
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_WriteUnraisable("_sa.Alignment._get_sent_links", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9Alignment_5__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_9Alignment_5__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_from_binary = 0;
- PyObject *__pyx_v_from_text = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,0};
- PyObject* values[2] = {0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":47
- * return sent_links
- *
- * def __cinit__(self, from_binary=None, from_text=None): # <<<<<<<<<<<<<<
- * self.links = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000)
- */
- values[0] = ((PyObject *)Py_None);
- values[1] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_binary);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_text);
- if (value) { values[1] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_from_binary = values[0];
- __pyx_v_from_text = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Alignment.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9Alignment_4__cinit__(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), __pyx_v_from_binary, __pyx_v_from_text);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9Alignment_4__cinit__(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_from_text) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":48
- *
- * def __cinit__(self, from_binary=None, from_text=None):
- * self.links = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.sent_index = IntList(1000,1000)
- * if from_binary:
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_31), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->links);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->links));
- __pyx_v_self->links = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":49
- * def __cinit__(self, from_binary=None, from_text=None):
- * self.links = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000) # <<<<<<<<<<<<<<
- * if from_binary:
- * self.read_binary(from_binary)
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_32), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->sent_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sent_index));
- __pyx_v_self->sent_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":50
- * self.links = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000)
- * if from_binary: # <<<<<<<<<<<<<<
- * self.read_binary(from_binary)
- * elif from_text:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":51
- * self.sent_index = IntList(1000,1000)
- * if from_binary:
- * self.read_binary(from_binary) # <<<<<<<<<<<<<<
- * elif from_text:
- * self.read_text(from_text)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_from_binary);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_binary);
- __Pyx_GIVEREF(__pyx_v_from_binary);
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":52
- * if from_binary:
- * self.read_binary(from_binary)
- * elif from_text: # <<<<<<<<<<<<<<
- * self.read_text(from_text)
- *
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":53
- * self.read_binary(from_binary)
- * elif from_text:
- * self.read_text(from_text) # <<<<<<<<<<<<<<
- *
- * def read_text(self, char* filename):
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_from_text);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_text);
- __Pyx_GIVEREF(__pyx_v_from_text);
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.Alignment.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_7read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9Alignment_7read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Alignment.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9Alignment_6read_text(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":55
- * self.read_text(from_text)
- *
- * def read_text(self, char* filename): # <<<<<<<<<<<<<<
- * with gzip_or_text(filename) as f:
- * for line in f:
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_line = NULL;
- PyObject *__pyx_v_pairs = NULL;
- PyObject *__pyx_v_pair = NULL;
- PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_v_j = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- Py_ssize_t __pyx_t_10;
- PyObject *(*__pyx_t_11)(PyObject *);
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- PyObject *__pyx_t_14 = NULL;
- PyObject *(*__pyx_t_15)(PyObject *);
- int __pyx_t_16;
- int __pyx_t_17;
- int __pyx_t_18;
- PyObject *__pyx_t_19 = NULL;
- int __pyx_t_20;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":56
- *
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as f: # <<<<<<<<<<<<<<
- * for line in f:
- * self.sent_index.append(len(self.links))
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_f = __pyx_t_1;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":57
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as f:
- * for line in f: # <<<<<<<<<<<<<<
- * self.sent_index.append(len(self.links))
- * pairs = line.split()
- */
- if (PyList_CheckExact(__pyx_v_f) || PyTuple_CheckExact(__pyx_v_f)) {
- __pyx_t_1 = __pyx_v_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_9(__pyx_t_1);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_line);
- __pyx_v_line = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":58
- * with gzip_or_text(filename) as f:
- * for line in f:
- * self.sent_index.append(len(self.links)) # <<<<<<<<<<<<<<
- * pairs = line.split()
- * for pair in pairs:
- */
- __pyx_t_2 = ((PyObject *)__pyx_v_self->links);
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_10 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":59
- * for line in f:
- * self.sent_index.append(len(self.links))
- * pairs = line.split() # <<<<<<<<<<<<<<
- * for pair in pairs:
- * (i, j) = map(int, pair.split('-'))
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_v_pairs);
- __pyx_v_pairs = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":60
- * self.sent_index.append(len(self.links))
- * pairs = line.split()
- * for pair in pairs: # <<<<<<<<<<<<<<
- * (i, j) = map(int, pair.split('-'))
- * self.links.append(self.link(i, j))
- */
- if (PyList_CheckExact(__pyx_v_pairs) || PyTuple_CheckExact(__pyx_v_pairs)) {
- __pyx_t_2 = __pyx_v_pairs; __Pyx_INCREF(__pyx_t_2); __pyx_t_10 = 0;
- __pyx_t_11 = NULL;
- } else {
- __pyx_t_10 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_pairs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_3 = __pyx_t_11(__pyx_t_2);
- if (unlikely(!__pyx_t_3)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_3);
- }
- __Pyx_XDECREF(__pyx_v_pair);
- __pyx_v_pair = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":61
- * pairs = line.split()
- * for pair in pairs:
- * (i, j) = map(int, pair.split('-')) # <<<<<<<<<<<<<<
- * self.links.append(self.link(i, j))
- * self.sent_index.append(len(self.links))
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pair, __pyx_n_s__split); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_12 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_34), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(__pyx_builtin_map, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {
- PyObject* sequence = __pyx_t_12;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_13 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_3 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_13 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_13);
- #else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_13);
- #endif
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_14 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_15 = Py_TYPE(__pyx_t_14)->tp_iternext;
- index = 0; __pyx_t_3 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_3)) goto __pyx_L20_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- index = 1; __pyx_t_13 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_13)) goto __pyx_L20_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_13);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_14), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_15 = NULL;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- goto __pyx_L21_unpacking_done;
- __pyx_L20_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_15 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_L21_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_3;
- __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_v_j);
- __pyx_v_j = __pyx_t_13;
- __pyx_t_13 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":62
- * for pair in pairs:
- * (i, j) = map(int, pair.split('-'))
- * self.links.append(self.link(i, j)) # <<<<<<<<<<<<<<
- * self.sent_index.append(len(self.links))
- *
- */
- __pyx_t_16 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_v_j); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_12 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->link(__pyx_v_self, __pyx_t_16, __pyx_t_17)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->links), __pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":63
- * (i, j) = map(int, pair.split('-'))
- * self.links.append(self.link(i, j))
- * self.sent_index.append(len(self.links)) # <<<<<<<<<<<<<<
- *
- * def read_binary(self, char* filename):
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_self->links);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":56
- *
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as f: # <<<<<<<<<<<<<<
- * for line in f:
- * self.sent_index.append(len(self.links))
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.Alignment.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_13);
- __Pyx_GIVEREF(__pyx_t_13);
- __pyx_t_19 = PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_19);
- __pyx_t_18 = __Pyx_PyObject_IsTrue(__pyx_t_19);
- __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
- if (__pyx_t_18 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_20 = ((!(__pyx_t_18 != 0)) != 0);
- if (__pyx_t_20) {
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_13);
- __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_13);
- __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_13 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L24;
- }
- __pyx_L24:;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_4) {
- __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_35, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_20 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L25;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L1_error;
- __pyx_L25:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13);
- __Pyx_XDECREF(__pyx_t_14);
- __Pyx_AddTraceback("_sa.Alignment.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_line);
- __Pyx_XDECREF(__pyx_v_pairs);
- __Pyx_XDECREF(__pyx_v_pair);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_j);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_9read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9Alignment_9read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Alignment.read_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9Alignment_8read_binary(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":65
- * self.sent_index.append(len(self.links))
- *
- * def read_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "r")
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_8read_binary(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":67
- * def read_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "r") # <<<<<<<<<<<<<<
- * self.links.read_handle(f)
- * self.sent_index.read_handle(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":68
- * cdef FILE* f
- * f = fopen(filename, "r")
- * self.links.read_handle(f) # <<<<<<<<<<<<<<
- * self.sent_index.read_handle(f)
- * fclose(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->links->__pyx_vtab)->read_handle(__pyx_v_self->links, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":69
- * f = fopen(filename, "r")
- * self.links.read_handle(f)
- * self.sent_index.read_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->read_handle(__pyx_v_self->sent_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":70
- * self.links.read_handle(f)
- * self.sent_index.read_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * def write_text(self, char* filename):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_11write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9Alignment_11write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Alignment.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9Alignment_10write_text(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":72
- * fclose(f)
- *
- * def write_text(self, char* filename): # <<<<<<<<<<<<<<
- * with open(filename, "w") as f:
- * sent_num = 0
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_sent_num = NULL;
- PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_v_link = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- PyObject *__pyx_t_14 = NULL;
- int __pyx_t_15;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":73
- *
- * def write_text(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * sent_num = 0
- * for i, link in enumerate(self.links):
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_f = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":74
- * def write_text(self, char* filename):
- * with open(filename, "w") as f:
- * sent_num = 0 # <<<<<<<<<<<<<<
- * for i, link in enumerate(self.links):
- * while i >= self.sent_index[sent_num]:
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_sent_num = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":75
- * with open(filename, "w") as f:
- * sent_num = 0
- * for i, link in enumerate(self.links): # <<<<<<<<<<<<<<
- * while i >= self.sent_index[sent_num]:
- * f.write("\n")
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_4 = __pyx_int_0;
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->links)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->links))) {
- __pyx_t_1 = ((PyObject *)__pyx_v_self->links); __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_self->links)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_9(__pyx_t_1);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_link);
- __pyx_v_link = __pyx_t_2;
- __pyx_t_2 = 0;
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4);
- __pyx_t_4 = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":76
- * sent_num = 0
- * for i, link in enumerate(self.links):
- * while i >= self.sent_index[sent_num]: # <<<<<<<<<<<<<<
- * f.write("\n")
- * sent_num = sent_num + 1
- */
- while (1) {
- __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->sent_index), __pyx_v_sent_num); if (!__pyx_t_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (!__pyx_t_11) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":77
- * for i, link in enumerate(self.links):
- * while i >= self.sent_index[sent_num]:
- * f.write("\n") # <<<<<<<<<<<<<<
- * sent_num = sent_num + 1
- * f.write("%d-%d " % self.unlink(link))
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_2 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_k_tuple_36), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":78
- * while i >= self.sent_index[sent_num]:
- * f.write("\n")
- * sent_num = sent_num + 1 # <<<<<<<<<<<<<<
- * f.write("%d-%d " % self.unlink(link))
- * f.write("\n")
- */
- __pyx_t_2 = PyNumber_Add(__pyx_v_sent_num, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_sent_num);
- __pyx_v_sent_num = __pyx_t_2;
- __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":79
- * f.write("\n")
- * sent_num = sent_num + 1
- * f.write("%d-%d " % self.unlink(link)) # <<<<<<<<<<<<<<
- * f.write("\n")
- *
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__unlink); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_v_link);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_link);
- __Pyx_GIVEREF(__pyx_v_link);
- __pyx_t_13 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_37), __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_13, 0, ((PyObject *)__pyx_t_12));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":80
- * sent_num = sent_num + 1
- * f.write("%d-%d " % self.unlink(link))
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def write_binary(self, char* filename):
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_38), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":73
- *
- * def write_text(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * sent_num = 0
- * for i, link in enumerate(self.links):
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.Alignment.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_12) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_14 = PyObject_Call(__pyx_t_3, __pyx_t_13, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_15 = ((!(__pyx_t_11 != 0)) != 0);
- if (__pyx_t_15) {
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_12);
- __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_12 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L22;
- }
- __pyx_L22:;
- __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_39, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_15 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L23;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L1_error;
- __pyx_L23:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13);
- __Pyx_AddTraceback("_sa.Alignment.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_sent_num);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_link);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9Alignment_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Alignment.write_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9Alignment_12write_binary(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":82
- * f.write("\n")
- *
- * def write_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "w")
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_12write_binary(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":84
- * def write_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "w") # <<<<<<<<<<<<<<
- * self.links.write_handle(f)
- * self.sent_index.write_handle(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":85
- * cdef FILE* f
- * f = fopen(filename, "w")
- * self.links.write_handle(f) # <<<<<<<<<<<<<<
- * self.sent_index.write_handle(f)
- * fclose(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->links->__pyx_vtab)->write_handle(__pyx_v_self->links, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":86
- * f = fopen(filename, "w")
- * self.links.write_handle(f)
- * self.sent_index.write_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->write_handle(__pyx_v_self->sent_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":87
- * self.links.write_handle(f)
- * self.sent_index.write_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * def write_enhanced(self, char* filename):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_9Alignment_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Alignment.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9Alignment_14write_enhanced(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":89
- * fclose(f)
- *
- * def write_enhanced(self, char* filename): # <<<<<<<<<<<<<<
- * with open(filename, "w") as f:
- * sent_num = 1
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_f = NULL;
- CYTHON_UNUSED long __pyx_v_sent_num;
- PyObject *__pyx_v_link = NULL;
- PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_enhanced", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":90
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * sent_num = 1
- * for link in self.links:
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_f = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":91
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f:
- * sent_num = 1 # <<<<<<<<<<<<<<
- * for link in self.links:
- * f.write("%d " % link)
- */
- __pyx_v_sent_num = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":92
- * with open(filename, "w") as f:
- * sent_num = 1
- * for link in self.links: # <<<<<<<<<<<<<<
- * f.write("%d " % link)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->links)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->links))) {
- __pyx_t_4 = ((PyObject *)__pyx_v_self->links); __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_self->links)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_9(__pyx_t_4);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_link);
- __pyx_v_link = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":93
- * sent_num = 1
- * for link in self.links:
- * f.write("%d " % link) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for i in self.sent_index:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_link); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":94
- * for link in self.links:
- * f.write("%d " % link)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i in self.sent_index:
- * f.write("%d " % i)
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_40), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":95
- * f.write("%d " % link)
- * f.write("\n")
- * for i in self.sent_index: # <<<<<<<<<<<<<<
- * f.write("%d " % i)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->sent_index)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->sent_index))) {
- __pyx_t_2 = ((PyObject *)__pyx_v_self->sent_index); __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self->sent_index)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_9(__pyx_t_2);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":96
- * f.write("\n")
- * for i in self.sent_index:
- * f.write("%d " % i) # <<<<<<<<<<<<<<
- * f.write("\n")
- *
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_10));
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_10));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_10));
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":97
- * for i in self.sent_index:
- * f.write("%d " % i)
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def alignment(self, i):
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_41), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":90
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * sent_num = 1
- * for link in self.links:
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.Alignment.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_13 = ((!(__pyx_t_11 != 0)) != 0);
- if (__pyx_t_13) {
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_ErrRestore(__pyx_t_10, __pyx_t_2, __pyx_t_1);
- __pyx_t_10 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L22;
- }
- __pyx_L22:;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_42, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_13 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L23;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L1_error;
- __pyx_L23:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_sa.Alignment.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_link);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9Alignment_17alignment(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static char __pyx_doc_3_sa_9Alignment_16alignment[] = "Return all (e,f) pairs for sentence i";
-static PyObject *__pyx_pw_3_sa_9Alignment_17alignment(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("alignment (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9Alignment_16alignment(((struct __pyx_obj_3_sa_Alignment *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":99
- * f.write("\n")
- *
- * def alignment(self, i): # <<<<<<<<<<<<<<
- * """Return all (e,f) pairs for sentence i"""
- * cdef int j, start, end
- */
-
-static PyObject *__pyx_pf_3_sa_9Alignment_16alignment(struct __pyx_obj_3_sa_Alignment *__pyx_v_self, PyObject *__pyx_v_i) {
- int __pyx_v_j;
- int __pyx_v_start;
- int __pyx_v_end;
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("alignment", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":102
- * """Return all (e,f) pairs for sentence i"""
- * cdef int j, start, end
- * result = [] # <<<<<<<<<<<<<<
- * start = self.sent_index.arr[i]
- * end = self.sent_index.arr[i+1]
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_result = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":103
- * cdef int j, start, end
- * result = []
- * start = self.sent_index.arr[i] # <<<<<<<<<<<<<<
- * end = self.sent_index.arr[i+1]
- * for j from start <= j < end:
- */
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_start = (__pyx_v_self->sent_index->arr[__pyx_t_2]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":104
- * result = []
- * start = self.sent_index.arr[i]
- * end = self.sent_index.arr[i+1] # <<<<<<<<<<<<<<
- * for j from start <= j < end:
- * result.append(self.unlink(self.links.arr[j]))
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_end = (__pyx_v_self->sent_index->arr[__pyx_t_2]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":105
- * start = self.sent_index.arr[i]
- * end = self.sent_index.arr[i+1]
- * for j from start <= j < end: # <<<<<<<<<<<<<<
- * result.append(self.unlink(self.links.arr[j]))
- * return result
- */
- __pyx_t_3 = __pyx_v_end;
- for (__pyx_v_j = __pyx_v_start; __pyx_v_j < __pyx_t_3; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":106
- * end = self.sent_index.arr[i+1]
- * for j from start <= j < end:
- * result.append(self.unlink(self.links.arr[j])) # <<<<<<<<<<<<<<
- * return result
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__unlink); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyInt_FromLong((__pyx_v_self->links->arr[__pyx_v_j])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":107
- * for j from start <= j < end:
- * result.append(self.unlink(self.links.arr[j]))
- * return result # <<<<<<<<<<<<<<
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- __pyx_r = ((PyObject *)__pyx_v_result);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.Alignment.alignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":15
- * int val
- *
- * cdef _node* new_node(int key): # <<<<<<<<<<<<<<
- * cdef _node* n
- * n = <_node*> malloc(sizeof(_node))
- */
-
-static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {
- struct __pyx_t_3_sa__node *__pyx_v_n;
- struct __pyx_t_3_sa__node *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("new_node", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":17
- * cdef _node* new_node(int key):
- * cdef _node* n
- * n = <_node*> malloc(sizeof(_node)) # <<<<<<<<<<<<<<
- * n.smaller = NULL
- * n.bigger = NULL
- */
- __pyx_v_n = ((struct __pyx_t_3_sa__node *)malloc((sizeof(struct __pyx_t_3_sa__node))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":18
- * cdef _node* n
- * n = <_node*> malloc(sizeof(_node))
- * n.smaller = NULL # <<<<<<<<<<<<<<
- * n.bigger = NULL
- * n.key = key
- */
- __pyx_v_n->smaller = NULL;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":19
- * n = <_node*> malloc(sizeof(_node))
- * n.smaller = NULL
- * n.bigger = NULL # <<<<<<<<<<<<<<
- * n.key = key
- * n.val = 0
- */
- __pyx_v_n->bigger = NULL;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":20
- * n.smaller = NULL
- * n.bigger = NULL
- * n.key = key # <<<<<<<<<<<<<<
- * n.val = 0
- * return n
- */
- __pyx_v_n->key = __pyx_v_key;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":21
- * n.bigger = NULL
- * n.key = key
- * n.val = 0 # <<<<<<<<<<<<<<
- * return n
- *
- */
- __pyx_v_n->val = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":22
- * n.key = key
- * n.val = 0
- * return n # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_n;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":25
- *
- *
- * cdef del_node(_node* n): # <<<<<<<<<<<<<<
- * if n.smaller != NULL:
- * del_node(n.smaller)
- */
-
-static PyObject *__pyx_f_3_sa_del_node(struct __pyx_t_3_sa__node *__pyx_v_n) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("del_node", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":26
- *
- * cdef del_node(_node* n):
- * if n.smaller != NULL: # <<<<<<<<<<<<<<
- * del_node(n.smaller)
- * if n.bigger != NULL:
- */
- __pyx_t_1 = ((__pyx_v_n->smaller != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":27
- * cdef del_node(_node* n):
- * if n.smaller != NULL:
- * del_node(n.smaller) # <<<<<<<<<<<<<<
- * if n.bigger != NULL:
- * del_node(n.bigger)
- */
- __pyx_t_2 = __pyx_f_3_sa_del_node(__pyx_v_n->smaller); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":28
- * if n.smaller != NULL:
- * del_node(n.smaller)
- * if n.bigger != NULL: # <<<<<<<<<<<<<<
- * del_node(n.bigger)
- * free(n)
- */
- __pyx_t_1 = ((__pyx_v_n->bigger != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":29
- * del_node(n.smaller)
- * if n.bigger != NULL:
- * del_node(n.bigger) # <<<<<<<<<<<<<<
- * free(n)
- *
- */
- __pyx_t_2 = __pyx_f_3_sa_del_node(__pyx_v_n->bigger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":30
- * if n.bigger != NULL:
- * del_node(n.bigger)
- * free(n) # <<<<<<<<<<<<<<
- *
- * cdef int* get_val(_node* n, int key):
- */
- free(__pyx_v_n);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.del_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":32
- * free(n)
- *
- * cdef int* get_val(_node* n, int key): # <<<<<<<<<<<<<<
- * if key == n.key:
- * return &n.val
- */
-
-static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx_v_key) {
- int *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("get_val", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":33
- *
- * cdef int* get_val(_node* n, int key):
- * if key == n.key: # <<<<<<<<<<<<<<
- * return &n.val
- * elif key < n.key:
- */
- __pyx_t_1 = ((__pyx_v_key == __pyx_v_n->key) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":34
- * cdef int* get_val(_node* n, int key):
- * if key == n.key:
- * return &n.val # <<<<<<<<<<<<<<
- * elif key < n.key:
- * if n.smaller == NULL:
- */
- __pyx_r = (&__pyx_v_n->val);
- goto __pyx_L0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":35
- * if key == n.key:
- * return &n.val
- * elif key < n.key: # <<<<<<<<<<<<<<
- * if n.smaller == NULL:
- * n.smaller = new_node(key)
- */
- __pyx_t_1 = ((__pyx_v_key < __pyx_v_n->key) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":36
- * return &n.val
- * elif key < n.key:
- * if n.smaller == NULL: # <<<<<<<<<<<<<<
- * n.smaller = new_node(key)
- * return &(n.smaller.val)
- */
- __pyx_t_1 = ((__pyx_v_n->smaller == NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":37
- * elif key < n.key:
- * if n.smaller == NULL:
- * n.smaller = new_node(key) # <<<<<<<<<<<<<<
- * return &(n.smaller.val)
- * return get_val(n.smaller, key)
- */
- __pyx_v_n->smaller = __pyx_f_3_sa_new_node(__pyx_v_key);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":38
- * if n.smaller == NULL:
- * n.smaller = new_node(key)
- * return &(n.smaller.val) # <<<<<<<<<<<<<<
- * return get_val(n.smaller, key)
- * else:
- */
- __pyx_r = (&__pyx_v_n->smaller->val);
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":39
- * n.smaller = new_node(key)
- * return &(n.smaller.val)
- * return get_val(n.smaller, key) # <<<<<<<<<<<<<<
- * else:
- * if n.bigger == NULL:
- */
- __pyx_r = __pyx_f_3_sa_get_val(__pyx_v_n->smaller, __pyx_v_key);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":41
- * return get_val(n.smaller, key)
- * else:
- * if n.bigger == NULL: # <<<<<<<<<<<<<<
- * n.bigger = new_node(key)
- * return &(n.bigger.val)
- */
- __pyx_t_1 = ((__pyx_v_n->bigger == NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":42
- * else:
- * if n.bigger == NULL:
- * n.bigger = new_node(key) # <<<<<<<<<<<<<<
- * return &(n.bigger.val)
- * return get_val(n.bigger, key)
- */
- __pyx_v_n->bigger = __pyx_f_3_sa_new_node(__pyx_v_key);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":43
- * if n.bigger == NULL:
- * n.bigger = new_node(key)
- * return &(n.bigger.val) # <<<<<<<<<<<<<<
- * return get_val(n.bigger, key)
- *
- */
- __pyx_r = (&__pyx_v_n->bigger->val);
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":44
- * n.bigger = new_node(key)
- * return &(n.bigger.val)
- * return get_val(n.bigger, key) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_f_3_sa_get_val(__pyx_v_n->bigger, __pyx_v_key);
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_5BiLex_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_5BiLex_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_from_text = 0;
- PyObject *__pyx_v_from_data = 0;
- PyObject *__pyx_v_from_binary = 0;
- PyObject *__pyx_v_earray = 0;
- PyObject *__pyx_v_fsarray = 0;
- PyObject *__pyx_v_alignment = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_text,&__pyx_n_s__from_data,&__pyx_n_s__from_binary,&__pyx_n_s__earray,&__pyx_n_s__fsarray,&__pyx_n_s__alignment,0};
- PyObject* values[6] = {0,0,0,0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":54
- * cdef id2eword, id2fword, eword2id, fword2id
- *
- * def __cinit__(self, from_text=None, from_data=False, from_binary=None, # <<<<<<<<<<<<<<
- * earray=None, fsarray=None, alignment=None):
- * self.id2eword = []
- */
- values[0] = ((PyObject *)Py_None);
- values[1] = __pyx_k_43;
- values[2] = ((PyObject *)Py_None);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":55
- *
- * def __cinit__(self, from_text=None, from_data=False, from_binary=None,
- * earray=None, fsarray=None, alignment=None): # <<<<<<<<<<<<<<
- * self.id2eword = []
- * self.id2fword = []
- */
- values[3] = ((PyObject *)Py_None);
- values[4] = ((PyObject *)Py_None);
- values[5] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_text);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_data);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_binary);
- if (value) { values[2] = value; kw_args--; }
- }
- case 3:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__earray);
- if (value) { values[3] = value; kw_args--; }
- }
- case 4:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray);
- if (value) { values[4] = value; kw_args--; }
- }
- case 5:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alignment);
- if (value) { values[5] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_from_text = values[0];
- __pyx_v_from_data = values[1];
- __pyx_v_from_binary = values[2];
- __pyx_v_earray = values[3];
- __pyx_v_fsarray = values[4];
- __pyx_v_alignment = values[5];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.BiLex.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_5BiLex___cinit__(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), __pyx_v_from_text, __pyx_v_from_data, __pyx_v_from_binary, __pyx_v_earray, __pyx_v_fsarray, __pyx_v_alignment);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":54
- * cdef id2eword, id2fword, eword2id, fword2id
- *
- * def __cinit__(self, from_text=None, from_data=False, from_binary=None, # <<<<<<<<<<<<<<
- * earray=None, fsarray=None, alignment=None):
- * self.id2eword = []
- */
-
-static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_from_text, PyObject *__pyx_v_from_data, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_earray, PyObject *__pyx_v_fsarray, PyObject *__pyx_v_alignment) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":56
- * def __cinit__(self, from_text=None, from_data=False, from_binary=None,
- * earray=None, fsarray=None, alignment=None):
- * self.id2eword = [] # <<<<<<<<<<<<<<
- * self.id2fword = []
- * self.eword2id = {}
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->id2eword);
- __Pyx_DECREF(__pyx_v_self->id2eword);
- __pyx_v_self->id2eword = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":57
- * earray=None, fsarray=None, alignment=None):
- * self.id2eword = []
- * self.id2fword = [] # <<<<<<<<<<<<<<
- * self.eword2id = {}
- * self.fword2id = {}
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->id2fword);
- __Pyx_DECREF(__pyx_v_self->id2fword);
- __pyx_v_self->id2fword = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":58
- * self.id2eword = []
- * self.id2fword = []
- * self.eword2id = {} # <<<<<<<<<<<<<<
- * self.fword2id = {}
- * self.e_index = IntList()
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->eword2id);
- __Pyx_DECREF(__pyx_v_self->eword2id);
- __pyx_v_self->eword2id = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":59
- * self.id2fword = []
- * self.eword2id = {}
- * self.fword2id = {} # <<<<<<<<<<<<<<
- * self.e_index = IntList()
- * self.f_index = IntList()
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->fword2id);
- __Pyx_DECREF(__pyx_v_self->fword2id);
- __pyx_v_self->fword2id = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":60
- * self.eword2id = {}
- * self.fword2id = {}
- * self.e_index = IntList() # <<<<<<<<<<<<<<
- * self.f_index = IntList()
- * self.col1 = FloatList()
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->e_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->e_index));
- __pyx_v_self->e_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":61
- * self.fword2id = {}
- * self.e_index = IntList()
- * self.f_index = IntList() # <<<<<<<<<<<<<<
- * self.col1 = FloatList()
- * self.col2 = FloatList()
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->f_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->f_index));
- __pyx_v_self->f_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":62
- * self.e_index = IntList()
- * self.f_index = IntList()
- * self.col1 = FloatList() # <<<<<<<<<<<<<<
- * self.col2 = FloatList()
- * if from_binary:
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FloatList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->col1);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->col1));
- __pyx_v_self->col1 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":63
- * self.f_index = IntList()
- * self.col1 = FloatList()
- * self.col2 = FloatList() # <<<<<<<<<<<<<<
- * if from_binary:
- * self.read_binary(from_binary)
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FloatList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->col2);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->col2));
- __pyx_v_self->col2 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":64
- * self.col1 = FloatList()
- * self.col2 = FloatList()
- * if from_binary: # <<<<<<<<<<<<<<
- * self.read_binary(from_binary)
- * elif from_data:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":65
- * self.col2 = FloatList()
- * if from_binary:
- * self.read_binary(from_binary) # <<<<<<<<<<<<<<
- * elif from_data:
- * self.compute_from_data(fsarray, earray, alignment)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_from_binary);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_binary);
- __Pyx_GIVEREF(__pyx_v_from_binary);
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":66
- * if from_binary:
- * self.read_binary(from_binary)
- * elif from_data: # <<<<<<<<<<<<<<
- * self.compute_from_data(fsarray, earray, alignment)
- * else:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_data); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":67
- * self.read_binary(from_binary)
- * elif from_data:
- * self.compute_from_data(fsarray, earray, alignment) # <<<<<<<<<<<<<<
- * else:
- * self.read_text(from_text)
- */
- if (!(likely(((__pyx_v_fsarray) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fsarray, __pyx_ptype_3_sa_SuffixArray))))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(((__pyx_v_earray) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_earray, __pyx_ptype_3_sa_DataArray))))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(((__pyx_v_alignment) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_alignment, __pyx_ptype_3_sa_Alignment))))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->compute_from_data(__pyx_v_self, ((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_fsarray), ((struct __pyx_obj_3_sa_DataArray *)__pyx_v_earray), ((struct __pyx_obj_3_sa_Alignment *)__pyx_v_alignment)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":69
- * self.compute_from_data(fsarray, earray, alignment)
- * else:
- * self.read_text(from_text) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_from_text);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_text);
- __Pyx_GIVEREF(__pyx_v_from_text);
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.BiLex.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":72
- *
- *
- * cdef compute_from_data(self, SuffixArray fsa, DataArray eda, Alignment aa): # <<<<<<<<<<<<<<
- * cdef int sent_id, num_links, l, i, j, f_i, e_j, I, J, V_E, V_F, num_pairs
- * cdef int *fsent, *esent, *alignment, *links, *ealigned, *faligned
- */
-
-static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsa, struct __pyx_obj_3_sa_DataArray *__pyx_v_eda, struct __pyx_obj_3_sa_Alignment *__pyx_v_aa) {
- int __pyx_v_sent_id;
- int __pyx_v_num_links;
- int __pyx_v_l;
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_f_i;
- int __pyx_v_e_j;
- int __pyx_v_I;
- int __pyx_v_J;
- int __pyx_v_V_E;
- int __pyx_v_V_F;
- int __pyx_v_num_pairs;
- int *__pyx_v_fsent;
- int *__pyx_v_esent;
- int *__pyx_v_links;
- int *__pyx_v_ealigned;
- int *__pyx_v_faligned;
- struct __pyx_t_3_sa__node **__pyx_v_dict;
- int *__pyx_v_fmargin;
- int *__pyx_v_emargin;
- int *__pyx_v_count;
- int __pyx_v_null_word;
- PyObject *__pyx_v_word = NULL;
- PyObject *__pyx_v_id = NULL;
- PyObject *__pyx_v_num_sents = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_t_8;
- int __pyx_t_9;
- int __pyx_t_10;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("compute_from_data", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":79
- * cdef int null_word
- *
- * null_word = 0 # <<<<<<<<<<<<<<
- * for word in fsa.darray.id2word: # I miss list comprehensions
- * self.id2fword.append(word)
- */
- __pyx_v_null_word = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":80
- *
- * null_word = 0
- * for word in fsa.darray.id2word: # I miss list comprehensions # <<<<<<<<<<<<<<
- * self.id2fword.append(word)
- * self.id2fword[null_word] = "NULL"
- */
- if (PyList_CheckExact(__pyx_v_fsa->darray->id2word) || PyTuple_CheckExact(__pyx_v_fsa->darray->id2word)) {
- __pyx_t_1 = __pyx_v_fsa->darray->id2word; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_fsa->darray->id2word); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":81
- * null_word = 0
- * for word in fsa.darray.id2word: # I miss list comprehensions
- * self.id2fword.append(word) # <<<<<<<<<<<<<<
- * self.id2fword[null_word] = "NULL"
- * for id, word in enumerate(self.id2fword):
- */
- __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_self->id2fword, __pyx_v_word); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":82
- * for word in fsa.darray.id2word: # I miss list comprehensions
- * self.id2fword.append(word)
- * self.id2fword[null_word] = "NULL" # <<<<<<<<<<<<<<
- * for id, word in enumerate(self.id2fword):
- * self.fword2id[word] = id
- */
- if (__Pyx_SetItemInt(__pyx_v_self->id2fword, __pyx_v_null_word, ((PyObject *)__pyx_n_s__NULL), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":83
- * self.id2fword.append(word)
- * self.id2fword[null_word] = "NULL"
- * for id, word in enumerate(self.id2fword): # <<<<<<<<<<<<<<
- * self.fword2id[word] = id
- *
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_1 = __pyx_int_0;
- if (PyList_CheckExact(__pyx_v_self->id2fword) || PyTuple_CheckExact(__pyx_v_self->id2fword)) {
- __pyx_t_4 = __pyx_v_self->id2fword; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_self->id2fword); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_5 = __pyx_t_3(__pyx_t_4);
- if (unlikely(!__pyx_t_5)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_5);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_5;
- __pyx_t_5 = 0;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_id);
- __pyx_v_id = __pyx_t_1;
- __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_1 = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":84
- * self.id2fword[null_word] = "NULL"
- * for id, word in enumerate(self.id2fword):
- * self.fword2id[word] = id # <<<<<<<<<<<<<<
- *
- * for word in eda.id2word:
- */
- if (PyObject_SetItem(__pyx_v_self->fword2id, __pyx_v_word, __pyx_v_id) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":86
- * self.fword2id[word] = id
- *
- * for word in eda.id2word: # <<<<<<<<<<<<<<
- * self.id2eword.append(word)
- * self.id2eword[null_word] = "NULL"
- */
- if (PyList_CheckExact(__pyx_v_eda->id2word) || PyTuple_CheckExact(__pyx_v_eda->id2word)) {
- __pyx_t_1 = __pyx_v_eda->id2word; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_eda->id2word); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":87
- *
- * for word in eda.id2word:
- * self.id2eword.append(word) # <<<<<<<<<<<<<<
- * self.id2eword[null_word] = "NULL"
- * for id, word in enumerate(self.id2eword):
- */
- __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_self->id2eword, __pyx_v_word); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":88
- * for word in eda.id2word:
- * self.id2eword.append(word)
- * self.id2eword[null_word] = "NULL" # <<<<<<<<<<<<<<
- * for id, word in enumerate(self.id2eword):
- * self.eword2id[word] = id
- */
- if (__Pyx_SetItemInt(__pyx_v_self->id2eword, __pyx_v_null_word, ((PyObject *)__pyx_n_s__NULL), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":89
- * self.id2eword.append(word)
- * self.id2eword[null_word] = "NULL"
- * for id, word in enumerate(self.id2eword): # <<<<<<<<<<<<<<
- * self.eword2id[word] = id
- *
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_1 = __pyx_int_0;
- if (PyList_CheckExact(__pyx_v_self->id2eword) || PyTuple_CheckExact(__pyx_v_self->id2eword)) {
- __pyx_t_4 = __pyx_v_self->id2eword; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_self->id2eword); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_5 = __pyx_t_3(__pyx_t_4);
- if (unlikely(!__pyx_t_5)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_5);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_5;
- __pyx_t_5 = 0;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_id);
- __pyx_v_id = __pyx_t_1;
- __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_1 = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":90
- * self.id2eword[null_word] = "NULL"
- * for id, word in enumerate(self.id2eword):
- * self.eword2id[word] = id # <<<<<<<<<<<<<<
- *
- * num_pairs = 0
- */
- if (PyObject_SetItem(__pyx_v_self->eword2id, __pyx_v_word, __pyx_v_id) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":92
- * self.eword2id[word] = id
- *
- * num_pairs = 0 # <<<<<<<<<<<<<<
- *
- * V_E = len(eda.id2word)
- */
- __pyx_v_num_pairs = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":94
- * num_pairs = 0
- *
- * V_E = len(eda.id2word) # <<<<<<<<<<<<<<
- * V_F = len(fsa.darray.id2word)
- * fmargin = <int*> malloc(V_F*sizeof(int))
- */
- __pyx_t_1 = __pyx_v_eda->id2word;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_V_E = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":95
- *
- * V_E = len(eda.id2word)
- * V_F = len(fsa.darray.id2word) # <<<<<<<<<<<<<<
- * fmargin = <int*> malloc(V_F*sizeof(int))
- * emargin = <int*> malloc(V_E*sizeof(int))
- */
- __pyx_t_1 = __pyx_v_fsa->darray->id2word;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_V_F = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":96
- * V_E = len(eda.id2word)
- * V_F = len(fsa.darray.id2word)
- * fmargin = <int*> malloc(V_F*sizeof(int)) # <<<<<<<<<<<<<<
- * emargin = <int*> malloc(V_E*sizeof(int))
- * memset(fmargin, 0, V_F*sizeof(int))
- */
- __pyx_v_fmargin = ((int *)malloc((__pyx_v_V_F * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":97
- * V_F = len(fsa.darray.id2word)
- * fmargin = <int*> malloc(V_F*sizeof(int))
- * emargin = <int*> malloc(V_E*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(fmargin, 0, V_F*sizeof(int))
- * memset(emargin, 0, V_E*sizeof(int))
- */
- __pyx_v_emargin = ((int *)malloc((__pyx_v_V_E * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":98
- * fmargin = <int*> malloc(V_F*sizeof(int))
- * emargin = <int*> malloc(V_E*sizeof(int))
- * memset(fmargin, 0, V_F*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(emargin, 0, V_E*sizeof(int))
- *
- */
- memset(__pyx_v_fmargin, 0, (__pyx_v_V_F * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":99
- * emargin = <int*> malloc(V_E*sizeof(int))
- * memset(fmargin, 0, V_F*sizeof(int))
- * memset(emargin, 0, V_E*sizeof(int)) # <<<<<<<<<<<<<<
- *
- * dict = <_node**> malloc(V_F*sizeof(_node*))
- */
- memset(__pyx_v_emargin, 0, (__pyx_v_V_E * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":101
- * memset(emargin, 0, V_E*sizeof(int))
- *
- * dict = <_node**> malloc(V_F*sizeof(_node*)) # <<<<<<<<<<<<<<
- * memset(dict, 0, V_F*sizeof(_node*))
- *
- */
- __pyx_v_dict = ((struct __pyx_t_3_sa__node **)malloc((__pyx_v_V_F * (sizeof(struct __pyx_t_3_sa__node *)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":102
- *
- * dict = <_node**> malloc(V_F*sizeof(_node*))
- * memset(dict, 0, V_F*sizeof(_node*)) # <<<<<<<<<<<<<<
- *
- * num_sents = len(fsa.darray.sent_index)
- */
- memset(__pyx_v_dict, 0, (__pyx_v_V_F * (sizeof(struct __pyx_t_3_sa__node *))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":104
- * memset(dict, 0, V_F*sizeof(_node*))
- *
- * num_sents = len(fsa.darray.sent_index) # <<<<<<<<<<<<<<
- * for sent_id from 0 <= sent_id < num_sents-1:
- *
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_fsa->darray->sent_index);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_num_sents = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":105
- *
- * num_sents = len(fsa.darray.sent_index)
- * for sent_id from 0 <= sent_id < num_sents-1: # <<<<<<<<<<<<<<
- *
- * fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id]
- */
- __pyx_t_1 = PyNumber_Subtract(__pyx_v_num_sents, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (__pyx_v_sent_id = 0; __pyx_v_sent_id < __pyx_t_6; __pyx_v_sent_id++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":107
- * for sent_id from 0 <= sent_id < num_sents-1:
- *
- * fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id] # <<<<<<<<<<<<<<
- * I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1
- * faligned = <int*> malloc(I*sizeof(int))
- */
- __pyx_v_fsent = (__pyx_v_fsa->darray->data->arr + (__pyx_v_fsa->darray->sent_index->arr[__pyx_v_sent_id]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":108
- *
- * fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id]
- * I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1 # <<<<<<<<<<<<<<
- * faligned = <int*> malloc(I*sizeof(int))
- * memset(faligned, 0, I*sizeof(int))
- */
- __pyx_v_I = (((__pyx_v_fsa->darray->sent_index->arr[(__pyx_v_sent_id + 1)]) - (__pyx_v_fsa->darray->sent_index->arr[__pyx_v_sent_id])) - 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":109
- * fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id]
- * I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1
- * faligned = <int*> malloc(I*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(faligned, 0, I*sizeof(int))
- *
- */
- __pyx_v_faligned = ((int *)malloc((__pyx_v_I * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":110
- * I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1
- * faligned = <int*> malloc(I*sizeof(int))
- * memset(faligned, 0, I*sizeof(int)) # <<<<<<<<<<<<<<
- *
- * esent = eda.data.arr + eda.sent_index.arr[sent_id]
- */
- memset(__pyx_v_faligned, 0, (__pyx_v_I * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":112
- * memset(faligned, 0, I*sizeof(int))
- *
- * esent = eda.data.arr + eda.sent_index.arr[sent_id] # <<<<<<<<<<<<<<
- * J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1
- * ealigned = <int*> malloc(J*sizeof(int))
- */
- __pyx_v_esent = (__pyx_v_eda->data->arr + (__pyx_v_eda->sent_index->arr[__pyx_v_sent_id]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":113
- *
- * esent = eda.data.arr + eda.sent_index.arr[sent_id]
- * J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1 # <<<<<<<<<<<<<<
- * ealigned = <int*> malloc(J*sizeof(int))
- * memset(ealigned, 0, J*sizeof(int))
- */
- __pyx_v_J = (((__pyx_v_eda->sent_index->arr[(__pyx_v_sent_id + 1)]) - (__pyx_v_eda->sent_index->arr[__pyx_v_sent_id])) - 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":114
- * esent = eda.data.arr + eda.sent_index.arr[sent_id]
- * J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1
- * ealigned = <int*> malloc(J*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(ealigned, 0, J*sizeof(int))
- *
- */
- __pyx_v_ealigned = ((int *)malloc((__pyx_v_J * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":115
- * J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1
- * ealigned = <int*> malloc(J*sizeof(int))
- * memset(ealigned, 0, J*sizeof(int)) # <<<<<<<<<<<<<<
- *
- * links = aa._get_sent_links(sent_id, &num_links)
- */
- memset(__pyx_v_ealigned, 0, (__pyx_v_J * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":117
- * memset(ealigned, 0, J*sizeof(int))
- *
- * links = aa._get_sent_links(sent_id, &num_links) # <<<<<<<<<<<<<<
- *
- * for l from 0 <= l < num_links:
- */
- __pyx_v_links = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_aa->__pyx_vtab)->_get_sent_links(__pyx_v_aa, __pyx_v_sent_id, (&__pyx_v_num_links));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":119
- * links = aa._get_sent_links(sent_id, &num_links)
- *
- * for l from 0 <= l < num_links: # <<<<<<<<<<<<<<
- * i = links[l*2]
- * j = links[l*2+1]
- */
- __pyx_t_7 = __pyx_v_num_links;
- for (__pyx_v_l = 0; __pyx_v_l < __pyx_t_7; __pyx_v_l++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":120
- *
- * for l from 0 <= l < num_links:
- * i = links[l*2] # <<<<<<<<<<<<<<
- * j = links[l*2+1]
- * if i >= I or j >= J:
- */
- __pyx_v_i = (__pyx_v_links[(__pyx_v_l * 2)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":121
- * for l from 0 <= l < num_links:
- * i = links[l*2]
- * j = links[l*2+1] # <<<<<<<<<<<<<<
- * if i >= I or j >= J:
- * raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))
- */
- __pyx_v_j = (__pyx_v_links[((__pyx_v_l * 2) + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":122
- * i = links[l*2]
- * j = links[l*2+1]
- * if i >= I or j >= J: # <<<<<<<<<<<<<<
- * raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))
- * f_i = fsent[i]
- */
- __pyx_t_8 = ((__pyx_v_i >= __pyx_v_I) != 0);
- if (!__pyx_t_8) {
- __pyx_t_9 = ((__pyx_v_j >= __pyx_v_J) != 0);
- __pyx_t_10 = __pyx_t_9;
- } else {
- __pyx_t_10 = __pyx_t_8;
- }
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":123
- * j = links[l*2+1]
- * if i >= I or j >= J:
- * raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1)) # <<<<<<<<<<<<<<
- * f_i = fsent[i]
- * e_j = esent[j]
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyInt_FromLong(__pyx_v_I); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_11 = PyInt_FromLong(__pyx_v_J); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = PyInt_FromLong((__pyx_v_sent_id + 1)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = PyTuple_New(5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_13, 3, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_13, 4, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_1 = 0;
- __pyx_t_4 = 0;
- __pyx_t_5 = 0;
- __pyx_t_11 = 0;
- __pyx_t_12 = 0;
- __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_44), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- PyTuple_SET_ITEM(__pyx_t_13, 0, ((PyObject *)__pyx_t_12));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- __Pyx_Raise(__pyx_t_12, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L15;
- }
- __pyx_L15:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":124
- * if i >= I or j >= J:
- * raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))
- * f_i = fsent[i] # <<<<<<<<<<<<<<
- * e_j = esent[j]
- * fmargin[f_i] = fmargin[f_i]+1
- */
- __pyx_v_f_i = (__pyx_v_fsent[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":125
- * raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))
- * f_i = fsent[i]
- * e_j = esent[j] # <<<<<<<<<<<<<<
- * fmargin[f_i] = fmargin[f_i]+1
- * emargin[e_j] = emargin[e_j]+1
- */
- __pyx_v_e_j = (__pyx_v_esent[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":126
- * f_i = fsent[i]
- * e_j = esent[j]
- * fmargin[f_i] = fmargin[f_i]+1 # <<<<<<<<<<<<<<
- * emargin[e_j] = emargin[e_j]+1
- * if dict[f_i] == NULL:
- */
- (__pyx_v_fmargin[__pyx_v_f_i]) = ((__pyx_v_fmargin[__pyx_v_f_i]) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":127
- * e_j = esent[j]
- * fmargin[f_i] = fmargin[f_i]+1
- * emargin[e_j] = emargin[e_j]+1 # <<<<<<<<<<<<<<
- * if dict[f_i] == NULL:
- * dict[f_i] = new_node(e_j)
- */
- (__pyx_v_emargin[__pyx_v_e_j]) = ((__pyx_v_emargin[__pyx_v_e_j]) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":128
- * fmargin[f_i] = fmargin[f_i]+1
- * emargin[e_j] = emargin[e_j]+1
- * if dict[f_i] == NULL: # <<<<<<<<<<<<<<
- * dict[f_i] = new_node(e_j)
- * dict[f_i].val = 1
- */
- __pyx_t_10 = (((__pyx_v_dict[__pyx_v_f_i]) == NULL) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":129
- * emargin[e_j] = emargin[e_j]+1
- * if dict[f_i] == NULL:
- * dict[f_i] = new_node(e_j) # <<<<<<<<<<<<<<
- * dict[f_i].val = 1
- * num_pairs = num_pairs + 1
- */
- (__pyx_v_dict[__pyx_v_f_i]) = __pyx_f_3_sa_new_node(__pyx_v_e_j);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":130
- * if dict[f_i] == NULL:
- * dict[f_i] = new_node(e_j)
- * dict[f_i].val = 1 # <<<<<<<<<<<<<<
- * num_pairs = num_pairs + 1
- * else:
- */
- (__pyx_v_dict[__pyx_v_f_i])->val = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":131
- * dict[f_i] = new_node(e_j)
- * dict[f_i].val = 1
- * num_pairs = num_pairs + 1 # <<<<<<<<<<<<<<
- * else:
- * count = get_val(dict[f_i], e_j)
- */
- __pyx_v_num_pairs = (__pyx_v_num_pairs + 1);
- goto __pyx_L16;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":133
- * num_pairs = num_pairs + 1
- * else:
- * count = get_val(dict[f_i], e_j) # <<<<<<<<<<<<<<
- * if count[0] == 0:
- * num_pairs = num_pairs + 1
- */
- __pyx_v_count = __pyx_f_3_sa_get_val((__pyx_v_dict[__pyx_v_f_i]), __pyx_v_e_j);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":134
- * else:
- * count = get_val(dict[f_i], e_j)
- * if count[0] == 0: # <<<<<<<<<<<<<<
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1
- */
- __pyx_t_10 = (((__pyx_v_count[0]) == 0) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":135
- * count = get_val(dict[f_i], e_j)
- * if count[0] == 0:
- * num_pairs = num_pairs + 1 # <<<<<<<<<<<<<<
- * count[0] = count[0] + 1
- * # add count
- */
- __pyx_v_num_pairs = (__pyx_v_num_pairs + 1);
- goto __pyx_L17;
- }
- __pyx_L17:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":136
- * if count[0] == 0:
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1 # <<<<<<<<<<<<<<
- * # add count
- * faligned[i] = 1
- */
- (__pyx_v_count[0]) = ((__pyx_v_count[0]) + 1);
- }
- __pyx_L16:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":138
- * count[0] = count[0] + 1
- * # add count
- * faligned[i] = 1 # <<<<<<<<<<<<<<
- * ealigned[j] = 1
- * for i from 0 <= i < I:
- */
- (__pyx_v_faligned[__pyx_v_i]) = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":139
- * # add count
- * faligned[i] = 1
- * ealigned[j] = 1 # <<<<<<<<<<<<<<
- * for i from 0 <= i < I:
- * if faligned[i] == 0:
- */
- (__pyx_v_ealigned[__pyx_v_j]) = 1;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":140
- * faligned[i] = 1
- * ealigned[j] = 1
- * for i from 0 <= i < I: # <<<<<<<<<<<<<<
- * if faligned[i] == 0:
- * f_i = fsent[i]
- */
- __pyx_t_7 = __pyx_v_I;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_7; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":141
- * ealigned[j] = 1
- * for i from 0 <= i < I:
- * if faligned[i] == 0: # <<<<<<<<<<<<<<
- * f_i = fsent[i]
- * fmargin[f_i] = fmargin[f_i] + 1
- */
- __pyx_t_10 = (((__pyx_v_faligned[__pyx_v_i]) == 0) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":142
- * for i from 0 <= i < I:
- * if faligned[i] == 0:
- * f_i = fsent[i] # <<<<<<<<<<<<<<
- * fmargin[f_i] = fmargin[f_i] + 1
- * emargin[null_word] = emargin[null_word] + 1
- */
- __pyx_v_f_i = (__pyx_v_fsent[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":143
- * if faligned[i] == 0:
- * f_i = fsent[i]
- * fmargin[f_i] = fmargin[f_i] + 1 # <<<<<<<<<<<<<<
- * emargin[null_word] = emargin[null_word] + 1
- * if dict[f_i] == NULL:
- */
- (__pyx_v_fmargin[__pyx_v_f_i]) = ((__pyx_v_fmargin[__pyx_v_f_i]) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":144
- * f_i = fsent[i]
- * fmargin[f_i] = fmargin[f_i] + 1
- * emargin[null_word] = emargin[null_word] + 1 # <<<<<<<<<<<<<<
- * if dict[f_i] == NULL:
- * dict[f_i] = new_node(null_word)
- */
- (__pyx_v_emargin[__pyx_v_null_word]) = ((__pyx_v_emargin[__pyx_v_null_word]) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":145
- * fmargin[f_i] = fmargin[f_i] + 1
- * emargin[null_word] = emargin[null_word] + 1
- * if dict[f_i] == NULL: # <<<<<<<<<<<<<<
- * dict[f_i] = new_node(null_word)
- * dict[f_i].val = 1
- */
- __pyx_t_10 = (((__pyx_v_dict[__pyx_v_f_i]) == NULL) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":146
- * emargin[null_word] = emargin[null_word] + 1
- * if dict[f_i] == NULL:
- * dict[f_i] = new_node(null_word) # <<<<<<<<<<<<<<
- * dict[f_i].val = 1
- * num_pairs = num_pairs + 1
- */
- (__pyx_v_dict[__pyx_v_f_i]) = __pyx_f_3_sa_new_node(__pyx_v_null_word);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":147
- * if dict[f_i] == NULL:
- * dict[f_i] = new_node(null_word)
- * dict[f_i].val = 1 # <<<<<<<<<<<<<<
- * num_pairs = num_pairs + 1
- * else:
- */
- (__pyx_v_dict[__pyx_v_f_i])->val = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":148
- * dict[f_i] = new_node(null_word)
- * dict[f_i].val = 1
- * num_pairs = num_pairs + 1 # <<<<<<<<<<<<<<
- * else:
- * count = get_val(dict[f_i], null_word)
- */
- __pyx_v_num_pairs = (__pyx_v_num_pairs + 1);
- goto __pyx_L21;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":150
- * num_pairs = num_pairs + 1
- * else:
- * count = get_val(dict[f_i], null_word) # <<<<<<<<<<<<<<
- * if count[0] == 0:
- * num_pairs = num_pairs + 1
- */
- __pyx_v_count = __pyx_f_3_sa_get_val((__pyx_v_dict[__pyx_v_f_i]), __pyx_v_null_word);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":151
- * else:
- * count = get_val(dict[f_i], null_word)
- * if count[0] == 0: # <<<<<<<<<<<<<<
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1
- */
- __pyx_t_10 = (((__pyx_v_count[0]) == 0) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":152
- * count = get_val(dict[f_i], null_word)
- * if count[0] == 0:
- * num_pairs = num_pairs + 1 # <<<<<<<<<<<<<<
- * count[0] = count[0] + 1
- * for j from 0 <= j < J:
- */
- __pyx_v_num_pairs = (__pyx_v_num_pairs + 1);
- goto __pyx_L22;
- }
- __pyx_L22:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":153
- * if count[0] == 0:
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1 # <<<<<<<<<<<<<<
- * for j from 0 <= j < J:
- * if ealigned[j] == 0:
- */
- (__pyx_v_count[0]) = ((__pyx_v_count[0]) + 1);
- }
- __pyx_L21:;
- goto __pyx_L20;
- }
- __pyx_L20:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":154
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1
- * for j from 0 <= j < J: # <<<<<<<<<<<<<<
- * if ealigned[j] == 0:
- * e_j = esent[j]
- */
- __pyx_t_7 = __pyx_v_J;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_7; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":155
- * count[0] = count[0] + 1
- * for j from 0 <= j < J:
- * if ealigned[j] == 0: # <<<<<<<<<<<<<<
- * e_j = esent[j]
- * fmargin[null_word] = fmargin[null_word] + 1
- */
- __pyx_t_10 = (((__pyx_v_ealigned[__pyx_v_j]) == 0) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":156
- * for j from 0 <= j < J:
- * if ealigned[j] == 0:
- * e_j = esent[j] # <<<<<<<<<<<<<<
- * fmargin[null_word] = fmargin[null_word] + 1
- * emargin[e_j] = emargin[e_j] + 1
- */
- __pyx_v_e_j = (__pyx_v_esent[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":157
- * if ealigned[j] == 0:
- * e_j = esent[j]
- * fmargin[null_word] = fmargin[null_word] + 1 # <<<<<<<<<<<<<<
- * emargin[e_j] = emargin[e_j] + 1
- * if dict[null_word] == NULL:
- */
- (__pyx_v_fmargin[__pyx_v_null_word]) = ((__pyx_v_fmargin[__pyx_v_null_word]) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":158
- * e_j = esent[j]
- * fmargin[null_word] = fmargin[null_word] + 1
- * emargin[e_j] = emargin[e_j] + 1 # <<<<<<<<<<<<<<
- * if dict[null_word] == NULL:
- * dict[null_word] = new_node(e_j)
- */
- (__pyx_v_emargin[__pyx_v_e_j]) = ((__pyx_v_emargin[__pyx_v_e_j]) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":159
- * fmargin[null_word] = fmargin[null_word] + 1
- * emargin[e_j] = emargin[e_j] + 1
- * if dict[null_word] == NULL: # <<<<<<<<<<<<<<
- * dict[null_word] = new_node(e_j)
- * dict[null_word].val = 1
- */
- __pyx_t_10 = (((__pyx_v_dict[__pyx_v_null_word]) == NULL) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":160
- * emargin[e_j] = emargin[e_j] + 1
- * if dict[null_word] == NULL:
- * dict[null_word] = new_node(e_j) # <<<<<<<<<<<<<<
- * dict[null_word].val = 1
- * num_pairs = num_pairs + 1
- */
- (__pyx_v_dict[__pyx_v_null_word]) = __pyx_f_3_sa_new_node(__pyx_v_e_j);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":161
- * if dict[null_word] == NULL:
- * dict[null_word] = new_node(e_j)
- * dict[null_word].val = 1 # <<<<<<<<<<<<<<
- * num_pairs = num_pairs + 1
- * else:
- */
- (__pyx_v_dict[__pyx_v_null_word])->val = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":162
- * dict[null_word] = new_node(e_j)
- * dict[null_word].val = 1
- * num_pairs = num_pairs + 1 # <<<<<<<<<<<<<<
- * else:
- * count = get_val(dict[null_word], e_j)
- */
- __pyx_v_num_pairs = (__pyx_v_num_pairs + 1);
- goto __pyx_L26;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":164
- * num_pairs = num_pairs + 1
- * else:
- * count = get_val(dict[null_word], e_j) # <<<<<<<<<<<<<<
- * if count[0] == 0:
- * num_pairs = num_pairs + 1
- */
- __pyx_v_count = __pyx_f_3_sa_get_val((__pyx_v_dict[__pyx_v_null_word]), __pyx_v_e_j);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":165
- * else:
- * count = get_val(dict[null_word], e_j)
- * if count[0] == 0: # <<<<<<<<<<<<<<
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1
- */
- __pyx_t_10 = (((__pyx_v_count[0]) == 0) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":166
- * count = get_val(dict[null_word], e_j)
- * if count[0] == 0:
- * num_pairs = num_pairs + 1 # <<<<<<<<<<<<<<
- * count[0] = count[0] + 1
- * free(links)
- */
- __pyx_v_num_pairs = (__pyx_v_num_pairs + 1);
- goto __pyx_L27;
- }
- __pyx_L27:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":167
- * if count[0] == 0:
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1 # <<<<<<<<<<<<<<
- * free(links)
- * free(faligned)
- */
- (__pyx_v_count[0]) = ((__pyx_v_count[0]) + 1);
- }
- __pyx_L26:;
- goto __pyx_L25;
- }
- __pyx_L25:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":168
- * num_pairs = num_pairs + 1
- * count[0] = count[0] + 1
- * free(links) # <<<<<<<<<<<<<<
- * free(faligned)
- * free(ealigned)
- */
- free(__pyx_v_links);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":169
- * count[0] = count[0] + 1
- * free(links)
- * free(faligned) # <<<<<<<<<<<<<<
- * free(ealigned)
- * self.f_index = IntList(initial_len=V_F)
- */
- free(__pyx_v_faligned);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":170
- * free(links)
- * free(faligned)
- * free(ealigned) # <<<<<<<<<<<<<<
- * self.f_index = IntList(initial_len=V_F)
- * self.e_index = IntList(initial_len=num_pairs)
- */
- free(__pyx_v_ealigned);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":171
- * free(faligned)
- * free(ealigned)
- * self.f_index = IntList(initial_len=V_F) # <<<<<<<<<<<<<<
- * self.e_index = IntList(initial_len=num_pairs)
- * self.col1 = FloatList(initial_len=num_pairs)
- */
- __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- __pyx_t_13 = PyInt_FromLong(__pyx_v_V_F); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __pyx_t_13 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_GIVEREF(__pyx_t_13);
- __Pyx_GOTREF(__pyx_v_self->f_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->f_index));
- __pyx_v_self->f_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_13);
- __pyx_t_13 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":172
- * free(ealigned)
- * self.f_index = IntList(initial_len=V_F)
- * self.e_index = IntList(initial_len=num_pairs) # <<<<<<<<<<<<<<
- * self.col1 = FloatList(initial_len=num_pairs)
- * self.col2 = FloatList(initial_len=num_pairs)
- */
- __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_13));
- __pyx_t_12 = PyInt_FromLong(__pyx_v_num_pairs); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_v_self->e_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->e_index));
- __pyx_v_self->e_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":173
- * self.f_index = IntList(initial_len=V_F)
- * self.e_index = IntList(initial_len=num_pairs)
- * self.col1 = FloatList(initial_len=num_pairs) # <<<<<<<<<<<<<<
- * self.col2 = FloatList(initial_len=num_pairs)
- *
- */
- __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- __pyx_t_13 = PyInt_FromLong(__pyx_v_num_pairs); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __pyx_t_13 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FloatList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_GIVEREF(__pyx_t_13);
- __Pyx_GOTREF(__pyx_v_self->col1);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->col1));
- __pyx_v_self->col1 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_13);
- __pyx_t_13 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":174
- * self.e_index = IntList(initial_len=num_pairs)
- * self.col1 = FloatList(initial_len=num_pairs)
- * self.col2 = FloatList(initial_len=num_pairs) # <<<<<<<<<<<<<<
- *
- * num_pairs = 0
- */
- __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_13));
- __pyx_t_12 = PyInt_FromLong(__pyx_v_num_pairs); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FloatList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_v_self->col2);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->col2));
- __pyx_v_self->col2 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_12);
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":176
- * self.col2 = FloatList(initial_len=num_pairs)
- *
- * num_pairs = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < V_F:
- * #self.f_index[i] = num_pairs
- */
- __pyx_v_num_pairs = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":177
- *
- * num_pairs = 0
- * for i from 0 <= i < V_F: # <<<<<<<<<<<<<<
- * #self.f_index[i] = num_pairs
- * self.f_index.set(i, num_pairs)
- */
- __pyx_t_6 = __pyx_v_V_F;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":179
- * for i from 0 <= i < V_F:
- * #self.f_index[i] = num_pairs
- * self.f_index.set(i, num_pairs) # <<<<<<<<<<<<<<
- * if dict[i] != NULL:
- * self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->f_index->__pyx_vtab)->set(__pyx_v_self->f_index, __pyx_v_i, __pyx_v_num_pairs);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":180
- * #self.f_index[i] = num_pairs
- * self.f_index.set(i, num_pairs)
- * if dict[i] != NULL: # <<<<<<<<<<<<<<
- * self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)
- * del_node(dict[i])
- */
- __pyx_t_10 = (((__pyx_v_dict[__pyx_v_i]) != NULL) != 0);
- if (__pyx_t_10) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":181
- * self.f_index.set(i, num_pairs)
- * if dict[i] != NULL:
- * self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin) # <<<<<<<<<<<<<<
- * del_node(dict[i])
- * free(fmargin)
- */
- __pyx_t_12 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->_add_node(__pyx_v_self, (__pyx_v_dict[__pyx_v_i]), (&__pyx_v_num_pairs), ((double)(__pyx_v_fmargin[__pyx_v_i])), __pyx_v_emargin); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":182
- * if dict[i] != NULL:
- * self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)
- * del_node(dict[i]) # <<<<<<<<<<<<<<
- * free(fmargin)
- * free(emargin)
- */
- __pyx_t_12 = __pyx_f_3_sa_del_node((__pyx_v_dict[__pyx_v_i])); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- goto __pyx_L30;
- }
- __pyx_L30:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":183
- * self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)
- * del_node(dict[i])
- * free(fmargin) # <<<<<<<<<<<<<<
- * free(emargin)
- * free(dict)
- */
- free(__pyx_v_fmargin);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":184
- * del_node(dict[i])
- * free(fmargin)
- * free(emargin) # <<<<<<<<<<<<<<
- * free(dict)
- * return
- */
- free(__pyx_v_emargin);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":185
- * free(fmargin)
- * free(emargin)
- * free(dict) # <<<<<<<<<<<<<<
- * return
- *
- */
- free(__pyx_v_dict);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":186
- * free(emargin)
- * free(dict)
- * return # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13);
- __Pyx_AddTraceback("_sa.BiLex.compute_from_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_word);
- __Pyx_XDECREF(__pyx_v_id);
- __Pyx_XDECREF(__pyx_v_num_sents);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":189
- *
- *
- * cdef _add_node(self, _node* n, int* num_pairs, float fmargin, int* emargin): # <<<<<<<<<<<<<<
- * cdef int loc
- * if n.smaller != NULL:
- */
-
-static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, struct __pyx_t_3_sa__node *__pyx_v_n, int *__pyx_v_num_pairs, float __pyx_v_fmargin, int *__pyx_v_emargin) {
- int __pyx_v_loc;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("_add_node", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":191
- * cdef _add_node(self, _node* n, int* num_pairs, float fmargin, int* emargin):
- * cdef int loc
- * if n.smaller != NULL: # <<<<<<<<<<<<<<
- * self._add_node(n.smaller, num_pairs, fmargin, emargin)
- * loc = num_pairs[0]
- */
- __pyx_t_1 = ((__pyx_v_n->smaller != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":192
- * cdef int loc
- * if n.smaller != NULL:
- * self._add_node(n.smaller, num_pairs, fmargin, emargin) # <<<<<<<<<<<<<<
- * loc = num_pairs[0]
- * self.e_index.set(loc, n.key)
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->_add_node(__pyx_v_self, __pyx_v_n->smaller, __pyx_v_num_pairs, __pyx_v_fmargin, __pyx_v_emargin); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":193
- * if n.smaller != NULL:
- * self._add_node(n.smaller, num_pairs, fmargin, emargin)
- * loc = num_pairs[0] # <<<<<<<<<<<<<<
- * self.e_index.set(loc, n.key)
- * self.col1.set(loc, float(n.val)/fmargin)
- */
- __pyx_v_loc = (__pyx_v_num_pairs[0]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":194
- * self._add_node(n.smaller, num_pairs, fmargin, emargin)
- * loc = num_pairs[0]
- * self.e_index.set(loc, n.key) # <<<<<<<<<<<<<<
- * self.col1.set(loc, float(n.val)/fmargin)
- * self.col2.set(loc, float(n.val)/float(emargin[n.key]))
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->e_index->__pyx_vtab)->set(__pyx_v_self->e_index, __pyx_v_loc, __pyx_v_n->key);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":195
- * loc = num_pairs[0]
- * self.e_index.set(loc, n.key)
- * self.col1.set(loc, float(n.val)/fmargin) # <<<<<<<<<<<<<<
- * self.col2.set(loc, float(n.val)/float(emargin[n.key]))
- * num_pairs[0] = loc + 1
- */
- if (unlikely(__pyx_v_fmargin == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col1->__pyx_vtab)->set(__pyx_v_self->col1, __pyx_v_loc, (((double)__pyx_v_n->val) / __pyx_v_fmargin));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":196
- * self.e_index.set(loc, n.key)
- * self.col1.set(loc, float(n.val)/fmargin)
- * self.col2.set(loc, float(n.val)/float(emargin[n.key])) # <<<<<<<<<<<<<<
- * num_pairs[0] = loc + 1
- * if n.bigger != NULL:
- */
- if (unlikely(((double)(__pyx_v_emargin[__pyx_v_n->key])) == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col2->__pyx_vtab)->set(__pyx_v_self->col2, __pyx_v_loc, (((double)__pyx_v_n->val) / ((double)(__pyx_v_emargin[__pyx_v_n->key]))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":197
- * self.col1.set(loc, float(n.val)/fmargin)
- * self.col2.set(loc, float(n.val)/float(emargin[n.key]))
- * num_pairs[0] = loc + 1 # <<<<<<<<<<<<<<
- * if n.bigger != NULL:
- * self._add_node(n.bigger, num_pairs, fmargin, emargin)
- */
- (__pyx_v_num_pairs[0]) = (__pyx_v_loc + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":198
- * self.col2.set(loc, float(n.val)/float(emargin[n.key]))
- * num_pairs[0] = loc + 1
- * if n.bigger != NULL: # <<<<<<<<<<<<<<
- * self._add_node(n.bigger, num_pairs, fmargin, emargin)
- *
- */
- __pyx_t_1 = ((__pyx_v_n->bigger != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":199
- * num_pairs[0] = loc + 1
- * if n.bigger != NULL:
- * self._add_node(n.bigger, num_pairs, fmargin, emargin) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->_add_node(__pyx_v_self, __pyx_v_n->bigger, __pyx_v_num_pairs, __pyx_v_fmargin, __pyx_v_emargin); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.BiLex._add_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_3write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_5BiLex_3write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.BiLex.write_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_5BiLex_2write_binary(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":202
- *
- *
- * def write_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "w")
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":204
- * def write_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "w") # <<<<<<<<<<<<<<
- * self.f_index.write_handle(f)
- * self.e_index.write_handle(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":205
- * cdef FILE* f
- * f = fopen(filename, "w")
- * self.f_index.write_handle(f) # <<<<<<<<<<<<<<
- * self.e_index.write_handle(f)
- * self.col1.write_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->f_index->__pyx_vtab)->write_handle(__pyx_v_self->f_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":206
- * f = fopen(filename, "w")
- * self.f_index.write_handle(f)
- * self.e_index.write_handle(f) # <<<<<<<<<<<<<<
- * self.col1.write_handle(f)
- * self.col2.write_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->e_index->__pyx_vtab)->write_handle(__pyx_v_self->e_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":207
- * self.f_index.write_handle(f)
- * self.e_index.write_handle(f)
- * self.col1.write_handle(f) # <<<<<<<<<<<<<<
- * self.col2.write_handle(f)
- * self.write_wordlist(self.id2fword, f)
- */
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col1->__pyx_vtab)->write_handle(__pyx_v_self->col1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":208
- * self.e_index.write_handle(f)
- * self.col1.write_handle(f)
- * self.col2.write_handle(f) # <<<<<<<<<<<<<<
- * self.write_wordlist(self.id2fword, f)
- * self.write_wordlist(self.id2eword, f)
- */
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col2->__pyx_vtab)->write_handle(__pyx_v_self->col2, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":209
- * self.col1.write_handle(f)
- * self.col2.write_handle(f)
- * self.write_wordlist(self.id2fword, f) # <<<<<<<<<<<<<<
- * self.write_wordlist(self.id2eword, f)
- * fclose(f)
- */
- __pyx_t_1 = __pyx_v_self->id2fword;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->write_wordlist(__pyx_v_self, __pyx_t_1, __pyx_v_f); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":210
- * self.col2.write_handle(f)
- * self.write_wordlist(self.id2fword, f)
- * self.write_wordlist(self.id2eword, f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- __pyx_t_2 = __pyx_v_self->id2eword;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->write_wordlist(__pyx_v_self, __pyx_t_2, __pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":211
- * self.write_wordlist(self.id2fword, f)
- * self.write_wordlist(self.id2eword, f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- *
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.BiLex.write_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":214
- *
- *
- * cdef write_wordlist(self, wordlist, FILE* f): # <<<<<<<<<<<<<<
- * cdef int word_len
- * cdef int num_words
- */
-
-static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_wordlist, FILE *__pyx_v_f) {
- int __pyx_v_word_len;
- int __pyx_v_num_words;
- PyObject *__pyx_v_word = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- Py_ssize_t __pyx_t_5;
- char *__pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_wordlist", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":218
- * cdef int num_words
- *
- * num_words = len(wordlist) # <<<<<<<<<<<<<<
- * fwrite(&(num_words), sizeof(int), 1, f)
- * for word in wordlist:
- */
- __pyx_t_1 = PyObject_Length(__pyx_v_wordlist); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_num_words = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":219
- *
- * num_words = len(wordlist)
- * fwrite(&(num_words), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * for word in wordlist:
- * word_len = len(word) + 1
- */
- fwrite((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":220
- * num_words = len(wordlist)
- * fwrite(&(num_words), sizeof(int), 1, f)
- * for word in wordlist: # <<<<<<<<<<<<<<
- * word_len = len(word) + 1
- * fwrite(&(word_len), sizeof(int), 1, f)
- */
- if (PyList_CheckExact(__pyx_v_wordlist) || PyTuple_CheckExact(__pyx_v_wordlist)) {
- __pyx_t_2 = __pyx_v_wordlist; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_wordlist); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_2);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_word);
- __pyx_v_word = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":221
- * fwrite(&(num_words), sizeof(int), 1, f)
- * for word in wordlist:
- * word_len = len(word) + 1 # <<<<<<<<<<<<<<
- * fwrite(&(word_len), sizeof(int), 1, f)
- * fwrite(<char *>word, sizeof(char), word_len, f)
- */
- __pyx_t_5 = PyObject_Length(__pyx_v_word); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_word_len = (__pyx_t_5 + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":222
- * for word in wordlist:
- * word_len = len(word) + 1
- * fwrite(&(word_len), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(<char *>word, sizeof(char), word_len, f)
- *
- */
- fwrite((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":223
- * word_len = len(word) + 1
- * fwrite(&(word_len), sizeof(int), 1, f)
- * fwrite(<char *>word, sizeof(char), word_len, f) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_word); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- fwrite(((char *)__pyx_t_6), (sizeof(char)), __pyx_v_word_len, __pyx_v_f);
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.BiLex.write_wordlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_word);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":226
- *
- *
- * cdef read_wordlist(self, word2id, id2word, FILE* f): # <<<<<<<<<<<<<<
- * cdef int num_words
- * cdef int word_len
- */
-
-static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_word2id, PyObject *__pyx_v_id2word, FILE *__pyx_v_f) {
- int __pyx_v_num_words;
- int __pyx_v_word_len;
- char *__pyx_v_word;
- CYTHON_UNUSED long __pyx_v_i;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_wordlist", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":231
- * cdef char* word
- *
- * fread(&(num_words), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * for i from 0 <= i < num_words:
- * fread(&(word_len), sizeof(int), 1, f)
- */
- fread((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":232
- *
- * fread(&(num_words), sizeof(int), 1, f)
- * for i from 0 <= i < num_words: # <<<<<<<<<<<<<<
- * fread(&(word_len), sizeof(int), 1, f)
- * word = <char*> malloc (word_len * sizeof(char))
- */
- __pyx_t_1 = __pyx_v_num_words;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":233
- * fread(&(num_words), sizeof(int), 1, f)
- * for i from 0 <= i < num_words:
- * fread(&(word_len), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * word = <char*> malloc (word_len * sizeof(char))
- * fread(word, sizeof(char), word_len, f)
- */
- fread((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":234
- * for i from 0 <= i < num_words:
- * fread(&(word_len), sizeof(int), 1, f)
- * word = <char*> malloc (word_len * sizeof(char)) # <<<<<<<<<<<<<<
- * fread(word, sizeof(char), word_len, f)
- * word2id[word] = len(id2word)
- */
- __pyx_v_word = ((char *)malloc((__pyx_v_word_len * (sizeof(char)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":235
- * fread(&(word_len), sizeof(int), 1, f)
- * word = <char*> malloc (word_len * sizeof(char))
- * fread(word, sizeof(char), word_len, f) # <<<<<<<<<<<<<<
- * word2id[word] = len(id2word)
- * id2word.append(word)
- */
- fread(__pyx_v_word, (sizeof(char)), __pyx_v_word_len, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":236
- * word = <char*> malloc (word_len * sizeof(char))
- * fread(word, sizeof(char), word_len, f)
- * word2id[word] = len(id2word) # <<<<<<<<<<<<<<
- * id2word.append(word)
- * free(word)
- */
- __pyx_t_2 = PyObject_Length(__pyx_v_id2word); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- if (PyObject_SetItem(__pyx_v_word2id, ((PyObject *)__pyx_t_4), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":237
- * fread(word, sizeof(char), word_len, f)
- * word2id[word] = len(id2word)
- * id2word.append(word) # <<<<<<<<<<<<<<
- * free(word)
- *
- */
- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_id2word, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":238
- * word2id[word] = len(id2word)
- * id2word.append(word)
- * free(word) # <<<<<<<<<<<<<<
- *
- * def read_binary(self, char* filename):
- */
- free(__pyx_v_word);
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.BiLex.read_wordlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_5read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_5BiLex_5read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.BiLex.read_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_5BiLex_4read_binary(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":240
- * free(word)
- *
- * def read_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "r")
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":242
- * def read_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "r") # <<<<<<<<<<<<<<
- * self.f_index.read_handle(f)
- * self.e_index.read_handle(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":243
- * cdef FILE* f
- * f = fopen(filename, "r")
- * self.f_index.read_handle(f) # <<<<<<<<<<<<<<
- * self.e_index.read_handle(f)
- * self.col1.read_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->f_index->__pyx_vtab)->read_handle(__pyx_v_self->f_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":244
- * f = fopen(filename, "r")
- * self.f_index.read_handle(f)
- * self.e_index.read_handle(f) # <<<<<<<<<<<<<<
- * self.col1.read_handle(f)
- * self.col2.read_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->e_index->__pyx_vtab)->read_handle(__pyx_v_self->e_index, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":245
- * self.f_index.read_handle(f)
- * self.e_index.read_handle(f)
- * self.col1.read_handle(f) # <<<<<<<<<<<<<<
- * self.col2.read_handle(f)
- * self.read_wordlist(self.fword2id, self.id2fword, f)
- */
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col1->__pyx_vtab)->read_handle(__pyx_v_self->col1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":246
- * self.e_index.read_handle(f)
- * self.col1.read_handle(f)
- * self.col2.read_handle(f) # <<<<<<<<<<<<<<
- * self.read_wordlist(self.fword2id, self.id2fword, f)
- * self.read_wordlist(self.eword2id, self.id2eword, f)
- */
- ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col2->__pyx_vtab)->read_handle(__pyx_v_self->col2, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":247
- * self.col1.read_handle(f)
- * self.col2.read_handle(f)
- * self.read_wordlist(self.fword2id, self.id2fword, f) # <<<<<<<<<<<<<<
- * self.read_wordlist(self.eword2id, self.id2eword, f)
- * fclose(f)
- */
- __pyx_t_1 = __pyx_v_self->fword2id;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = __pyx_v_self->id2fword;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->read_wordlist(__pyx_v_self, __pyx_t_1, __pyx_t_2, __pyx_v_f); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":248
- * self.col2.read_handle(f)
- * self.read_wordlist(self.fword2id, self.id2fword, f)
- * self.read_wordlist(self.eword2id, self.id2eword, f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- __pyx_t_3 = __pyx_v_self->eword2id;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_2 = __pyx_v_self->id2eword;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->read_wordlist(__pyx_v_self, __pyx_t_3, __pyx_t_2, __pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":249
- * self.read_wordlist(self.fword2id, self.id2fword, f)
- * self.read_wordlist(self.eword2id, self.id2eword, f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- *
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.BiLex.read_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_7get_e_id(PyObject *__pyx_v_self, PyObject *__pyx_v_eword); /*proto*/
-static PyObject *__pyx_pw_3_sa_5BiLex_7get_e_id(PyObject *__pyx_v_self, PyObject *__pyx_v_eword) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_e_id (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_5BiLex_6get_e_id(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), ((PyObject *)__pyx_v_eword));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":252
- *
- *
- * def get_e_id(self, eword): # <<<<<<<<<<<<<<
- * if eword not in self.eword2id:
- * e_id = len(self.id2eword)
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_6get_e_id(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_eword) {
- PyObject *__pyx_v_e_id = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_e_id", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":253
- *
- * def get_e_id(self, eword):
- * if eword not in self.eword2id: # <<<<<<<<<<<<<<
- * e_id = len(self.id2eword)
- * self.id2eword.append(eword)
- */
- __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_eword, __pyx_v_self->eword2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":254
- * def get_e_id(self, eword):
- * if eword not in self.eword2id:
- * e_id = len(self.id2eword) # <<<<<<<<<<<<<<
- * self.id2eword.append(eword)
- * self.eword2id[eword] = e_id
- */
- __pyx_t_3 = __pyx_v_self->id2eword;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_e_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":255
- * if eword not in self.eword2id:
- * e_id = len(self.id2eword)
- * self.id2eword.append(eword) # <<<<<<<<<<<<<<
- * self.eword2id[eword] = e_id
- * return self.eword2id[eword]
- */
- __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->id2eword, __pyx_v_eword); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":256
- * e_id = len(self.id2eword)
- * self.id2eword.append(eword)
- * self.eword2id[eword] = e_id # <<<<<<<<<<<<<<
- * return self.eword2id[eword]
- *
- */
- if (PyObject_SetItem(__pyx_v_self->eword2id, __pyx_v_eword, __pyx_v_e_id) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":257
- * self.id2eword.append(eword)
- * self.eword2id[eword] = e_id
- * return self.eword2id[eword] # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyObject_GetItem(__pyx_v_self->eword2id, __pyx_v_eword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.BiLex.get_e_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_e_id);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_9get_f_id(PyObject *__pyx_v_self, PyObject *__pyx_v_fword); /*proto*/
-static PyObject *__pyx_pw_3_sa_5BiLex_9get_f_id(PyObject *__pyx_v_self, PyObject *__pyx_v_fword) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_f_id (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_5BiLex_8get_f_id(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), ((PyObject *)__pyx_v_fword));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":260
- *
- *
- * def get_f_id(self, fword): # <<<<<<<<<<<<<<
- * if fword not in self.fword2id:
- * f_id = len(self.id2fword)
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_8get_f_id(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_fword) {
- PyObject *__pyx_v_f_id = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_f_id", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":261
- *
- * def get_f_id(self, fword):
- * if fword not in self.fword2id: # <<<<<<<<<<<<<<
- * f_id = len(self.id2fword)
- * self.id2fword.append(fword)
- */
- __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_fword, __pyx_v_self->fword2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":262
- * def get_f_id(self, fword):
- * if fword not in self.fword2id:
- * f_id = len(self.id2fword) # <<<<<<<<<<<<<<
- * self.id2fword.append(fword)
- * self.fword2id[fword] = f_id
- */
- __pyx_t_3 = __pyx_v_self->id2fword;
- __Pyx_INCREF(__pyx_t_3);
- __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_f_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":263
- * if fword not in self.fword2id:
- * f_id = len(self.id2fword)
- * self.id2fword.append(fword) # <<<<<<<<<<<<<<
- * self.fword2id[fword] = f_id
- * return self.fword2id[fword]
- */
- __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->id2fword, __pyx_v_fword); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":264
- * f_id = len(self.id2fword)
- * self.id2fword.append(fword)
- * self.fword2id[fword] = f_id # <<<<<<<<<<<<<<
- * return self.fword2id[fword]
- *
- */
- if (PyObject_SetItem(__pyx_v_self->fword2id, __pyx_v_fword, __pyx_v_f_id) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":265
- * self.id2fword.append(fword)
- * self.fword2id[fword] = f_id
- * return self.fword2id[fword] # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyObject_GetItem(__pyx_v_self->fword2id, __pyx_v_fword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.BiLex.get_f_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f_id);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_11read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_5BiLex_11read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.BiLex.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_5BiLex_10read_text(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":268
- *
- *
- * def read_text(self, char* filename): # <<<<<<<<<<<<<<
- * cdef i, j, w, e_id, f_id, n_f, n_e, N
- * cdef IntList fcount
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_i = 0;
- PyObject *__pyx_v_j = 0;
- PyObject *__pyx_v_e_id = 0;
- PyObject *__pyx_v_f_id = 0;
- PyObject *__pyx_v_n_f = 0;
- PyObject *__pyx_v_N = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_fcount = 0;
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_line = NULL;
- PyObject *__pyx_v_fword = NULL;
- PyObject *__pyx_v_eword = NULL;
- PyObject *__pyx_v_score1 = NULL;
- PyObject *__pyx_v_score2 = NULL;
- PyObject *__pyx_v_index = NULL;
- PyObject *__pyx_v_b = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- PyObject *(*__pyx_t_14)(PyObject *);
- Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
- Py_ssize_t __pyx_t_17;
- long __pyx_t_18;
- long __pyx_t_19;
- int __pyx_t_20;
- double __pyx_t_21;
- PyObject *__pyx_t_22 = NULL;
- int __pyx_t_23;
- int __pyx_t_24;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":272
- * cdef IntList fcount
- *
- * fcount = IntList() # <<<<<<<<<<<<<<
- * with gzip_or_text(filename) as f:
- * # first loop merely establishes size of array objects
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_fcount = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":273
- *
- * fcount = IntList()
- * with gzip_or_text(filename) as f: # <<<<<<<<<<<<<<
- * # first loop merely establishes size of array objects
- * for line in f:
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_f = __pyx_t_1;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":275
- * with gzip_or_text(filename) as f:
- * # first loop merely establishes size of array objects
- * for line in f: # <<<<<<<<<<<<<<
- * (fword, eword, score1, score2) = line.split()
- * f_id = self.get_f_id(fword)
- */
- if (PyList_CheckExact(__pyx_v_f) || PyTuple_CheckExact(__pyx_v_f)) {
- __pyx_t_1 = __pyx_v_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_9(__pyx_t_1);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_line);
- __pyx_v_line = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":276
- * # first loop merely establishes size of array objects
- * for line in f:
- * (fword, eword, score1, score2) = line.split() # <<<<<<<<<<<<<<
- * f_id = self.get_f_id(fword)
- * e_id = self.get_e_id(eword)
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 4)) {
- if (size > 4) __Pyx_RaiseTooManyValuesError(4);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);
- __pyx_t_12 = PyTuple_GET_ITEM(sequence, 3);
- } else {
- __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyList_GET_ITEM(sequence, 2);
- __pyx_t_12 = PyList_GET_ITEM(sequence, 3);
- }
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_12);
- #else
- Py_ssize_t i;
- PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12};
- for (i=0; i < 4; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(item);
- *(temps[i]) = item;
- }
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- {
- Py_ssize_t index = -1;
- PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12};
- __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
- for (index=0; index < 4; index++) {
- PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L18_unpacking_failed;
- __Pyx_GOTREF(item);
- *(temps[index]) = item;
- }
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 4) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_14 = NULL;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- goto __pyx_L19_unpacking_done;
- __pyx_L18_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __pyx_t_14 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_L19_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_fword);
- __pyx_v_fword = __pyx_t_2;
- __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_v_eword);
- __pyx_v_eword = __pyx_t_10;
- __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_v_score1);
- __pyx_v_score1 = __pyx_t_11;
- __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_v_score2);
- __pyx_v_score2 = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":277
- * for line in f:
- * (fword, eword, score1, score2) = line.split()
- * f_id = self.get_f_id(fword) # <<<<<<<<<<<<<<
- * e_id = self.get_e_id(eword)
- * while f_id >= len(fcount):
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_f_id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_v_fword);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_fword);
- __Pyx_GIVEREF(__pyx_v_fword);
- __pyx_t_11 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_v_f_id);
- __pyx_v_f_id = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":278
- * (fword, eword, score1, score2) = line.split()
- * f_id = self.get_f_id(fword)
- * e_id = self.get_e_id(eword) # <<<<<<<<<<<<<<
- * while f_id >= len(fcount):
- * fcount.append(0)
- */
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_e_id); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_v_eword);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_eword);
- __Pyx_GIVEREF(__pyx_v_eword);
- __pyx_t_3 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_v_e_id);
- __pyx_v_e_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":279
- * f_id = self.get_f_id(fword)
- * e_id = self.get_e_id(eword)
- * while f_id >= len(fcount): # <<<<<<<<<<<<<<
- * fcount.append(0)
- * fcount.arr[f_id] = fcount.arr[f_id] + 1
- */
- while (1) {
- __pyx_t_15 = PyObject_Length(((PyObject *)__pyx_v_fcount)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_12 = PyObject_RichCompare(__pyx_v_f_id, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- if (!__pyx_t_16) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":280
- * e_id = self.get_e_id(eword)
- * while f_id >= len(fcount):
- * fcount.append(0) # <<<<<<<<<<<<<<
- * fcount.arr[f_id] = fcount.arr[f_id] + 1
- *
- */
- __pyx_t_12 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_fcount), __pyx_int_0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":281
- * while f_id >= len(fcount):
- * fcount.append(0)
- * fcount.arr[f_id] = fcount.arr[f_id] + 1 # <<<<<<<<<<<<<<
- *
- * # Allocate space for dictionary in arrays
- */
- __pyx_t_15 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_15 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_17 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_17 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- (__pyx_v_fcount->arr[__pyx_t_17]) = ((__pyx_v_fcount->arr[__pyx_t_15]) + 1);
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":284
- *
- * # Allocate space for dictionary in arrays
- * N = 0 # <<<<<<<<<<<<<<
- * n_f = len(fcount)
- * self.f_index = IntList(initial_len=n_f+1)
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_N = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":285
- * # Allocate space for dictionary in arrays
- * N = 0
- * n_f = len(fcount) # <<<<<<<<<<<<<<
- * self.f_index = IntList(initial_len=n_f+1)
- * for i from 0 <= i < n_f:
- */
- __pyx_t_8 = PyObject_Length(((PyObject *)__pyx_v_fcount)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_n_f = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":286
- * N = 0
- * n_f = len(fcount)
- * self.f_index = IntList(initial_len=n_f+1) # <<<<<<<<<<<<<<
- * for i from 0 <= i < n_f:
- * self.f_index.arr[i] = N
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_12 = PyNumber_Add(__pyx_v_n_f, __pyx_int_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_v_self->f_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->f_index));
- __pyx_v_self->f_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":287
- * n_f = len(fcount)
- * self.f_index = IntList(initial_len=n_f+1)
- * for i from 0 <= i < n_f: # <<<<<<<<<<<<<<
- * self.f_index.arr[i] = N
- * N = N + fcount.arr[i]
- */
- __pyx_t_18 = __Pyx_PyInt_AsLong(__pyx_v_n_f); if (unlikely((__pyx_t_18 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19++) {
- __pyx_t_12 = PyInt_FromLong(__pyx_t_19); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":288
- * self.f_index = IntList(initial_len=n_f+1)
- * for i from 0 <= i < n_f:
- * self.f_index.arr[i] = N # <<<<<<<<<<<<<<
- * N = N + fcount.arr[i]
- * fcount.arr[i] = 0
- */
- __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_v_N); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- (__pyx_v_self->f_index->arr[__pyx_t_8]) = __pyx_t_20;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":289
- * for i from 0 <= i < n_f:
- * self.f_index.arr[i] = N
- * N = N + fcount.arr[i] # <<<<<<<<<<<<<<
- * fcount.arr[i] = 0
- * self.f_index.arr[n_f] = N
- */
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_12 = PyInt_FromLong((__pyx_v_fcount->arr[__pyx_t_8])); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_1 = PyNumber_Add(__pyx_v_N, __pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_v_N);
- __pyx_v_N = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":290
- * self.f_index.arr[i] = N
- * N = N + fcount.arr[i]
- * fcount.arr[i] = 0 # <<<<<<<<<<<<<<
- * self.f_index.arr[n_f] = N
- * self.e_index = IntList(initial_len=N)
- */
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- (__pyx_v_fcount->arr[__pyx_t_8]) = 0;
- __pyx_t_19 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_19 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":287
- * n_f = len(fcount)
- * self.f_index = IntList(initial_len=n_f+1)
- * for i from 0 <= i < n_f: # <<<<<<<<<<<<<<
- * self.f_index.arr[i] = N
- * N = N + fcount.arr[i]
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_t_19); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":291
- * N = N + fcount.arr[i]
- * fcount.arr[i] = 0
- * self.f_index.arr[n_f] = N # <<<<<<<<<<<<<<
- * self.e_index = IntList(initial_len=N)
- * self.col1 = FloatList(initial_len=N)
- */
- __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_v_N); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n_f); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- (__pyx_v_self->f_index->arr[__pyx_t_8]) = __pyx_t_20;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":292
- * fcount.arr[i] = 0
- * self.f_index.arr[n_f] = N
- * self.e_index = IntList(initial_len=N) # <<<<<<<<<<<<<<
- * self.col1 = FloatList(initial_len=N)
- * self.col2 = FloatList(initial_len=N)
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_v_N) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_v_self->e_index);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->e_index));
- __pyx_v_self->e_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":293
- * self.f_index.arr[n_f] = N
- * self.e_index = IntList(initial_len=N)
- * self.col1 = FloatList(initial_len=N) # <<<<<<<<<<<<<<
- * self.col2 = FloatList(initial_len=N)
- *
- */
- __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__initial_len), __pyx_v_N) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FloatList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->col1);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->col1));
- __pyx_v_self->col1 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":294
- * self.e_index = IntList(initial_len=N)
- * self.col1 = FloatList(initial_len=N)
- * self.col2 = FloatList(initial_len=N) # <<<<<<<<<<<<<<
- *
- * # Re-read file, placing words into buckets
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_v_N) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FloatList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_v_self->col2);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->col2));
- __pyx_v_self->col2 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_12);
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":297
- *
- * # Re-read file, placing words into buckets
- * f.seek(0) # <<<<<<<<<<<<<<
- * for line in f:
- * (fword, eword, score1, score2) = line.split()
- */
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__seek); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_1 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_k_tuple_45), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":298
- * # Re-read file, placing words into buckets
- * f.seek(0)
- * for line in f: # <<<<<<<<<<<<<<
- * (fword, eword, score1, score2) = line.split()
- * f_id = self.get_f_id(fword)
- */
- if (PyList_CheckExact(__pyx_v_f) || PyTuple_CheckExact(__pyx_v_f)) {
- __pyx_t_1 = __pyx_v_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_12 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_12 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_12 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_12 = __pyx_t_9(__pyx_t_1);
- if (unlikely(!__pyx_t_12)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_12);
- }
- __Pyx_XDECREF(__pyx_v_line);
- __pyx_v_line = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":299
- * f.seek(0)
- * for line in f:
- * (fword, eword, score1, score2) = line.split() # <<<<<<<<<<<<<<
- * f_id = self.get_f_id(fword)
- * e_id = self.get_e_id(eword)
- */
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_3 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 4)) {
- if (size > 4) __Pyx_RaiseTooManyValuesError(4);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 2);
- __pyx_t_2 = PyTuple_GET_ITEM(sequence, 3);
- } else {
- __pyx_t_12 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_11 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_10 = PyList_GET_ITEM(sequence, 2);
- __pyx_t_2 = PyList_GET_ITEM(sequence, 3);
- }
- __Pyx_INCREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_2);
- #else
- Py_ssize_t i;
- PyObject** temps[4] = {&__pyx_t_12,&__pyx_t_11,&__pyx_t_10,&__pyx_t_2};
- for (i=0; i < 4; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(item);
- *(temps[i]) = item;
- }
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- {
- Py_ssize_t index = -1;
- PyObject** temps[4] = {&__pyx_t_12,&__pyx_t_11,&__pyx_t_10,&__pyx_t_2};
- __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
- for (index=0; index < 4; index++) {
- PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L26_unpacking_failed;
- __Pyx_GOTREF(item);
- *(temps[index]) = item;
- }
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 4) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_14 = NULL;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- goto __pyx_L27_unpacking_done;
- __pyx_L26_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __pyx_t_14 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_L27_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_fword);
- __pyx_v_fword = __pyx_t_12;
- __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_v_eword);
- __pyx_v_eword = __pyx_t_11;
- __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_v_score1);
- __pyx_v_score1 = __pyx_t_10;
- __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_v_score2);
- __pyx_v_score2 = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":300
- * for line in f:
- * (fword, eword, score1, score2) = line.split()
- * f_id = self.get_f_id(fword) # <<<<<<<<<<<<<<
- * e_id = self.get_e_id(eword)
- * index = self.f_index.arr[f_id] + fcount.arr[f_id]
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_f_id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_fword);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_fword);
- __Pyx_GIVEREF(__pyx_v_fword);
- __pyx_t_10 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_v_f_id);
- __pyx_v_f_id = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":301
- * (fword, eword, score1, score2) = line.split()
- * f_id = self.get_f_id(fword)
- * e_id = self.get_e_id(eword) # <<<<<<<<<<<<<<
- * index = self.f_index.arr[f_id] + fcount.arr[f_id]
- * fcount.arr[f_id] = fcount.arr[f_id] + 1
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_e_id); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_eword);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_eword);
- __Pyx_GIVEREF(__pyx_v_eword);
- __pyx_t_3 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_v_e_id);
- __pyx_v_e_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":302
- * f_id = self.get_f_id(fword)
- * e_id = self.get_e_id(eword)
- * index = self.f_index.arr[f_id] + fcount.arr[f_id] # <<<<<<<<<<<<<<
- * fcount.arr[f_id] = fcount.arr[f_id] + 1
- * self.e_index.arr[index] = int(e_id)
- */
- __pyx_t_15 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_15 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_17 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_17 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_3 = PyInt_FromLong(((__pyx_v_self->f_index->arr[__pyx_t_15]) + (__pyx_v_fcount->arr[__pyx_t_17]))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_index);
- __pyx_v_index = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":303
- * e_id = self.get_e_id(eword)
- * index = self.f_index.arr[f_id] + fcount.arr[f_id]
- * fcount.arr[f_id] = fcount.arr[f_id] + 1 # <<<<<<<<<<<<<<
- * self.e_index.arr[index] = int(e_id)
- * self.col1[index] = float(score1)
- */
- __pyx_t_17 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_17 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_15 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_15 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- (__pyx_v_fcount->arr[__pyx_t_15]) = ((__pyx_v_fcount->arr[__pyx_t_17]) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":304
- * index = self.f_index.arr[f_id] + fcount.arr[f_id]
- * fcount.arr[f_id] = fcount.arr[f_id] + 1
- * self.e_index.arr[index] = int(e_id) # <<<<<<<<<<<<<<
- * self.col1[index] = float(score1)
- * self.col2[index] = float(score2)
- */
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_e_id);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_e_id);
- __Pyx_GIVEREF(__pyx_v_e_id);
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_17 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_17 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- (__pyx_v_self->e_index->arr[__pyx_t_17]) = __pyx_t_20;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":305
- * fcount.arr[f_id] = fcount.arr[f_id] + 1
- * self.e_index.arr[index] = int(e_id)
- * self.col1[index] = float(score1) # <<<<<<<<<<<<<<
- * self.col2[index] = float(score2)
- *
- */
- __pyx_t_21 = __Pyx_PyObject_AsDouble(__pyx_v_score1); if (unlikely(__pyx_t_21 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_2 = PyFloat_FromDouble(__pyx_t_21); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyObject_SetItem(((PyObject *)__pyx_v_self->col1), __pyx_v_index, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":306
- * self.e_index.arr[index] = int(e_id)
- * self.col1[index] = float(score1)
- * self.col2[index] = float(score2) # <<<<<<<<<<<<<<
- *
- * # Sort buckets by eword
- */
- __pyx_t_21 = __Pyx_PyObject_AsDouble(__pyx_v_score2); if (unlikely(__pyx_t_21 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_2 = PyFloat_FromDouble(__pyx_t_21); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyObject_SetItem(((PyObject *)__pyx_v_self->col2), __pyx_v_index, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":273
- *
- * fcount = IntList()
- * with gzip_or_text(filename) as f: # <<<<<<<<<<<<<<
- * # first loop merely establishes size of array objects
- * for line in f:
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.BiLex.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_22 = PyObject_Call(__pyx_t_4, __pyx_t_10, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_22);
- __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_22);
- __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
- if (__pyx_t_16 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_23 = ((!(__pyx_t_16 != 0)) != 0);
- if (__pyx_t_23) {
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
- __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L30;
- }
- __pyx_L30:;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_4) {
- __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_46, NULL);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_23 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L31;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L1_error;
- __pyx_L31:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":309
- *
- * # Sort buckets by eword
- * for b from 0 <= b < n_f: # <<<<<<<<<<<<<<
- * i = self.f_index.arr[b]
- * j = self.f_index.arr[b+1]
- */
- if (unlikely(!__pyx_v_n_f)) { __Pyx_RaiseUnboundLocalError("n_f"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_19 = __Pyx_PyInt_AsLong(__pyx_v_n_f); if (unlikely((__pyx_t_19 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_19; __pyx_t_18++) {
- __pyx_t_3 = PyInt_FromLong(__pyx_t_18); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_b);
- __pyx_v_b = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":310
- * # Sort buckets by eword
- * for b from 0 <= b < n_f:
- * i = self.f_index.arr[b] # <<<<<<<<<<<<<<
- * j = self.f_index.arr[b+1]
- * self.qsort(i,j, "")
- */
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_b); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_8])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":311
- * for b from 0 <= b < n_f:
- * i = self.f_index.arr[b]
- * j = self.f_index.arr[b+1] # <<<<<<<<<<<<<<
- * self.qsort(i,j, "")
- *
- */
- __pyx_t_3 = PyNumber_Add(__pyx_v_b, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_8])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_j);
- __pyx_v_j = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":312
- * i = self.f_index.arr[b]
- * j = self.f_index.arr[b+1]
- * self.qsort(i,j, "") # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_24 = __Pyx_PyInt_AsInt(__pyx_v_j); if (unlikely((__pyx_t_24 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->qsort(__pyx_v_self, __pyx_t_20, __pyx_t_24, ((PyObject *)__pyx_kp_s_47)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_18 = __Pyx_PyInt_AsLong(__pyx_v_b); if (unlikely((__pyx_t_18 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":309
- *
- * # Sort buckets by eword
- * for b from 0 <= b < n_f: # <<<<<<<<<<<<<<
- * i = self.f_index.arr[b]
- * j = self.f_index.arr[b+1]
- */
- __pyx_t_3 = PyInt_FromLong(__pyx_t_18); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_b);
- __pyx_v_b = __pyx_t_3;
- __pyx_t_3 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13);
- __Pyx_AddTraceback("_sa.BiLex.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_j);
- __Pyx_XDECREF(__pyx_v_e_id);
- __Pyx_XDECREF(__pyx_v_f_id);
- __Pyx_XDECREF(__pyx_v_n_f);
- __Pyx_XDECREF(__pyx_v_N);
- __Pyx_XDECREF((PyObject *)__pyx_v_fcount);
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_line);
- __Pyx_XDECREF(__pyx_v_fword);
- __Pyx_XDECREF(__pyx_v_eword);
- __Pyx_XDECREF(__pyx_v_score1);
- __Pyx_XDECREF(__pyx_v_score2);
- __Pyx_XDECREF(__pyx_v_index);
- __Pyx_XDECREF(__pyx_v_b);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":315
- *
- *
- * cdef swap(self, int i, int j): # <<<<<<<<<<<<<<
- * cdef int itmp
- * cdef float ftmp
- */
-
-static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, int __pyx_v_i, int __pyx_v_j) {
- int __pyx_v_itmp;
- float __pyx_v_ftmp;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("swap", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":319
- * cdef float ftmp
- *
- * if i == j: # <<<<<<<<<<<<<<
- * return
- *
- */
- __pyx_t_1 = ((__pyx_v_i == __pyx_v_j) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":320
- *
- * if i == j:
- * return # <<<<<<<<<<<<<<
- *
- * itmp = self.e_index.arr[i]
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":322
- * return
- *
- * itmp = self.e_index.arr[i] # <<<<<<<<<<<<<<
- * self.e_index.arr[i] = self.e_index.arr[j]
- * self.e_index.arr[j] = itmp
- */
- __pyx_v_itmp = (__pyx_v_self->e_index->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":323
- *
- * itmp = self.e_index.arr[i]
- * self.e_index.arr[i] = self.e_index.arr[j] # <<<<<<<<<<<<<<
- * self.e_index.arr[j] = itmp
- *
- */
- (__pyx_v_self->e_index->arr[__pyx_v_i]) = (__pyx_v_self->e_index->arr[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":324
- * itmp = self.e_index.arr[i]
- * self.e_index.arr[i] = self.e_index.arr[j]
- * self.e_index.arr[j] = itmp # <<<<<<<<<<<<<<
- *
- * ftmp = self.col1.arr[i]
- */
- (__pyx_v_self->e_index->arr[__pyx_v_j]) = __pyx_v_itmp;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":326
- * self.e_index.arr[j] = itmp
- *
- * ftmp = self.col1.arr[i] # <<<<<<<<<<<<<<
- * self.col1.arr[i] = self.col1.arr[j]
- * self.col1.arr[j] = ftmp
- */
- __pyx_v_ftmp = (__pyx_v_self->col1->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":327
- *
- * ftmp = self.col1.arr[i]
- * self.col1.arr[i] = self.col1.arr[j] # <<<<<<<<<<<<<<
- * self.col1.arr[j] = ftmp
- *
- */
- (__pyx_v_self->col1->arr[__pyx_v_i]) = (__pyx_v_self->col1->arr[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":328
- * ftmp = self.col1.arr[i]
- * self.col1.arr[i] = self.col1.arr[j]
- * self.col1.arr[j] = ftmp # <<<<<<<<<<<<<<
- *
- * ftmp = self.col2.arr[i]
- */
- (__pyx_v_self->col1->arr[__pyx_v_j]) = __pyx_v_ftmp;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":330
- * self.col1.arr[j] = ftmp
- *
- * ftmp = self.col2.arr[i] # <<<<<<<<<<<<<<
- * self.col2.arr[i] = self.col2.arr[j]
- * self.col2.arr[j] = ftmp
- */
- __pyx_v_ftmp = (__pyx_v_self->col2->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":331
- *
- * ftmp = self.col2.arr[i]
- * self.col2.arr[i] = self.col2.arr[j] # <<<<<<<<<<<<<<
- * self.col2.arr[j] = ftmp
- *
- */
- (__pyx_v_self->col2->arr[__pyx_v_i]) = (__pyx_v_self->col2->arr[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":332
- * ftmp = self.col2.arr[i]
- * self.col2.arr[i] = self.col2.arr[j]
- * self.col2.arr[j] = ftmp # <<<<<<<<<<<<<<
- *
- *
- */
- (__pyx_v_self->col2->arr[__pyx_v_j]) = __pyx_v_ftmp;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":335
- *
- *
- * cdef qsort(self, int i, int j, pad): # <<<<<<<<<<<<<<
- * cdef int pval, p
- *
- */
-
-static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, int __pyx_v_i, int __pyx_v_j, PyObject *__pyx_v_pad) {
- int __pyx_v_pval;
- int __pyx_v_p;
- long __pyx_v_k;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("qsort", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":338
- * cdef int pval, p
- *
- * if i > j: # <<<<<<<<<<<<<<
- * raise Exception("Sort error in CLex")
- * if i == j: #empty interval
- */
- __pyx_t_1 = ((__pyx_v_i > __pyx_v_j) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":339
- *
- * if i > j:
- * raise Exception("Sort error in CLex") # <<<<<<<<<<<<<<
- * if i == j: #empty interval
- * return
- */
- __pyx_t_2 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_49), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_Raise(__pyx_t_2, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":340
- * if i > j:
- * raise Exception("Sort error in CLex")
- * if i == j: #empty interval # <<<<<<<<<<<<<<
- * return
- * if i == j-1: # singleton interval
- */
- __pyx_t_1 = ((__pyx_v_i == __pyx_v_j) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":341
- * raise Exception("Sort error in CLex")
- * if i == j: #empty interval
- * return # <<<<<<<<<<<<<<
- * if i == j-1: # singleton interval
- * return
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":342
- * if i == j: #empty interval
- * return
- * if i == j-1: # singleton interval # <<<<<<<<<<<<<<
- * return
- *
- */
- __pyx_t_1 = ((__pyx_v_i == (__pyx_v_j - 1)) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":343
- * return
- * if i == j-1: # singleton interval
- * return # <<<<<<<<<<<<<<
- *
- * p = (i+j)/2
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":345
- * return
- *
- * p = (i+j)/2 # <<<<<<<<<<<<<<
- * pval = self.e_index.arr[p]
- * self.swap(i, p)
- */
- __pyx_v_p = __Pyx_div_long((__pyx_v_i + __pyx_v_j), 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":346
- *
- * p = (i+j)/2
- * pval = self.e_index.arr[p] # <<<<<<<<<<<<<<
- * self.swap(i, p)
- * p = i
- */
- __pyx_v_pval = (__pyx_v_self->e_index->arr[__pyx_v_p]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":347
- * p = (i+j)/2
- * pval = self.e_index.arr[p]
- * self.swap(i, p) # <<<<<<<<<<<<<<
- * p = i
- * for k from i+1 <= k < j:
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->swap(__pyx_v_self, __pyx_v_i, __pyx_v_p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":348
- * pval = self.e_index.arr[p]
- * self.swap(i, p)
- * p = i # <<<<<<<<<<<<<<
- * for k from i+1 <= k < j:
- * if pval >= self.e_index.arr[k]:
- */
- __pyx_v_p = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":349
- * self.swap(i, p)
- * p = i
- * for k from i+1 <= k < j: # <<<<<<<<<<<<<<
- * if pval >= self.e_index.arr[k]:
- * self.swap(p+1, k)
- */
- __pyx_t_3 = __pyx_v_j;
- for (__pyx_v_k = (__pyx_v_i + 1); __pyx_v_k < __pyx_t_3; __pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":350
- * p = i
- * for k from i+1 <= k < j:
- * if pval >= self.e_index.arr[k]: # <<<<<<<<<<<<<<
- * self.swap(p+1, k)
- * self.swap(p, p+1)
- */
- __pyx_t_1 = ((__pyx_v_pval >= (__pyx_v_self->e_index->arr[__pyx_v_k])) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":351
- * for k from i+1 <= k < j:
- * if pval >= self.e_index.arr[k]:
- * self.swap(p+1, k) # <<<<<<<<<<<<<<
- * self.swap(p, p+1)
- * p = p + 1
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->swap(__pyx_v_self, (__pyx_v_p + 1), __pyx_v_k); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":352
- * if pval >= self.e_index.arr[k]:
- * self.swap(p+1, k)
- * self.swap(p, p+1) # <<<<<<<<<<<<<<
- * p = p + 1
- * self.qsort(i,p, pad+" ")
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->swap(__pyx_v_self, __pyx_v_p, (__pyx_v_p + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":353
- * self.swap(p+1, k)
- * self.swap(p, p+1)
- * p = p + 1 # <<<<<<<<<<<<<<
- * self.qsort(i,p, pad+" ")
- * self.qsort(p+1,j, pad+" ")
- */
- __pyx_v_p = (__pyx_v_p + 1);
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":354
- * self.swap(p, p+1)
- * p = p + 1
- * self.qsort(i,p, pad+" ") # <<<<<<<<<<<<<<
- * self.qsort(p+1,j, pad+" ")
- *
- */
- __pyx_t_2 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->qsort(__pyx_v_self, __pyx_v_i, __pyx_v_p, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":355
- * p = p + 1
- * self.qsort(i,p, pad+" ")
- * self.qsort(p+1,j, pad+" ") # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->qsort(__pyx_v_self, (__pyx_v_p + 1), __pyx_v_j, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.BiLex.qsort", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_13write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_5BiLex_13write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.BiLex.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_5BiLex_12write_enhanced(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":358
- *
- *
- * def write_enhanced(self, char* filename): # <<<<<<<<<<<<<<
- * with open(filename, "w") as f:
- * for i in self.f_index:
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_v_s1 = NULL;
- PyObject *__pyx_v_s2 = NULL;
- PyObject *__pyx_v_w = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- PyObject *(*__pyx_t_13)(PyObject *);
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
- int __pyx_t_16;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_enhanced", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":359
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * for i in self.f_index:
- * f.write("%d " % i)
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_f = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":360
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f:
- * for i in self.f_index: # <<<<<<<<<<<<<<
- * f.write("%d " % i)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->f_index)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->f_index))) {
- __pyx_t_4 = ((PyObject *)__pyx_v_self->f_index); __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_self->f_index)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_9(__pyx_t_4);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":361
- * with open(filename, "w") as f:
- * for i in self.f_index:
- * f.write("%d " % i) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for i, s1, s2 in zip(self.e_index, self.col1, self.col2):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":362
- * for i in self.f_index:
- * f.write("%d " % i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i, s1, s2 in zip(self.e_index, self.col1, self.col2):
- * f.write("%d %f %f " % (i, s1, s2))
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_51), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":363
- * f.write("%d " % i)
- * f.write("\n")
- * for i, s1, s2 in zip(self.e_index, self.col1, self.col2): # <<<<<<<<<<<<<<
- * f.write("%d %f %f " % (i, s1, s2))
- * f.write("\n")
- */
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->e_index));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self->e_index));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->e_index));
- __Pyx_INCREF(((PyObject *)__pyx_v_self->col1));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->col1));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->col1));
- __Pyx_INCREF(((PyObject *)__pyx_v_self->col2));
- PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->col2));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->col2));
- __pyx_t_4 = PyObject_Call(__pyx_builtin_zip, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
- __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_9(__pyx_t_2);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
- PyObject* sequence = __pyx_t_4;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_10 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_1 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_11);
- #else
- __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- #endif
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_12 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
- index = 0; __pyx_t_10 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_10)) goto __pyx_L20_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_10);
- index = 1; __pyx_t_1 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_1)) goto __pyx_L20_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_1);
- index = 2; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L20_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_11);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_13 = NULL;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- goto __pyx_L21_unpacking_done;
- __pyx_L20_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_13 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_L21_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_10;
- __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_v_s1);
- __pyx_v_s1 = __pyx_t_1;
- __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_v_s2);
- __pyx_v_s2 = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":364
- * f.write("\n")
- * for i, s1, s2 in zip(self.e_index, self.col1, self.col2):
- * f.write("%d %f %f " % (i, s1, s2)) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for i, w in enumerate(self.id2fword):
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- __Pyx_INCREF(__pyx_v_s1);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_s1);
- __Pyx_GIVEREF(__pyx_v_s1);
- __Pyx_INCREF(__pyx_v_s2);
- PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_v_s2);
- __Pyx_GIVEREF(__pyx_v_s2);
- __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_52), ((PyObject *)__pyx_t_11)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":365
- * for i, s1, s2 in zip(self.e_index, self.col1, self.col2):
- * f.write("%d %f %f " % (i, s1, s2))
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i, w in enumerate(self.id2fword):
- * f.write("%d %s " % (i, w))
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_53), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":366
- * f.write("%d %f %f " % (i, s1, s2))
- * f.write("\n")
- * for i, w in enumerate(self.id2fword): # <<<<<<<<<<<<<<
- * f.write("%d %s " % (i, w))
- * f.write("\n")
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_1 = __pyx_int_0;
- if (PyList_CheckExact(__pyx_v_self->id2fword) || PyTuple_CheckExact(__pyx_v_self->id2fword)) {
- __pyx_t_2 = __pyx_v_self->id2fword; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->id2fword); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_11 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_11 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_11 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_11 = __pyx_t_9(__pyx_t_2);
- if (unlikely(!__pyx_t_11)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_11);
- }
- __Pyx_XDECREF(__pyx_v_w);
- __pyx_v_w = __pyx_t_11;
- __pyx_t_11 = 0;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_1;
- __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_1 = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":367
- * f.write("\n")
- * for i, w in enumerate(self.id2fword):
- * f.write("%d %s " % (i, w)) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for i, w in enumerate(self.id2eword):
- */
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- __Pyx_INCREF(__pyx_v_w);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_w);
- __Pyx_GIVEREF(__pyx_v_w);
- __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_54), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_10));
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_10));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_10));
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":368
- * for i, w in enumerate(self.id2fword):
- * f.write("%d %s " % (i, w))
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i, w in enumerate(self.id2eword):
- * f.write("%d %s " % (i, w))
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_55), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":369
- * f.write("%d %s " % (i, w))
- * f.write("\n")
- * for i, w in enumerate(self.id2eword): # <<<<<<<<<<<<<<
- * f.write("%d %s " % (i, w))
- * f.write("\n")
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_2 = __pyx_int_0;
- if (PyList_CheckExact(__pyx_v_self->id2eword) || PyTuple_CheckExact(__pyx_v_self->id2eword)) {
- __pyx_t_1 = __pyx_v_self->id2eword; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->id2eword); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_10 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_10 = __pyx_t_9(__pyx_t_1);
- if (unlikely(!__pyx_t_10)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_10);
- }
- __Pyx_XDECREF(__pyx_v_w);
- __pyx_v_w = __pyx_t_10;
- __pyx_t_10 = 0;
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_2;
- __pyx_t_10 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_2);
- __pyx_t_2 = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":370
- * f.write("\n")
- * for i, w in enumerate(self.id2eword):
- * f.write("%d %s " % (i, w)) # <<<<<<<<<<<<<<
- * f.write("\n")
- *
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- __Pyx_INCREF(__pyx_v_w);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_w);
- __Pyx_GIVEREF(__pyx_v_w);
- __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_54), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_11));
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_11));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
- __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":371
- * for i, w in enumerate(self.id2eword):
- * f.write("%d %s " % (i, w))
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_56), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":359
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * for i in self.f_index:
- * f.write("%d " % i)
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.BiLex.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_15 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_16 = ((!(__pyx_t_14 != 0)) != 0);
- if (__pyx_t_16) {
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_11);
- __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_11 = 0;
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L28;
- }
- __pyx_L28:;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_57, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_16 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L29;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L1_error;
- __pyx_L29:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_sa.BiLex.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_s1);
- __Pyx_XDECREF(__pyx_v_s2);
- __Pyx_XDECREF(__pyx_v_w);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_15get_score(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_5BiLex_15get_score(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_fword = 0;
- PyObject *__pyx_v_eword = 0;
- PyObject *__pyx_v_col = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_score (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fword,&__pyx_n_s__eword,&__pyx_n_s__col,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fword)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__eword)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_score", 1, 3, 3, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__col)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_score", 1, 3, 3, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_score") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_fword = values[0];
- __pyx_v_eword = values[1];
- __pyx_v_col = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("get_score", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.BiLex.get_score", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_5BiLex_14get_score(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), __pyx_v_fword, __pyx_v_eword, __pyx_v_col);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":374
- *
- *
- * def get_score(self, fword, eword, col): # <<<<<<<<<<<<<<
- * cdef e_id, f_id, low, high, midpoint, val
- *
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, PyObject *__pyx_v_fword, PyObject *__pyx_v_eword, PyObject *__pyx_v_col) {
- PyObject *__pyx_v_e_id = 0;
- PyObject *__pyx_v_f_id = 0;
- PyObject *__pyx_v_low = 0;
- PyObject *__pyx_v_high = 0;
- PyObject *__pyx_v_midpoint = 0;
- PyObject *__pyx_v_val = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_score", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":377
- * cdef e_id, f_id, low, high, midpoint, val
- *
- * if eword not in self.eword2id: # <<<<<<<<<<<<<<
- * return None
- * if fword not in self.fword2id:
- */
- __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_eword, __pyx_v_self->eword2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":378
- *
- * if eword not in self.eword2id:
- * return None # <<<<<<<<<<<<<<
- * if fword not in self.fword2id:
- * return None
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":379
- * if eword not in self.eword2id:
- * return None
- * if fword not in self.fword2id: # <<<<<<<<<<<<<<
- * return None
- * f_id = self.fword2id[fword]
- */
- __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_fword, __pyx_v_self->fword2id, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = (__pyx_t_2 != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":380
- * return None
- * if fword not in self.fword2id:
- * return None # <<<<<<<<<<<<<<
- * f_id = self.fword2id[fword]
- * e_id = self.eword2id[eword]
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":381
- * if fword not in self.fword2id:
- * return None
- * f_id = self.fword2id[fword] # <<<<<<<<<<<<<<
- * e_id = self.eword2id[eword]
- * low = self.f_index.arr[f_id]
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_v_self->fword2id, __pyx_v_fword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_f_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":382
- * return None
- * f_id = self.fword2id[fword]
- * e_id = self.eword2id[eword] # <<<<<<<<<<<<<<
- * low = self.f_index.arr[f_id]
- * high = self.f_index.arr[f_id+1]
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_v_self->eword2id, __pyx_v_eword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_e_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":383
- * f_id = self.fword2id[fword]
- * e_id = self.eword2id[eword]
- * low = self.f_index.arr[f_id] # <<<<<<<<<<<<<<
- * high = self.f_index.arr[f_id+1]
- * while high - low > 0:
- */
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_low = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":384
- * e_id = self.eword2id[eword]
- * low = self.f_index.arr[f_id]
- * high = self.f_index.arr[f_id+1] # <<<<<<<<<<<<<<
- * while high - low > 0:
- * midpoint = (low+high)/2
- */
- __pyx_t_3 = PyNumber_Add(__pyx_v_f_id, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_high = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":385
- * low = self.f_index.arr[f_id]
- * high = self.f_index.arr[f_id+1]
- * while high - low > 0: # <<<<<<<<<<<<<<
- * midpoint = (low+high)/2
- * val = self.e_index.arr[midpoint]
- */
- while (1) {
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_high, __pyx_v_low); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (!__pyx_t_1) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":386
- * high = self.f_index.arr[f_id+1]
- * while high - low > 0:
- * midpoint = (low+high)/2 # <<<<<<<<<<<<<<
- * val = self.e_index.arr[midpoint]
- * if val == e_id:
- */
- __pyx_t_5 = PyNumber_Add(__pyx_v_low, __pyx_v_high); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_v_midpoint);
- __pyx_v_midpoint = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":387
- * while high - low > 0:
- * midpoint = (low+high)/2
- * val = self.e_index.arr[midpoint] # <<<<<<<<<<<<<<
- * if val == e_id:
- * if col == 0:
- */
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyInt_FromLong((__pyx_v_self->e_index->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_val);
- __pyx_v_val = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":388
- * midpoint = (low+high)/2
- * val = self.e_index.arr[midpoint]
- * if val == e_id: # <<<<<<<<<<<<<<
- * if col == 0:
- * return self.col1.arr[midpoint]
- */
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":389
- * val = self.e_index.arr[midpoint]
- * if val == e_id:
- * if col == 0: # <<<<<<<<<<<<<<
- * return self.col1.arr[midpoint]
- * if col == 1:
- */
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_col, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":390
- * if val == e_id:
- * if col == 0:
- * return self.col1.arr[midpoint] # <<<<<<<<<<<<<<
- * if col == 1:
- * return self.col2.arr[midpoint]
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyFloat_FromDouble((__pyx_v_self->col1->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":391
- * if col == 0:
- * return self.col1.arr[midpoint]
- * if col == 1: # <<<<<<<<<<<<<<
- * return self.col2.arr[midpoint]
- * if val > e_id:
- */
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_col, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":392
- * return self.col1.arr[midpoint]
- * if col == 1:
- * return self.col2.arr[midpoint] # <<<<<<<<<<<<<<
- * if val > e_id:
- * high = midpoint
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyFloat_FromDouble((__pyx_v_self->col2->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
- goto __pyx_L9;
- }
- __pyx_L9:;
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":393
- * if col == 1:
- * return self.col2.arr[midpoint]
- * if val > e_id: # <<<<<<<<<<<<<<
- * high = midpoint
- * if val < e_id:
- */
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":394
- * return self.col2.arr[midpoint]
- * if val > e_id:
- * high = midpoint # <<<<<<<<<<<<<<
- * if val < e_id:
- * low = midpoint + 1
- */
- __Pyx_INCREF(__pyx_v_midpoint);
- __Pyx_DECREF(__pyx_v_high);
- __pyx_v_high = __pyx_v_midpoint;
- goto __pyx_L10;
- }
- __pyx_L10:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":395
- * if val > e_id:
- * high = midpoint
- * if val < e_id: # <<<<<<<<<<<<<<
- * low = midpoint + 1
- * return None
- */
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":396
- * high = midpoint
- * if val < e_id:
- * low = midpoint + 1 # <<<<<<<<<<<<<<
- * return None
- *
- */
- __pyx_t_3 = PyNumber_Add(__pyx_v_midpoint, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_v_low);
- __pyx_v_low = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L11;
- }
- __pyx_L11:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":397
- * if val < e_id:
- * low = midpoint + 1
- * return None # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.BiLex.get_score", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_e_id);
- __Pyx_XDECREF(__pyx_v_f_id);
- __Pyx_XDECREF(__pyx_v_low);
- __Pyx_XDECREF(__pyx_v_high);
- __Pyx_XDECREF(__pyx_v_midpoint);
- __Pyx_XDECREF(__pyx_v_val);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5BiLex_17write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static char __pyx_doc_3_sa_5BiLex_16write_text[] = "Note: does not guarantee writing the dictionary in the original order";
-static PyObject *__pyx_pw_3_sa_5BiLex_17write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.BiLex.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_5BiLex_16write_text(((struct __pyx_obj_3_sa_BiLex *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":400
- *
- *
- * def write_text(self, char* filename): # <<<<<<<<<<<<<<
- * """Note: does not guarantee writing the dictionary in the original order"""
- * cdef i, N, e_id, f_id
- */
-
-static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_i = 0;
- PyObject *__pyx_v_N = 0;
- PyObject *__pyx_v_e_id = 0;
- PyObject *__pyx_v_f_id = 0;
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_score1 = NULL;
- PyObject *__pyx_v_score2 = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- long __pyx_t_9;
- long __pyx_t_10;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- int __pyx_t_14;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":404
- * cdef i, N, e_id, f_id
- *
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * N = len(self.e_index)
- * f_id = 0
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_f = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":405
- *
- * with open(filename, "w") as f:
- * N = len(self.e_index) # <<<<<<<<<<<<<<
- * f_id = 0
- * for i from 0 <= i < N:
- */
- __pyx_t_4 = ((PyObject *)__pyx_v_self->e_index);
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_8 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_v_N = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":406
- * with open(filename, "w") as f:
- * N = len(self.e_index)
- * f_id = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < N:
- * while self.f_index.arr[f_id+1] == i:
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_f_id = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":407
- * N = len(self.e_index)
- * f_id = 0
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * while self.f_index.arr[f_id+1] == i:
- * f_id = f_id + 1
- */
- __pyx_t_9 = __Pyx_PyInt_AsLong(__pyx_v_N); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10++) {
- __pyx_t_4 = PyInt_FromLong(__pyx_t_10); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":408
- * f_id = 0
- * for i from 0 <= i < N:
- * while self.f_index.arr[f_id+1] == i: # <<<<<<<<<<<<<<
- * f_id = f_id + 1
- * e_id = self.e_index.arr[i]
- */
- while (1) {
- __pyx_t_4 = PyNumber_Add(__pyx_v_f_id, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_8])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_v_i, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_11) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":409
- * for i from 0 <= i < N:
- * while self.f_index.arr[f_id+1] == i:
- * f_id = f_id + 1 # <<<<<<<<<<<<<<
- * e_id = self.e_index.arr[i]
- * score1 = self.col1.arr[i]
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_f_id, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_f_id);
- __pyx_v_f_id = __pyx_t_1;
- __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":410
- * while self.f_index.arr[f_id+1] == i:
- * f_id = f_id + 1
- * e_id = self.e_index.arr[i] # <<<<<<<<<<<<<<
- * score1 = self.col1.arr[i]
- * score2 = self.col2.arr[i]
- */
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_1 = PyInt_FromLong((__pyx_v_self->e_index->arr[__pyx_t_8])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_e_id);
- __pyx_v_e_id = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":411
- * f_id = f_id + 1
- * e_id = self.e_index.arr[i]
- * score1 = self.col1.arr[i] # <<<<<<<<<<<<<<
- * score2 = self.col2.arr[i]
- * f.write("%s %s %.6f %.6f\n" % (self.id2fword[f_id], self.id2eword[e_id], score1, score2))
- */
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->col1->arr[__pyx_t_8])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_score1);
- __pyx_v_score1 = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":412
- * e_id = self.e_index.arr[i]
- * score1 = self.col1.arr[i]
- * score2 = self.col2.arr[i] # <<<<<<<<<<<<<<
- * f.write("%s %s %.6f %.6f\n" % (self.id2fword[f_id], self.id2eword[e_id], score1, score2))
- */
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->col2->arr[__pyx_t_8])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_score2);
- __pyx_v_score2 = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":413
- * score1 = self.col1.arr[i]
- * score2 = self.col2.arr[i]
- * f.write("%s %s %.6f %.6f\n" % (self.id2fword[f_id], self.id2eword[e_id], score1, score2)) # <<<<<<<<<<<<<<
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_GetItem(__pyx_v_self->id2fword, __pyx_v_f_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyObject_GetItem(__pyx_v_self->id2eword, __pyx_v_e_id); if (!__pyx_t_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_12 = PyTuple_New(4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_score1);
- PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_v_score1);
- __Pyx_GIVEREF(__pyx_v_score1);
- __Pyx_INCREF(__pyx_v_score2);
- PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_v_score2);
- __Pyx_GIVEREF(__pyx_v_score2);
- __pyx_t_4 = 0;
- __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_58), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_10 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":407
- * N = len(self.e_index)
- * f_id = 0
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * while self.f_index.arr[f_id+1] == i:
- * f_id = f_id + 1
- */
- __pyx_t_2 = PyInt_FromLong(__pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_2;
- __pyx_t_2 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":404
- * cdef i, N, e_id, f_id
- *
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * N = len(self.e_index)
- * f_id = 0
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.BiLex.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_12, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_13 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_14 = ((!(__pyx_t_11 != 0)) != 0);
- if (__pyx_t_14) {
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_ErrRestore(__pyx_t_2, __pyx_t_12, __pyx_t_1);
- __pyx_t_2 = 0; __pyx_t_12 = 0; __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L22;
- }
- __pyx_L22:;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_59, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L23;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L1_error;
- __pyx_L23:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_sa.BiLex.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_N);
- __Pyx_XDECREF(__pyx_v_e_id);
- __Pyx_XDECREF(__pyx_v_f_id);
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_score1);
- __Pyx_XDECREF(__pyx_v_score2);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":21
- * cdef int LOWER_MASK[32]
- *
- * cdef void _init_lower_mask(): # <<<<<<<<<<<<<<
- * cdef unsigned i
- * cdef int mask = 0
- */
-
-static void __pyx_f_3_sa__init_lower_mask(void) {
- unsigned int __pyx_v_i;
- int __pyx_v_mask;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- unsigned int __pyx_t_2;
- __Pyx_RefNannySetupContext("_init_lower_mask", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":23
- * cdef void _init_lower_mask():
- * cdef unsigned i
- * cdef int mask = 0 # <<<<<<<<<<<<<<
- * for i in range(MIN_BOTTOM_SIZE):
- * mask = (mask << 1) + 1
- */
- __pyx_v_mask = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":24
- * cdef unsigned i
- * cdef int mask = 0
- * for i in range(MIN_BOTTOM_SIZE): # <<<<<<<<<<<<<<
- * mask = (mask << 1) + 1
- * LOWER_MASK[i] = mask
- */
- __pyx_t_1 = __pyx_v_3_sa_MIN_BOTTOM_SIZE;
- for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
- __pyx_v_i = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":25
- * cdef int mask = 0
- * for i in range(MIN_BOTTOM_SIZE):
- * mask = (mask << 1) + 1 # <<<<<<<<<<<<<<
- * LOWER_MASK[i] = mask
- *
- */
- __pyx_v_mask = ((__pyx_v_mask << 1) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":26
- * for i in range(MIN_BOTTOM_SIZE):
- * mask = (mask << 1) + 1
- * LOWER_MASK[i] = mask # <<<<<<<<<<<<<<
- *
- * _init_lower_mask()
- */
- (__pyx_v_3_sa_LOWER_MASK[__pyx_v_i]) = __pyx_v_mask;
- }
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":37
- *
- *
- * cdef _BitSet* new_BitSet(): # <<<<<<<<<<<<<<
- * cdef _BitSet* b
- *
- */
-
-static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {
- struct __pyx_t_3_sa__BitSet *__pyx_v_b;
- struct __pyx_t_3_sa__BitSet *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("new_BitSet", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":40
- * cdef _BitSet* b
- *
- * b = <_BitSet*> malloc(sizeof(_BitSet)) # <<<<<<<<<<<<<<
- * b.bitset = 0
- * b.min_val = -1
- */
- __pyx_v_b = ((struct __pyx_t_3_sa__BitSet *)malloc((sizeof(struct __pyx_t_3_sa__BitSet))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":41
- *
- * b = <_BitSet*> malloc(sizeof(_BitSet))
- * b.bitset = 0 # <<<<<<<<<<<<<<
- * b.min_val = -1
- * b.max_val = -1
- */
- __pyx_v_b->bitset = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":42
- * b = <_BitSet*> malloc(sizeof(_BitSet))
- * b.bitset = 0
- * b.min_val = -1 # <<<<<<<<<<<<<<
- * b.max_val = -1
- * b.size = 0
- */
- __pyx_v_b->min_val = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":43
- * b.bitset = 0
- * b.min_val = -1
- * b.max_val = -1 # <<<<<<<<<<<<<<
- * b.size = 0
- * return b
- */
- __pyx_v_b->max_val = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":44
- * b.min_val = -1
- * b.max_val = -1
- * b.size = 0 # <<<<<<<<<<<<<<
- * return b
- *
- */
- __pyx_v_b->size = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":45
- * b.max_val = -1
- * b.size = 0
- * return b # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_b;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":48
- *
- *
- * cdef int bitset_findsucc(_BitSet* b, int i): # <<<<<<<<<<<<<<
- * cdef int bitset, mask
- * cdef int low, high, mid
- */
-
-static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b, int __pyx_v_i) {
- int __pyx_v_bitset;
- int __pyx_v_mask;
- int __pyx_v_low;
- int __pyx_v_high;
- int __pyx_v_mid;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- __Pyx_RefNannySetupContext("bitset_findsucc", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":52
- * cdef int low, high, mid
- *
- * if b.max_val == -1 or i >= b.max_val: # <<<<<<<<<<<<<<
- * return -1
- * if i < b.min_val:
- */
- __pyx_t_1 = ((__pyx_v_b->max_val == -1) != 0);
- if (!__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_i >= __pyx_v_b->max_val) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":53
- *
- * if b.max_val == -1 or i >= b.max_val:
- * return -1 # <<<<<<<<<<<<<<
- * if i < b.min_val:
- * return b.min_val
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":54
- * if b.max_val == -1 or i >= b.max_val:
- * return -1
- * if i < b.min_val: # <<<<<<<<<<<<<<
- * return b.min_val
- *
- */
- __pyx_t_3 = ((__pyx_v_i < __pyx_v_b->min_val) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":55
- * return -1
- * if i < b.min_val:
- * return b.min_val # <<<<<<<<<<<<<<
- *
- * bitset = b.bitset & ~LOWER_MASK[i]
- */
- __pyx_r = __pyx_v_b->min_val;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":57
- * return b.min_val
- *
- * bitset = b.bitset & ~LOWER_MASK[i] # <<<<<<<<<<<<<<
- * low = i+1
- * high = b.max_val+1
- */
- __pyx_v_bitset = (__pyx_v_b->bitset & (~(__pyx_v_3_sa_LOWER_MASK[__pyx_v_i])));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":58
- *
- * bitset = b.bitset & ~LOWER_MASK[i]
- * low = i+1 # <<<<<<<<<<<<<<
- * high = b.max_val+1
- * while low < high-1:
- */
- __pyx_v_low = (__pyx_v_i + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":59
- * bitset = b.bitset & ~LOWER_MASK[i]
- * low = i+1
- * high = b.max_val+1 # <<<<<<<<<<<<<<
- * while low < high-1:
- * mid = (high + low)/2
- */
- __pyx_v_high = (__pyx_v_b->max_val + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":60
- * low = i+1
- * high = b.max_val+1
- * while low < high-1: # <<<<<<<<<<<<<<
- * mid = (high + low)/2
- * mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_low < (__pyx_v_high - 1)) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":61
- * high = b.max_val+1
- * while low < high-1:
- * mid = (high + low)/2 # <<<<<<<<<<<<<<
- * mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])
- * if bitset & mask == 0:
- */
- __pyx_v_mid = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":62
- * while low < high-1:
- * mid = (high + low)/2
- * mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1]) # <<<<<<<<<<<<<<
- * if bitset & mask == 0:
- * low = mid
- */
- __pyx_v_mask = (~((__pyx_v_3_sa_LOWER_MASK[(__pyx_v_high - 1)]) ^ (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_mid - 1)])));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":63
- * mid = (high + low)/2
- * mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])
- * if bitset & mask == 0: # <<<<<<<<<<<<<<
- * low = mid
- * else:
- */
- __pyx_t_3 = (((__pyx_v_bitset & __pyx_v_mask) == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":64
- * mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])
- * if bitset & mask == 0:
- * low = mid # <<<<<<<<<<<<<<
- * else:
- * bitset = bitset & mask
- */
- __pyx_v_low = __pyx_v_mid;
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":66
- * low = mid
- * else:
- * bitset = bitset & mask # <<<<<<<<<<<<<<
- * high = mid
- * return low
- */
- __pyx_v_bitset = (__pyx_v_bitset & __pyx_v_mask);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":67
- * else:
- * bitset = bitset & mask
- * high = mid # <<<<<<<<<<<<<<
- * return low
- *
- */
- __pyx_v_high = __pyx_v_mid;
- }
- __pyx_L7:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":68
- * bitset = bitset & mask
- * high = mid
- * return low # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_low;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":71
- *
- *
- * cdef int bitset_insert(_BitSet* b, int i): # <<<<<<<<<<<<<<
- * cdef int val
- *
- */
-
-static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, int __pyx_v_i) {
- int __pyx_v_val;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("bitset_insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":74
- * cdef int val
- *
- * val = 1 << i # <<<<<<<<<<<<<<
- * if b.bitset & val == 0:
- * b.bitset = b.bitset | val
- */
- __pyx_v_val = (1 << __pyx_v_i);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":75
- *
- * val = 1 << i
- * if b.bitset & val == 0: # <<<<<<<<<<<<<<
- * b.bitset = b.bitset | val
- * if b.size == 0:
- */
- __pyx_t_1 = (((__pyx_v_b->bitset & __pyx_v_val) == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":76
- * val = 1 << i
- * if b.bitset & val == 0:
- * b.bitset = b.bitset | val # <<<<<<<<<<<<<<
- * if b.size == 0:
- * b.min_val = i
- */
- __pyx_v_b->bitset = (__pyx_v_b->bitset | __pyx_v_val);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":77
- * if b.bitset & val == 0:
- * b.bitset = b.bitset | val
- * if b.size == 0: # <<<<<<<<<<<<<<
- * b.min_val = i
- * b.max_val = i
- */
- __pyx_t_1 = ((__pyx_v_b->size == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":78
- * b.bitset = b.bitset | val
- * if b.size == 0:
- * b.min_val = i # <<<<<<<<<<<<<<
- * b.max_val = i
- * else:
- */
- __pyx_v_b->min_val = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":79
- * if b.size == 0:
- * b.min_val = i
- * b.max_val = i # <<<<<<<<<<<<<<
- * else:
- * if i < b.min_val:
- */
- __pyx_v_b->max_val = __pyx_v_i;
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":81
- * b.max_val = i
- * else:
- * if i < b.min_val: # <<<<<<<<<<<<<<
- * b.min_val = i
- * if i > b.max_val:
- */
- __pyx_t_1 = ((__pyx_v_i < __pyx_v_b->min_val) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":82
- * else:
- * if i < b.min_val:
- * b.min_val = i # <<<<<<<<<<<<<<
- * if i > b.max_val:
- * b.max_val = i
- */
- __pyx_v_b->min_val = __pyx_v_i;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":83
- * if i < b.min_val:
- * b.min_val = i
- * if i > b.max_val: # <<<<<<<<<<<<<<
- * b.max_val = i
- * b.size = b.size + 1
- */
- __pyx_t_1 = ((__pyx_v_i > __pyx_v_b->max_val) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":84
- * b.min_val = i
- * if i > b.max_val:
- * b.max_val = i # <<<<<<<<<<<<<<
- * b.size = b.size + 1
- * return 1
- */
- __pyx_v_b->max_val = __pyx_v_i;
- goto __pyx_L6;
- }
- __pyx_L6:;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":85
- * if i > b.max_val:
- * b.max_val = i
- * b.size = b.size + 1 # <<<<<<<<<<<<<<
- * return 1
- * return 0
- */
- __pyx_v_b->size = (__pyx_v_b->size + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":86
- * b.max_val = i
- * b.size = b.size + 1
- * return 1 # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":87
- * b.size = b.size + 1
- * return 1
- * return 0 # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = 0;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":90
- *
- *
- * cdef int bitset_contains(_BitSet* b, int i): # <<<<<<<<<<<<<<
- * cdef int val
- *
- */
-
-static int __pyx_f_3_sa_bitset_contains(struct __pyx_t_3_sa__BitSet *__pyx_v_b, int __pyx_v_i) {
- int __pyx_v_val;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("bitset_contains", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":93
- * cdef int val
- *
- * val = 1 << i # <<<<<<<<<<<<<<
- * if b.bitset & val == 0:
- * return 0
- */
- __pyx_v_val = (1 << __pyx_v_i);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":94
- *
- * val = 1 << i
- * if b.bitset & val == 0: # <<<<<<<<<<<<<<
- * return 0
- * else:
- */
- __pyx_t_1 = (((__pyx_v_b->bitset & __pyx_v_val) == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":95
- * val = 1 << i
- * if b.bitset & val == 0:
- * return 0 # <<<<<<<<<<<<<<
- * else:
- * return 1
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":97
- * return 0
- * else:
- * return 1 # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = 1;
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_14BitSetIterator_1__next__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_14BitSetIterator_1__next__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_14BitSetIterator___next__(((struct __pyx_obj_3_sa_BitSetIterator *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":104
- * cdef int next_val
- *
- * def __next__(self): # <<<<<<<<<<<<<<
- * cdef int ret_val
- *
- */
-
-static PyObject *__pyx_pf_3_sa_14BitSetIterator___next__(struct __pyx_obj_3_sa_BitSetIterator *__pyx_v_self) {
- int __pyx_v_ret_val;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__next__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":107
- * cdef int ret_val
- *
- * if self.next_val == -1: # <<<<<<<<<<<<<<
- * raise StopIteration()
- * ret_val = self.next_val
- */
- __pyx_t_1 = ((__pyx_v_self->next_val == -1) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":108
- *
- * if self.next_val == -1:
- * raise StopIteration() # <<<<<<<<<<<<<<
- * ret_val = self.next_val
- * self.next_val = bitset_findsucc(self.b, ret_val)
- */
- __pyx_t_2 = PyObject_Call(__pyx_builtin_StopIteration, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_Raise(__pyx_t_2, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":109
- * if self.next_val == -1:
- * raise StopIteration()
- * ret_val = self.next_val # <<<<<<<<<<<<<<
- * self.next_val = bitset_findsucc(self.b, ret_val)
- * return ret_val
- */
- __pyx_t_3 = __pyx_v_self->next_val;
- __pyx_v_ret_val = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":110
- * raise StopIteration()
- * ret_val = self.next_val
- * self.next_val = bitset_findsucc(self.b, ret_val) # <<<<<<<<<<<<<<
- * return ret_val
- *
- */
- __pyx_v_self->next_val = __pyx_f_3_sa_bitset_findsucc(__pyx_v_self->b, __pyx_v_ret_val);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":111
- * ret_val = self.next_val
- * self.next_val = bitset_findsucc(self.b, ret_val)
- * return ret_val # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_ret_val); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.BitSetIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_6BitSet_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_6BitSet_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
- __pyx_r = __pyx_pf_3_sa_6BitSet___cinit__(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":122
- * cdef _BitSet* b
- *
- * def __cinit__(self): # <<<<<<<<<<<<<<
- * self.b = new_BitSet()
- *
- */
-
-static int __pyx_pf_3_sa_6BitSet___cinit__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":123
- *
- * def __cinit__(self):
- * self.b = new_BitSet() # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- __pyx_v_self->b = __pyx_f_3_sa_new_BitSet();
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_6BitSet_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_6BitSet_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_6BitSet_2__dealloc__(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":125
- * self.b = new_BitSet()
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * free(self.b)
- *
- */
-
-static void __pyx_pf_3_sa_6BitSet_2__dealloc__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":126
- *
- * def __dealloc__(self):
- * free(self.b) # <<<<<<<<<<<<<<
- *
- * def __iter__(self):
- */
- free(__pyx_v_self->b);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6BitSet_5__iter__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_6BitSet_5__iter__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_4__iter__(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":128
- * free(self.b)
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef BitSetIterator it
- * it = BitSetIterator()
- */
-
-static PyObject *__pyx_pf_3_sa_6BitSet_4__iter__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self) {
- struct __pyx_obj_3_sa_BitSetIterator *__pyx_v_it = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- struct __pyx_t_3_sa__BitSet *__pyx_t_2;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__iter__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":130
- * def __iter__(self):
- * cdef BitSetIterator it
- * it = BitSetIterator() # <<<<<<<<<<<<<<
- * it.b = self.b
- * it.next_val = self.b.min_val
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_BitSetIterator)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_it = ((struct __pyx_obj_3_sa_BitSetIterator *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":131
- * cdef BitSetIterator it
- * it = BitSetIterator()
- * it.b = self.b # <<<<<<<<<<<<<<
- * it.next_val = self.b.min_val
- * return it
- */
- __pyx_t_2 = __pyx_v_self->b;
- __pyx_v_it->b = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":132
- * it = BitSetIterator()
- * it.b = self.b
- * it.next_val = self.b.min_val # <<<<<<<<<<<<<<
- * return it
- *
- */
- __pyx_t_3 = __pyx_v_self->b->min_val;
- __pyx_v_it->next_val = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":133
- * it.b = self.b
- * it.next_val = self.b.min_val
- * return it # <<<<<<<<<<<<<<
- *
- * def insert(self, i):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_it));
- __pyx_r = ((PyObject *)__pyx_v_it);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.BitSet.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_it);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6BitSet_7insert(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_6BitSet_7insert(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("insert (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_6insert(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":135
- * return it
- *
- * def insert(self, i): # <<<<<<<<<<<<<<
- * return bitset_insert(self.b, i)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6BitSet_6insert(struct __pyx_obj_3_sa_BitSet *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":136
- *
- * def insert(self, i):
- * return bitset_insert(self.b, i) # <<<<<<<<<<<<<<
- *
- * def findsucc(self, i):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_bitset_insert(__pyx_v_self->b, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.BitSet.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6BitSet_9findsucc(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_6BitSet_9findsucc(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("findsucc (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_8findsucc(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":138
- * return bitset_insert(self.b, i)
- *
- * def findsucc(self, i): # <<<<<<<<<<<<<<
- * return bitset_findsucc(self.b, i)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6BitSet_8findsucc(struct __pyx_obj_3_sa_BitSet *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("findsucc", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":139
- *
- * def findsucc(self, i):
- * return bitset_findsucc(self.b, i) # <<<<<<<<<<<<<<
- *
- * def __str__(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_bitset_findsucc(__pyx_v_self->b, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.BitSet.findsucc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6BitSet_11__str__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_6BitSet_11__str__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_10__str__(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":141
- * return bitset_findsucc(self.b, i)
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * return dec2bin(self.b.bitset)+" ("+str(self.b.size)+","+str(self.b.min_val)+","+str(self.b.max_val)+")"
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6BitSet_10__str__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__str__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":142
- *
- * def __str__(self):
- * return dec2bin(self.b.bitset)+" ("+str(self.b.size)+","+str(self.b.min_val)+","+str(self.b.max_val)+")" # <<<<<<<<<<<<<<
- *
- * def min(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)__pyx_f_3_sa_dec2bin(__pyx_v_self->b->bitset)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, ((PyObject *)__pyx_kp_s_60)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->b->size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_Add(((PyObject *)__pyx_t_2), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Add(__pyx_t_3, ((PyObject *)__pyx_kp_s_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromLong(__pyx_v_self->b->min_val); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_Add(__pyx_t_2, ((PyObject *)__pyx_kp_s_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyInt_FromLong(__pyx_v_self->b->max_val); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, ((PyObject *)__pyx_kp_s_61)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.BitSet.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6BitSet_13min(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_6BitSet_13min(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("min (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_12min(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":144
- * return dec2bin(self.b.bitset)+" ("+str(self.b.size)+","+str(self.b.min_val)+","+str(self.b.max_val)+")"
- *
- * def min(self): # <<<<<<<<<<<<<<
- * return self.b.min_val
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6BitSet_12min(struct __pyx_obj_3_sa_BitSet *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("min", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":145
- *
- * def min(self):
- * return self.b.min_val # <<<<<<<<<<<<<<
- *
- * def max(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->b->min_val); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.BitSet.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6BitSet_15max(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_6BitSet_15max(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("max (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_14max(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":147
- * return self.b.min_val
- *
- * def max(self): # <<<<<<<<<<<<<<
- * return self.b.max_val
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6BitSet_14max(struct __pyx_obj_3_sa_BitSet *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("max", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":148
- *
- * def max(self):
- * return self.b.max_val # <<<<<<<<<<<<<<
- *
- * def __len__(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->b->max_val); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.BitSet.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_3_sa_6BitSet_17__len__(PyObject *__pyx_v_self); /*proto*/
-static Py_ssize_t __pyx_pw_3_sa_6BitSet_17__len__(PyObject *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_16__len__(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":150
- * return self.b.max_val
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return self.b.size
- *
- */
-
-static Py_ssize_t __pyx_pf_3_sa_6BitSet_16__len__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":151
- *
- * def __len__(self):
- * return self.b.size # <<<<<<<<<<<<<<
- *
- * def __contains__(self, i):
- */
- __pyx_r = __pyx_v_self->b->size;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_6BitSet_19__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static int __pyx_pw_3_sa_6BitSet_19__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6BitSet_18__contains__(((struct __pyx_obj_3_sa_BitSet *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":153
- * return self.b.size
- *
- * def __contains__(self, i): # <<<<<<<<<<<<<<
- * return bool(bitset_contains(self.b, i))
- *
- */
-
-static int __pyx_pf_3_sa_6BitSet_18__contains__(struct __pyx_obj_3_sa_BitSet *__pyx_v_self, PyObject *__pyx_v_i) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__contains__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":154
- *
- * def __contains__(self, i):
- * return bool(bitset_contains(self.b, i)) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_bitset_contains(__pyx_v_self->b, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = (!(!__pyx_t_3));
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.BitSet.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":157
- *
- *
- * cdef str dec2bin(long i): # <<<<<<<<<<<<<<
- * cdef str result = ""
- * cdef unsigned d
- */
-
-static PyObject *__pyx_f_3_sa_dec2bin(long __pyx_v_i) {
- PyObject *__pyx_v_result = 0;
- CYTHON_UNUSED unsigned int __pyx_v_d;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- unsigned int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("dec2bin", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":158
- *
- * cdef str dec2bin(long i):
- * cdef str result = "" # <<<<<<<<<<<<<<
- * cdef unsigned d
- * for d in range(MIN_BOTTOM_SIZE):
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_47));
- __pyx_v_result = __pyx_kp_s_47;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":160
- * cdef str result = ""
- * cdef unsigned d
- * for d in range(MIN_BOTTOM_SIZE): # <<<<<<<<<<<<<<
- * if i & LOWER_MASK[0] == 0:
- * result = "0"+result
- */
- __pyx_t_1 = __pyx_v_3_sa_MIN_BOTTOM_SIZE;
- for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
- __pyx_v_d = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":161
- * cdef unsigned d
- * for d in range(MIN_BOTTOM_SIZE):
- * if i & LOWER_MASK[0] == 0: # <<<<<<<<<<<<<<
- * result = "0"+result
- * else:
- */
- __pyx_t_3 = (((__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[0])) == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":162
- * for d in range(MIN_BOTTOM_SIZE):
- * if i & LOWER_MASK[0] == 0:
- * result = "0"+result # <<<<<<<<<<<<<<
- * else:
- * result = "1"+result
- */
- __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_kp_s__0), ((PyObject *)__pyx_v_result)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(((PyObject *)__pyx_v_result));
- __pyx_v_result = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":164
- * result = "0"+result
- * else:
- * result = "1"+result # <<<<<<<<<<<<<<
- * i = i >> 1
- * return result
- */
- __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_kp_s__1), ((PyObject *)__pyx_v_result)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(((PyObject *)__pyx_v_result));
- __pyx_v_result = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":165
- * else:
- * result = "1"+result
- * i = i >> 1 # <<<<<<<<<<<<<<
- * return result
- *
- */
- __pyx_v_i = (__pyx_v_i >> 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":166
- * result = "1"+result
- * i = i >> 1
- * return result # <<<<<<<<<<<<<<
- *
- * cdef struct _VEB:
- */
- __Pyx_XDECREF(((PyObject *)__pyx_r));
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
-
- __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.dec2bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":177
- * void** bottom
- *
- * cdef _VEB* new_VEB(int n): # <<<<<<<<<<<<<<
- * cdef _VEB* veb
- * cdef int num_bits, num_top_bits, i
- */
-
-static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {
- struct __pyx_t_3_sa__VEB *__pyx_v_veb;
- int __pyx_v_num_bits;
- struct __pyx_t_3_sa__VEB *__pyx_r;
- __Pyx_RefNannyDeclarations
- double __pyx_t_1;
- double __pyx_t_2;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("new_VEB", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":181
- * cdef int num_bits, num_top_bits, i
- *
- * veb = <_VEB*> malloc(sizeof(_VEB)) # <<<<<<<<<<<<<<
- *
- * num_bits = int(ceil(log(n) / log(2)))
- */
- __pyx_v_veb = ((struct __pyx_t_3_sa__VEB *)malloc((sizeof(struct __pyx_t_3_sa__VEB))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":183
- * veb = <_VEB*> malloc(sizeof(_VEB))
- *
- * num_bits = int(ceil(log(n) / log(2))) # <<<<<<<<<<<<<<
- * veb.num_bottom_bits = num_bits/2
- * if veb.num_bottom_bits < MIN_BOTTOM_BITS:
- */
- __pyx_t_1 = log(__pyx_v_n);
- __pyx_t_2 = log(2.0);
- if (unlikely(__pyx_t_2 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_num_bits = ((int)ceil((__pyx_t_1 / __pyx_t_2)));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":184
- *
- * num_bits = int(ceil(log(n) / log(2)))
- * veb.num_bottom_bits = num_bits/2 # <<<<<<<<<<<<<<
- * if veb.num_bottom_bits < MIN_BOTTOM_BITS:
- * veb.num_bottom_bits = MIN_BOTTOM_BITS
- */
- __pyx_v_veb->num_bottom_bits = __Pyx_div_long(__pyx_v_num_bits, 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":185
- * num_bits = int(ceil(log(n) / log(2)))
- * veb.num_bottom_bits = num_bits/2
- * if veb.num_bottom_bits < MIN_BOTTOM_BITS: # <<<<<<<<<<<<<<
- * veb.num_bottom_bits = MIN_BOTTOM_BITS
- * veb.top_universe_size = (n >> veb.num_bottom_bits) + 1
- */
- __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits < __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":186
- * veb.num_bottom_bits = num_bits/2
- * if veb.num_bottom_bits < MIN_BOTTOM_BITS:
- * veb.num_bottom_bits = MIN_BOTTOM_BITS # <<<<<<<<<<<<<<
- * veb.top_universe_size = (n >> veb.num_bottom_bits) + 1
- *
- */
- __pyx_v_veb->num_bottom_bits = __pyx_v_3_sa_MIN_BOTTOM_BITS;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":187
- * if veb.num_bottom_bits < MIN_BOTTOM_BITS:
- * veb.num_bottom_bits = MIN_BOTTOM_BITS
- * veb.top_universe_size = (n >> veb.num_bottom_bits) + 1 # <<<<<<<<<<<<<<
- *
- * veb.bottom = <void**> malloc(veb.top_universe_size * sizeof(void*))
- */
- __pyx_v_veb->top_universe_size = ((__pyx_v_n >> __pyx_v_veb->num_bottom_bits) + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":189
- * veb.top_universe_size = (n >> veb.num_bottom_bits) + 1
- *
- * veb.bottom = <void**> malloc(veb.top_universe_size * sizeof(void*)) # <<<<<<<<<<<<<<
- * memset(veb.bottom, 0, veb.top_universe_size * sizeof(void*))
- *
- */
- __pyx_v_veb->bottom = ((void **)malloc((__pyx_v_veb->top_universe_size * (sizeof(void *)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":190
- *
- * veb.bottom = <void**> malloc(veb.top_universe_size * sizeof(void*))
- * memset(veb.bottom, 0, veb.top_universe_size * sizeof(void*)) # <<<<<<<<<<<<<<
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- */
- memset(__pyx_v_veb->bottom, 0, (__pyx_v_veb->top_universe_size * (sizeof(void *))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":192
- * memset(veb.bottom, 0, veb.top_universe_size * sizeof(void*))
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE: # <<<<<<<<<<<<<<
- * veb.top = new_VEB(veb.top_universe_size)
- * else:
- */
- __pyx_t_3 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":193
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * veb.top = new_VEB(veb.top_universe_size) # <<<<<<<<<<<<<<
- * else:
- * veb.top = new_BitSet()
- */
- __pyx_v_veb->top = __pyx_f_3_sa_new_VEB(__pyx_v_veb->top_universe_size);
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":195
- * veb.top = new_VEB(veb.top_universe_size)
- * else:
- * veb.top = new_BitSet() # <<<<<<<<<<<<<<
- *
- * veb.max_val = -1
- */
- __pyx_v_veb->top = __pyx_f_3_sa_new_BitSet();
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":197
- * veb.top = new_BitSet()
- *
- * veb.max_val = -1 # <<<<<<<<<<<<<<
- * veb.min_val = -1
- * veb.size = 0
- */
- __pyx_v_veb->max_val = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":198
- *
- * veb.max_val = -1
- * veb.min_val = -1 # <<<<<<<<<<<<<<
- * veb.size = 0
- * return veb
- */
- __pyx_v_veb->min_val = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":199
- * veb.max_val = -1
- * veb.min_val = -1
- * veb.size = 0 # <<<<<<<<<<<<<<
- * return veb
- *
- */
- __pyx_v_veb->size = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":200
- * veb.min_val = -1
- * veb.size = 0
- * return veb # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_veb;
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_WriteUnraisable("_sa.new_VEB", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":203
- *
- *
- * cdef int VEB_insert(_VEB* veb, int i): # <<<<<<<<<<<<<<
- * cdef _VEB* subv
- * cdef _BitSet* subb
- */
-
-static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __pyx_v_i) {
- struct __pyx_t_3_sa__VEB *__pyx_v_subv;
- struct __pyx_t_3_sa__BitSet *__pyx_v_subb;
- int __pyx_v_a;
- int __pyx_v_b;
- int __pyx_v_tmp;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- __Pyx_RefNannySetupContext("VEB_insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":208
- * cdef int a, b, tmp
- *
- * if veb.size == 0: # <<<<<<<<<<<<<<
- * veb.min_val = i
- * veb.max_val = i
- */
- __pyx_t_1 = ((__pyx_v_veb->size == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":209
- *
- * if veb.size == 0:
- * veb.min_val = i # <<<<<<<<<<<<<<
- * veb.max_val = i
- * elif i == veb.min_val or i == veb.max_val:
- */
- __pyx_v_veb->min_val = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":210
- * if veb.size == 0:
- * veb.min_val = i
- * veb.max_val = i # <<<<<<<<<<<<<<
- * elif i == veb.min_val or i == veb.max_val:
- * return 0
- */
- __pyx_v_veb->max_val = __pyx_v_i;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":211
- * veb.min_val = i
- * veb.max_val = i
- * elif i == veb.min_val or i == veb.max_val: # <<<<<<<<<<<<<<
- * return 0
- * else:
- */
- __pyx_t_1 = ((__pyx_v_i == __pyx_v_veb->min_val) != 0);
- if (!__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_i == __pyx_v_veb->max_val) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":212
- * veb.max_val = i
- * elif i == veb.min_val or i == veb.max_val:
- * return 0 # <<<<<<<<<<<<<<
- * else:
- * if i < veb.min_val:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":214
- * return 0
- * else:
- * if i < veb.min_val: # <<<<<<<<<<<<<<
- * tmp = i
- * i = veb.min_val
- */
- __pyx_t_3 = ((__pyx_v_i < __pyx_v_veb->min_val) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":215
- * else:
- * if i < veb.min_val:
- * tmp = i # <<<<<<<<<<<<<<
- * i = veb.min_val
- * veb.min_val = tmp
- */
- __pyx_v_tmp = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":216
- * if i < veb.min_val:
- * tmp = i
- * i = veb.min_val # <<<<<<<<<<<<<<
- * veb.min_val = tmp
- * a = i >> veb.num_bottom_bits
- */
- __pyx_t_4 = __pyx_v_veb->min_val;
- __pyx_v_i = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":217
- * tmp = i
- * i = veb.min_val
- * veb.min_val = tmp # <<<<<<<<<<<<<<
- * a = i >> veb.num_bottom_bits
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- */
- __pyx_v_veb->min_val = __pyx_v_tmp;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":218
- * i = veb.min_val
- * veb.min_val = tmp
- * a = i >> veb.num_bottom_bits # <<<<<<<<<<<<<<
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * if veb.bottom[a] == NULL:
- */
- __pyx_v_a = (__pyx_v_i >> __pyx_v_veb->num_bottom_bits);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":219
- * veb.min_val = tmp
- * a = i >> veb.num_bottom_bits
- * b = i & LOWER_MASK[veb.num_bottom_bits-1] # <<<<<<<<<<<<<<
- * if veb.bottom[a] == NULL:
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- */
- __pyx_v_b = (__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_veb->num_bottom_bits - 1)]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":220
- * a = i >> veb.num_bottom_bits
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * if veb.bottom[a] == NULL: # <<<<<<<<<<<<<<
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * subv = <_VEB*> veb.top
- */
- __pyx_t_3 = (((__pyx_v_veb->bottom[__pyx_v_a]) == NULL) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":221
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * if veb.bottom[a] == NULL:
- * if veb.top_universe_size > MIN_BOTTOM_SIZE: # <<<<<<<<<<<<<<
- * subv = <_VEB*> veb.top
- * VEB_insert(subv, a)
- */
- __pyx_t_3 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":222
- * if veb.bottom[a] == NULL:
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * subv = <_VEB*> veb.top # <<<<<<<<<<<<<<
- * VEB_insert(subv, a)
- * else:
- */
- __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":223
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * subv = <_VEB*> veb.top
- * VEB_insert(subv, a) # <<<<<<<<<<<<<<
- * else:
- * subb = <_BitSet*> veb.top
- */
- __pyx_f_3_sa_VEB_insert(__pyx_v_subv, __pyx_v_a);
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":225
- * VEB_insert(subv, a)
- * else:
- * subb = <_BitSet*> veb.top # <<<<<<<<<<<<<<
- * bitset_insert(subb, a)
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- */
- __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":226
- * else:
- * subb = <_BitSet*> veb.top
- * bitset_insert(subb, a) # <<<<<<<<<<<<<<
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits)
- */
- __pyx_f_3_sa_bitset_insert(__pyx_v_subb, __pyx_v_a);
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":227
- * subb = <_BitSet*> veb.top
- * bitset_insert(subb, a)
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS: # <<<<<<<<<<<<<<
- * veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits)
- * else:
- */
- __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":228
- * bitset_insert(subb, a)
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits) # <<<<<<<<<<<<<<
- * else:
- * veb.bottom[a] = new_BitSet()
- */
- (__pyx_v_veb->bottom[__pyx_v_a]) = __pyx_f_3_sa_new_VEB((1 << __pyx_v_veb->num_bottom_bits));
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":230
- * veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits)
- * else:
- * veb.bottom[a] = new_BitSet() # <<<<<<<<<<<<<<
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a]
- */
- (__pyx_v_veb->bottom[__pyx_v_a]) = __pyx_f_3_sa_new_BitSet();
- }
- __pyx_L7:;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":231
- * else:
- * veb.bottom[a] = new_BitSet()
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS: # <<<<<<<<<<<<<<
- * subv = <_VEB*> veb.bottom[a]
- * if VEB_insert(subv, b) == 0:
- */
- __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":232
- * veb.bottom[a] = new_BitSet()
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a] # <<<<<<<<<<<<<<
- * if VEB_insert(subv, b) == 0:
- * return 0
- */
- __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_a]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":233
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a]
- * if VEB_insert(subv, b) == 0: # <<<<<<<<<<<<<<
- * return 0
- * else:
- */
- __pyx_t_3 = ((__pyx_f_3_sa_VEB_insert(__pyx_v_subv, __pyx_v_b) == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":234
- * subv = <_VEB*> veb.bottom[a]
- * if VEB_insert(subv, b) == 0:
- * return 0 # <<<<<<<<<<<<<<
- * else:
- * subb = <_BitSet*> veb.bottom[a]
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L9;
- }
- __pyx_L9:;
- goto __pyx_L8;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":236
- * return 0
- * else:
- * subb = <_BitSet*> veb.bottom[a] # <<<<<<<<<<<<<<
- * if bitset_insert(subb, b) == 0:
- * return 0
- */
- __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_a]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":237
- * else:
- * subb = <_BitSet*> veb.bottom[a]
- * if bitset_insert(subb, b) == 0: # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __pyx_t_3 = ((__pyx_f_3_sa_bitset_insert(__pyx_v_subb, __pyx_v_b) == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":238
- * subb = <_BitSet*> veb.bottom[a]
- * if bitset_insert(subb, b) == 0:
- * return 0 # <<<<<<<<<<<<<<
- *
- * if i > veb.max_val:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L10;
- }
- __pyx_L10:;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":240
- * return 0
- *
- * if i > veb.max_val: # <<<<<<<<<<<<<<
- * veb.max_val = i
- * veb.size = veb.size + 1
- */
- __pyx_t_3 = ((__pyx_v_i > __pyx_v_veb->max_val) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":241
- *
- * if i > veb.max_val:
- * veb.max_val = i # <<<<<<<<<<<<<<
- * veb.size = veb.size + 1
- * return 1
- */
- __pyx_v_veb->max_val = __pyx_v_i;
- goto __pyx_L11;
- }
- __pyx_L11:;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":242
- * if i > veb.max_val:
- * veb.max_val = i
- * veb.size = veb.size + 1 # <<<<<<<<<<<<<<
- * return 1
- *
- */
- __pyx_v_veb->size = (__pyx_v_veb->size + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":243
- * veb.max_val = i
- * veb.size = veb.size + 1
- * return 1 # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = 1;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":246
- *
- *
- * cdef del_VEB(_VEB* veb): # <<<<<<<<<<<<<<
- * cdef int i
- *
- */
-
-static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {
- int __pyx_v_i;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("del_VEB", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":249
- * cdef int i
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE: # <<<<<<<<<<<<<<
- * i = (<_VEB*> veb.top).min_val
- * else:
- */
- __pyx_t_1 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":250
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * i = (<_VEB*> veb.top).min_val # <<<<<<<<<<<<<<
- * else:
- * i = (<_BitSet*> veb.top).min_val
- */
- __pyx_t_2 = ((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top)->min_val;
- __pyx_v_i = __pyx_t_2;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":252
- * i = (<_VEB*> veb.top).min_val
- * else:
- * i = (<_BitSet*> veb.top).min_val # <<<<<<<<<<<<<<
- *
- * while i != -1:
- */
- __pyx_t_2 = ((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top)->min_val;
- __pyx_v_i = __pyx_t_2;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":254
- * i = (<_BitSet*> veb.top).min_val
- *
- * while i != -1: # <<<<<<<<<<<<<<
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * del_VEB(<_VEB*> veb.bottom[i])
- */
- while (1) {
- __pyx_t_1 = ((__pyx_v_i != -1) != 0);
- if (!__pyx_t_1) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":255
- *
- * while i != -1:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS: # <<<<<<<<<<<<<<
- * del_VEB(<_VEB*> veb.bottom[i])
- * else:
- */
- __pyx_t_1 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":256
- * while i != -1:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * del_VEB(<_VEB*> veb.bottom[i]) # <<<<<<<<<<<<<<
- * else:
- * free(<_BitSet*> veb.bottom[i])
- */
- __pyx_t_3 = __pyx_f_3_sa_del_VEB(((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":258
- * del_VEB(<_VEB*> veb.bottom[i])
- * else:
- * free(<_BitSet*> veb.bottom[i]) # <<<<<<<<<<<<<<
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- */
- free(((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_i])));
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":260
- * free(<_BitSet*> veb.bottom[i])
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE: # <<<<<<<<<<<<<<
- * i = VEB_findsucc(<_VEB*> veb.top, i)
- * else:
- */
- __pyx_t_1 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":261
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * i = VEB_findsucc(<_VEB*> veb.top, i) # <<<<<<<<<<<<<<
- * else:
- * i = bitset_findsucc(<_BitSet*> veb.top, i)
- */
- __pyx_v_i = __pyx_f_3_sa_VEB_findsucc(((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top), __pyx_v_i);
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":263
- * i = VEB_findsucc(<_VEB*> veb.top, i)
- * else:
- * i = bitset_findsucc(<_BitSet*> veb.top, i) # <<<<<<<<<<<<<<
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- */
- __pyx_v_i = __pyx_f_3_sa_bitset_findsucc(((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top), __pyx_v_i);
- }
- __pyx_L7:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":265
- * i = bitset_findsucc(<_BitSet*> veb.top, i)
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE: # <<<<<<<<<<<<<<
- * del_VEB(<_VEB*> veb.top)
- * else:
- */
- __pyx_t_1 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":266
- *
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * del_VEB(<_VEB*> veb.top) # <<<<<<<<<<<<<<
- * else:
- * free(<_BitSet*> veb.top)
- */
- __pyx_t_3 = __pyx_f_3_sa_del_VEB(((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L8;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":268
- * del_VEB(<_VEB*> veb.top)
- * else:
- * free(<_BitSet*> veb.top) # <<<<<<<<<<<<<<
- * free(veb.bottom)
- * free(veb)
- */
- free(((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top));
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":269
- * else:
- * free(<_BitSet*> veb.top)
- * free(veb.bottom) # <<<<<<<<<<<<<<
- * free(veb)
- *
- */
- free(__pyx_v_veb->bottom);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":270
- * free(<_BitSet*> veb.top)
- * free(veb.bottom)
- * free(veb) # <<<<<<<<<<<<<<
- *
- *
- */
- free(__pyx_v_veb);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.del_VEB", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":273
- *
- *
- * cdef int VEB_findsucc(_VEB* veb, int i): # <<<<<<<<<<<<<<
- * cdef _VEB* subv
- * cdef _BitSet* subb
- */
-
-static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __pyx_v_i) {
- struct __pyx_t_3_sa__VEB *__pyx_v_subv;
- struct __pyx_t_3_sa__BitSet *__pyx_v_subb;
- int __pyx_v_a;
- int __pyx_v_b;
- int __pyx_v_j;
- int __pyx_v_c;
- int __pyx_v_found;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- __Pyx_RefNannySetupContext("VEB_findsucc", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":278
- * cdef int a, b, j, c, found
- *
- * if veb.max_val == -1 or i>=veb.max_val: # <<<<<<<<<<<<<<
- * return -1
- * if i < veb.min_val:
- */
- __pyx_t_1 = ((__pyx_v_veb->max_val == -1) != 0);
- if (!__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_i >= __pyx_v_veb->max_val) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":279
- *
- * if veb.max_val == -1 or i>=veb.max_val:
- * return -1 # <<<<<<<<<<<<<<
- * if i < veb.min_val:
- * return veb.min_val
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":280
- * if veb.max_val == -1 or i>=veb.max_val:
- * return -1
- * if i < veb.min_val: # <<<<<<<<<<<<<<
- * return veb.min_val
- *
- */
- __pyx_t_3 = ((__pyx_v_i < __pyx_v_veb->min_val) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":281
- * return -1
- * if i < veb.min_val:
- * return veb.min_val # <<<<<<<<<<<<<<
- *
- * a = i >> veb.num_bottom_bits
- */
- __pyx_r = __pyx_v_veb->min_val;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":283
- * return veb.min_val
- *
- * a = i >> veb.num_bottom_bits # <<<<<<<<<<<<<<
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * found = 0
- */
- __pyx_v_a = (__pyx_v_i >> __pyx_v_veb->num_bottom_bits);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":284
- *
- * a = i >> veb.num_bottom_bits
- * b = i & LOWER_MASK[veb.num_bottom_bits-1] # <<<<<<<<<<<<<<
- * found = 0
- * if veb.bottom[a] != NULL:
- */
- __pyx_v_b = (__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_veb->num_bottom_bits - 1)]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":285
- * a = i >> veb.num_bottom_bits
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * found = 0 # <<<<<<<<<<<<<<
- * if veb.bottom[a] != NULL:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- */
- __pyx_v_found = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":286
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * found = 0
- * if veb.bottom[a] != NULL: # <<<<<<<<<<<<<<
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a]
- */
- __pyx_t_3 = (((__pyx_v_veb->bottom[__pyx_v_a]) != NULL) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":287
- * found = 0
- * if veb.bottom[a] != NULL:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS: # <<<<<<<<<<<<<<
- * subv = <_VEB*> veb.bottom[a]
- * if subv.max_val > b:
- */
- __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":288
- * if veb.bottom[a] != NULL:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a] # <<<<<<<<<<<<<<
- * if subv.max_val > b:
- * j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b)
- */
- __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_a]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":289
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a]
- * if subv.max_val > b: # <<<<<<<<<<<<<<
- * j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b)
- * found = 1
- */
- __pyx_t_3 = ((__pyx_v_subv->max_val > __pyx_v_b) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":290
- * subv = <_VEB*> veb.bottom[a]
- * if subv.max_val > b:
- * j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b) # <<<<<<<<<<<<<<
- * found = 1
- * else:
- */
- __pyx_v_j = ((__pyx_v_a << __pyx_v_veb->num_bottom_bits) + __pyx_f_3_sa_VEB_findsucc(__pyx_v_subv, __pyx_v_b));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":291
- * if subv.max_val > b:
- * j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b)
- * found = 1 # <<<<<<<<<<<<<<
- * else:
- * subb = <_BitSet*> veb.bottom[a]
- */
- __pyx_v_found = 1;
- goto __pyx_L7;
- }
- __pyx_L7:;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":293
- * found = 1
- * else:
- * subb = <_BitSet*> veb.bottom[a] # <<<<<<<<<<<<<<
- * if subb.max_val > b:
- * j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)
- */
- __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_a]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":294
- * else:
- * subb = <_BitSet*> veb.bottom[a]
- * if subb.max_val > b: # <<<<<<<<<<<<<<
- * j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)
- * found = 1
- */
- __pyx_t_3 = ((__pyx_v_subb->max_val > __pyx_v_b) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":295
- * subb = <_BitSet*> veb.bottom[a]
- * if subb.max_val > b:
- * j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b) # <<<<<<<<<<<<<<
- * found = 1
- * if found==0:
- */
- __pyx_v_j = ((__pyx_v_a << __pyx_v_veb->num_bottom_bits) + __pyx_f_3_sa_bitset_findsucc(__pyx_v_subb, __pyx_v_b));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":296
- * if subb.max_val > b:
- * j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)
- * found = 1 # <<<<<<<<<<<<<<
- * if found==0:
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- */
- __pyx_v_found = 1;
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
- __pyx_L6:;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":297
- * j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)
- * found = 1
- * if found==0: # <<<<<<<<<<<<<<
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * subv = <_VEB*> veb.top
- */
- __pyx_t_3 = ((__pyx_v_found == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":298
- * found = 1
- * if found==0:
- * if veb.top_universe_size > MIN_BOTTOM_SIZE: # <<<<<<<<<<<<<<
- * subv = <_VEB*> veb.top
- * c = VEB_findsucc(subv, a)
- */
- __pyx_t_3 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":299
- * if found==0:
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * subv = <_VEB*> veb.top # <<<<<<<<<<<<<<
- * c = VEB_findsucc(subv, a)
- * else:
- */
- __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":300
- * if veb.top_universe_size > MIN_BOTTOM_SIZE:
- * subv = <_VEB*> veb.top
- * c = VEB_findsucc(subv, a) # <<<<<<<<<<<<<<
- * else:
- * subb = <_BitSet*> veb.top
- */
- __pyx_v_c = __pyx_f_3_sa_VEB_findsucc(__pyx_v_subv, __pyx_v_a);
- goto __pyx_L10;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":302
- * c = VEB_findsucc(subv, a)
- * else:
- * subb = <_BitSet*> veb.top # <<<<<<<<<<<<<<
- * c = bitset_findsucc(subb, a)
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- */
- __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":303
- * else:
- * subb = <_BitSet*> veb.top
- * c = bitset_findsucc(subb, a) # <<<<<<<<<<<<<<
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[c]
- */
- __pyx_v_c = __pyx_f_3_sa_bitset_findsucc(__pyx_v_subb, __pyx_v_a);
- }
- __pyx_L10:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":304
- * subb = <_BitSet*> veb.top
- * c = bitset_findsucc(subb, a)
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS: # <<<<<<<<<<<<<<
- * subv = <_VEB*> veb.bottom[c]
- * j = (c << veb.num_bottom_bits) + subv.min_val
- */
- __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":305
- * c = bitset_findsucc(subb, a)
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[c] # <<<<<<<<<<<<<<
- * j = (c << veb.num_bottom_bits) + subv.min_val
- * else:
- */
- __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_c]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":306
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[c]
- * j = (c << veb.num_bottom_bits) + subv.min_val # <<<<<<<<<<<<<<
- * else:
- * subb = <_BitSet*> veb.bottom[c]
- */
- __pyx_v_j = ((__pyx_v_c << __pyx_v_veb->num_bottom_bits) + __pyx_v_subv->min_val);
- goto __pyx_L11;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":308
- * j = (c << veb.num_bottom_bits) + subv.min_val
- * else:
- * subb = <_BitSet*> veb.bottom[c] # <<<<<<<<<<<<<<
- * j = (c << veb.num_bottom_bits) + subb.min_val
- * return j
- */
- __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_c]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":309
- * else:
- * subb = <_BitSet*> veb.bottom[c]
- * j = (c << veb.num_bottom_bits) + subb.min_val # <<<<<<<<<<<<<<
- * return j
- *
- */
- __pyx_v_j = ((__pyx_v_c << __pyx_v_veb->num_bottom_bits) + __pyx_v_subb->min_val);
- }
- __pyx_L11:;
- goto __pyx_L9;
- }
- __pyx_L9:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":310
- * subb = <_BitSet*> veb.bottom[c]
- * j = (c << veb.num_bottom_bits) + subb.min_val
- * return j # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_j;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":313
- *
- *
- * cdef int VEB_contains(_VEB* veb, int i): # <<<<<<<<<<<<<<
- * cdef _VEB* subv
- * cdef _BitSet* subb
- */
-
-static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __pyx_v_i) {
- struct __pyx_t_3_sa__VEB *__pyx_v_subv;
- struct __pyx_t_3_sa__BitSet *__pyx_v_subb;
- int __pyx_v_a;
- int __pyx_v_b;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- __Pyx_RefNannySetupContext("VEB_contains", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":318
- * cdef int a, b
- *
- * if veb.size == 0 or i < veb.min_val or i > veb.max_val: # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __pyx_t_1 = ((__pyx_v_veb->size == 0) != 0);
- if (!__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_i < __pyx_v_veb->min_val) != 0);
- if (!__pyx_t_2) {
- __pyx_t_3 = ((__pyx_v_i > __pyx_v_veb->max_val) != 0);
- __pyx_t_4 = __pyx_t_3;
- } else {
- __pyx_t_4 = __pyx_t_2;
- }
- __pyx_t_2 = __pyx_t_4;
- } else {
- __pyx_t_2 = __pyx_t_1;
- }
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":319
- *
- * if veb.size == 0 or i < veb.min_val or i > veb.max_val:
- * return 0 # <<<<<<<<<<<<<<
- *
- * if veb.min_val == i:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":321
- * return 0
- *
- * if veb.min_val == i: # <<<<<<<<<<<<<<
- * return 1
- * else:
- */
- __pyx_t_2 = ((__pyx_v_veb->min_val == __pyx_v_i) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":322
- *
- * if veb.min_val == i:
- * return 1 # <<<<<<<<<<<<<<
- * else:
- * if veb.size == 1:
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":324
- * return 1
- * else:
- * if veb.size == 1: # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __pyx_t_2 = ((__pyx_v_veb->size == 1) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":325
- * else:
- * if veb.size == 1:
- * return 0 # <<<<<<<<<<<<<<
- *
- * a = i >> veb.num_bottom_bits
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":327
- * return 0
- *
- * a = i >> veb.num_bottom_bits # <<<<<<<<<<<<<<
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * if veb.bottom[a] == NULL:
- */
- __pyx_v_a = (__pyx_v_i >> __pyx_v_veb->num_bottom_bits);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":328
- *
- * a = i >> veb.num_bottom_bits
- * b = i & LOWER_MASK[veb.num_bottom_bits-1] # <<<<<<<<<<<<<<
- * if veb.bottom[a] == NULL:
- * return 0
- */
- __pyx_v_b = (__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_veb->num_bottom_bits - 1)]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":329
- * a = i >> veb.num_bottom_bits
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * if veb.bottom[a] == NULL: # <<<<<<<<<<<<<<
- * return 0
- * else:
- */
- __pyx_t_2 = (((__pyx_v_veb->bottom[__pyx_v_a]) == NULL) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":330
- * b = i & LOWER_MASK[veb.num_bottom_bits-1]
- * if veb.bottom[a] == NULL:
- * return 0 # <<<<<<<<<<<<<<
- * else:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":332
- * return 0
- * else:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS: # <<<<<<<<<<<<<<
- * subv = <_VEB*> veb.bottom[a]
- * return VEB_contains(subv, b)
- */
- __pyx_t_2 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":333
- * else:
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a] # <<<<<<<<<<<<<<
- * return VEB_contains(subv, b)
- * else:
- */
- __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_a]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":334
- * if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- * subv = <_VEB*> veb.bottom[a]
- * return VEB_contains(subv, b) # <<<<<<<<<<<<<<
- * else:
- * subb = <_BitSet*> veb.bottom[a]
- */
- __pyx_r = __pyx_f_3_sa_VEB_contains(__pyx_v_subv, __pyx_v_b);
- goto __pyx_L0;
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":336
- * return VEB_contains(subv, b)
- * else:
- * subb = <_BitSet*> veb.bottom[a] # <<<<<<<<<<<<<<
- * return bitset_contains(subb, b)
- *
- */
- __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_a]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":337
- * else:
- * subb = <_BitSet*> veb.bottom[a]
- * return bitset_contains(subb, b) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_f_3_sa_bitset_contains(__pyx_v_subb, __pyx_v_b);
- goto __pyx_L0;
- }
- __pyx_L7:;
- }
- __pyx_L6:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11VEBIterator_1__next__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_11VEBIterator_1__next__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_11VEBIterator___next__(((struct __pyx_obj_3_sa_VEBIterator *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":344
- * cdef int next_val
- *
- * def __next__(self): # <<<<<<<<<<<<<<
- * cdef int ret_val
- *
- */
-
-static PyObject *__pyx_pf_3_sa_11VEBIterator___next__(struct __pyx_obj_3_sa_VEBIterator *__pyx_v_self) {
- int __pyx_v_ret_val;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__next__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":347
- * cdef int ret_val
- *
- * if self.next_val == -1: # <<<<<<<<<<<<<<
- * raise StopIteration()
- * ret_val = self.next_val
- */
- __pyx_t_1 = ((__pyx_v_self->next_val == -1) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":348
- *
- * if self.next_val == -1:
- * raise StopIteration() # <<<<<<<<<<<<<<
- * ret_val = self.next_val
- * self.next_val = VEB_findsucc(self.v, ret_val)
- */
- __pyx_t_2 = PyObject_Call(__pyx_builtin_StopIteration, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_Raise(__pyx_t_2, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":349
- * if self.next_val == -1:
- * raise StopIteration()
- * ret_val = self.next_val # <<<<<<<<<<<<<<
- * self.next_val = VEB_findsucc(self.v, ret_val)
- * return ret_val
- */
- __pyx_t_3 = __pyx_v_self->next_val;
- __pyx_v_ret_val = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":350
- * raise StopIteration()
- * ret_val = self.next_val
- * self.next_val = VEB_findsucc(self.v, ret_val) # <<<<<<<<<<<<<<
- * return ret_val
- *
- */
- __pyx_v_self->next_val = __pyx_f_3_sa_VEB_findsucc(__pyx_v_self->v, __pyx_v_ret_val);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":351
- * ret_val = self.next_val
- * self.next_val = VEB_findsucc(self.v, ret_val)
- * return ret_val # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_ret_val); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.VEBIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_3VEB_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_3VEB_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_size;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,0};
- PyObject* values[1] = {0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- }
- __pyx_v_size = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.VEB.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_3VEB___cinit__(((struct __pyx_obj_3_sa_VEB *)__pyx_v_self), __pyx_v_size);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":360
- * cdef int _first(self)
- *
- * def __cinit__(self, int size): # <<<<<<<<<<<<<<
- * self.veb = new_VEB(size)
- *
- */
-
-static int __pyx_pf_3_sa_3VEB___cinit__(struct __pyx_obj_3_sa_VEB *__pyx_v_self, int __pyx_v_size) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":361
- *
- * def __cinit__(self, int size):
- * self.veb = new_VEB(size) # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- __pyx_v_self->veb = __pyx_f_3_sa_new_VEB(__pyx_v_size);
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_3VEB_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_3VEB_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_3VEB_2__dealloc__(((struct __pyx_obj_3_sa_VEB *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":363
- * self.veb = new_VEB(size)
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * del_VEB(self.veb)
- *
- */
-
-static void __pyx_pf_3_sa_3VEB_2__dealloc__(struct __pyx_obj_3_sa_VEB *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":364
- *
- * def __dealloc__(self):
- * del_VEB(self.veb) # <<<<<<<<<<<<<<
- *
- * def __iter__(self):
- */
- __pyx_t_1 = __pyx_f_3_sa_del_VEB(__pyx_v_self->veb); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.VEB.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_3VEB_5__iter__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_3VEB_5__iter__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_3VEB_4__iter__(((struct __pyx_obj_3_sa_VEB *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":366
- * del_VEB(self.veb)
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef VEBIterator it
- * it = VEBIterator()
- */
-
-static PyObject *__pyx_pf_3_sa_3VEB_4__iter__(struct __pyx_obj_3_sa_VEB *__pyx_v_self) {
- struct __pyx_obj_3_sa_VEBIterator *__pyx_v_it = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- struct __pyx_t_3_sa__VEB *__pyx_t_2;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__iter__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":368
- * def __iter__(self):
- * cdef VEBIterator it
- * it = VEBIterator() # <<<<<<<<<<<<<<
- * it.v = self.veb
- * it.next_val = self.veb.min_val
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_VEBIterator)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_it = ((struct __pyx_obj_3_sa_VEBIterator *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":369
- * cdef VEBIterator it
- * it = VEBIterator()
- * it.v = self.veb # <<<<<<<<<<<<<<
- * it.next_val = self.veb.min_val
- * return it
- */
- __pyx_t_2 = __pyx_v_self->veb;
- __pyx_v_it->v = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":370
- * it = VEBIterator()
- * it.v = self.veb
- * it.next_val = self.veb.min_val # <<<<<<<<<<<<<<
- * return it
- *
- */
- __pyx_t_3 = __pyx_v_self->veb->min_val;
- __pyx_v_it->next_val = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":371
- * it.v = self.veb
- * it.next_val = self.veb.min_val
- * return it # <<<<<<<<<<<<<<
- *
- * def insert(self, i):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_it));
- __pyx_r = ((PyObject *)__pyx_v_it);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.VEB.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_it);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_3VEB_7insert(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_3VEB_7insert(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("insert (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_3VEB_6insert(((struct __pyx_obj_3_sa_VEB *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":373
- * return it
- *
- * def insert(self, i): # <<<<<<<<<<<<<<
- * return VEB_insert(self.veb, i)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_3VEB_6insert(struct __pyx_obj_3_sa_VEB *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":374
- *
- * def insert(self, i):
- * return VEB_insert(self.veb, i) # <<<<<<<<<<<<<<
- *
- * cdef int _insert(self, int i):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_VEB_insert(__pyx_v_self->veb, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.VEB.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":376
- * return VEB_insert(self.veb, i)
- *
- * cdef int _insert(self, int i): # <<<<<<<<<<<<<<
- * return VEB_insert(self.veb, i)
- *
- */
-
-static int __pyx_f_3_sa_3VEB__insert(struct __pyx_obj_3_sa_VEB *__pyx_v_self, int __pyx_v_i) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":377
- *
- * cdef int _insert(self, int i):
- * return VEB_insert(self.veb, i) # <<<<<<<<<<<<<<
- *
- * def findsucc(self, i):
- */
- __pyx_r = __pyx_f_3_sa_VEB_insert(__pyx_v_self->veb, __pyx_v_i);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_3VEB_9findsucc(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_3VEB_9findsucc(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("findsucc (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_3VEB_8findsucc(((struct __pyx_obj_3_sa_VEB *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":379
- * return VEB_insert(self.veb, i)
- *
- * def findsucc(self, i): # <<<<<<<<<<<<<<
- * return VEB_findsucc(self.veb, i)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_3VEB_8findsucc(struct __pyx_obj_3_sa_VEB *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("findsucc", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":380
- *
- * def findsucc(self, i):
- * return VEB_findsucc(self.veb, i) # <<<<<<<<<<<<<<
- *
- * cdef int _first(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_VEB_findsucc(__pyx_v_self->veb, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.VEB.findsucc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":382
- * return VEB_findsucc(self.veb, i)
- *
- * cdef int _first(self): # <<<<<<<<<<<<<<
- * return self.veb.min_val
- *
- */
-
-static int __pyx_f_3_sa_3VEB__first(struct __pyx_obj_3_sa_VEB *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_first", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":383
- *
- * cdef int _first(self):
- * return self.veb.min_val # <<<<<<<<<<<<<<
- *
- * cdef int _findsucc(self, int i):
- */
- __pyx_r = __pyx_v_self->veb->min_val;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":385
- * return self.veb.min_val
- *
- * cdef int _findsucc(self, int i): # <<<<<<<<<<<<<<
- * return VEB_findsucc(self.veb, i)
- *
- */
-
-static int __pyx_f_3_sa_3VEB__findsucc(struct __pyx_obj_3_sa_VEB *__pyx_v_self, int __pyx_v_i) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("_findsucc", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":386
- *
- * cdef int _findsucc(self, int i):
- * return VEB_findsucc(self.veb, i) # <<<<<<<<<<<<<<
- *
- * def __len__(self):
- */
- __pyx_r = __pyx_f_3_sa_VEB_findsucc(__pyx_v_self->veb, __pyx_v_i);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_3_sa_3VEB_11__len__(PyObject *__pyx_v_self); /*proto*/
-static Py_ssize_t __pyx_pw_3_sa_3VEB_11__len__(PyObject *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_3VEB_10__len__(((struct __pyx_obj_3_sa_VEB *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":388
- * return VEB_findsucc(self.veb, i)
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return self.veb.size
- *
- */
-
-static Py_ssize_t __pyx_pf_3_sa_3VEB_10__len__(struct __pyx_obj_3_sa_VEB *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":389
- *
- * def __len__(self):
- * return self.veb.size # <<<<<<<<<<<<<<
- *
- * def __contains__(self, i):
- */
- __pyx_r = __pyx_v_self->veb->size;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_3VEB_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static int __pyx_pw_3_sa_3VEB_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_3VEB_12__contains__(((struct __pyx_obj_3_sa_VEB *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":391
- * return self.veb.size
- *
- * def __contains__(self, i): # <<<<<<<<<<<<<<
- * return VEB_contains(self.veb, i)
- */
-
-static int __pyx_pf_3_sa_3VEB_12__contains__(struct __pyx_obj_3_sa_VEB *__pyx_v_self, PyObject *__pyx_v_i) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__contains__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":392
- *
- * def __contains__(self, i):
- * return VEB_contains(self.veb, i) # <<<<<<<<<<<<<<
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_f_3_sa_VEB_contains(__pyx_v_self->veb, __pyx_t_1);
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.VEB.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_3LCP_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_3LCP_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sa = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sa,0};
- PyObject* values[1] = {0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sa)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- }
- __pyx_v_sa = ((struct __pyx_obj_3_sa_SuffixArray *)values[0]);
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.LCP.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sa), __pyx_ptype_3_sa_SuffixArray, 1, "sa", 0))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_3LCP___cinit__(((struct __pyx_obj_3_sa_LCP *)__pyx_v_self), __pyx_v_sa);
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":9
- * cdef IntList lcp
- *
- * def __cinit__(self, SuffixArray sa): # <<<<<<<<<<<<<<
- * cdef int i, k, j, h, n
- * cdef IntList rank
- */
-
-static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sa) {
- int __pyx_v_i;
- int __pyx_v_k;
- int __pyx_v_j;
- int __pyx_v_h;
- int __pyx_v_n;
- struct __pyx_obj_3_sa_IntList *__pyx_v_rank = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":13
- * cdef IntList rank
- *
- * logger.info("Constructing LCP array") # <<<<<<<<<<<<<<
- * self.sa = sa
- * n = self.sa.sa.len
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_63), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":14
- *
- * logger.info("Constructing LCP array")
- * self.sa = sa # <<<<<<<<<<<<<<
- * n = self.sa.sa.len
- * self.lcp = IntList(initial_len=n)
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_sa));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_sa));
- __Pyx_GOTREF(__pyx_v_self->sa);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sa));
- __pyx_v_self->sa = __pyx_v_sa;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":15
- * logger.info("Constructing LCP array")
- * self.sa = sa
- * n = self.sa.sa.len # <<<<<<<<<<<<<<
- * self.lcp = IntList(initial_len=n)
- *
- */
- __pyx_t_3 = __pyx_v_self->sa->sa->len;
- __pyx_v_n = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":16
- * self.sa = sa
- * n = self.sa.sa.len
- * self.lcp = IntList(initial_len=n) # <<<<<<<<<<<<<<
- *
- * rank = IntList(initial_len=n)
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->lcp);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->lcp));
- __pyx_v_self->lcp = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":18
- * self.lcp = IntList(initial_len=n)
- *
- * rank = IntList(initial_len=n) # <<<<<<<<<<<<<<
- * for i from 0 <= i < n:
- * rank.arr[sa.sa.arr[i]] = i
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_1 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_v_rank = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":19
- *
- * rank = IntList(initial_len=n)
- * for i from 0 <= i < n: # <<<<<<<<<<<<<<
- * rank.arr[sa.sa.arr[i]] = i
- *
- */
- __pyx_t_3 = __pyx_v_n;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":20
- * rank = IntList(initial_len=n)
- * for i from 0 <= i < n:
- * rank.arr[sa.sa.arr[i]] = i # <<<<<<<<<<<<<<
- *
- * h = 0
- */
- (__pyx_v_rank->arr[(__pyx_v_sa->sa->arr[__pyx_v_i])]) = __pyx_v_i;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":22
- * rank.arr[sa.sa.arr[i]] = i
- *
- * h = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < n:
- * k = rank.arr[i]
- */
- __pyx_v_h = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":23
- *
- * h = 0
- * for i from 0 <= i < n: # <<<<<<<<<<<<<<
- * k = rank.arr[i]
- * if k == 0:
- */
- __pyx_t_3 = __pyx_v_n;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":24
- * h = 0
- * for i from 0 <= i < n:
- * k = rank.arr[i] # <<<<<<<<<<<<<<
- * if k == 0:
- * self.lcp.arr[k] = -1
- */
- __pyx_v_k = (__pyx_v_rank->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":25
- * for i from 0 <= i < n:
- * k = rank.arr[i]
- * if k == 0: # <<<<<<<<<<<<<<
- * self.lcp.arr[k] = -1
- * else:
- */
- __pyx_t_4 = ((__pyx_v_k == 0) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":26
- * k = rank.arr[i]
- * if k == 0:
- * self.lcp.arr[k] = -1 # <<<<<<<<<<<<<<
- * else:
- * j = sa.sa.arr[k-1]
- */
- (__pyx_v_self->lcp->arr[__pyx_v_k]) = -1;
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":28
- * self.lcp.arr[k] = -1
- * else:
- * j = sa.sa.arr[k-1] # <<<<<<<<<<<<<<
- * while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]:
- * h = h+1
- */
- __pyx_v_j = (__pyx_v_sa->sa->arr[(__pyx_v_k - 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":29
- * else:
- * j = sa.sa.arr[k-1]
- * while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]: # <<<<<<<<<<<<<<
- * h = h+1
- * self.lcp.arr[k] = h
- */
- while (1) {
- __pyx_t_4 = (((__pyx_v_i + __pyx_v_h) < __pyx_v_n) != 0);
- if (__pyx_t_4) {
- __pyx_t_5 = (((__pyx_v_j + __pyx_v_h) < __pyx_v_n) != 0);
- if (__pyx_t_5) {
- __pyx_t_6 = (((__pyx_v_sa->darray->data->arr[(__pyx_v_i + __pyx_v_h)]) == (__pyx_v_sa->darray->data->arr[(__pyx_v_j + __pyx_v_h)])) != 0);
- __pyx_t_7 = __pyx_t_6;
- } else {
- __pyx_t_7 = __pyx_t_5;
- }
- __pyx_t_5 = __pyx_t_7;
- } else {
- __pyx_t_5 = __pyx_t_4;
- }
- if (!__pyx_t_5) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":30
- * j = sa.sa.arr[k-1]
- * while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]:
- * h = h+1 # <<<<<<<<<<<<<<
- * self.lcp.arr[k] = h
- * if h > 0:
- */
- __pyx_v_h = (__pyx_v_h + 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":31
- * while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]:
- * h = h+1
- * self.lcp.arr[k] = h # <<<<<<<<<<<<<<
- * if h > 0:
- * h = h-1
- */
- (__pyx_v_self->lcp->arr[__pyx_v_k]) = __pyx_v_h;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":32
- * h = h+1
- * self.lcp.arr[k] = h
- * if h > 0: # <<<<<<<<<<<<<<
- * h = h-1
- * logger.info("LCP array completed")
- */
- __pyx_t_5 = ((__pyx_v_h > 0) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":33
- * self.lcp.arr[k] = h
- * if h > 0:
- * h = h-1 # <<<<<<<<<<<<<<
- * logger.info("LCP array completed")
- *
- */
- __pyx_v_h = (__pyx_v_h - 1);
- goto __pyx_L10;
- }
- __pyx_L10:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":34
- * if h > 0:
- * h = h-1
- * logger.info("LCP array completed") # <<<<<<<<<<<<<<
- *
- * def compute_stats(self, int max_n):
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_65), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.LCP.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_rank);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_3LCP_3compute_stats(PyObject *__pyx_v_self, PyObject *__pyx_arg_max_n); /*proto*/
-static char __pyx_doc_3_sa_3LCP_2compute_stats[] = "Note: the output of this function is not exact. In\n particular, the frequency associated with each word is \n not guaranteed to be correct. This is due to a bit of\n laxness in the design; the function is intended only to\n obtain a list of the most frequent words; for this \n purpose it is perfectly fine";
-static PyObject *__pyx_pw_3_sa_3LCP_3compute_stats(PyObject *__pyx_v_self, PyObject *__pyx_arg_max_n) {
- int __pyx_v_max_n;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("compute_stats (wrapper)", 0);
- assert(__pyx_arg_max_n); {
- __pyx_v_max_n = __Pyx_PyInt_AsInt(__pyx_arg_max_n); if (unlikely((__pyx_v_max_n == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.LCP.compute_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_3LCP_2compute_stats(((struct __pyx_obj_3_sa_LCP *)__pyx_v_self), ((int)__pyx_v_max_n));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":36
- * logger.info("LCP array completed")
- *
- * def compute_stats(self, int max_n): # <<<<<<<<<<<<<<
- * """Note: the output of this function is not exact. In
- * particular, the frequency associated with each word is
- */
-
-static PyObject *__pyx_pf_3_sa_3LCP_2compute_stats(struct __pyx_obj_3_sa_LCP *__pyx_v_self, int __pyx_v_max_n) {
- struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("compute_stats", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)__pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats(__pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __pyx_cur_scope->__pyx_v_max_n = __pyx_v_max_n;
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_3LCP_4generator1, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.LCP.compute_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_t_8;
- long __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L26_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":48
- * cdef VEB veb
- *
- * N = self.sa.sa.len # <<<<<<<<<<<<<<
- *
- * ngram_starts = []
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->sa->sa->len;
- __pyx_cur_scope->__pyx_v_N = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":50
- * N = self.sa.sa.len
- *
- * ngram_starts = [] # <<<<<<<<<<<<<<
- * for n from 0 <= n < max_n:
- * ngram_starts.append(IntList(initial_len=N))
- */
- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_cur_scope->__pyx_v_ngram_starts = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":51
- *
- * ngram_starts = []
- * for n from 0 <= n < max_n: # <<<<<<<<<<<<<<
- * ngram_starts.append(IntList(initial_len=N))
- *
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_max_n;
- for (__pyx_cur_scope->__pyx_v_n = 0; __pyx_cur_scope->__pyx_v_n < __pyx_t_1; __pyx_cur_scope->__pyx_v_n++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":52
- * ngram_starts = []
- * for n from 0 <= n < max_n:
- * ngram_starts.append(IntList(initial_len=N)) # <<<<<<<<<<<<<<
- *
- * run_start = IntList(initial_len=max_n)
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_N); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_4 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_ngram_starts, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":54
- * ngram_starts.append(IntList(initial_len=N))
- *
- * run_start = IntList(initial_len=max_n) # <<<<<<<<<<<<<<
- * veb = VEB(N)
- *
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_max_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_cur_scope->__pyx_v_run_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":55
- *
- * run_start = IntList(initial_len=max_n)
- * veb = VEB(N) # <<<<<<<<<<<<<<
- *
- * for i from 0 <= i < N:
- */
- __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_N); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_VEB)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_cur_scope->__pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":57
- * veb = VEB(N)
- *
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * h = self.lcp.arr[i]
- * if h < 0:
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_N;
- for (__pyx_cur_scope->__pyx_v_i = 0; __pyx_cur_scope->__pyx_v_i < __pyx_t_1; __pyx_cur_scope->__pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":58
- *
- * for i from 0 <= i < N:
- * h = self.lcp.arr[i] # <<<<<<<<<<<<<<
- * if h < 0:
- * h = 0
- */
- __pyx_cur_scope->__pyx_v_h = (__pyx_cur_scope->__pyx_v_self->lcp->arr[__pyx_cur_scope->__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":59
- * for i from 0 <= i < N:
- * h = self.lcp.arr[i]
- * if h < 0: # <<<<<<<<<<<<<<
- * h = 0
- * for n from h <= n < max_n:
- */
- __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_h < 0) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":60
- * h = self.lcp.arr[i]
- * if h < 0:
- * h = 0 # <<<<<<<<<<<<<<
- * for n from h <= n < max_n:
- * rs = run_start.arr[n]
- */
- __pyx_cur_scope->__pyx_v_h = 0;
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":61
- * if h < 0:
- * h = 0
- * for n from h <= n < max_n: # <<<<<<<<<<<<<<
- * rs = run_start.arr[n]
- * run_start.arr[n] = i
- */
- __pyx_t_6 = __pyx_cur_scope->__pyx_v_max_n;
- for (__pyx_cur_scope->__pyx_v_n = __pyx_cur_scope->__pyx_v_h; __pyx_cur_scope->__pyx_v_n < __pyx_t_6; __pyx_cur_scope->__pyx_v_n++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":62
- * h = 0
- * for n from h <= n < max_n:
- * rs = run_start.arr[n] # <<<<<<<<<<<<<<
- * run_start.arr[n] = i
- * freq = i - rs
- */
- __pyx_cur_scope->__pyx_v_rs = (__pyx_cur_scope->__pyx_v_run_start->arr[__pyx_cur_scope->__pyx_v_n]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":63
- * for n from h <= n < max_n:
- * rs = run_start.arr[n]
- * run_start.arr[n] = i # <<<<<<<<<<<<<<
- * freq = i - rs
- * if freq > 1000: # arbitrary, but see note below
- */
- (__pyx_cur_scope->__pyx_v_run_start->arr[__pyx_cur_scope->__pyx_v_n]) = __pyx_cur_scope->__pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":64
- * rs = run_start.arr[n]
- * run_start.arr[n] = i
- * freq = i - rs # <<<<<<<<<<<<<<
- * if freq > 1000: # arbitrary, but see note below
- * veb._insert(freq)
- */
- __pyx_cur_scope->__pyx_v_freq = (__pyx_cur_scope->__pyx_v_i - __pyx_cur_scope->__pyx_v_rs);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":65
- * run_start.arr[n] = i
- * freq = i - rs
- * if freq > 1000: # arbitrary, but see note below # <<<<<<<<<<<<<<
- * veb._insert(freq)
- * ngram_start = ngram_starts[n]
- */
- __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_freq > 1000) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":66
- * freq = i - rs
- * if freq > 1000: # arbitrary, but see note below
- * veb._insert(freq) # <<<<<<<<<<<<<<
- * ngram_start = ngram_starts[n]
- * while ngram_start.arr[freq] > 0:
- */
- ((struct __pyx_vtabstruct_3_sa_VEB *)__pyx_cur_scope->__pyx_v_veb->__pyx_vtab)->_insert(__pyx_cur_scope->__pyx_v_veb, __pyx_cur_scope->__pyx_v_freq);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":67
- * if freq > 1000: # arbitrary, but see note below
- * veb._insert(freq)
- * ngram_start = ngram_starts[n] # <<<<<<<<<<<<<<
- * while ngram_start.arr[freq] > 0:
- * freq = freq + 1 # cheating a bit, should be ok for sparse histogram
- */
- __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_starts), __pyx_cur_scope->__pyx_v_n, sizeof(int), PyInt_FromLong, 1, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start));
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_cur_scope->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":68
- * veb._insert(freq)
- * ngram_start = ngram_starts[n]
- * while ngram_start.arr[freq] > 0: # <<<<<<<<<<<<<<
- * freq = freq + 1 # cheating a bit, should be ok for sparse histogram
- * ngram_start.arr[freq] = rs
- */
- while (1) {
- __pyx_t_5 = (((__pyx_cur_scope->__pyx_v_ngram_start->arr[__pyx_cur_scope->__pyx_v_freq]) > 0) != 0);
- if (!__pyx_t_5) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":69
- * ngram_start = ngram_starts[n]
- * while ngram_start.arr[freq] > 0:
- * freq = freq + 1 # cheating a bit, should be ok for sparse histogram # <<<<<<<<<<<<<<
- * ngram_start.arr[freq] = rs
- * i = veb.veb.min_val
- */
- __pyx_cur_scope->__pyx_v_freq = (__pyx_cur_scope->__pyx_v_freq + 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":70
- * while ngram_start.arr[freq] > 0:
- * freq = freq + 1 # cheating a bit, should be ok for sparse histogram
- * ngram_start.arr[freq] = rs # <<<<<<<<<<<<<<
- * i = veb.veb.min_val
- * while i != -1:
- */
- (__pyx_cur_scope->__pyx_v_ngram_start->arr[__pyx_cur_scope->__pyx_v_freq]) = __pyx_cur_scope->__pyx_v_rs;
- goto __pyx_L11;
- }
- __pyx_L11:;
- }
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":71
- * freq = freq + 1 # cheating a bit, should be ok for sparse histogram
- * ngram_start.arr[freq] = rs
- * i = veb.veb.min_val # <<<<<<<<<<<<<<
- * while i != -1:
- * ii = veb._findsucc(i)
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_veb->veb->min_val;
- __pyx_cur_scope->__pyx_v_i = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":72
- * ngram_start.arr[freq] = rs
- * i = veb.veb.min_val
- * while i != -1: # <<<<<<<<<<<<<<
- * ii = veb._findsucc(i)
- * for n from 0 <= n < max_n:
- */
- while (1) {
- __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_i != -1) != 0);
- if (!__pyx_t_5) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":73
- * i = veb.veb.min_val
- * while i != -1:
- * ii = veb._findsucc(i) # <<<<<<<<<<<<<<
- * for n from 0 <= n < max_n:
- * ngram_start = ngram_starts[n]
- */
- __pyx_cur_scope->__pyx_v_ii = ((struct __pyx_vtabstruct_3_sa_VEB *)__pyx_cur_scope->__pyx_v_veb->__pyx_vtab)->_findsucc(__pyx_cur_scope->__pyx_v_veb, __pyx_cur_scope->__pyx_v_i);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":74
- * while i != -1:
- * ii = veb._findsucc(i)
- * for n from 0 <= n < max_n: # <<<<<<<<<<<<<<
- * ngram_start = ngram_starts[n]
- * iii = i
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_max_n;
- for (__pyx_cur_scope->__pyx_v_n = 0; __pyx_cur_scope->__pyx_v_n < __pyx_t_1; __pyx_cur_scope->__pyx_v_n++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":75
- * ii = veb._findsucc(i)
- * for n from 0 <= n < max_n:
- * ngram_start = ngram_starts[n] # <<<<<<<<<<<<<<
- * iii = i
- * rs = ngram_start.arr[iii]
- */
- __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_starts), __pyx_cur_scope->__pyx_v_n, sizeof(int), PyInt_FromLong, 1, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start));
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_cur_scope->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":76
- * for n from 0 <= n < max_n:
- * ngram_start = ngram_starts[n]
- * iii = i # <<<<<<<<<<<<<<
- * rs = ngram_start.arr[iii]
- * while (ii==-1 or iii < ii) and rs != 0:
- */
- __pyx_cur_scope->__pyx_v_iii = __pyx_cur_scope->__pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":77
- * ngram_start = ngram_starts[n]
- * iii = i
- * rs = ngram_start.arr[iii] # <<<<<<<<<<<<<<
- * while (ii==-1 or iii < ii) and rs != 0:
- * j = self.sa.sa.arr[rs]
- */
- __pyx_cur_scope->__pyx_v_rs = (__pyx_cur_scope->__pyx_v_ngram_start->arr[__pyx_cur_scope->__pyx_v_iii]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":78
- * iii = i
- * rs = ngram_start.arr[iii]
- * while (ii==-1 or iii < ii) and rs != 0: # <<<<<<<<<<<<<<
- * j = self.sa.sa.arr[rs]
- * valid = 1
- */
- while (1) {
- __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_ii == -1) != 0);
- if (!__pyx_t_5) {
- __pyx_t_7 = ((__pyx_cur_scope->__pyx_v_iii < __pyx_cur_scope->__pyx_v_ii) != 0);
- __pyx_t_8 = __pyx_t_7;
- } else {
- __pyx_t_8 = __pyx_t_5;
- }
- if (__pyx_t_8) {
- __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_rs != 0) != 0);
- __pyx_t_7 = __pyx_t_5;
- } else {
- __pyx_t_7 = __pyx_t_8;
- }
- if (!__pyx_t_7) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":79
- * rs = ngram_start.arr[iii]
- * while (ii==-1 or iii < ii) and rs != 0:
- * j = self.sa.sa.arr[rs] # <<<<<<<<<<<<<<
- * valid = 1
- * for k from 0 <= k < n+1:
- */
- __pyx_cur_scope->__pyx_v_j = (__pyx_cur_scope->__pyx_v_self->sa->sa->arr[__pyx_cur_scope->__pyx_v_rs]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":80
- * while (ii==-1 or iii < ii) and rs != 0:
- * j = self.sa.sa.arr[rs]
- * valid = 1 # <<<<<<<<<<<<<<
- * for k from 0 <= k < n+1:
- * if self.sa.darray.data.arr[j+k] < 2:
- */
- __pyx_cur_scope->__pyx_v_valid = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":81
- * j = self.sa.sa.arr[rs]
- * valid = 1
- * for k from 0 <= k < n+1: # <<<<<<<<<<<<<<
- * if self.sa.darray.data.arr[j+k] < 2:
- * valid = 0
- */
- __pyx_t_9 = (__pyx_cur_scope->__pyx_v_n + 1);
- for (__pyx_cur_scope->__pyx_v_k = 0; __pyx_cur_scope->__pyx_v_k < __pyx_t_9; __pyx_cur_scope->__pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":82
- * valid = 1
- * for k from 0 <= k < n+1:
- * if self.sa.darray.data.arr[j+k] < 2: # <<<<<<<<<<<<<<
- * valid = 0
- * if valid:
- */
- __pyx_t_7 = (((__pyx_cur_scope->__pyx_v_self->sa->darray->data->arr[(__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_k)]) < 2) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":83
- * for k from 0 <= k < n+1:
- * if self.sa.darray.data.arr[j+k] < 2:
- * valid = 0 # <<<<<<<<<<<<<<
- * if valid:
- * ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])
- */
- __pyx_cur_scope->__pyx_v_valid = 0;
- goto __pyx_L22;
- }
- __pyx_L22:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":84
- * if self.sa.darray.data.arr[j+k] < 2:
- * valid = 0
- * if valid: # <<<<<<<<<<<<<<
- * ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])
- * yield i, n+1, ngram
- */
- __pyx_t_7 = (__pyx_cur_scope->__pyx_v_valid != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":85
- * valid = 0
- * if valid:
- * ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)]) # <<<<<<<<<<<<<<
- * yield i, n+1, ngram
- * iii = iii + 1
- */
- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = (__pyx_cur_scope->__pyx_v_n + 1);
- for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_9; __pyx_t_6+=1) {
- __pyx_cur_scope->__pyx_v_k = __pyx_t_6;
- __pyx_t_3 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_self->sa->darray->data->arr[(__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_k)])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __pyx_t_3 = ((PyObject *)PyList_AsTuple(((PyObject*)__pyx_t_2))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_cur_scope->__pyx_v_ngram = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":86
- * if valid:
- * ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])
- * yield i, n+1, ngram # <<<<<<<<<<<<<<
- * iii = iii + 1
- * rs = ngram_start.arr[iii]
- */
- __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_n + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));
- PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_cur_scope->__pyx_v_ngram));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));
- __pyx_t_3 = 0;
- __pyx_t_2 = 0;
- __pyx_r = ((PyObject *)__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L26_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L23;
- }
- __pyx_L23:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":87
- * ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])
- * yield i, n+1, ngram
- * iii = iii + 1 # <<<<<<<<<<<<<<
- * rs = ngram_start.arr[iii]
- * i = ii
- */
- __pyx_cur_scope->__pyx_v_iii = (__pyx_cur_scope->__pyx_v_iii + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":88
- * yield i, n+1, ngram
- * iii = iii + 1
- * rs = ngram_start.arr[iii] # <<<<<<<<<<<<<<
- * i = ii
- */
- __pyx_cur_scope->__pyx_v_rs = (__pyx_cur_scope->__pyx_v_ngram_start->arr[__pyx_cur_scope->__pyx_v_iii]);
- }
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":89
- * iii = iii + 1
- * rs = ngram_start.arr[iii]
- * i = ii # <<<<<<<<<<<<<<
- */
- __pyx_cur_scope->__pyx_v_i = __pyx_cur_scope->__pyx_v_ii;
- }
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("compute_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_8Alphabet_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_8Alphabet_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
- __pyx_r = __pyx_pf_3_sa_8Alphabet___cinit__(((struct __pyx_obj_3_sa_Alphabet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":12
- * cdef dict id2sym
- *
- * def __cinit__(self): # <<<<<<<<<<<<<<
- * self.terminals = StringMap()
- * self.nonterminals = StringMap()
- */
-
-static int __pyx_pf_3_sa_8Alphabet___cinit__(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":13
- *
- * def __cinit__(self):
- * self.terminals = StringMap() # <<<<<<<<<<<<<<
- * self.nonterminals = StringMap()
- * self.id2sym = {}
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_StringMap)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->terminals);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->terminals));
- __pyx_v_self->terminals = ((struct __pyx_obj_3_sa_StringMap *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":14
- * def __cinit__(self):
- * self.terminals = StringMap()
- * self.nonterminals = StringMap() # <<<<<<<<<<<<<<
- * self.id2sym = {}
- * self.first_nonterminal = -1
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_StringMap)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->nonterminals);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->nonterminals));
- __pyx_v_self->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":15
- * self.terminals = StringMap()
- * self.nonterminals = StringMap()
- * self.id2sym = {} # <<<<<<<<<<<<<<
- * self.first_nonterminal = -1
- *
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->id2sym);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->id2sym));
- __pyx_v_self->id2sym = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":16
- * self.nonterminals = StringMap()
- * self.id2sym = {}
- * self.first_nonterminal = -1 # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- __pyx_v_self->first_nonterminal = -1;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.Alphabet.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_8Alphabet_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_8Alphabet_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_8Alphabet_2__dealloc__(((struct __pyx_obj_3_sa_Alphabet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":18
- * self.first_nonterminal = -1
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * pass
- *
- */
-
-static void __pyx_pf_3_sa_8Alphabet_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_3_sa_Alphabet *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":21
- * pass
- *
- * cdef int isvar(self, int sym): # <<<<<<<<<<<<<<
- * return sym < 0
- *
- */
-
-static int __pyx_f_3_sa_8Alphabet_isvar(CYTHON_UNUSED struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("isvar", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":22
- *
- * cdef int isvar(self, int sym):
- * return sym < 0 # <<<<<<<<<<<<<<
- *
- * cdef int isword(self, int sym):
- */
- __pyx_r = (__pyx_v_sym < 0);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":24
- * return sym < 0
- *
- * cdef int isword(self, int sym): # <<<<<<<<<<<<<<
- * return sym >= 0
- *
- */
-
-static int __pyx_f_3_sa_8Alphabet_isword(CYTHON_UNUSED struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("isword", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":25
- *
- * cdef int isword(self, int sym):
- * return sym >= 0 # <<<<<<<<<<<<<<
- *
- * cdef int getindex(self, int sym):
- */
- __pyx_r = (__pyx_v_sym >= 0);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":27
- * return sym >= 0
- *
- * cdef int getindex(self, int sym): # <<<<<<<<<<<<<<
- * return -sym & INDEX_MASK
- *
- */
-
-static int __pyx_f_3_sa_8Alphabet_getindex(CYTHON_UNUSED struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("getindex", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":28
- *
- * cdef int getindex(self, int sym):
- * return -sym & INDEX_MASK # <<<<<<<<<<<<<<
- *
- * cdef int setindex(self, int sym, int ind):
- */
- __pyx_r = ((-__pyx_v_sym) & __pyx_v_3_sa_INDEX_MASK);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":30
- * return -sym & INDEX_MASK
- *
- * cdef int setindex(self, int sym, int ind): # <<<<<<<<<<<<<<
- * return -(-sym & ~INDEX_MASK | ind)
- *
- */
-
-static int __pyx_f_3_sa_8Alphabet_setindex(CYTHON_UNUSED struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym, int __pyx_v_ind) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("setindex", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":31
- *
- * cdef int setindex(self, int sym, int ind):
- * return -(-sym & ~INDEX_MASK | ind) # <<<<<<<<<<<<<<
- *
- * cdef int clearindex(self, int sym):
- */
- __pyx_r = (-(((-__pyx_v_sym) & (~__pyx_v_3_sa_INDEX_MASK)) | __pyx_v_ind));
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":33
- * return -(-sym & ~INDEX_MASK | ind)
- *
- * cdef int clearindex(self, int sym): # <<<<<<<<<<<<<<
- * return -(-sym& ~INDEX_MASK)
- *
- */
-
-static int __pyx_f_3_sa_8Alphabet_clearindex(CYTHON_UNUSED struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("clearindex", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":34
- *
- * cdef int clearindex(self, int sym):
- * return -(-sym& ~INDEX_MASK) # <<<<<<<<<<<<<<
- *
- * cdef int match(self, int sym1, int sym2):
- */
- __pyx_r = (-((-__pyx_v_sym) & (~__pyx_v_3_sa_INDEX_MASK)));
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":36
- * return -(-sym& ~INDEX_MASK)
- *
- * cdef int match(self, int sym1, int sym2): # <<<<<<<<<<<<<<
- * return self.clearindex(sym1) == self.clearindex(sym2);
- *
- */
-
-static int __pyx_f_3_sa_8Alphabet_match(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym1, int __pyx_v_sym2) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("match", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":37
- *
- * cdef int match(self, int sym1, int sym2):
- * return self.clearindex(sym1) == self.clearindex(sym2); # <<<<<<<<<<<<<<
- *
- * cdef char* tocat(self, int sym):
- */
- __pyx_r = (((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->clearindex(__pyx_v_self, __pyx_v_sym1) == ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->clearindex(__pyx_v_self, __pyx_v_sym2));
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":39
- * return self.clearindex(sym1) == self.clearindex(sym2);
- *
- * cdef char* tocat(self, int sym): # <<<<<<<<<<<<<<
- * return self.nonterminals.word((-sym >> INDEX_SHIFT)-1)
- *
- */
-
-static char *__pyx_f_3_sa_8Alphabet_tocat(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym) {
- char *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("tocat", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":40
- *
- * cdef char* tocat(self, int sym):
- * return self.nonterminals.word((-sym >> INDEX_SHIFT)-1) # <<<<<<<<<<<<<<
- *
- * cdef int fromcat(self, char *s):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_self->nonterminals->__pyx_vtab)->word(__pyx_v_self->nonterminals, (((-__pyx_v_sym) >> __pyx_v_3_sa_INDEX_SHIFT) - 1));
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":42
- * return self.nonterminals.word((-sym >> INDEX_SHIFT)-1)
- *
- * cdef int fromcat(self, char *s): # <<<<<<<<<<<<<<
- * cdef int i
- * i = self.nonterminals.index(s)
- */
-
-static int __pyx_f_3_sa_8Alphabet_fromcat(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, char *__pyx_v_s) {
- int __pyx_v_i;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("fromcat", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":44
- * cdef int fromcat(self, char *s):
- * cdef int i
- * i = self.nonterminals.index(s) # <<<<<<<<<<<<<<
- * if self.first_nonterminal == -1:
- * self.first_nonterminal = i
- */
- __pyx_v_i = ((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_self->nonterminals->__pyx_vtab)->index(__pyx_v_self->nonterminals, __pyx_v_s);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":45
- * cdef int i
- * i = self.nonterminals.index(s)
- * if self.first_nonterminal == -1: # <<<<<<<<<<<<<<
- * self.first_nonterminal = i
- * if i > self.last_nonterminal:
- */
- __pyx_t_1 = ((__pyx_v_self->first_nonterminal == -1) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":46
- * i = self.nonterminals.index(s)
- * if self.first_nonterminal == -1:
- * self.first_nonterminal = i # <<<<<<<<<<<<<<
- * if i > self.last_nonterminal:
- * self.last_nonterminal = i
- */
- __pyx_v_self->first_nonterminal = __pyx_v_i;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":47
- * if self.first_nonterminal == -1:
- * self.first_nonterminal = i
- * if i > self.last_nonterminal: # <<<<<<<<<<<<<<
- * self.last_nonterminal = i
- * return -(i+1 << INDEX_SHIFT)
- */
- __pyx_t_1 = ((__pyx_v_i > __pyx_v_self->last_nonterminal) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":48
- * self.first_nonterminal = i
- * if i > self.last_nonterminal:
- * self.last_nonterminal = i # <<<<<<<<<<<<<<
- * return -(i+1 << INDEX_SHIFT)
- *
- */
- __pyx_v_self->last_nonterminal = __pyx_v_i;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":49
- * if i > self.last_nonterminal:
- * self.last_nonterminal = i
- * return -(i+1 << INDEX_SHIFT) # <<<<<<<<<<<<<<
- *
- * cdef char* tostring(self, int sym):
- */
- __pyx_r = (-((__pyx_v_i + 1) << __pyx_v_3_sa_INDEX_SHIFT));
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":51
- * return -(i+1 << INDEX_SHIFT)
- *
- * cdef char* tostring(self, int sym): # <<<<<<<<<<<<<<
- * cdef int ind
- * if self.isvar(sym):
- */
-
-static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, int __pyx_v_sym) {
- int __pyx_v_ind;
- char *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- char *__pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("tostring", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":53
- * cdef char* tostring(self, int sym):
- * cdef int ind
- * if self.isvar(sym): # <<<<<<<<<<<<<<
- * if sym in self.id2sym:
- * return self.id2sym[sym]
- */
- __pyx_t_1 = (((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->isvar(__pyx_v_self, __pyx_v_sym) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":54
- * cdef int ind
- * if self.isvar(sym):
- * if sym in self.id2sym: # <<<<<<<<<<<<<<
- * return self.id2sym[sym]
- * ind = self.getindex(sym)
- */
- __pyx_t_2 = PyInt_FromLong(__pyx_v_sym); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_1 = (__Pyx_PyDict_Contains(__pyx_t_2, ((PyObject *)__pyx_v_self->id2sym), Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_3 = (__pyx_t_1 != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":55
- * if self.isvar(sym):
- * if sym in self.id2sym:
- * return self.id2sym[sym] # <<<<<<<<<<<<<<
- * ind = self.getindex(sym)
- * if ind > 0:
- */
- if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_4;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":56
- * if sym in self.id2sym:
- * return self.id2sym[sym]
- * ind = self.getindex(sym) # <<<<<<<<<<<<<<
- * if ind > 0:
- * self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind)
- */
- __pyx_v_ind = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->getindex(__pyx_v_self, __pyx_v_sym);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":57
- * return self.id2sym[sym]
- * ind = self.getindex(sym)
- * if ind > 0: # <<<<<<<<<<<<<<
- * self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind)
- * else:
- */
- __pyx_t_3 = ((__pyx_v_ind > 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":58
- * ind = self.getindex(sym)
- * if ind > 0:
- * self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind) # <<<<<<<<<<<<<<
- * else:
- * self.id2sym[sym] = "[%s]" % self.tocat(sym)
- */
- __pyx_t_2 = __Pyx_PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->tocat(__pyx_v_self, __pyx_v_sym)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_5 = PyInt_FromLong(__pyx_v_ind); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_2 = 0;
- __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_66), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, ((PyObject *)__pyx_t_5), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":60
- * self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind)
- * else:
- * self.id2sym[sym] = "[%s]" % self.tocat(sym) # <<<<<<<<<<<<<<
- * return self.id2sym[sym]
- * else:
- */
- __pyx_t_5 = __Pyx_PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->tocat(__pyx_v_self, __pyx_v_sym)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_67), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, ((PyObject *)__pyx_t_6), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":61
- * else:
- * self.id2sym[sym] = "[%s]" % self.tocat(sym)
- * return self.id2sym[sym] # <<<<<<<<<<<<<<
- * else:
- * return self.terminals.word(sym)
- */
- if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_r = __pyx_t_4;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":63
- * return self.id2sym[sym]
- * else:
- * return self.terminals.word(sym) # <<<<<<<<<<<<<<
- *
- * cdef int fromstring(self, char *s, bint terminal):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_self->terminals->__pyx_vtab)->word(__pyx_v_self->terminals, __pyx_v_sym);
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_WriteUnraisable("_sa.Alphabet.tostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":65
- * return self.terminals.word(sym)
- *
- * cdef int fromstring(self, char *s, bint terminal): # <<<<<<<<<<<<<<
- * """Warning: this method is allowed to alter s."""
- * cdef char *comma
- */
-
-static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self, char *__pyx_v_s, int __pyx_v_terminal) {
- char *__pyx_v_comma;
- int __pyx_v_n;
- char *__pyx_v_sep;
- PyObject *__pyx_v_s1 = NULL;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- char *__pyx_t_8;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("fromstring", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":69
- * cdef char *comma
- * cdef int n
- * n = strlen(s) # <<<<<<<<<<<<<<
- * cdef char *sep
- * sep = strstr(s,"_SEP_")
- */
- __pyx_v_n = strlen(__pyx_v_s);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":71
- * n = strlen(s)
- * cdef char *sep
- * sep = strstr(s,"_SEP_") # <<<<<<<<<<<<<<
- * if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL:
- * if terminal:
- */
- __pyx_v_sep = strstr(__pyx_v_s, __pyx_k___SEP_);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":72
- * cdef char *sep
- * sep = strstr(s,"_SEP_")
- * if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL: # <<<<<<<<<<<<<<
- * if terminal:
- * s1 = "\\"+s
- */
- __pyx_t_1 = ((__pyx_v_n >= 3) != 0);
- if (__pyx_t_1) {
- __pyx_t_2 = (((__pyx_v_s[0]) == '[') != 0);
- if (__pyx_t_2) {
- __pyx_t_3 = (((__pyx_v_s[(__pyx_v_n - 1)]) == ']') != 0);
- if (__pyx_t_3) {
- __pyx_t_4 = ((__pyx_v_sep == NULL) != 0);
- __pyx_t_5 = __pyx_t_4;
- } else {
- __pyx_t_5 = __pyx_t_3;
- }
- __pyx_t_3 = __pyx_t_5;
- } else {
- __pyx_t_3 = __pyx_t_2;
- }
- __pyx_t_2 = __pyx_t_3;
- } else {
- __pyx_t_2 = __pyx_t_1;
- }
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":73
- * sep = strstr(s,"_SEP_")
- * if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL:
- * if terminal: # <<<<<<<<<<<<<<
- * s1 = "\\"+s
- * return self.terminals.index(s1)
- */
- __pyx_t_2 = (__pyx_v_terminal != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":74
- * if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL:
- * if terminal:
- * s1 = "\\"+s # <<<<<<<<<<<<<<
- * return self.terminals.index(s1)
- * s[n-1] = c'\0'
- */
- __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_s); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_kp_s_68), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_v_s1 = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":75
- * if terminal:
- * s1 = "\\"+s
- * return self.terminals.index(s1) # <<<<<<<<<<<<<<
- * s[n-1] = c'\0'
- * s = s + 1
- */
- __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_s1); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_self->terminals->__pyx_vtab)->index(__pyx_v_self->terminals, __pyx_t_8);
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":76
- * s1 = "\\"+s
- * return self.terminals.index(s1)
- * s[n-1] = c'\0' # <<<<<<<<<<<<<<
- * s = s + 1
- * comma = strrchr(s, c',')
- */
- (__pyx_v_s[(__pyx_v_n - 1)]) = '\x00';
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":77
- * return self.terminals.index(s1)
- * s[n-1] = c'\0'
- * s = s + 1 # <<<<<<<<<<<<<<
- * comma = strrchr(s, c',')
- * if comma != NULL:
- */
- __pyx_v_s = (__pyx_v_s + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":78
- * s[n-1] = c'\0'
- * s = s + 1
- * comma = strrchr(s, c',') # <<<<<<<<<<<<<<
- * if comma != NULL:
- * comma[0] = c'\0'
- */
- __pyx_v_comma = strrchr(__pyx_v_s, ',');
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":79
- * s = s + 1
- * comma = strrchr(s, c',')
- * if comma != NULL: # <<<<<<<<<<<<<<
- * comma[0] = c'\0'
- * return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10))
- */
- __pyx_t_2 = ((__pyx_v_comma != NULL) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":80
- * comma = strrchr(s, c',')
- * if comma != NULL:
- * comma[0] = c'\0' # <<<<<<<<<<<<<<
- * return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10))
- * else:
- */
- (__pyx_v_comma[0]) = '\x00';
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":81
- * if comma != NULL:
- * comma[0] = c'\0'
- * return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10)) # <<<<<<<<<<<<<<
- * else:
- * return self.fromcat(s)
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->setindex(__pyx_v_self, ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->fromcat(__pyx_v_self, __pyx_v_s), strtol((__pyx_v_comma + 1), NULL, 10));
- goto __pyx_L0;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":83
- * return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10))
- * else:
- * return self.fromcat(s) # <<<<<<<<<<<<<<
- * else:
- * return self.terminals.index(s)
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->fromcat(__pyx_v_self, __pyx_v_s);
- goto __pyx_L0;
- }
- __pyx_L5:;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":85
- * return self.fromcat(s)
- * else:
- * return self.terminals.index(s) # <<<<<<<<<<<<<<
- *
- * cdef Alphabet ALPHABET = Alphabet()
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_self->terminals->__pyx_vtab)->index(__pyx_v_self->terminals, __pyx_v_s);
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_WriteUnraisable("_sa.Alphabet.fromstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_s1);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_8Alphabet_9terminals_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_8Alphabet_9terminals_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_8Alphabet_9terminals___get__(((struct __pyx_obj_3_sa_Alphabet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":8
- *
- * cdef class Alphabet:
- * cdef readonly StringMap terminals, nonterminals # <<<<<<<<<<<<<<
- * cdef int first_nonterminal, last_nonterminal
- * cdef dict id2sym
- */
-
-static PyObject *__pyx_pf_3_sa_8Alphabet_9terminals___get__(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->terminals));
- __pyx_r = ((PyObject *)__pyx_v_self->terminals);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_8Alphabet_12nonterminals_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_8Alphabet_12nonterminals_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_8Alphabet_12nonterminals___get__(((struct __pyx_obj_3_sa_Alphabet *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_3_sa_8Alphabet_12nonterminals___get__(struct __pyx_obj_3_sa_Alphabet *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->nonterminals));
- __pyx_r = ((PyObject *)__pyx_v_self->nonterminals);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":89
- * cdef Alphabet ALPHABET = Alphabet()
- *
- * cdef char* sym_tostring(int sym): # <<<<<<<<<<<<<<
- * return ALPHABET.tostring(sym)
- *
- */
-
-static char *__pyx_f_3_sa_sym_tostring(int __pyx_v_sym) {
- char *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sym_tostring", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":90
- *
- * cdef char* sym_tostring(int sym):
- * return ALPHABET.tostring(sym) # <<<<<<<<<<<<<<
- *
- * cdef char* sym_tocat(int sym):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_3_sa_ALPHABET->__pyx_vtab)->tostring(__pyx_v_3_sa_ALPHABET, __pyx_v_sym);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":92
- * return ALPHABET.tostring(sym)
- *
- * cdef char* sym_tocat(int sym): # <<<<<<<<<<<<<<
- * return ALPHABET.tocat(sym)
- *
- */
-
-static char *__pyx_f_3_sa_sym_tocat(int __pyx_v_sym) {
- char *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sym_tocat", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":93
- *
- * cdef char* sym_tocat(int sym):
- * return ALPHABET.tocat(sym) # <<<<<<<<<<<<<<
- *
- * cdef int sym_isvar(int sym):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_3_sa_ALPHABET->__pyx_vtab)->tocat(__pyx_v_3_sa_ALPHABET, __pyx_v_sym);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":95
- * return ALPHABET.tocat(sym)
- *
- * cdef int sym_isvar(int sym): # <<<<<<<<<<<<<<
- * return ALPHABET.isvar(sym)
- *
- */
-
-static int __pyx_f_3_sa_sym_isvar(int __pyx_v_sym) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sym_isvar", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":96
- *
- * cdef int sym_isvar(int sym):
- * return ALPHABET.isvar(sym) # <<<<<<<<<<<<<<
- *
- * cdef int sym_getindex(int sym):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_3_sa_ALPHABET->__pyx_vtab)->isvar(__pyx_v_3_sa_ALPHABET, __pyx_v_sym);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":98
- * return ALPHABET.isvar(sym)
- *
- * cdef int sym_getindex(int sym): # <<<<<<<<<<<<<<
- * return ALPHABET.getindex(sym)
- *
- */
-
-static int __pyx_f_3_sa_sym_getindex(int __pyx_v_sym) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sym_getindex", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":99
- *
- * cdef int sym_getindex(int sym):
- * return ALPHABET.getindex(sym) # <<<<<<<<<<<<<<
- *
- * cdef int sym_setindex(int sym, int id):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_3_sa_ALPHABET->__pyx_vtab)->getindex(__pyx_v_3_sa_ALPHABET, __pyx_v_sym);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":101
- * return ALPHABET.getindex(sym)
- *
- * cdef int sym_setindex(int sym, int id): # <<<<<<<<<<<<<<
- * return ALPHABET.setindex(sym, id)
- *
- */
-
-static int __pyx_f_3_sa_sym_setindex(int __pyx_v_sym, int __pyx_v_id) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sym_setindex", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":102
- *
- * cdef int sym_setindex(int sym, int id):
- * return ALPHABET.setindex(sym, id) # <<<<<<<<<<<<<<
- *
- * cdef int sym_fromstring(char* string, bint terminal):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_3_sa_ALPHABET->__pyx_vtab)->setindex(__pyx_v_3_sa_ALPHABET, __pyx_v_sym, __pyx_v_id);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":104
- * return ALPHABET.setindex(sym, id)
- *
- * cdef int sym_fromstring(char* string, bint terminal): # <<<<<<<<<<<<<<
- * return ALPHABET.fromstring(string, terminal)
- *
- */
-
-static int __pyx_f_3_sa_sym_fromstring(char *__pyx_v_string, int __pyx_v_terminal) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sym_fromstring", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":105
- *
- * cdef int sym_fromstring(char* string, bint terminal):
- * return ALPHABET.fromstring(string, terminal) # <<<<<<<<<<<<<<
- *
- * def isvar(sym):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_3_sa_ALPHABET->__pyx_vtab)->fromstring(__pyx_v_3_sa_ALPHABET, __pyx_v_string, __pyx_v_terminal);
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_5isvar(PyObject *__pyx_self, PyObject *__pyx_v_sym); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_5isvar = {__Pyx_NAMESTR("isvar"), (PyCFunction)__pyx_pw_3_sa_5isvar, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_5isvar(PyObject *__pyx_self, PyObject *__pyx_v_sym) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("isvar (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_4isvar(__pyx_self, ((PyObject *)__pyx_v_sym));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":107
- * return ALPHABET.fromstring(string, terminal)
- *
- * def isvar(sym): # <<<<<<<<<<<<<<
- * return sym_isvar(sym)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_4isvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sym) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("isvar", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":108
- *
- * def isvar(sym):
- * return sym_isvar(sym) # <<<<<<<<<<<<<<
- *
- * def make_lattice(words):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_sym); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_sym_isvar(__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.isvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7make_lattice(PyObject *__pyx_self, PyObject *__pyx_v_words); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_7make_lattice = {__Pyx_NAMESTR("make_lattice"), (PyCFunction)__pyx_pw_3_sa_7make_lattice, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_7make_lattice(PyObject *__pyx_self, PyObject *__pyx_v_words) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("make_lattice (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6make_lattice(__pyx_self, ((PyObject *)__pyx_v_words));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_12make_lattice_2generator7(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":111
- *
- * def make_lattice(words):
- * word_ids = (sym_fromstring(word, True) for word in words) # <<<<<<<<<<<<<<
- * return tuple(((word, None, 1), ) for word in word_ids)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_12make_lattice_genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_5_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_12make_lattice_2generator7, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.make_lattice.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_12make_lattice_2generator7(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- char *__pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words)) { __Pyx_RaiseClosureNameError("words"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_words; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_word = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_word); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_fromstring(__pyx_t_5, 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-static PyObject *__pyx_gb_3_sa_12make_lattice_5generator8(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":112
- * def make_lattice(words):
- * word_ids = (sym_fromstring(word, True) for word in words)
- * return tuple(((word, None, 1), ) for word in word_ids) # <<<<<<<<<<<<<<
- *
- * def decode_lattice(lattice):
- */
-
-static PyObject *__pyx_pf_3_sa_12make_lattice_3genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_12make_lattice_5generator8, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.make_lattice.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_12make_lattice_5generator8(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_word_ids)) { __Pyx_RaiseClosureNameError("word_ids"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_word_ids) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_word_ids)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_word_ids; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_word_ids); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_word = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_word);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_word);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_INCREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_4, 1, Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_INCREF(__pyx_int_1);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_1);
- __Pyx_GIVEREF(__pyx_int_1);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
- __pyx_t_4 = 0;
- __pyx_r = ((PyObject *)__pyx_t_5);
- __pyx_t_5 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110
- * return sym_isvar(sym)
- *
- * def make_lattice(words): # <<<<<<<<<<<<<<
- * word_ids = (sym_fromstring(word, True) for word in words)
- * return tuple(((word, None, 1), ) for word in word_ids)
- */
-
-static PyObject *__pyx_pf_3_sa_6make_lattice(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_words) {
- struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("make_lattice", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)__pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice(__pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_words = __pyx_v_words;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_words);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_words);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":111
- *
- * def make_lattice(words):
- * word_ids = (sym_fromstring(word, True) for word in words) # <<<<<<<<<<<<<<
- * return tuple(((word, None, 1), ) for word in word_ids)
- *
- */
- __pyx_t_1 = __pyx_pf_3_sa_12make_lattice_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_word_ids = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":112
- * def make_lattice(words):
- * word_ids = (sym_fromstring(word, True) for word in words)
- * return tuple(((word, None, 1), ) for word in word_ids) # <<<<<<<<<<<<<<
- *
- * def decode_lattice(lattice):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_pf_3_sa_12make_lattice_3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.make_lattice", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9decode_lattice(PyObject *__pyx_self, PyObject *__pyx_v_lattice); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_9decode_lattice = {__Pyx_NAMESTR("decode_lattice"), (PyCFunction)__pyx_pw_3_sa_9decode_lattice, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_9decode_lattice(PyObject *__pyx_self, PyObject *__pyx_v_lattice) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("decode_lattice (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_8decode_lattice(__pyx_self, ((PyObject *)__pyx_v_lattice));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115
- *
- * def decode_lattice(lattice):
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc # <<<<<<<<<<<<<<
- * for arc in node for node in lattice)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_14decode_lattice_genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_8_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_14decode_lattice_2generator9, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.decode_lattice.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- PyObject *(*__pyx_t_9)(PyObject *);
- Py_ssize_t __pyx_t_10;
- PyObject *(*__pyx_t_11)(PyObject *);
- Py_ssize_t __pyx_t_12;
- PyObject *(*__pyx_t_13)(PyObject *);
- int __pyx_t_14;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L12_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":116
- * def decode_lattice(lattice):
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc
- * for arc in node for node in lattice) # <<<<<<<<<<<<<<
- *
- * def decode_sentence(lattice):
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_arc)) { __Pyx_RaiseUnboundLocalError("arc"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_arc) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_arc)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_arc; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_arc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115
- *
- * def decode_lattice(lattice):
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc # <<<<<<<<<<<<<<
- * for arc in node for node in lattice)
- *
- */
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
- PyObject* sequence = __pyx_t_4;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_5 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_7 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_7);
- #else
- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- #endif
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
- index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_6);
- index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = NULL;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L7_unpacking_done;
- __pyx_L6_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L7_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sym);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_sym);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_cur_scope->__pyx_v_sym = __pyx_t_5;
- __pyx_t_5 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_weight);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_weight);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_cur_scope->__pyx_v_weight = __pyx_t_6;
- __pyx_t_6 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dist);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_dist);
- __Pyx_GIVEREF(__pyx_t_7);
- __pyx_cur_scope->__pyx_v_dist = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":116
- * def decode_lattice(lattice):
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc
- * for arc in node for node in lattice) # <<<<<<<<<<<<<<
- *
- * def decode_sentence(lattice):
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_node)) { __Pyx_RaiseUnboundLocalError("node"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_node) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_node)) {
- __pyx_t_4 = __pyx_cur_scope->__pyx_v_node; __Pyx_INCREF(__pyx_t_4); __pyx_t_10 = 0;
- __pyx_t_11 = NULL;
- } else {
- __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_node); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_7 = __pyx_t_11(__pyx_t_4);
- if (unlikely(!__pyx_t_7)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_7);
- }
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_arc);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_arc);
- __Pyx_GIVEREF(__pyx_t_7);
- __pyx_cur_scope->__pyx_v_arc = __pyx_t_7;
- __pyx_t_7 = 0;
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice)) { __Pyx_RaiseClosureNameError("lattice"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice)) {
- __pyx_t_7 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice; __Pyx_INCREF(__pyx_t_7); __pyx_t_12 = 0;
- __pyx_t_13 = NULL;
- } else {
- __pyx_t_12 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_13 = Py_TYPE(__pyx_t_7)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_13 && PyList_CheckExact(__pyx_t_7)) {
- if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_7)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_6); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_13 && PyTuple_CheckExact(__pyx_t_7)) {
- if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_6); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_6 = __pyx_t_13(__pyx_t_7);
- if (unlikely(!__pyx_t_6)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_6);
- }
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_cur_scope->__pyx_v_node = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115
- *
- * def decode_lattice(lattice):
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc # <<<<<<<<<<<<<<
- * for arc in node for node in lattice)
- *
- */
- __pyx_t_14 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_sym); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_14)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_weight);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_cur_scope->__pyx_v_weight);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_weight);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_dist);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_cur_scope->__pyx_v_dist);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_dist);
- __pyx_t_6 = 0;
- __pyx_r = ((PyObject *)__pyx_t_5);
- __pyx_t_5 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
- __Pyx_XGIVEREF(__pyx_t_7);
- __pyx_cur_scope->__pyx_t_4 = __pyx_t_7;
- __pyx_cur_scope->__pyx_t_5 = __pyx_t_10;
- __pyx_cur_scope->__pyx_t_6 = __pyx_t_11;
- __pyx_cur_scope->__pyx_t_7 = __pyx_t_12;
- __pyx_cur_scope->__pyx_t_8 = __pyx_t_13;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L12_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
- __pyx_cur_scope->__pyx_t_3 = 0;
- __Pyx_XGOTREF(__pyx_t_4);
- __pyx_t_7 = __pyx_cur_scope->__pyx_t_4;
- __pyx_cur_scope->__pyx_t_4 = 0;
- __Pyx_XGOTREF(__pyx_t_7);
- __pyx_t_10 = __pyx_cur_scope->__pyx_t_5;
- __pyx_t_11 = __pyx_cur_scope->__pyx_t_6;
- __pyx_t_12 = __pyx_cur_scope->__pyx_t_7;
- __pyx_t_13 = __pyx_cur_scope->__pyx_t_8;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114
- * return tuple(((word, None, 1), ) for word in word_ids)
- *
- * def decode_lattice(lattice): # <<<<<<<<<<<<<<
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc
- * for arc in node for node in lattice)
- */
-
-static PyObject *__pyx_pf_3_sa_8decode_lattice(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lattice) {
- struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("decode_lattice", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)__pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice(__pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_lattice = __pyx_v_lattice;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_lattice);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_lattice);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115
- *
- * def decode_lattice(lattice):
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc # <<<<<<<<<<<<<<
- * for arc in node for node in lattice)
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_pf_3_sa_14decode_lattice_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.decode_lattice", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11decode_sentence(PyObject *__pyx_self, PyObject *__pyx_v_lattice); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_11decode_sentence = {__Pyx_NAMESTR("decode_sentence"), (PyCFunction)__pyx_pw_3_sa_11decode_sentence, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_11decode_sentence(PyObject *__pyx_self, PyObject *__pyx_v_lattice) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("decode_sentence (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_10decode_sentence(__pyx_self, ((PyObject *)__pyx_v_lattice));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":119
- *
- * def decode_sentence(lattice):
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice) # <<<<<<<<<<<<<<
- *
- * def encode_words(words):
- */
-
-static PyObject *__pyx_pf_3_sa_15decode_sentence_genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_10_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_15decode_sentence_2generator10, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.decode_sentence.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *(*__pyx_t_7)(PyObject *);
- PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L10_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice)) { __Pyx_RaiseClosureNameError("lattice"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_lattice); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
- PyObject* sequence = __pyx_t_4;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 1)) {
- if (size > 1) __Pyx_RaiseTooManyValuesError(1);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
- } else {
- __pyx_t_5 = PyList_GET_ITEM(sequence, 0);
- }
- __Pyx_INCREF(__pyx_t_5);
- #else
- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- #endif
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
- index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = NULL;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L7_unpacking_done;
- __pyx_L6_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L7_unpacking_done:;
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
- PyObject* sequence = __pyx_t_5;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_6 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_8 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_9 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_9);
- #else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- #endif
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_7 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_6 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_6);
- index = 1; __pyx_t_8 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L8_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_8);
- index = 2; __pyx_t_9 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L8_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_9);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 3) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = NULL;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L9_unpacking_done;
- __pyx_L8_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L9_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sym);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_sym);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_cur_scope->__pyx_v_sym = __pyx_t_6;
- __pyx_t_6 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v__);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_cur_scope->__pyx_v__ = __pyx_t_8;
- __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v__);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v__);
- __Pyx_GIVEREF(__pyx_t_9);
- __pyx_cur_scope->__pyx_v__ = __pyx_t_9;
- __pyx_t_9 = 0;
- __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_sym); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_11)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __pyx_r = ((PyObject *)__pyx_t_4);
- __pyx_t_4 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L10_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118
- * for arc in node for node in lattice)
- *
- * def decode_sentence(lattice): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_10decode_sentence(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lattice) {
- struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("decode_sentence", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)__pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence(__pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_lattice = __pyx_v_lattice;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_lattice);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_lattice);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":119
- *
- * def decode_sentence(lattice):
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice) # <<<<<<<<<<<<<<
- *
- * def encode_words(words):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_pf_3_sa_15decode_sentence_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.decode_sentence", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_13encode_words(PyObject *__pyx_self, PyObject *__pyx_v_words); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_13encode_words = {__Pyx_NAMESTR("encode_words"), (PyCFunction)__pyx_pw_3_sa_13encode_words, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_13encode_words(PyObject *__pyx_self, PyObject *__pyx_v_words) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("encode_words (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_12encode_words(__pyx_self, ((PyObject *)__pyx_v_words));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_12encode_words_2generator11(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":122
- *
- * def encode_words(words):
- * return tuple(sym_fromstring(word, True) for word in words) # <<<<<<<<<<<<<<
- *
- * def decode_words(syms):
- */
-
-static PyObject *__pyx_pf_3_sa_12encode_words_genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_12_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_12encode_words_2generator11, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.encode_words.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_12encode_words_2generator11(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- char *__pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words)) { __Pyx_RaiseClosureNameError("words"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_words; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_words); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_word = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_word); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_fromstring(__pyx_t_5, 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- * def encode_words(words): # <<<<<<<<<<<<<<
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_12encode_words(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_words) {
- struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("encode_words", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)__pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words(__pyx_ptype_3_sa___pyx_scope_struct_11_encode_words, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_words = __pyx_v_words;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_words);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_words);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":122
- *
- * def encode_words(words):
- * return tuple(sym_fromstring(word, True) for word in words) # <<<<<<<<<<<<<<
- *
- * def decode_words(syms):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_pf_3_sa_12encode_words_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.encode_words", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_15decode_words(PyObject *__pyx_self, PyObject *__pyx_v_syms); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_15decode_words = {__Pyx_NAMESTR("decode_words"), (PyCFunction)__pyx_pw_3_sa_15decode_words, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_15decode_words(PyObject *__pyx_self, PyObject *__pyx_v_syms) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("decode_words (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_14decode_words(__pyx_self, ((PyObject *)__pyx_v_syms));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_12decode_words_2generator12(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":125
- *
- * def decode_words(syms):
- * return tuple(sym_tostring(sym) for sym in syms) # <<<<<<<<<<<<<<
- */
-
-static PyObject *__pyx_pf_3_sa_12decode_words_genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_14_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_12decode_words_2generator12, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.decode_words.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_12decode_words_2generator12(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_syms)) { __Pyx_RaiseClosureNameError("syms"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_syms) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_syms)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_syms; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_syms); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sym);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_sym);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_sym = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_sym); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __pyx_r = ((PyObject *)__pyx_t_4);
- __pyx_t_4 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- * def decode_words(syms): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for sym in syms)
- */
-
-static PyObject *__pyx_pf_3_sa_14decode_words(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_syms) {
- struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("decode_words", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)__pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words(__pyx_ptype_3_sa___pyx_scope_struct_13_decode_words, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_syms = __pyx_v_syms;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_syms);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_syms);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":125
- *
- * def decode_words(syms):
- * return tuple(sym_tostring(sym) for sym in syms) # <<<<<<<<<<<<<<
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_pf_3_sa_12decode_words_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.decode_words", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_6Phrase_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_6Phrase_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_words = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__words,0};
- PyObject* values[1] = {0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__words)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- }
- __pyx_v_words = values[0];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Phrase.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_6Phrase___cinit__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), __pyx_v_words);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":6
- * cdef class Phrase:
- *
- * def __cinit__(self, words): # <<<<<<<<<<<<<<
- * cdef int i, j, n, n_vars
- * n_vars = 0
- */
-
-static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_words) {
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_n;
- int __pyx_v_n_vars;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":8
- * def __cinit__(self, words):
- * cdef int i, j, n, n_vars
- * n_vars = 0 # <<<<<<<<<<<<<<
- * n = len(words)
- * self.syms = <int *>malloc(n*sizeof(int))
- */
- __pyx_v_n_vars = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":9
- * cdef int i, j, n, n_vars
- * n_vars = 0
- * n = len(words) # <<<<<<<<<<<<<<
- * self.syms = <int *>malloc(n*sizeof(int))
- * for i from 0 <= i < n:
- */
- __pyx_t_1 = PyObject_Length(__pyx_v_words); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_n = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":10
- * n_vars = 0
- * n = len(words)
- * self.syms = <int *>malloc(n*sizeof(int)) # <<<<<<<<<<<<<<
- * for i from 0 <= i < n:
- * self.syms[i] = words[i]
- */
- __pyx_v_self->syms = ((int *)malloc((__pyx_v_n * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":11
- * n = len(words)
- * self.syms = <int *>malloc(n*sizeof(int))
- * for i from 0 <= i < n: # <<<<<<<<<<<<<<
- * self.syms[i] = words[i]
- * if sym_isvar(self.syms[i]):
- */
- __pyx_t_2 = __pyx_v_n;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":12
- * self.syms = <int *>malloc(n*sizeof(int))
- * for i from 0 <= i < n:
- * self.syms[i] = words[i] # <<<<<<<<<<<<<<
- * if sym_isvar(self.syms[i]):
- * n_vars += 1
- */
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_words, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- (__pyx_v_self->syms[__pyx_v_i]) = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":13
- * for i from 0 <= i < n:
- * self.syms[i] = words[i]
- * if sym_isvar(self.syms[i]): # <<<<<<<<<<<<<<
- * n_vars += 1
- * self.n = n
- */
- __pyx_t_5 = (__pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":14
- * self.syms[i] = words[i]
- * if sym_isvar(self.syms[i]):
- * n_vars += 1 # <<<<<<<<<<<<<<
- * self.n = n
- * self.n_vars = n_vars
- */
- __pyx_v_n_vars = (__pyx_v_n_vars + 1);
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":15
- * if sym_isvar(self.syms[i]):
- * n_vars += 1
- * self.n = n # <<<<<<<<<<<<<<
- * self.n_vars = n_vars
- * self.varpos = <int *>malloc(n_vars*sizeof(int))
- */
- __pyx_v_self->n = __pyx_v_n;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":16
- * n_vars += 1
- * self.n = n
- * self.n_vars = n_vars # <<<<<<<<<<<<<<
- * self.varpos = <int *>malloc(n_vars*sizeof(int))
- * j = 0
- */
- __pyx_v_self->n_vars = __pyx_v_n_vars;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":17
- * self.n = n
- * self.n_vars = n_vars
- * self.varpos = <int *>malloc(n_vars*sizeof(int)) # <<<<<<<<<<<<<<
- * j = 0
- * for i from 0 <= i < n:
- */
- __pyx_v_self->varpos = ((int *)malloc((__pyx_v_n_vars * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":18
- * self.n_vars = n_vars
- * self.varpos = <int *>malloc(n_vars*sizeof(int))
- * j = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < n:
- * if sym_isvar(self.syms[i]):
- */
- __pyx_v_j = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":19
- * self.varpos = <int *>malloc(n_vars*sizeof(int))
- * j = 0
- * for i from 0 <= i < n: # <<<<<<<<<<<<<<
- * if sym_isvar(self.syms[i]):
- * self.varpos[j] = i
- */
- __pyx_t_2 = __pyx_v_n;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":20
- * j = 0
- * for i from 0 <= i < n:
- * if sym_isvar(self.syms[i]): # <<<<<<<<<<<<<<
- * self.varpos[j] = i
- * j = j + 1
- */
- __pyx_t_5 = (__pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":21
- * for i from 0 <= i < n:
- * if sym_isvar(self.syms[i]):
- * self.varpos[j] = i # <<<<<<<<<<<<<<
- * j = j + 1
- *
- */
- (__pyx_v_self->varpos[__pyx_v_j]) = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":22
- * if sym_isvar(self.syms[i]):
- * self.varpos[j] = i
- * j = j + 1 # <<<<<<<<<<<<<<
- *
- * def __dealloc__(self):
- */
- __pyx_v_j = (__pyx_v_j + 1);
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.Phrase.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_6Phrase_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_6Phrase_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_6Phrase_2__dealloc__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":24
- * j = j + 1
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * free(self.syms)
- * free(self.varpos)
- */
-
-static void __pyx_pf_3_sa_6Phrase_2__dealloc__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":25
- *
- * def __dealloc__(self):
- * free(self.syms) # <<<<<<<<<<<<<<
- * free(self.varpos)
- *
- */
- free(__pyx_v_self->syms);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":26
- * def __dealloc__(self):
- * free(self.syms)
- * free(self.varpos) # <<<<<<<<<<<<<<
- *
- * def __str__(self):
- */
- free(__pyx_v_self->varpos);
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_5__str__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_5__str__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_4__str__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":28
- * free(self.varpos)
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * strs = []
- * cdef int i, s
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_4__str__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- PyObject *__pyx_v_strs = NULL;
- int __pyx_v_i;
- int __pyx_v_s;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__str__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":29
- *
- * def __str__(self):
- * strs = [] # <<<<<<<<<<<<<<
- * cdef int i, s
- * for i from 0 <= i < self.n:
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_strs = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":31
- * strs = []
- * cdef int i, s
- * for i from 0 <= i < self.n: # <<<<<<<<<<<<<<
- * s = self.syms[i]
- * strs.append(sym_tostring(s))
- */
- __pyx_t_2 = __pyx_v_self->n;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":32
- * cdef int i, s
- * for i from 0 <= i < self.n:
- * s = self.syms[i] # <<<<<<<<<<<<<<
- * strs.append(sym_tostring(s))
- * return ' '.join(strs)
- */
- __pyx_v_s = (__pyx_v_self->syms[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":33
- * for i from 0 <= i < self.n:
- * s = self.syms[i]
- * strs.append(sym_tostring(s)) # <<<<<<<<<<<<<<
- * return ' '.join(strs)
- *
- */
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_v_s)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_strs, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":34
- * s = self.syms[i]
- * strs.append(sym_tostring(s))
- * return ' '.join(strs) # <<<<<<<<<<<<<<
- *
- * def handle(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_v_strs));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_strs));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_strs));
- __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.Phrase.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_strs);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_7handle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_3_sa_6Phrase_6handle[] = "return a hashable representation that normalizes the ordering\n of the nonterminal indices";
-static PyObject *__pyx_pw_3_sa_6Phrase_7handle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("handle (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_6handle(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":36
- * return ' '.join(strs)
- *
- * def handle(self): # <<<<<<<<<<<<<<
- * """return a hashable representation that normalizes the ordering
- * of the nonterminal indices"""
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- PyObject *__pyx_v_norm = NULL;
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_s;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("handle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":39
- * """return a hashable representation that normalizes the ordering
- * of the nonterminal indices"""
- * norm = [] # <<<<<<<<<<<<<<
- * cdef int i, j, s
- * i = 1
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_norm = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":41
- * norm = []
- * cdef int i, j, s
- * i = 1 # <<<<<<<<<<<<<<
- * j = 0
- * for j from 0 <= j < self.n:
- */
- __pyx_v_i = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":42
- * cdef int i, j, s
- * i = 1
- * j = 0 # <<<<<<<<<<<<<<
- * for j from 0 <= j < self.n:
- * s = self.syms[j]
- */
- __pyx_v_j = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":43
- * i = 1
- * j = 0
- * for j from 0 <= j < self.n: # <<<<<<<<<<<<<<
- * s = self.syms[j]
- * if sym_isvar(s):
- */
- __pyx_t_2 = __pyx_v_self->n;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":44
- * j = 0
- * for j from 0 <= j < self.n:
- * s = self.syms[j] # <<<<<<<<<<<<<<
- * if sym_isvar(s):
- * s = sym_setindex(s,i)
- */
- __pyx_v_s = (__pyx_v_self->syms[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":45
- * for j from 0 <= j < self.n:
- * s = self.syms[j]
- * if sym_isvar(s): # <<<<<<<<<<<<<<
- * s = sym_setindex(s,i)
- * i = i + 1
- */
- __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_v_s) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":46
- * s = self.syms[j]
- * if sym_isvar(s):
- * s = sym_setindex(s,i) # <<<<<<<<<<<<<<
- * i = i + 1
- * norm.append(s)
- */
- __pyx_v_s = __pyx_f_3_sa_sym_setindex(__pyx_v_s, __pyx_v_i);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":47
- * if sym_isvar(s):
- * s = sym_setindex(s,i)
- * i = i + 1 # <<<<<<<<<<<<<<
- * norm.append(s)
- * return tuple(norm)
- */
- __pyx_v_i = (__pyx_v_i + 1);
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":48
- * s = sym_setindex(s,i)
- * i = i + 1
- * norm.append(s) # <<<<<<<<<<<<<<
- * return tuple(norm)
- *
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_norm, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":49
- * i = i + 1
- * norm.append(s)
- * return tuple(norm) # <<<<<<<<<<<<<<
- *
- * def strhandle(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)PyList_AsTuple(__pyx_v_norm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_r = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.Phrase.handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_norm);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_9strhandle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_9strhandle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("strhandle (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_8strhandle(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":51
- * return tuple(norm)
- *
- * def strhandle(self): # <<<<<<<<<<<<<<
- * strs = []
- * norm = []
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- CYTHON_UNUSED PyObject *__pyx_v_strs = NULL;
- PyObject *__pyx_v_norm = NULL;
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_s;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("strhandle", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":52
- *
- * def strhandle(self):
- * strs = [] # <<<<<<<<<<<<<<
- * norm = []
- * cdef int i, j, s
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_strs = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":53
- * def strhandle(self):
- * strs = []
- * norm = [] # <<<<<<<<<<<<<<
- * cdef int i, j, s
- * i = 1
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_norm = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":55
- * norm = []
- * cdef int i, j, s
- * i = 1 # <<<<<<<<<<<<<<
- * j = 0
- * for j from 0 <= j < self.n:
- */
- __pyx_v_i = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":56
- * cdef int i, j, s
- * i = 1
- * j = 0 # <<<<<<<<<<<<<<
- * for j from 0 <= j < self.n:
- * s = self.syms[j]
- */
- __pyx_v_j = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":57
- * i = 1
- * j = 0
- * for j from 0 <= j < self.n: # <<<<<<<<<<<<<<
- * s = self.syms[j]
- * if sym_isvar(s):
- */
- __pyx_t_2 = __pyx_v_self->n;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":58
- * j = 0
- * for j from 0 <= j < self.n:
- * s = self.syms[j] # <<<<<<<<<<<<<<
- * if sym_isvar(s):
- * s = sym_setindex(s,i)
- */
- __pyx_v_s = (__pyx_v_self->syms[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":59
- * for j from 0 <= j < self.n:
- * s = self.syms[j]
- * if sym_isvar(s): # <<<<<<<<<<<<<<
- * s = sym_setindex(s,i)
- * i = i + 1
- */
- __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_v_s) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":60
- * s = self.syms[j]
- * if sym_isvar(s):
- * s = sym_setindex(s,i) # <<<<<<<<<<<<<<
- * i = i + 1
- * norm.append(sym_tostring(s))
- */
- __pyx_v_s = __pyx_f_3_sa_sym_setindex(__pyx_v_s, __pyx_v_i);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":61
- * if sym_isvar(s):
- * s = sym_setindex(s,i)
- * i = i + 1 # <<<<<<<<<<<<<<
- * norm.append(sym_tostring(s))
- * return ' '.join(norm)
- */
- __pyx_v_i = (__pyx_v_i + 1);
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":62
- * s = sym_setindex(s,i)
- * i = i + 1
- * norm.append(sym_tostring(s)) # <<<<<<<<<<<<<<
- * return ' '.join(norm)
- *
- */
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_v_s)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_norm, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":63
- * i = i + 1
- * norm.append(sym_tostring(s))
- * return ' '.join(norm) # <<<<<<<<<<<<<<
- *
- * def arity(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(((PyObject *)__pyx_v_norm));
- PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_norm));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_norm));
- __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_sa.Phrase.strhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_strs);
- __Pyx_XDECREF(__pyx_v_norm);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_11arity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_11arity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("arity (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_10arity(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":65
- * return ' '.join(norm)
- *
- * def arity(self): # <<<<<<<<<<<<<<
- * return self.n_vars
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_10arity(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("arity", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":66
- *
- * def arity(self):
- * return self.n_vars # <<<<<<<<<<<<<<
- *
- * def getvarpos(self, i):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->n_vars); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.Phrase.arity", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_13getvarpos(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_13getvarpos(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("getvarpos (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_12getvarpos(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":68
- * return self.n_vars
- *
- * def getvarpos(self, i): # <<<<<<<<<<<<<<
- * if 0 <= i < self.n_vars:
- * return self.varpos[i]
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_12getvarpos(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- Py_ssize_t __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("getvarpos", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":69
- *
- * def getvarpos(self, i):
- * if 0 <= i < self.n_vars: # <<<<<<<<<<<<<<
- * return self.varpos[i]
- * else:
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_int_0, __pyx_v_i, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_self->n_vars); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":70
- * def getvarpos(self, i):
- * if 0 <= i < self.n_vars:
- * return self.varpos[i] # <<<<<<<<<<<<<<
- * else:
- * raise IndexError
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromLong((__pyx_v_self->varpos[__pyx_t_4])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":72
- * return self.varpos[i]
- * else:
- * raise IndexError # <<<<<<<<<<<<<<
- *
- * def getvar(self, i):
- */
- __Pyx_Raise(__pyx_builtin_IndexError, 0, 0, 0);
- {__pyx_filename = __pyx_f[7]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Phrase.getvarpos", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_15getvar(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_15getvar(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("getvar (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_14getvar(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":74
- * raise IndexError
- *
- * def getvar(self, i): # <<<<<<<<<<<<<<
- * if 0 <= i < self.n_vars:
- * return self.syms[self.varpos[i]]
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_14getvar(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- Py_ssize_t __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("getvar", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":75
- *
- * def getvar(self, i):
- * if 0 <= i < self.n_vars: # <<<<<<<<<<<<<<
- * return self.syms[self.varpos[i]]
- * else:
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_int_0, __pyx_v_i, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_self->n_vars); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":76
- * def getvar(self, i):
- * if 0 <= i < self.n_vars:
- * return self.syms[self.varpos[i]] # <<<<<<<<<<<<<<
- * else:
- * raise IndexError
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromLong((__pyx_v_self->syms[(__pyx_v_self->varpos[__pyx_t_4])])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":78
- * return self.syms[self.varpos[i]]
- * else:
- * raise IndexError # <<<<<<<<<<<<<<
- *
- * cdef int chunkpos(self, int k):
- */
- __Pyx_Raise(__pyx_builtin_IndexError, 0, 0, 0);
- {__pyx_filename = __pyx_f[7]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Phrase.getvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":80
- * raise IndexError
- *
- * cdef int chunkpos(self, int k): # <<<<<<<<<<<<<<
- * if k == 0:
- * return 0
- */
-
-int __pyx_f_3_sa_6Phrase_chunkpos(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, int __pyx_v_k) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("chunkpos", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":81
- *
- * cdef int chunkpos(self, int k):
- * if k == 0: # <<<<<<<<<<<<<<
- * return 0
- * else:
- */
- __pyx_t_1 = ((__pyx_v_k == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":82
- * cdef int chunkpos(self, int k):
- * if k == 0:
- * return 0 # <<<<<<<<<<<<<<
- * else:
- * return self.varpos[k-1]+1
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":84
- * return 0
- * else:
- * return self.varpos[k-1]+1 # <<<<<<<<<<<<<<
- *
- * cdef int chunklen(self, int k):
- */
- __pyx_r = ((__pyx_v_self->varpos[(__pyx_v_k - 1)]) + 1);
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":86
- * return self.varpos[k-1]+1
- *
- * cdef int chunklen(self, int k): # <<<<<<<<<<<<<<
- * if self.n_vars == 0:
- * return self.n
- */
-
-int __pyx_f_3_sa_6Phrase_chunklen(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, int __pyx_v_k) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("chunklen", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":87
- *
- * cdef int chunklen(self, int k):
- * if self.n_vars == 0: # <<<<<<<<<<<<<<
- * return self.n
- * elif k == 0:
- */
- __pyx_t_1 = ((__pyx_v_self->n_vars == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":88
- * cdef int chunklen(self, int k):
- * if self.n_vars == 0:
- * return self.n # <<<<<<<<<<<<<<
- * elif k == 0:
- * return self.varpos[0]
- */
- __pyx_r = __pyx_v_self->n;
- goto __pyx_L0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":89
- * if self.n_vars == 0:
- * return self.n
- * elif k == 0: # <<<<<<<<<<<<<<
- * return self.varpos[0]
- * elif k == self.n_vars:
- */
- __pyx_t_1 = ((__pyx_v_k == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":90
- * return self.n
- * elif k == 0:
- * return self.varpos[0] # <<<<<<<<<<<<<<
- * elif k == self.n_vars:
- * return self.n-self.varpos[k-1]-1
- */
- __pyx_r = (__pyx_v_self->varpos[0]);
- goto __pyx_L0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":91
- * elif k == 0:
- * return self.varpos[0]
- * elif k == self.n_vars: # <<<<<<<<<<<<<<
- * return self.n-self.varpos[k-1]-1
- * else:
- */
- __pyx_t_1 = ((__pyx_v_k == __pyx_v_self->n_vars) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":92
- * return self.varpos[0]
- * elif k == self.n_vars:
- * return self.n-self.varpos[k-1]-1 # <<<<<<<<<<<<<<
- * else:
- * return self.varpos[k]-self.varpos[k-1]-1
- */
- __pyx_r = ((__pyx_v_self->n - (__pyx_v_self->varpos[(__pyx_v_k - 1)])) - 1);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":94
- * return self.n-self.varpos[k-1]-1
- * else:
- * return self.varpos[k]-self.varpos[k-1]-1 # <<<<<<<<<<<<<<
- *
- * def clen(self, k):
- */
- __pyx_r = (((__pyx_v_self->varpos[__pyx_v_k]) - (__pyx_v_self->varpos[(__pyx_v_k - 1)])) - 1);
- goto __pyx_L0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_17clen(PyObject *__pyx_v_self, PyObject *__pyx_v_k); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_17clen(PyObject *__pyx_v_self, PyObject *__pyx_v_k) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("clen (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_16clen(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), ((PyObject *)__pyx_v_k));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":96
- * return self.varpos[k]-self.varpos[k-1]-1
- *
- * def clen(self, k): # <<<<<<<<<<<<<<
- * return self.chunklen(k)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_16clen(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_k) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("clen", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":97
- *
- * def clen(self, k):
- * return self.chunklen(k) # <<<<<<<<<<<<<<
- *
- * def getchunk(self, ci):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_k); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Phrase *)__pyx_v_self->__pyx_vtab)->chunklen(__pyx_v_self, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Phrase.clen", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_19getchunk(PyObject *__pyx_v_self, PyObject *__pyx_v_ci); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_19getchunk(PyObject *__pyx_v_self, PyObject *__pyx_v_ci) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("getchunk (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_18getchunk(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), ((PyObject *)__pyx_v_ci));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":99
- * return self.chunklen(k)
- *
- * def getchunk(self, ci): # <<<<<<<<<<<<<<
- * cdef int start, stop
- * start = self.chunkpos(ci)
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_ci) {
- int __pyx_v_start;
- int __pyx_v_stop;
- PyObject *__pyx_v_chunk = NULL;
- int __pyx_v_i;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("getchunk", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":101
- * def getchunk(self, ci):
- * cdef int start, stop
- * start = self.chunkpos(ci) # <<<<<<<<<<<<<<
- * stop = start+self.chunklen(ci)
- * chunk = []
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_ci); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_start = ((struct __pyx_vtabstruct_3_sa_Phrase *)__pyx_v_self->__pyx_vtab)->chunkpos(__pyx_v_self, __pyx_t_1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":102
- * cdef int start, stop
- * start = self.chunkpos(ci)
- * stop = start+self.chunklen(ci) # <<<<<<<<<<<<<<
- * chunk = []
- * for i from start <= i < stop:
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_ci); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_stop = (__pyx_v_start + ((struct __pyx_vtabstruct_3_sa_Phrase *)__pyx_v_self->__pyx_vtab)->chunklen(__pyx_v_self, __pyx_t_1));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":103
- * start = self.chunkpos(ci)
- * stop = start+self.chunklen(ci)
- * chunk = [] # <<<<<<<<<<<<<<
- * for i from start <= i < stop:
- * chunk.append(self.syms[i])
- */
- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_chunk = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":104
- * stop = start+self.chunklen(ci)
- * chunk = []
- * for i from start <= i < stop: # <<<<<<<<<<<<<<
- * chunk.append(self.syms[i])
- * return chunk
- */
- __pyx_t_1 = __pyx_v_stop;
- for (__pyx_v_i = __pyx_v_start; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":105
- * chunk = []
- * for i from start <= i < stop:
- * chunk.append(self.syms[i]) # <<<<<<<<<<<<<<
- * return chunk
- *
- */
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->syms[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_chunk, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":106
- * for i from start <= i < stop:
- * chunk.append(self.syms[i])
- * return chunk # <<<<<<<<<<<<<<
- *
- * def __cmp__(self, other):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_chunk));
- __pyx_r = ((PyObject *)__pyx_v_chunk);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Phrase.getchunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_chunk);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-#if PY_MAJOR_VERSION < 3
-static int __pyx_pw_3_sa_6Phrase_21__cmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static int __pyx_pw_3_sa_6Phrase_21__cmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cmp__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_20__cmp__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), ((PyObject *)__pyx_v_other));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-#endif /*!(#if PY_MAJOR_VERSION < 3)*/
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":108
- * return chunk
- *
- * def __cmp__(self, other): # <<<<<<<<<<<<<<
- * cdef Phrase otherp
- * cdef int i
- */
-
-#if PY_MAJOR_VERSION < 3
-static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_other) {
- struct __pyx_obj_3_sa_Phrase *__pyx_v_otherp = 0;
- int __pyx_v_i;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cmp__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":111
- * cdef Phrase otherp
- * cdef int i
- * otherp = other # <<<<<<<<<<<<<<
- * for i from 0 <= i < min(self.n, otherp.n):
- * if self.syms[i] < otherp.syms[i]:
- */
- if (!(likely(((__pyx_v_other) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_3_sa_Phrase))))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_INCREF(__pyx_v_other);
- __pyx_v_otherp = ((struct __pyx_obj_3_sa_Phrase *)__pyx_v_other);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":112
- * cdef int i
- * otherp = other
- * for i from 0 <= i < min(self.n, otherp.n): # <<<<<<<<<<<<<<
- * if self.syms[i] < otherp.syms[i]:
- * return -1
- */
- __pyx_t_1 = __pyx_v_otherp->n;
- __pyx_t_2 = __pyx_v_self->n;
- if (((__pyx_t_1 < __pyx_t_2) != 0)) {
- __pyx_t_3 = __pyx_t_1;
- } else {
- __pyx_t_3 = __pyx_t_2;
- }
- __pyx_t_1 = __pyx_t_3;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":113
- * otherp = other
- * for i from 0 <= i < min(self.n, otherp.n):
- * if self.syms[i] < otherp.syms[i]: # <<<<<<<<<<<<<<
- * return -1
- * elif self.syms[i] > otherp.syms[i]:
- */
- __pyx_t_4 = (((__pyx_v_self->syms[__pyx_v_i]) < (__pyx_v_otherp->syms[__pyx_v_i])) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":114
- * for i from 0 <= i < min(self.n, otherp.n):
- * if self.syms[i] < otherp.syms[i]:
- * return -1 # <<<<<<<<<<<<<<
- * elif self.syms[i] > otherp.syms[i]:
- * return 1
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L5;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":115
- * if self.syms[i] < otherp.syms[i]:
- * return -1
- * elif self.syms[i] > otherp.syms[i]: # <<<<<<<<<<<<<<
- * return 1
- * if self.n < otherp.n:
- */
- __pyx_t_4 = (((__pyx_v_self->syms[__pyx_v_i]) > (__pyx_v_otherp->syms[__pyx_v_i])) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":116
- * return -1
- * elif self.syms[i] > otherp.syms[i]:
- * return 1 # <<<<<<<<<<<<<<
- * if self.n < otherp.n:
- * return -1
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":117
- * elif self.syms[i] > otherp.syms[i]:
- * return 1
- * if self.n < otherp.n: # <<<<<<<<<<<<<<
- * return -1
- * elif self.n > otherp.n:
- */
- __pyx_t_4 = ((__pyx_v_self->n < __pyx_v_otherp->n) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":118
- * return 1
- * if self.n < otherp.n:
- * return -1 # <<<<<<<<<<<<<<
- * elif self.n > otherp.n:
- * return 1
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L6;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":119
- * if self.n < otherp.n:
- * return -1
- * elif self.n > otherp.n: # <<<<<<<<<<<<<<
- * return 1
- * else:
- */
- __pyx_t_4 = ((__pyx_v_self->n > __pyx_v_otherp->n) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":120
- * return -1
- * elif self.n > otherp.n:
- * return 1 # <<<<<<<<<<<<<<
- * else:
- * return 0
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":122
- * return 1
- * else:
- * return 0 # <<<<<<<<<<<<<<
- *
- * def __hash__(self):
- */
- __pyx_r = 0;
- goto __pyx_L0;
- }
- __pyx_L6:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.Phrase.__cmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_otherp);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-#endif /*!(#if PY_MAJOR_VERSION < 3)*/
-
-/* Python wrapper */
-static Py_hash_t __pyx_pw_3_sa_6Phrase_23__hash__(PyObject *__pyx_v_self); /*proto*/
-static Py_hash_t __pyx_pw_3_sa_6Phrase_23__hash__(PyObject *__pyx_v_self) {
- Py_hash_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_22__hash__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":124
- * return 0
- *
- * def __hash__(self): # <<<<<<<<<<<<<<
- * cdef int i
- * cdef unsigned h
- */
-
-static Py_hash_t __pyx_pf_3_sa_6Phrase_22__hash__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- int __pyx_v_i;
- unsigned int __pyx_v_h;
- Py_hash_t __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- __Pyx_RefNannySetupContext("__hash__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":127
- * cdef int i
- * cdef unsigned h
- * h = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < self.n:
- * if self.syms[i] > 0:
- */
- __pyx_v_h = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":128
- * cdef unsigned h
- * h = 0
- * for i from 0 <= i < self.n: # <<<<<<<<<<<<<<
- * if self.syms[i] > 0:
- * h = (h << 1) + self.syms[i]
- */
- __pyx_t_1 = __pyx_v_self->n;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":129
- * h = 0
- * for i from 0 <= i < self.n:
- * if self.syms[i] > 0: # <<<<<<<<<<<<<<
- * h = (h << 1) + self.syms[i]
- * else:
- */
- __pyx_t_2 = (((__pyx_v_self->syms[__pyx_v_i]) > 0) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":130
- * for i from 0 <= i < self.n:
- * if self.syms[i] > 0:
- * h = (h << 1) + self.syms[i] # <<<<<<<<<<<<<<
- * else:
- * h = (h << 1) + -self.syms[i]
- */
- __pyx_v_h = ((__pyx_v_h << 1) + (__pyx_v_self->syms[__pyx_v_i]));
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":132
- * h = (h << 1) + self.syms[i]
- * else:
- * h = (h << 1) + -self.syms[i] # <<<<<<<<<<<<<<
- * return h
- *
- */
- __pyx_v_h = ((__pyx_v_h << 1) + (-(__pyx_v_self->syms[__pyx_v_i])));
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":133
- * else:
- * h = (h << 1) + -self.syms[i]
- * return h # <<<<<<<<<<<<<<
- *
- * def __len__(self):
- */
- __pyx_r = __pyx_v_h;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static Py_ssize_t __pyx_pw_3_sa_6Phrase_25__len__(PyObject *__pyx_v_self); /*proto*/
-static Py_ssize_t __pyx_pw_3_sa_6Phrase_25__len__(PyObject *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_24__len__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":135
- * return h
- *
- * def __len__(self): # <<<<<<<<<<<<<<
- * return self.n
- *
- */
-
-static Py_ssize_t __pyx_pf_3_sa_6Phrase_24__len__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- Py_ssize_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__len__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":136
- *
- * def __len__(self):
- * return self.n # <<<<<<<<<<<<<<
- *
- * def __getitem__(self, i):
- */
- __pyx_r = __pyx_v_self->n;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_27__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_27__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_26__getitem__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":138
- * return self.n
- *
- * def __getitem__(self, i): # <<<<<<<<<<<<<<
- * return self.syms[i]
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_26__getitem__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__getitem__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":139
- *
- * def __getitem__(self, i):
- * return self.syms[i] # <<<<<<<<<<<<<<
- *
- * def __iter__(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->syms[__pyx_t_1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Phrase.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_6Phrase_30generator2(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_29__iter__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_29__iter__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_28__iter__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":141
- * return self.syms[i]
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef int i
- * for i from 0 <= i < self.n:
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_28__iter__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__iter__", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)__pyx_tp_new_3_sa___pyx_scope_struct_15___iter__(__pyx_ptype_3_sa___pyx_scope_struct_15___iter__, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_6Phrase_30generator2, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.Phrase.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_6Phrase_30generator2(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":143
- * def __iter__(self):
- * cdef int i
- * for i from 0 <= i < self.n: # <<<<<<<<<<<<<<
- * yield self.syms[i]
- *
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->n;
- for (__pyx_cur_scope->__pyx_v_i = 0; __pyx_cur_scope->__pyx_v_i < __pyx_t_1; __pyx_cur_scope->__pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":144
- * cdef int i
- * for i from 0 <= i < self.n:
- * yield self.syms[i] # <<<<<<<<<<<<<<
- *
- * def subst(self, start, children):
- */
- __pyx_t_2 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_self->syms[__pyx_cur_scope->__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_32subst(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_32subst(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_start = 0;
- PyObject *__pyx_v_children = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("subst (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__children,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__children)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("subst", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "subst") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_start = values[0];
- __pyx_v_children = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("subst", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Phrase.subst", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_6Phrase_31subst(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self), __pyx_v_start, __pyx_v_children);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":146
- * yield self.syms[i]
- *
- * def subst(self, start, children): # <<<<<<<<<<<<<<
- * cdef int i
- * for i from 0 <= i < self.n:
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_31subst(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_children) {
- int __pyx_v_i;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- long __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("subst", 0);
- __Pyx_INCREF(__pyx_v_start);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":148
- * def subst(self, start, children):
- * cdef int i
- * for i from 0 <= i < self.n: # <<<<<<<<<<<<<<
- * if sym_isvar(self.syms[i]):
- * start = start + children[sym_getindex(self.syms[i])-1]
- */
- __pyx_t_1 = __pyx_v_self->n;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":149
- * cdef int i
- * for i from 0 <= i < self.n:
- * if sym_isvar(self.syms[i]): # <<<<<<<<<<<<<<
- * start = start + children[sym_getindex(self.syms[i])-1]
- * else:
- */
- __pyx_t_2 = (__pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":150
- * for i from 0 <= i < self.n:
- * if sym_isvar(self.syms[i]):
- * start = start + children[sym_getindex(self.syms[i])-1] # <<<<<<<<<<<<<<
- * else:
- * start = start + (self.syms[i],)
- */
- __pyx_t_3 = (__pyx_f_3_sa_sym_getindex((__pyx_v_self->syms[__pyx_v_i])) - 1);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_children, __pyx_t_3, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Add(__pyx_v_start, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_v_start);
- __pyx_v_start = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":152
- * start = start + children[sym_getindex(self.syms[i])-1]
- * else:
- * start = start + (self.syms[i],) # <<<<<<<<<<<<<<
- * return start
- *
- */
- __pyx_t_5 = PyInt_FromLong((__pyx_v_self->syms[__pyx_v_i])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Add(__pyx_v_start, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_v_start);
- __pyx_v_start = __pyx_t_5;
- __pyx_t_5 = 0;
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":153
- * else:
- * start = start + (self.syms[i],)
- * return start # <<<<<<<<<<<<<<
- *
- * property words:
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_start);
- __pyx_r = __pyx_v_start;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.Phrase.subst", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_start);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_6Phrase_5words_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_6Phrase_5words_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_6Phrase_5words___get__(((struct __pyx_obj_3_sa_Phrase *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":156
- *
- * property words:
- * def __get__(self): # <<<<<<<<<<<<<<
- * return [sym_tostring(w) for w in self if not sym_isvar(w)]
- *
- */
-
-static PyObject *__pyx_pf_3_sa_6Phrase_5words___get__(struct __pyx_obj_3_sa_Phrase *__pyx_v_self) {
- PyObject *__pyx_v_w = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- PyObject *(*__pyx_t_4)(PyObject *);
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":157
- * property words:
- * def __get__(self):
- * return [sym_tostring(w) for w in self if not sym_isvar(w)] # <<<<<<<<<<<<<<
- *
- * cdef class Rule:
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyList_CheckExact(((PyObject *)__pyx_v_self)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
- __pyx_t_2 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_5 = __pyx_t_4(__pyx_t_2);
- if (unlikely(!__pyx_t_5)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_5);
- }
- __Pyx_XDECREF(__pyx_v_w);
- __pyx_v_w = __pyx_t_5;
- __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_t_6) != 0)) != 0);
- if (__pyx_t_7) {
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.Phrase.words.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_w);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_4Rule_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_4Rule_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_lhs;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_f = 0;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_e = 0;
- PyObject *__pyx_v_scores = 0;
- PyObject *__pyx_v_word_alignments = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lhs,&__pyx_n_s__f,&__pyx_n_s__e,&__pyx_n_s__scores,&__pyx_n_s__word_alignments,0};
- PyObject* values[5] = {0,0,0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":161
- * cdef class Rule:
- *
- * def __cinit__(self, int lhs, Phrase f, Phrase e, scores=None, word_alignments=None): # <<<<<<<<<<<<<<
- * if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs)
- * self.lhs = lhs
- */
- values[3] = ((PyObject *)Py_None);
- values[4] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lhs)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__scores);
- if (value) { values[3] = value; kw_args--; }
- }
- case 4:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word_alignments);
- if (value) { values[4] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_lhs = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_lhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)values[1]);
- __pyx_v_e = ((struct __pyx_obj_3_sa_Phrase *)values[2]);
- __pyx_v_scores = values[3];
- __pyx_v_word_alignments = values[4];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Rule.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_ptype_3_sa_Phrase, 1, "f", 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_e), __pyx_ptype_3_sa_Phrase, 1, "e", 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_4Rule___cinit__(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self), __pyx_v_lhs, __pyx_v_f, __pyx_v_e, __pyx_v_scores, __pyx_v_word_alignments);
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_self, int __pyx_v_lhs, struct __pyx_obj_3_sa_Phrase *__pyx_v_f, struct __pyx_obj_3_sa_Phrase *__pyx_v_e, PyObject *__pyx_v_scores, PyObject *__pyx_v_word_alignments) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":162
- *
- * def __cinit__(self, int lhs, Phrase f, Phrase e, scores=None, word_alignments=None):
- * if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs) # <<<<<<<<<<<<<<
- * self.lhs = lhs
- * self.f = f
- */
- __pyx_t_1 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_v_lhs) != 0)) != 0);
- if (__pyx_t_1) {
- __pyx_t_2 = PyInt_FromLong(__pyx_v_lhs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_70), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":163
- * def __cinit__(self, int lhs, Phrase f, Phrase e, scores=None, word_alignments=None):
- * if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs)
- * self.lhs = lhs # <<<<<<<<<<<<<<
- * self.f = f
- * self.e = e
- */
- __pyx_v_self->lhs = __pyx_v_lhs;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":164
- * if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs)
- * self.lhs = lhs
- * self.f = f # <<<<<<<<<<<<<<
- * self.e = e
- * self.word_alignments = word_alignments
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_f));
- __Pyx_GOTREF(__pyx_v_self->f);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->f));
- __pyx_v_self->f = __pyx_v_f;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":165
- * self.lhs = lhs
- * self.f = f
- * self.e = e # <<<<<<<<<<<<<<
- * self.word_alignments = word_alignments
- * self.scores = scores
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_e));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_e));
- __Pyx_GOTREF(__pyx_v_self->e);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->e));
- __pyx_v_self->e = __pyx_v_e;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":166
- * self.f = f
- * self.e = e
- * self.word_alignments = word_alignments # <<<<<<<<<<<<<<
- * self.scores = scores
- *
- */
- __Pyx_INCREF(__pyx_v_word_alignments);
- __Pyx_GIVEREF(__pyx_v_word_alignments);
- __Pyx_GOTREF(__pyx_v_self->word_alignments);
- __Pyx_DECREF(__pyx_v_self->word_alignments);
- __pyx_v_self->word_alignments = __pyx_v_word_alignments;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":167
- * self.e = e
- * self.word_alignments = word_alignments
- * self.scores = scores # <<<<<<<<<<<<<<
- *
- * def __hash__(self):
- */
- if (!(likely(((__pyx_v_scores) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_scores, __pyx_ptype_3_sa_FeatureVector))))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_INCREF(__pyx_v_scores);
- __Pyx_GIVEREF(__pyx_v_scores);
- __Pyx_GOTREF(__pyx_v_self->scores);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->scores));
- __pyx_v_self->scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_v_scores);
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.Rule.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static Py_hash_t __pyx_pw_3_sa_4Rule_3__hash__(PyObject *__pyx_v_self); /*proto*/
-static Py_hash_t __pyx_pw_3_sa_4Rule_3__hash__(PyObject *__pyx_v_self) {
- Py_hash_t __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_4Rule_2__hash__(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":169
- * self.scores = scores
- *
- * def __hash__(self): # <<<<<<<<<<<<<<
- * return hash((self.lhs, self.f, self.e))
- *
- */
-
-static Py_hash_t __pyx_pf_3_sa_4Rule_2__hash__(struct __pyx_obj_3_sa_Rule *__pyx_v_self) {
- Py_hash_t __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_hash_t __pyx_t_3;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__hash__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":170
- *
- * def __hash__(self):
- * return hash((self.lhs, self.f, self.e)) # <<<<<<<<<<<<<<
- *
- * def __cmp__(self, Rule other):
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->lhs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->f));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->f));
- __Pyx_INCREF(((PyObject *)__pyx_v_self->e));
- PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->e));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->e));
- __pyx_t_1 = 0;
- __pyx_t_3 = PyObject_Hash(((PyObject *)__pyx_t_2)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Rule.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-#if PY_MAJOR_VERSION < 3
-static int __pyx_pw_3_sa_4Rule_5__cmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static int __pyx_pw_3_sa_4Rule_5__cmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
- CYTHON_UNUSED int __pyx_lineno = 0;
- CYTHON_UNUSED const char *__pyx_filename = NULL;
- CYTHON_UNUSED int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cmp__ (wrapper)", 0);
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_3_sa_Rule, 1, "other", 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_4Rule_4__cmp__(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self), ((struct __pyx_obj_3_sa_Rule *)__pyx_v_other));
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-#endif /*!(#if PY_MAJOR_VERSION < 3)*/
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":172
- * return hash((self.lhs, self.f, self.e))
- *
- * def __cmp__(self, Rule other): # <<<<<<<<<<<<<<
- * return cmp((self.lhs, self.f, self.e, self.word_alignments),
- * (other.lhs, other.f, other.e, self.word_alignments))
- */
-
-#if PY_MAJOR_VERSION < 3
-static int __pyx_pf_3_sa_4Rule_4__cmp__(struct __pyx_obj_3_sa_Rule *__pyx_v_self, struct __pyx_obj_3_sa_Rule *__pyx_v_other) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cmp__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":173
- *
- * def __cmp__(self, Rule other):
- * return cmp((self.lhs, self.f, self.e, self.word_alignments), # <<<<<<<<<<<<<<
- * (other.lhs, other.f, other.e, self.word_alignments))
- *
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->lhs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->f));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->f));
- __Pyx_INCREF(((PyObject *)__pyx_v_self->e));
- PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->e));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->e));
- __Pyx_INCREF(__pyx_v_self->word_alignments);
- PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->word_alignments);
- __Pyx_GIVEREF(__pyx_v_self->word_alignments);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":174
- * def __cmp__(self, Rule other):
- * return cmp((self.lhs, self.f, self.e, self.word_alignments),
- * (other.lhs, other.f, other.e, self.word_alignments)) # <<<<<<<<<<<<<<
- *
- * def fmerge(self, Phrase f):
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_other->lhs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_other->f));
- PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_other->f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_other->f));
- __Pyx_INCREF(((PyObject *)__pyx_v_other->e));
- PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_other->e));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_other->e));
- __Pyx_INCREF(__pyx_v_self->word_alignments);
- PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->word_alignments);
- __Pyx_GIVEREF(__pyx_v_self->word_alignments);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_t_2 = 0;
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_4;
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.Rule.__cmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-#endif /*!(#if PY_MAJOR_VERSION < 3)*/
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_4Rule_7fmerge(PyObject *__pyx_v_self, PyObject *__pyx_v_f); /*proto*/
-static PyObject *__pyx_pw_3_sa_4Rule_7fmerge(PyObject *__pyx_v_self, PyObject *__pyx_v_f) {
- CYTHON_UNUSED int __pyx_lineno = 0;
- CYTHON_UNUSED const char *__pyx_filename = NULL;
- CYTHON_UNUSED int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("fmerge (wrapper)", 0);
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_ptype_3_sa_Phrase, 1, "f", 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_4Rule_6fmerge(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self), ((struct __pyx_obj_3_sa_Phrase *)__pyx_v_f));
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":176
- * (other.lhs, other.f, other.e, self.word_alignments))
- *
- * def fmerge(self, Phrase f): # <<<<<<<<<<<<<<
- * if self.f == f:
- * self.f = f
- */
-
-static PyObject *__pyx_pf_3_sa_4Rule_6fmerge(struct __pyx_obj_3_sa_Rule *__pyx_v_self, struct __pyx_obj_3_sa_Phrase *__pyx_v_f) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("fmerge", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":177
- *
- * def fmerge(self, Phrase f):
- * if self.f == f: # <<<<<<<<<<<<<<
- * self.f = f
- *
- */
- __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_self->f), ((PyObject *)__pyx_v_f), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":178
- * def fmerge(self, Phrase f):
- * if self.f == f:
- * self.f = f # <<<<<<<<<<<<<<
- *
- * def arity(self):
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_f));
- __Pyx_GOTREF(__pyx_v_self->f);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->f));
- __pyx_v_self->f = __pyx_v_f;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.Rule.fmerge", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_4Rule_9arity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_4Rule_9arity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("arity (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_4Rule_8arity(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":180
- * self.f = f
- *
- * def arity(self): # <<<<<<<<<<<<<<
- * return self.f.arity()
- *
- */
-
-static PyObject *__pyx_pf_3_sa_4Rule_8arity(struct __pyx_obj_3_sa_Rule *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("arity", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":181
- *
- * def arity(self):
- * return self.f.arity() # <<<<<<<<<<<<<<
- *
- * def __str__(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->f), __pyx_n_s__arity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Rule.arity", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_4Rule_11__str__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_4Rule_11__str__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_4Rule_10__str__(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":187
- * fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]
- * if self.word_alignments is not None:
- * fields.append(' '.join('%d-%d' % a for a in self.alignments())) # <<<<<<<<<<<<<<
- * return ' ||| '.join(fields)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_4Rule_7__str___genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_17_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_4Rule_7__str___2generator13, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.Rule.__str__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- PyObject *(*__pyx_t_4)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self), __pyx_n_s__alignments); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
- __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_4(__pyx_t_1);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_a);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_a);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_cur_scope->__pyx_v_a = __pyx_t_2;
- __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_71), __pyx_cur_scope->__pyx_v_a); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_r = ((PyObject *)__pyx_t_2);
- __pyx_t_2 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":183
- * return self.f.arity()
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * cdef unsigned i
- * fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]
- */
-
-static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx_v_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *__pyx_cur_scope;
- PyObject *__pyx_v_fields = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_t_8;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__str__", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)__pyx_tp_new_3_sa___pyx_scope_struct_16___str__(__pyx_ptype_3_sa___pyx_scope_struct_16___str__, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":185
- * def __str__(self):
- * cdef unsigned i
- * fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)] # <<<<<<<<<<<<<<
- * if self.word_alignments is not None:
- * fields.append(' '.join('%d-%d' % a for a in self.alignments()))
- */
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_cur_scope->__pyx_v_self->lhs)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->f));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_self->f));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->f));
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->e));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_self->e));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->e));
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->scores));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_self->scores));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->scores));
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- PyList_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyList_SET_ITEM(__pyx_t_2, 2, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_1 = 0;
- __pyx_t_3 = 0;
- __pyx_t_4 = 0;
- __pyx_t_5 = 0;
- __pyx_v_fields = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":186
- * cdef unsigned i
- * fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]
- * if self.word_alignments is not None: # <<<<<<<<<<<<<<
- * fields.append(' '.join('%d-%d' % a for a in self.alignments()))
- * return ' ||| '.join(fields)
- */
- __pyx_t_6 = (__pyx_cur_scope->__pyx_v_self->word_alignments != Py_None);
- __pyx_t_7 = (__pyx_t_6 != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":187
- * fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]
- * if self.word_alignments is not None:
- * fields.append(' '.join('%d-%d' % a for a in self.alignments())) # <<<<<<<<<<<<<<
- * return ' ||| '.join(fields)
- *
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = __pyx_pf_3_sa_4Rule_7__str___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_fields, __pyx_t_5); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":188
- * if self.word_alignments is not None:
- * fields.append(' '.join('%d-%d' % a for a in self.alignments()))
- * return ' ||| '.join(fields) # <<<<<<<<<<<<<<
- *
- * def alignments(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_19), __pyx_n_s__join); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_v_fields));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_fields));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fields));
- __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.Rule.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_fields);
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_4Rule_14generator3(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_4Rule_13alignments(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_4Rule_13alignments(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("alignments (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_4Rule_12alignments(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":190
- * return ' ||| '.join(fields)
- *
- * def alignments(self): # <<<<<<<<<<<<<<
- * for point in self.word_alignments:
- * yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE
- */
-
-static PyObject *__pyx_pf_3_sa_4Rule_12alignments(struct __pyx_obj_3_sa_Rule *__pyx_v_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("alignments", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)__pyx_tp_new_3_sa___pyx_scope_struct_18_alignments(__pyx_ptype_3_sa___pyx_scope_struct_18_alignments, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_4Rule_14generator3, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.Rule.alignments", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_4Rule_14generator3(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":191
- *
- * def alignments(self):
- * for point in self.word_alignments: # <<<<<<<<<<<<<<
- * yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE
- */
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_self->word_alignments) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_self->word_alignments)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->word_alignments; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_self->word_alignments); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_point);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_point);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_point = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":192
- * def alignments(self):
- * for point in self.word_alignments:
- * yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE # <<<<<<<<<<<<<<
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_cur_scope->__pyx_v_point, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyNumber_Remainder(__pyx_cur_scope->__pyx_v_point, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_t_5 = 0;
- __pyx_t_6 = 0;
- __pyx_r = ((PyObject *)__pyx_t_4);
- __pyx_t_4 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("alignments", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_4Rule_1f_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_4Rule_1f_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_4Rule_1f___get__(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "_sa.pxd":37
- * cdef class Rule:
- * cdef int lhs
- * cdef readonly Phrase f, e # <<<<<<<<<<<<<<
- * cdef FeatureVector scores
- * cdef int n_scores
- */
-
-static PyObject *__pyx_pf_3_sa_4Rule_1f___get__(struct __pyx_obj_3_sa_Rule *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->f));
- __pyx_r = ((PyObject *)__pyx_v_self->f);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_4Rule_1e_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_4Rule_1e_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_4Rule_1e___get__(((struct __pyx_obj_3_sa_Rule *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_pf_3_sa_4Rule_1e___get__(struct __pyx_obj_3_sa_Rule *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->e));
- __pyx_r = ((PyObject *)__pyx_v_self->e);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":21
- * int arr_len
- *
- * cdef _Trie_Node* new_trie_node(): # <<<<<<<<<<<<<<
- * cdef _Trie_Node* node
- * node = <_Trie_Node*> malloc(sizeof(_Trie_Node))
- */
-
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void) {
- struct __pyx_t_3_sa__Trie_Node *__pyx_v_node;
- struct __pyx_t_3_sa__Trie_Node *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("new_trie_node", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":23
- * cdef _Trie_Node* new_trie_node():
- * cdef _Trie_Node* node
- * node = <_Trie_Node*> malloc(sizeof(_Trie_Node)) # <<<<<<<<<<<<<<
- * node.root = NULL
- * node.arr_len = 0
- */
- __pyx_v_node = ((struct __pyx_t_3_sa__Trie_Node *)malloc((sizeof(struct __pyx_t_3_sa__Trie_Node))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":24
- * cdef _Trie_Node* node
- * node = <_Trie_Node*> malloc(sizeof(_Trie_Node))
- * node.root = NULL # <<<<<<<<<<<<<<
- * node.arr_len = 0
- * node.arr = <int*> malloc(sizeof(0*sizeof(int)))
- */
- __pyx_v_node->root = NULL;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":25
- * node = <_Trie_Node*> malloc(sizeof(_Trie_Node))
- * node.root = NULL
- * node.arr_len = 0 # <<<<<<<<<<<<<<
- * node.arr = <int*> malloc(sizeof(0*sizeof(int)))
- * return node
- */
- __pyx_v_node->arr_len = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":26
- * node.root = NULL
- * node.arr_len = 0
- * node.arr = <int*> malloc(sizeof(0*sizeof(int))) # <<<<<<<<<<<<<<
- * return node
- *
- */
- __pyx_v_node->arr = ((int *)malloc((sizeof((0 * (sizeof(int)))))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":27
- * node.arr_len = 0
- * node.arr = <int*> malloc(sizeof(0*sizeof(int)))
- * return node # <<<<<<<<<<<<<<
- *
- * cdef _Trie_Edge* new_trie_edge(int val):
- */
- __pyx_r = __pyx_v_node;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":29
- * return node
- *
- * cdef _Trie_Edge* new_trie_edge(int val): # <<<<<<<<<<<<<<
- * cdef _Trie_Edge* edge
- * edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge))
- */
-
-static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_val) {
- struct __pyx_t_3_sa__Trie_Edge *__pyx_v_edge;
- struct __pyx_t_3_sa__Trie_Edge *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("new_trie_edge", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":31
- * cdef _Trie_Edge* new_trie_edge(int val):
- * cdef _Trie_Edge* edge
- * edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge)) # <<<<<<<<<<<<<<
- * edge.node = new_trie_node()
- * edge.bigger = NULL
- */
- __pyx_v_edge = ((struct __pyx_t_3_sa__Trie_Edge *)malloc((sizeof(struct __pyx_t_3_sa__Trie_Edge))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":32
- * cdef _Trie_Edge* edge
- * edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge))
- * edge.node = new_trie_node() # <<<<<<<<<<<<<<
- * edge.bigger = NULL
- * edge.smaller = NULL
- */
- __pyx_v_edge->node = __pyx_f_3_sa_new_trie_node();
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":33
- * edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge))
- * edge.node = new_trie_node()
- * edge.bigger = NULL # <<<<<<<<<<<<<<
- * edge.smaller = NULL
- * edge.val = val
- */
- __pyx_v_edge->bigger = NULL;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":34
- * edge.node = new_trie_node()
- * edge.bigger = NULL
- * edge.smaller = NULL # <<<<<<<<<<<<<<
- * edge.val = val
- * return edge
- */
- __pyx_v_edge->smaller = NULL;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":35
- * edge.bigger = NULL
- * edge.smaller = NULL
- * edge.val = val # <<<<<<<<<<<<<<
- * return edge
- *
- */
- __pyx_v_edge->val = __pyx_v_val;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":36
- * edge.smaller = NULL
- * edge.val = val
- * return edge # <<<<<<<<<<<<<<
- *
- * cdef free_trie_node(_Trie_Node* node):
- */
- __pyx_r = __pyx_v_edge;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":38
- * return edge
- *
- * cdef free_trie_node(_Trie_Node* node): # <<<<<<<<<<<<<<
- * if node != NULL:
- * free_trie_edge(node.root)
- */
-
-static PyObject *__pyx_f_3_sa_free_trie_node(struct __pyx_t_3_sa__Trie_Node *__pyx_v_node) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("free_trie_node", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":39
- *
- * cdef free_trie_node(_Trie_Node* node):
- * if node != NULL: # <<<<<<<<<<<<<<
- * free_trie_edge(node.root)
- * free(node.arr)
- */
- __pyx_t_1 = ((__pyx_v_node != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":40
- * cdef free_trie_node(_Trie_Node* node):
- * if node != NULL:
- * free_trie_edge(node.root) # <<<<<<<<<<<<<<
- * free(node.arr)
- *
- */
- __pyx_t_2 = __pyx_f_3_sa_free_trie_edge(__pyx_v_node->root); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":41
- * if node != NULL:
- * free_trie_edge(node.root)
- * free(node.arr) # <<<<<<<<<<<<<<
- *
- * cdef free_trie_edge(_Trie_Edge* edge):
- */
- free(__pyx_v_node->arr);
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.free_trie_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":43
- * free(node.arr)
- *
- * cdef free_trie_edge(_Trie_Edge* edge): # <<<<<<<<<<<<<<
- * if edge != NULL:
- * free_trie_node(edge.node)
- */
-
-static PyObject *__pyx_f_3_sa_free_trie_edge(struct __pyx_t_3_sa__Trie_Edge *__pyx_v_edge) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("free_trie_edge", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":44
- *
- * cdef free_trie_edge(_Trie_Edge* edge):
- * if edge != NULL: # <<<<<<<<<<<<<<
- * free_trie_node(edge.node)
- * free_trie_edge(edge.bigger)
- */
- __pyx_t_1 = ((__pyx_v_edge != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":45
- * cdef free_trie_edge(_Trie_Edge* edge):
- * if edge != NULL:
- * free_trie_node(edge.node) # <<<<<<<<<<<<<<
- * free_trie_edge(edge.bigger)
- * free_trie_edge(edge.smaller)
- */
- __pyx_t_2 = __pyx_f_3_sa_free_trie_node(__pyx_v_edge->node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":46
- * if edge != NULL:
- * free_trie_node(edge.node)
- * free_trie_edge(edge.bigger) # <<<<<<<<<<<<<<
- * free_trie_edge(edge.smaller)
- *
- */
- __pyx_t_2 = __pyx_f_3_sa_free_trie_edge(__pyx_v_edge->bigger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":47
- * free_trie_node(edge.node)
- * free_trie_edge(edge.bigger)
- * free_trie_edge(edge.smaller) # <<<<<<<<<<<<<<
- *
- * cdef _Trie_Node* trie_find(_Trie_Node* node, int val):
- */
- __pyx_t_2 = __pyx_f_3_sa_free_trie_edge(__pyx_v_edge->smaller); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.free_trie_edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":49
- * free_trie_edge(edge.smaller)
- *
- * cdef _Trie_Node* trie_find(_Trie_Node* node, int val): # <<<<<<<<<<<<<<
- * cdef _Trie_Edge* cur
- * cur = node.root
- */
-
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_find(struct __pyx_t_3_sa__Trie_Node *__pyx_v_node, int __pyx_v_val) {
- struct __pyx_t_3_sa__Trie_Edge *__pyx_v_cur;
- struct __pyx_t_3_sa__Trie_Node *__pyx_r;
- __Pyx_RefNannyDeclarations
- struct __pyx_t_3_sa__Trie_Edge *__pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- __Pyx_RefNannySetupContext("trie_find", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":51
- * cdef _Trie_Node* trie_find(_Trie_Node* node, int val):
- * cdef _Trie_Edge* cur
- * cur = node.root # <<<<<<<<<<<<<<
- * while cur != NULL and cur.val != val:
- * if val > cur.val:
- */
- __pyx_t_1 = __pyx_v_node->root;
- __pyx_v_cur = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":52
- * cdef _Trie_Edge* cur
- * cur = node.root
- * while cur != NULL and cur.val != val: # <<<<<<<<<<<<<<
- * if val > cur.val:
- * cur = cur.bigger
- */
- while (1) {
- __pyx_t_2 = ((__pyx_v_cur != NULL) != 0);
- if (__pyx_t_2) {
- __pyx_t_3 = ((__pyx_v_cur->val != __pyx_v_val) != 0);
- __pyx_t_4 = __pyx_t_3;
- } else {
- __pyx_t_4 = __pyx_t_2;
- }
- if (!__pyx_t_4) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":53
- * cur = node.root
- * while cur != NULL and cur.val != val:
- * if val > cur.val: # <<<<<<<<<<<<<<
- * cur = cur.bigger
- * elif val < cur.val:
- */
- __pyx_t_4 = ((__pyx_v_val > __pyx_v_cur->val) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":54
- * while cur != NULL and cur.val != val:
- * if val > cur.val:
- * cur = cur.bigger # <<<<<<<<<<<<<<
- * elif val < cur.val:
- * cur = cur.smaller
- */
- __pyx_t_1 = __pyx_v_cur->bigger;
- __pyx_v_cur = __pyx_t_1;
- goto __pyx_L5;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":55
- * if val > cur.val:
- * cur = cur.bigger
- * elif val < cur.val: # <<<<<<<<<<<<<<
- * cur = cur.smaller
- * if cur == NULL:
- */
- __pyx_t_4 = ((__pyx_v_val < __pyx_v_cur->val) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":56
- * cur = cur.bigger
- * elif val < cur.val:
- * cur = cur.smaller # <<<<<<<<<<<<<<
- * if cur == NULL:
- * return NULL
- */
- __pyx_t_1 = __pyx_v_cur->smaller;
- __pyx_v_cur = __pyx_t_1;
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":57
- * elif val < cur.val:
- * cur = cur.smaller
- * if cur == NULL: # <<<<<<<<<<<<<<
- * return NULL
- * else:
- */
- __pyx_t_4 = ((__pyx_v_cur == NULL) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":58
- * cur = cur.smaller
- * if cur == NULL:
- * return NULL # <<<<<<<<<<<<<<
- * else:
- * return cur.node
- */
- __pyx_r = NULL;
- goto __pyx_L0;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":60
- * return NULL
- * else:
- * return cur.node # <<<<<<<<<<<<<<
- *
- * cdef trie_node_data_append(_Trie_Node* node, int val):
- */
- __pyx_r = __pyx_v_cur->node;
- goto __pyx_L0;
- }
- __pyx_L6:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":62
- * return cur.node
- *
- * cdef trie_node_data_append(_Trie_Node* node, int val): # <<<<<<<<<<<<<<
- * cdef int new_len
- * new_len = node.arr_len + 1
- */
-
-static PyObject *__pyx_f_3_sa_trie_node_data_append(struct __pyx_t_3_sa__Trie_Node *__pyx_v_node, int __pyx_v_val) {
- int __pyx_v_new_len;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("trie_node_data_append", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":64
- * cdef trie_node_data_append(_Trie_Node* node, int val):
- * cdef int new_len
- * new_len = node.arr_len + 1 # <<<<<<<<<<<<<<
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- * node.arr[node.arr_len] = val
- */
- __pyx_v_new_len = (__pyx_v_node->arr_len + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":65
- * cdef int new_len
- * new_len = node.arr_len + 1
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int)) # <<<<<<<<<<<<<<
- * node.arr[node.arr_len] = val
- * node.arr_len = new_len
- */
- __pyx_v_node->arr = ((int *)realloc(__pyx_v_node->arr, (__pyx_v_new_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":66
- * new_len = node.arr_len + 1
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- * node.arr[node.arr_len] = val # <<<<<<<<<<<<<<
- * node.arr_len = new_len
- *
- */
- (__pyx_v_node->arr[__pyx_v_node->arr_len]) = __pyx_v_val;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":67
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- * node.arr[node.arr_len] = val
- * node.arr_len = new_len # <<<<<<<<<<<<<<
- *
- * cdef trie_node_data_extend(_Trie_Node* node, int* vals, int num_vals):
- */
- __pyx_v_node->arr_len = __pyx_v_new_len;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":69
- * node.arr_len = new_len
- *
- * cdef trie_node_data_extend(_Trie_Node* node, int* vals, int num_vals): # <<<<<<<<<<<<<<
- * cdef int new_len
- * new_len = node.arr_len + num_vals
- */
-
-static PyObject *__pyx_f_3_sa_trie_node_data_extend(struct __pyx_t_3_sa__Trie_Node *__pyx_v_node, int *__pyx_v_vals, int __pyx_v_num_vals) {
- int __pyx_v_new_len;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("trie_node_data_extend", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":71
- * cdef trie_node_data_extend(_Trie_Node* node, int* vals, int num_vals):
- * cdef int new_len
- * new_len = node.arr_len + num_vals # <<<<<<<<<<<<<<
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- * memcpy(node.arr + node.arr_len, vals, num_vals*sizeof(int))
- */
- __pyx_v_new_len = (__pyx_v_node->arr_len + __pyx_v_num_vals);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":72
- * cdef int new_len
- * new_len = node.arr_len + num_vals
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int)) # <<<<<<<<<<<<<<
- * memcpy(node.arr + node.arr_len, vals, num_vals*sizeof(int))
- * node.arr_len = new_len
- */
- __pyx_v_node->arr = ((int *)realloc(__pyx_v_node->arr, (__pyx_v_new_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":73
- * new_len = node.arr_len + num_vals
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- * memcpy(node.arr + node.arr_len, vals, num_vals*sizeof(int)) # <<<<<<<<<<<<<<
- * node.arr_len = new_len
- *
- */
- memcpy((__pyx_v_node->arr + __pyx_v_node->arr_len), __pyx_v_vals, (__pyx_v_num_vals * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":74
- * node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- * memcpy(node.arr + node.arr_len, vals, num_vals*sizeof(int))
- * node.arr_len = new_len # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_v_node->arr_len = __pyx_v_new_len;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":77
- *
- *
- * cdef _Trie_Node* trie_insert(_Trie_Node* node, int val): # <<<<<<<<<<<<<<
- * cdef _Trie_Edge** cur
- * cur = &node.root
- */
-
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3_sa__Trie_Node *__pyx_v_node, int __pyx_v_val) {
- struct __pyx_t_3_sa__Trie_Edge **__pyx_v_cur;
- struct __pyx_t_3_sa__Trie_Node *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- __Pyx_RefNannySetupContext("trie_insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":79
- * cdef _Trie_Node* trie_insert(_Trie_Node* node, int val):
- * cdef _Trie_Edge** cur
- * cur = &node.root # <<<<<<<<<<<<<<
- * while cur[0] != NULL and cur[0].val != val:
- * if val > cur[0].val:
- */
- __pyx_v_cur = (&__pyx_v_node->root);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":80
- * cdef _Trie_Edge** cur
- * cur = &node.root
- * while cur[0] != NULL and cur[0].val != val: # <<<<<<<<<<<<<<
- * if val > cur[0].val:
- * cur = &cur[0].bigger
- */
- while (1) {
- __pyx_t_1 = (((__pyx_v_cur[0]) != NULL) != 0);
- if (__pyx_t_1) {
- __pyx_t_2 = (((__pyx_v_cur[0])->val != __pyx_v_val) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":81
- * cur = &node.root
- * while cur[0] != NULL and cur[0].val != val:
- * if val > cur[0].val: # <<<<<<<<<<<<<<
- * cur = &cur[0].bigger
- * elif val < cur[0].val:
- */
- __pyx_t_3 = ((__pyx_v_val > (__pyx_v_cur[0])->val) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":82
- * while cur[0] != NULL and cur[0].val != val:
- * if val > cur[0].val:
- * cur = &cur[0].bigger # <<<<<<<<<<<<<<
- * elif val < cur[0].val:
- * cur = &cur[0].smaller
- */
- __pyx_v_cur = (&(__pyx_v_cur[0])->bigger);
- goto __pyx_L5;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":83
- * if val > cur[0].val:
- * cur = &cur[0].bigger
- * elif val < cur[0].val: # <<<<<<<<<<<<<<
- * cur = &cur[0].smaller
- * if cur[0] == NULL:
- */
- __pyx_t_3 = ((__pyx_v_val < (__pyx_v_cur[0])->val) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":84
- * cur = &cur[0].bigger
- * elif val < cur[0].val:
- * cur = &cur[0].smaller # <<<<<<<<<<<<<<
- * if cur[0] == NULL:
- * cur[0] = new_trie_edge(val)
- */
- __pyx_v_cur = (&(__pyx_v_cur[0])->smaller);
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":85
- * elif val < cur[0].val:
- * cur = &cur[0].smaller
- * if cur[0] == NULL: # <<<<<<<<<<<<<<
- * cur[0] = new_trie_edge(val)
- * return cur[0].node
- */
- __pyx_t_3 = (((__pyx_v_cur[0]) == NULL) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":86
- * cur = &cur[0].smaller
- * if cur[0] == NULL:
- * cur[0] = new_trie_edge(val) # <<<<<<<<<<<<<<
- * return cur[0].node
- *
- */
- (__pyx_v_cur[0]) = __pyx_f_3_sa_new_trie_edge(__pyx_v_val);
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":87
- * if cur[0] == NULL:
- * cur[0] = new_trie_edge(val)
- * return cur[0].node # <<<<<<<<<<<<<<
- *
- * cdef trie_node_to_map(_Trie_Node* node, result, prefix, int include_zeros):
- */
- __pyx_r = (__pyx_v_cur[0])->node;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":89
- * return cur[0].node
- *
- * cdef trie_node_to_map(_Trie_Node* node, result, prefix, int include_zeros): # <<<<<<<<<<<<<<
- * cdef IntList arr
- *
- */
-
-static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *__pyx_v_node, PyObject *__pyx_v_result, PyObject *__pyx_v_prefix, int __pyx_v_include_zeros) {
- struct __pyx_obj_3_sa_IntList *__pyx_v_arr = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("trie_node_to_map", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":92
- * cdef IntList arr
- *
- * if include_zeros or node.arr_len > 0: # <<<<<<<<<<<<<<
- * arr = IntList()
- * free(arr.arr)
- */
- if (!(__pyx_v_include_zeros != 0)) {
- __pyx_t_1 = (__pyx_v_node->arr_len > 0);
- __pyx_t_2 = __pyx_t_1;
- } else {
- __pyx_t_2 = (__pyx_v_include_zeros != 0);
- }
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":93
- *
- * if include_zeros or node.arr_len > 0:
- * arr = IntList() # <<<<<<<<<<<<<<
- * free(arr.arr)
- * arr.arr = <int*> malloc(node.arr_len * sizeof(int))
- */
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":94
- * if include_zeros or node.arr_len > 0:
- * arr = IntList()
- * free(arr.arr) # <<<<<<<<<<<<<<
- * arr.arr = <int*> malloc(node.arr_len * sizeof(int))
- * memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))
- */
- free(__pyx_v_arr->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":95
- * arr = IntList()
- * free(arr.arr)
- * arr.arr = <int*> malloc(node.arr_len * sizeof(int)) # <<<<<<<<<<<<<<
- * memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))
- * arr.len = node.arr_len
- */
- __pyx_v_arr->arr = ((int *)malloc((__pyx_v_node->arr_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":96
- * free(arr.arr)
- * arr.arr = <int*> malloc(node.arr_len * sizeof(int))
- * memcpy(arr.arr, node.arr, node.arr_len * sizeof(int)) # <<<<<<<<<<<<<<
- * arr.len = node.arr_len
- * arr.size = node.arr_len
- */
- memcpy(__pyx_v_arr->arr, __pyx_v_node->arr, (__pyx_v_node->arr_len * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":97
- * arr.arr = <int*> malloc(node.arr_len * sizeof(int))
- * memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))
- * arr.len = node.arr_len # <<<<<<<<<<<<<<
- * arr.size = node.arr_len
- * result[prefix] = arr
- */
- __pyx_t_4 = __pyx_v_node->arr_len;
- __pyx_v_arr->len = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":98
- * memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))
- * arr.len = node.arr_len
- * arr.size = node.arr_len # <<<<<<<<<<<<<<
- * result[prefix] = arr
- * trie_edge_to_map(node.root, result, prefix, include_zeros)
- */
- __pyx_t_4 = __pyx_v_node->arr_len;
- __pyx_v_arr->size = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":99
- * arr.len = node.arr_len
- * arr.size = node.arr_len
- * result[prefix] = arr # <<<<<<<<<<<<<<
- * trie_edge_to_map(node.root, result, prefix, include_zeros)
- *
- */
- if (PyObject_SetItem(__pyx_v_result, __pyx_v_prefix, ((PyObject *)__pyx_v_arr)) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":100
- * arr.size = node.arr_len
- * result[prefix] = arr
- * trie_edge_to_map(node.root, result, prefix, include_zeros) # <<<<<<<<<<<<<<
- *
- * cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros):
- */
- __pyx_t_3 = __pyx_f_3_sa_trie_edge_to_map(__pyx_v_node->root, __pyx_v_result, __pyx_v_prefix, __pyx_v_include_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.trie_node_to_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_arr);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":102
- * trie_edge_to_map(node.root, result, prefix, include_zeros)
- *
- * cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros): # <<<<<<<<<<<<<<
- * if edge != NULL:
- * trie_edge_to_map(edge.smaller, result, prefix, include_zeros)
- */
-
-static PyObject *__pyx_f_3_sa_trie_edge_to_map(struct __pyx_t_3_sa__Trie_Edge *__pyx_v_edge, PyObject *__pyx_v_result, PyObject *__pyx_v_prefix, int __pyx_v_include_zeros) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("trie_edge_to_map", 0);
- __Pyx_INCREF(__pyx_v_prefix);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":103
- *
- * cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros):
- * if edge != NULL: # <<<<<<<<<<<<<<
- * trie_edge_to_map(edge.smaller, result, prefix, include_zeros)
- * trie_edge_to_map(edge.bigger, result, prefix, include_zeros)
- */
- __pyx_t_1 = ((__pyx_v_edge != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":104
- * cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros):
- * if edge != NULL:
- * trie_edge_to_map(edge.smaller, result, prefix, include_zeros) # <<<<<<<<<<<<<<
- * trie_edge_to_map(edge.bigger, result, prefix, include_zeros)
- * prefix = prefix + (edge.val,)
- */
- __pyx_t_2 = __pyx_f_3_sa_trie_edge_to_map(__pyx_v_edge->smaller, __pyx_v_result, __pyx_v_prefix, __pyx_v_include_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":105
- * if edge != NULL:
- * trie_edge_to_map(edge.smaller, result, prefix, include_zeros)
- * trie_edge_to_map(edge.bigger, result, prefix, include_zeros) # <<<<<<<<<<<<<<
- * prefix = prefix + (edge.val,)
- * trie_node_to_map(edge.node, result, prefix, include_zeros)
- */
- __pyx_t_2 = __pyx_f_3_sa_trie_edge_to_map(__pyx_v_edge->bigger, __pyx_v_result, __pyx_v_prefix, __pyx_v_include_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":106
- * trie_edge_to_map(edge.smaller, result, prefix, include_zeros)
- * trie_edge_to_map(edge.bigger, result, prefix, include_zeros)
- * prefix = prefix + (edge.val,) # <<<<<<<<<<<<<<
- * trie_node_to_map(edge.node, result, prefix, include_zeros)
- *
- */
- __pyx_t_2 = PyInt_FromLong(__pyx_v_edge->val); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_v_prefix, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_v_prefix);
- __pyx_v_prefix = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":107
- * trie_edge_to_map(edge.bigger, result, prefix, include_zeros)
- * prefix = prefix + (edge.val,)
- * trie_node_to_map(edge.node, result, prefix, include_zeros) # <<<<<<<<<<<<<<
- *
- * cdef class TrieMap:
- */
- __pyx_t_2 = __pyx_f_3_sa_trie_node_to_map(__pyx_v_edge->node, __pyx_v_result, __pyx_v_prefix, __pyx_v_include_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.trie_edge_to_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_prefix);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_7TrieMap_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_7TrieMap_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_alphabet_size;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__alphabet_size,0};
- PyObject* values[1] = {0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alphabet_size)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- }
- __pyx_v_alphabet_size = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_alphabet_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.TrieMap.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_7TrieMap___cinit__(((struct __pyx_obj_3_sa_TrieMap *)__pyx_v_self), __pyx_v_alphabet_size);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":114
- * cdef int V
- *
- * def __cinit__(self, int alphabet_size): # <<<<<<<<<<<<<<
- * self.V = alphabet_size
- * self.root = <_Trie_Node**> malloc(self.V * sizeof(_Trie_Node*))
- */
-
-static int __pyx_pf_3_sa_7TrieMap___cinit__(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, int __pyx_v_alphabet_size) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":115
- *
- * def __cinit__(self, int alphabet_size):
- * self.V = alphabet_size # <<<<<<<<<<<<<<
- * self.root = <_Trie_Node**> malloc(self.V * sizeof(_Trie_Node*))
- * memset(self.root, 0, self.V * sizeof(_Trie_Node*))
- */
- __pyx_v_self->V = __pyx_v_alphabet_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":116
- * def __cinit__(self, int alphabet_size):
- * self.V = alphabet_size
- * self.root = <_Trie_Node**> malloc(self.V * sizeof(_Trie_Node*)) # <<<<<<<<<<<<<<
- * memset(self.root, 0, self.V * sizeof(_Trie_Node*))
- *
- */
- __pyx_v_self->root = ((struct __pyx_t_3_sa__Trie_Node **)malloc((__pyx_v_self->V * (sizeof(struct __pyx_t_3_sa__Trie_Node *)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":117
- * self.V = alphabet_size
- * self.root = <_Trie_Node**> malloc(self.V * sizeof(_Trie_Node*))
- * memset(self.root, 0, self.V * sizeof(_Trie_Node*)) # <<<<<<<<<<<<<<
- *
- *
- */
- memset(__pyx_v_self->root, 0, (__pyx_v_self->V * (sizeof(struct __pyx_t_3_sa__Trie_Node *))));
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static void __pyx_pw_3_sa_7TrieMap_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_3_sa_7TrieMap_3__dealloc__(PyObject *__pyx_v_self) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
- __pyx_pf_3_sa_7TrieMap_2__dealloc__(((struct __pyx_obj_3_sa_TrieMap *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":120
- *
- *
- * def __dealloc__(self): # <<<<<<<<<<<<<<
- * cdef int i
- * for i from 0 <= i < self.V:
- */
-
-static void __pyx_pf_3_sa_7TrieMap_2__dealloc__(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self) {
- int __pyx_v_i;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__dealloc__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":122
- * def __dealloc__(self):
- * cdef int i
- * for i from 0 <= i < self.V: # <<<<<<<<<<<<<<
- * if self.root[i] != NULL:
- * free_trie_node(self.root[i])
- */
- __pyx_t_1 = __pyx_v_self->V;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":123
- * cdef int i
- * for i from 0 <= i < self.V:
- * if self.root[i] != NULL: # <<<<<<<<<<<<<<
- * free_trie_node(self.root[i])
- * free(self.root)
- */
- __pyx_t_2 = (((__pyx_v_self->root[__pyx_v_i]) != NULL) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":124
- * for i from 0 <= i < self.V:
- * if self.root[i] != NULL:
- * free_trie_node(self.root[i]) # <<<<<<<<<<<<<<
- * free(self.root)
- *
- */
- __pyx_t_3 = __pyx_f_3_sa_free_trie_node((__pyx_v_self->root[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":125
- * if self.root[i] != NULL:
- * free_trie_node(self.root[i])
- * free(self.root) # <<<<<<<<<<<<<<
- *
- *
- */
- free(__pyx_v_self->root);
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.TrieMap.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7TrieMap_5insert(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern); /*proto*/
-static PyObject *__pyx_pw_3_sa_7TrieMap_5insert(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("insert (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7TrieMap_4insert(((struct __pyx_obj_3_sa_TrieMap *)__pyx_v_self), ((PyObject *)__pyx_v_pattern));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":128
- *
- *
- * def insert(self, pattern): # <<<<<<<<<<<<<<
- * cdef int* p
- * cdef int i, l
- */
-
-static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, PyObject *__pyx_v_pattern) {
- int *__pyx_v_p;
- int __pyx_v_i;
- int __pyx_v_l;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":131
- * cdef int* p
- * cdef int i, l
- * l = len(pattern) # <<<<<<<<<<<<<<
- * p = <int*> malloc(l*sizeof(int))
- * for i from 0 <= i < l:
- */
- __pyx_t_1 = PyObject_Length(__pyx_v_pattern); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_l = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":132
- * cdef int i, l
- * l = len(pattern)
- * p = <int*> malloc(l*sizeof(int)) # <<<<<<<<<<<<<<
- * for i from 0 <= i < l:
- * p[i] = pattern[i]
- */
- __pyx_v_p = ((int *)malloc((__pyx_v_l * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":133
- * l = len(pattern)
- * p = <int*> malloc(l*sizeof(int))
- * for i from 0 <= i < l: # <<<<<<<<<<<<<<
- * p[i] = pattern[i]
- * self._insert(p,l)
- */
- __pyx_t_2 = __pyx_v_l;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":134
- * p = <int*> malloc(l*sizeof(int))
- * for i from 0 <= i < l:
- * p[i] = pattern[i] # <<<<<<<<<<<<<<
- * self._insert(p,l)
- * free(p)
- */
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pattern, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- (__pyx_v_p[__pyx_v_i]) = __pyx_t_4;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":135
- * for i from 0 <= i < l:
- * p[i] = pattern[i]
- * self._insert(p,l) # <<<<<<<<<<<<<<
- * free(p)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_self->__pyx_vtab)->_insert(__pyx_v_self, __pyx_v_p, __pyx_v_l);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":136
- * p[i] = pattern[i]
- * self._insert(p,l)
- * free(p) # <<<<<<<<<<<<<<
- *
- *
- */
- free(__pyx_v_p);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.TrieMap.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":139
- *
- *
- * cdef _Trie_Node* _insert(self, int* pattern, int pattern_len): # <<<<<<<<<<<<<<
- * cdef int i
- * cdef _Trie_Node* node
- */
-
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__insert(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, int *__pyx_v_pattern, int __pyx_v_pattern_len) {
- int __pyx_v_i;
- struct __pyx_t_3_sa__Trie_Node *__pyx_v_node;
- struct __pyx_t_3_sa__Trie_Node *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- __Pyx_RefNannySetupContext("_insert", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":142
- * cdef int i
- * cdef _Trie_Node* node
- * if self.root[pattern[0]] == NULL: # <<<<<<<<<<<<<<
- * self.root[pattern[0]] = new_trie_node()
- * node = self.root[pattern[0]]
- */
- __pyx_t_1 = (((__pyx_v_self->root[(__pyx_v_pattern[0])]) == NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":143
- * cdef _Trie_Node* node
- * if self.root[pattern[0]] == NULL:
- * self.root[pattern[0]] = new_trie_node() # <<<<<<<<<<<<<<
- * node = self.root[pattern[0]]
- * for i from 1 <= i < pattern_len:
- */
- (__pyx_v_self->root[(__pyx_v_pattern[0])]) = __pyx_f_3_sa_new_trie_node();
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":144
- * if self.root[pattern[0]] == NULL:
- * self.root[pattern[0]] = new_trie_node()
- * node = self.root[pattern[0]] # <<<<<<<<<<<<<<
- * for i from 1 <= i < pattern_len:
- * node = trie_insert(node, pattern[i])
- */
- __pyx_v_node = (__pyx_v_self->root[(__pyx_v_pattern[0])]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":145
- * self.root[pattern[0]] = new_trie_node()
- * node = self.root[pattern[0]]
- * for i from 1 <= i < pattern_len: # <<<<<<<<<<<<<<
- * node = trie_insert(node, pattern[i])
- * return node
- */
- __pyx_t_2 = __pyx_v_pattern_len;
- for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":146
- * node = self.root[pattern[0]]
- * for i from 1 <= i < pattern_len:
- * node = trie_insert(node, pattern[i]) # <<<<<<<<<<<<<<
- * return node
- *
- */
- __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_pattern[__pyx_v_i]));
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":147
- * for i from 1 <= i < pattern_len:
- * node = trie_insert(node, pattern[i])
- * return node # <<<<<<<<<<<<<<
- *
- * def contains(self, pattern):
- */
- __pyx_r = __pyx_v_node;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7TrieMap_7contains(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern); /*proto*/
-static PyObject *__pyx_pw_3_sa_7TrieMap_7contains(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("contains (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7TrieMap_6contains(((struct __pyx_obj_3_sa_TrieMap *)__pyx_v_self), ((PyObject *)__pyx_v_pattern));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":149
- * return node
- *
- * def contains(self, pattern): # <<<<<<<<<<<<<<
- * cdef int* p
- * cdef int i, l
- */
-
-static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, PyObject *__pyx_v_pattern) {
- int *__pyx_v_p;
- int __pyx_v_i;
- int __pyx_v_l;
- struct __pyx_t_3_sa__Trie_Node *__pyx_v_node;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("contains", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":153
- * cdef int i, l
- * cdef _Trie_Node* node
- * l = len(pattern) # <<<<<<<<<<<<<<
- * p = <int*> malloc(l*sizeof(int))
- * for i from 0 <= i < l:
- */
- __pyx_t_1 = PyObject_Length(__pyx_v_pattern); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_l = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":154
- * cdef _Trie_Node* node
- * l = len(pattern)
- * p = <int*> malloc(l*sizeof(int)) # <<<<<<<<<<<<<<
- * for i from 0 <= i < l:
- * p[i] = pattern[i]
- */
- __pyx_v_p = ((int *)malloc((__pyx_v_l * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":155
- * l = len(pattern)
- * p = <int*> malloc(l*sizeof(int))
- * for i from 0 <= i < l: # <<<<<<<<<<<<<<
- * p[i] = pattern[i]
- * node = self._contains(p,l)
- */
- __pyx_t_2 = __pyx_v_l;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":156
- * p = <int*> malloc(l*sizeof(int))
- * for i from 0 <= i < l:
- * p[i] = pattern[i] # <<<<<<<<<<<<<<
- * node = self._contains(p,l)
- * free(p)
- */
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pattern, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- (__pyx_v_p[__pyx_v_i]) = __pyx_t_4;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":157
- * for i from 0 <= i < l:
- * p[i] = pattern[i]
- * node = self._contains(p,l) # <<<<<<<<<<<<<<
- * free(p)
- * if node == NULL:
- */
- __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_self->__pyx_vtab)->_contains(__pyx_v_self, __pyx_v_p, __pyx_v_l);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":158
- * p[i] = pattern[i]
- * node = self._contains(p,l)
- * free(p) # <<<<<<<<<<<<<<
- * if node == NULL:
- * return False
- */
- free(__pyx_v_p);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":159
- * node = self._contains(p,l)
- * free(p)
- * if node == NULL: # <<<<<<<<<<<<<<
- * return False
- * else:
- */
- __pyx_t_5 = ((__pyx_v_node == NULL) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":160
- * free(p)
- * if node == NULL:
- * return False # <<<<<<<<<<<<<<
- * else:
- * return True
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":162
- * return False
- * else:
- * return True # <<<<<<<<<<<<<<
- *
- * cdef _Trie_Node* _contains(self, int* pattern, int pattern_len):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
- }
- __pyx_L5:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.TrieMap.contains", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":164
- * return True
- *
- * cdef _Trie_Node* _contains(self, int* pattern, int pattern_len): # <<<<<<<<<<<<<<
- * cdef int i
- * cdef _Trie_Node* node
- */
-
-static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__contains(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, int *__pyx_v_pattern, int __pyx_v_pattern_len) {
- int __pyx_v_i;
- struct __pyx_t_3_sa__Trie_Node *__pyx_v_node;
- struct __pyx_t_3_sa__Trie_Node *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- __Pyx_RefNannySetupContext("_contains", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":167
- * cdef int i
- * cdef _Trie_Node* node
- * node = self.root[pattern[0]] # <<<<<<<<<<<<<<
- * i = 1
- * while node != NULL and i < pattern_len:
- */
- __pyx_v_node = (__pyx_v_self->root[(__pyx_v_pattern[0])]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":168
- * cdef _Trie_Node* node
- * node = self.root[pattern[0]]
- * i = 1 # <<<<<<<<<<<<<<
- * while node != NULL and i < pattern_len:
- * node = trie_find(node, pattern[i])
- */
- __pyx_v_i = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":169
- * node = self.root[pattern[0]]
- * i = 1
- * while node != NULL and i < pattern_len: # <<<<<<<<<<<<<<
- * node = trie_find(node, pattern[i])
- * i = i+1
- */
- while (1) {
- __pyx_t_1 = ((__pyx_v_node != NULL) != 0);
- if (__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_i < __pyx_v_pattern_len) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":170
- * i = 1
- * while node != NULL and i < pattern_len:
- * node = trie_find(node, pattern[i]) # <<<<<<<<<<<<<<
- * i = i+1
- * return node
- */
- __pyx_v_node = __pyx_f_3_sa_trie_find(__pyx_v_node, (__pyx_v_pattern[__pyx_v_i]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":171
- * while node != NULL and i < pattern_len:
- * node = trie_find(node, pattern[i])
- * i = i+1 # <<<<<<<<<<<<<<
- * return node
- *
- */
- __pyx_v_i = (__pyx_v_i + 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":172
- * node = trie_find(node, pattern[i])
- * i = i+1
- * return node # <<<<<<<<<<<<<<
- *
- * def toMap(self, flag):
- */
- __pyx_r = __pyx_v_node;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7TrieMap_9toMap(PyObject *__pyx_v_self, PyObject *__pyx_v_flag); /*proto*/
-static PyObject *__pyx_pw_3_sa_7TrieMap_9toMap(PyObject *__pyx_v_self, PyObject *__pyx_v_flag) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("toMap (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_7TrieMap_8toMap(((struct __pyx_obj_3_sa_TrieMap *)__pyx_v_self), ((PyObject *)__pyx_v_flag));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":174
- * return node
- *
- * def toMap(self, flag): # <<<<<<<<<<<<<<
- * cdef int i, include_zeros
- *
- */
-
-static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__pyx_v_self, PyObject *__pyx_v_flag) {
- int __pyx_v_i;
- int __pyx_v_include_zeros;
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("toMap", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":177
- * cdef int i, include_zeros
- *
- * if flag: # <<<<<<<<<<<<<<
- * include_zeros=1
- * else:
- */
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":178
- *
- * if flag:
- * include_zeros=1 # <<<<<<<<<<<<<<
- * else:
- * include_zeros=0
- */
- __pyx_v_include_zeros = 1;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":180
- * include_zeros=1
- * else:
- * include_zeros=0 # <<<<<<<<<<<<<<
- * result = {}
- * for i from 0 <= i < self.V:
- */
- __pyx_v_include_zeros = 0;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":181
- * else:
- * include_zeros=0
- * result = {} # <<<<<<<<<<<<<<
- * for i from 0 <= i < self.V:
- * if self.root[i] != NULL:
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_v_result = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":182
- * include_zeros=0
- * result = {}
- * for i from 0 <= i < self.V: # <<<<<<<<<<<<<<
- * if self.root[i] != NULL:
- * trie_node_to_map(self.root[i], result, (i,), include_zeros)
- */
- __pyx_t_3 = __pyx_v_self->V;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":183
- * result = {}
- * for i from 0 <= i < self.V:
- * if self.root[i] != NULL: # <<<<<<<<<<<<<<
- * trie_node_to_map(self.root[i], result, (i,), include_zeros)
- * return result
- */
- __pyx_t_1 = (((__pyx_v_self->root[__pyx_v_i]) != NULL) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":184
- * for i from 0 <= i < self.V:
- * if self.root[i] != NULL:
- * trie_node_to_map(self.root[i], result, (i,), include_zeros) # <<<<<<<<<<<<<<
- * return result
- *
- */
- __pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_f_3_sa_trie_node_to_map((__pyx_v_self->root[__pyx_v_i]), ((PyObject *)__pyx_v_result), ((PyObject *)__pyx_t_4), __pyx_v_include_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L6;
- }
- __pyx_L6:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":185
- * if self.root[i] != NULL:
- * trie_node_to_map(self.root[i], result, (i,), include_zeros)
- * return result # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- __pyx_r = ((PyObject *)__pyx_v_result);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.TrieMap.toMap", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_14Precomputation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_14Precomputation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_fsarray = 0;
- PyObject *__pyx_v_from_stats = 0;
- PyObject *__pyx_v_from_binary = 0;
- PyObject *__pyx_v_precompute_rank = 0;
- PyObject *__pyx_v_precompute_secondary_rank = 0;
- PyObject *__pyx_v_max_length = 0;
- PyObject *__pyx_v_max_nonterminals = 0;
- PyObject *__pyx_v_train_max_initial_size = 0;
- PyObject *__pyx_v_train_min_gap_size = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fsarray,&__pyx_n_s__from_stats,&__pyx_n_s__from_binary,&__pyx_n_s__precompute_rank,&__pyx_n_s_72,&__pyx_n_s__max_length,&__pyx_n_s__max_nonterminals,&__pyx_n_s_73,&__pyx_n_s__train_min_gap_size,0};
- PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":200
- * cdef write_map(self, m, FILE* f)
- *
- * def __cinit__(self, fsarray=None, from_stats=None, from_binary=None, # <<<<<<<<<<<<<<
- * precompute_rank=1000, precompute_secondary_rank=20,
- * max_length=5, max_nonterminals=2,
- */
- values[0] = ((PyObject *)Py_None);
- values[1] = ((PyObject *)Py_None);
- values[2] = ((PyObject *)Py_None);
- values[3] = ((PyObject *)__pyx_int_1000);
- values[4] = ((PyObject *)__pyx_int_20);
- values[5] = ((PyObject *)__pyx_int_5);
- values[6] = ((PyObject *)__pyx_int_2);
- values[7] = ((PyObject *)__pyx_int_10);
- values[8] = ((PyObject *)__pyx_int_2);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_stats);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_binary);
- if (value) { values[2] = value; kw_args--; }
- }
- case 3:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__precompute_rank);
- if (value) { values[3] = value; kw_args--; }
- }
- case 4:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_72);
- if (value) { values[4] = value; kw_args--; }
- }
- case 5:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_length);
- if (value) { values[5] = value; kw_args--; }
- }
- case 6:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_nonterminals);
- if (value) { values[6] = value; kw_args--; }
- }
- case 7:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_73);
- if (value) { values[7] = value; kw_args--; }
- }
- case 8:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__train_min_gap_size);
- if (value) { values[8] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_fsarray = values[0];
- __pyx_v_from_stats = values[1];
- __pyx_v_from_binary = values[2];
- __pyx_v_precompute_rank = values[3];
- __pyx_v_precompute_secondary_rank = values[4];
- __pyx_v_max_length = values[5];
- __pyx_v_max_nonterminals = values[6];
- __pyx_v_train_max_initial_size = values[7];
- __pyx_v_train_min_gap_size = values[8];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Precomputation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_14Precomputation___cinit__(((struct __pyx_obj_3_sa_Precomputation *)__pyx_v_self), __pyx_v_fsarray, __pyx_v_from_stats, __pyx_v_from_binary, __pyx_v_precompute_rank, __pyx_v_precompute_secondary_rank, __pyx_v_max_length, __pyx_v_max_nonterminals, __pyx_v_train_max_initial_size, __pyx_v_train_min_gap_size);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, PyObject *__pyx_v_fsarray, PyObject *__pyx_v_from_stats, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_precompute_rank, PyObject *__pyx_v_precompute_secondary_rank, PyObject *__pyx_v_max_length, PyObject *__pyx_v_max_nonterminals, PyObject *__pyx_v_train_max_initial_size, PyObject *__pyx_v_train_min_gap_size) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":204
- * max_length=5, max_nonterminals=2,
- * train_max_initial_size=10, train_min_gap_size=2):
- * self.precompute_rank = precompute_rank # <<<<<<<<<<<<<<
- * self.precompute_secondary_rank = precompute_secondary_rank
- * self.max_length = max_length
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_precompute_rank); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->precompute_rank = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":205
- * train_max_initial_size=10, train_min_gap_size=2):
- * self.precompute_rank = precompute_rank
- * self.precompute_secondary_rank = precompute_secondary_rank # <<<<<<<<<<<<<<
- * self.max_length = max_length
- * self.max_nonterminals = max_nonterminals
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_precompute_secondary_rank); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->precompute_secondary_rank = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":206
- * self.precompute_rank = precompute_rank
- * self.precompute_secondary_rank = precompute_secondary_rank
- * self.max_length = max_length # <<<<<<<<<<<<<<
- * self.max_nonterminals = max_nonterminals
- * self.train_max_initial_size = train_max_initial_size
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_max_length); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->max_length = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":207
- * self.precompute_secondary_rank = precompute_secondary_rank
- * self.max_length = max_length
- * self.max_nonterminals = max_nonterminals # <<<<<<<<<<<<<<
- * self.train_max_initial_size = train_max_initial_size
- * self.train_min_gap_size = train_min_gap_size
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_max_nonterminals); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->max_nonterminals = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":208
- * self.max_length = max_length
- * self.max_nonterminals = max_nonterminals
- * self.train_max_initial_size = train_max_initial_size # <<<<<<<<<<<<<<
- * self.train_min_gap_size = train_min_gap_size
- * if from_binary:
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_train_max_initial_size); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->train_max_initial_size = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":209
- * self.max_nonterminals = max_nonterminals
- * self.train_max_initial_size = train_max_initial_size
- * self.train_min_gap_size = train_min_gap_size # <<<<<<<<<<<<<<
- * if from_binary:
- * self.read_binary(from_binary)
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_train_min_gap_size); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->train_min_gap_size = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":210
- * self.train_max_initial_size = train_max_initial_size
- * self.train_min_gap_size = train_min_gap_size
- * if from_binary: # <<<<<<<<<<<<<<
- * self.read_binary(from_binary)
- * elif from_stats:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":211
- * self.train_min_gap_size = train_min_gap_size
- * if from_binary:
- * self.read_binary(from_binary) # <<<<<<<<<<<<<<
- * elif from_stats:
- * self.precompute(from_stats, fsarray)
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_from_binary);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_from_binary);
- __Pyx_GIVEREF(__pyx_v_from_binary);
- __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":212
- * if from_binary:
- * self.read_binary(from_binary)
- * elif from_stats: # <<<<<<<<<<<<<<
- * self.precompute(from_stats, fsarray)
- *
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_stats); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":213
- * self.read_binary(from_binary)
- * elif from_stats:
- * self.precompute(from_stats, fsarray) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__precompute); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_from_stats);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_from_stats);
- __Pyx_GIVEREF(__pyx_v_from_stats);
- __Pyx_INCREF(__pyx_v_fsarray);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_fsarray);
- __Pyx_GIVEREF(__pyx_v_fsarray);
- __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.Precomputation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_14Precomputation_3read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_14Precomputation_3read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Precomputation.read_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_14Precomputation_2read_binary(((struct __pyx_obj_3_sa_Precomputation *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":216
- *
- *
- * def read_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "r")
- */
-
-static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":218
- * def read_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "r") # <<<<<<<<<<<<<<
- * fread(&(self.precompute_rank), sizeof(int), 1, f)
- * fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":219
- * cdef FILE* f
- * f = fopen(filename, "r")
- * fread(&(self.precompute_rank), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- * fread(&(self.max_length), sizeof(int), 1, f)
- */
- fread((&__pyx_v_self->precompute_rank), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":220
- * f = fopen(filename, "r")
- * fread(&(self.precompute_rank), sizeof(int), 1, f)
- * fread(&(self.precompute_secondary_rank), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fread(&(self.max_length), sizeof(int), 1, f)
- * fread(&(self.max_nonterminals), sizeof(int), 1, f)
- */
- fread((&__pyx_v_self->precompute_secondary_rank), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":221
- * fread(&(self.precompute_rank), sizeof(int), 1, f)
- * fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- * fread(&(self.max_length), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fread(&(self.max_nonterminals), sizeof(int), 1, f)
- * fread(&(self.train_max_initial_size), sizeof(int), 1, f)
- */
- fread((&__pyx_v_self->max_length), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":222
- * fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- * fread(&(self.max_length), sizeof(int), 1, f)
- * fread(&(self.max_nonterminals), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fread(&(self.train_max_initial_size), sizeof(int), 1, f)
- * fread(&(self.train_min_gap_size), sizeof(int), 1, f)
- */
- fread((&__pyx_v_self->max_nonterminals), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":223
- * fread(&(self.max_length), sizeof(int), 1, f)
- * fread(&(self.max_nonterminals), sizeof(int), 1, f)
- * fread(&(self.train_max_initial_size), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fread(&(self.train_min_gap_size), sizeof(int), 1, f)
- * self.precomputed_index = self.read_map(f)
- */
- fread((&__pyx_v_self->train_max_initial_size), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":224
- * fread(&(self.max_nonterminals), sizeof(int), 1, f)
- * fread(&(self.train_max_initial_size), sizeof(int), 1, f)
- * fread(&(self.train_min_gap_size), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * self.precomputed_index = self.read_map(f)
- * self.precomputed_collocations = self.read_map(f)
- */
- fread((&__pyx_v_self->train_min_gap_size), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":225
- * fread(&(self.train_max_initial_size), sizeof(int), 1, f)
- * fread(&(self.train_min_gap_size), sizeof(int), 1, f)
- * self.precomputed_index = self.read_map(f) # <<<<<<<<<<<<<<
- * self.precomputed_collocations = self.read_map(f)
- * fclose(f)
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_Precomputation *)__pyx_v_self->__pyx_vtab)->read_map(__pyx_v_self, __pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->precomputed_index);
- __Pyx_DECREF(__pyx_v_self->precomputed_index);
- __pyx_v_self->precomputed_index = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":226
- * fread(&(self.train_min_gap_size), sizeof(int), 1, f)
- * self.precomputed_index = self.read_map(f)
- * self.precomputed_collocations = self.read_map(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_Precomputation *)__pyx_v_self->__pyx_vtab)->read_map(__pyx_v_self, __pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->precomputed_collocations);
- __Pyx_DECREF(__pyx_v_self->precomputed_collocations);
- __pyx_v_self->precomputed_collocations = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":227
- * self.precomputed_index = self.read_map(f)
- * self.precomputed_collocations = self.read_map(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- *
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.Precomputation.read_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_14Precomputation_5write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_14Precomputation_5write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Precomputation.write_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_14Precomputation_4write_binary(((struct __pyx_obj_3_sa_Precomputation *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":230
- *
- *
- * def write_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "w")
- */
-
-static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":232
- * def write_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "w") # <<<<<<<<<<<<<<
- * fwrite(&(self.precompute_rank), sizeof(int), 1, f)
- * fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":233
- * cdef FILE* f
- * f = fopen(filename, "w")
- * fwrite(&(self.precompute_rank), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- * fwrite(&(self.max_length), sizeof(int), 1, f)
- */
- fwrite((&__pyx_v_self->precompute_rank), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":234
- * f = fopen(filename, "w")
- * fwrite(&(self.precompute_rank), sizeof(int), 1, f)
- * fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(&(self.max_length), sizeof(int), 1, f)
- * fwrite(&(self.max_nonterminals), sizeof(int), 1, f)
- */
- fwrite((&__pyx_v_self->precompute_secondary_rank), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":235
- * fwrite(&(self.precompute_rank), sizeof(int), 1, f)
- * fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- * fwrite(&(self.max_length), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(&(self.max_nonterminals), sizeof(int), 1, f)
- * fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)
- */
- fwrite((&__pyx_v_self->max_length), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":236
- * fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- * fwrite(&(self.max_length), sizeof(int), 1, f)
- * fwrite(&(self.max_nonterminals), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)
- * fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)
- */
- fwrite((&__pyx_v_self->max_nonterminals), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":237
- * fwrite(&(self.max_length), sizeof(int), 1, f)
- * fwrite(&(self.max_nonterminals), sizeof(int), 1, f)
- * fwrite(&(self.train_max_initial_size), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)
- * self.write_map(self.precomputed_index, f)
- */
- fwrite((&__pyx_v_self->train_max_initial_size), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":238
- * fwrite(&(self.max_nonterminals), sizeof(int), 1, f)
- * fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)
- * fwrite(&(self.train_min_gap_size), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * self.write_map(self.precomputed_index, f)
- * self.write_map(self.precomputed_collocations, f)
- */
- fwrite((&__pyx_v_self->train_min_gap_size), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":239
- * fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)
- * fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)
- * self.write_map(self.precomputed_index, f) # <<<<<<<<<<<<<<
- * self.write_map(self.precomputed_collocations, f)
- * fclose(f)
- */
- __pyx_t_1 = __pyx_v_self->precomputed_index;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_Precomputation *)__pyx_v_self->__pyx_vtab)->write_map(__pyx_v_self, __pyx_t_1, __pyx_v_f); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":240
- * fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)
- * self.write_map(self.precomputed_index, f)
- * self.write_map(self.precomputed_collocations, f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- __pyx_t_2 = __pyx_v_self->precomputed_collocations;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_Precomputation *)__pyx_v_self->__pyx_vtab)->write_map(__pyx_v_self, __pyx_t_2, __pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":241
- * self.write_map(self.precomputed_index, f)
- * self.write_map(self.precomputed_collocations, f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- *
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.Precomputation.write_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":244
- *
- *
- * cdef write_map(self, m, FILE* f): # <<<<<<<<<<<<<<
- * cdef int i, N
- * cdef IntList arr
- */
-
-static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, PyObject *__pyx_v_m, FILE *__pyx_v_f) {
- int __pyx_v_i;
- int __pyx_v_N;
- struct __pyx_obj_3_sa_IntList *__pyx_v_arr = 0;
- PyObject *__pyx_v_pattern = NULL;
- PyObject *__pyx_v_val = NULL;
- PyObject *__pyx_v_word_id = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_map", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":248
- * cdef IntList arr
- *
- * N = len(m) # <<<<<<<<<<<<<<
- * fwrite(&(N), sizeof(int), 1, f)
- * for pattern, val in m.iteritems():
- */
- __pyx_t_1 = PyObject_Length(__pyx_v_m); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_N = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":249
- *
- * N = len(m)
- * fwrite(&(N), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * for pattern, val in m.iteritems():
- * N = len(pattern)
- */
- fwrite((&__pyx_v_N), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":250
- * N = len(m)
- * fwrite(&(N), sizeof(int), 1, f)
- * for pattern, val in m.iteritems(): # <<<<<<<<<<<<<<
- * N = len(pattern)
- * fwrite(&(N), sizeof(int), 1, f)
- */
- __pyx_t_1 = 0;
- if (unlikely(__pyx_v_m == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_m, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_2);
- __pyx_t_2 = __pyx_t_5;
- __pyx_t_5 = 0;
- while (1) {
- __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_3, &__pyx_t_1, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
- if (unlikely(__pyx_t_7 == 0)) break;
- if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_v_pattern);
- __pyx_v_pattern = __pyx_t_5;
- __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_v_val);
- __pyx_v_val = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":251
- * fwrite(&(N), sizeof(int), 1, f)
- * for pattern, val in m.iteritems():
- * N = len(pattern) # <<<<<<<<<<<<<<
- * fwrite(&(N), sizeof(int), 1, f)
- * for word_id in pattern:
- */
- __pyx_t_8 = PyObject_Length(__pyx_v_pattern); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_N = __pyx_t_8;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":252
- * for pattern, val in m.iteritems():
- * N = len(pattern)
- * fwrite(&(N), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * for word_id in pattern:
- * i = word_id
- */
- fwrite((&__pyx_v_N), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":253
- * N = len(pattern)
- * fwrite(&(N), sizeof(int), 1, f)
- * for word_id in pattern: # <<<<<<<<<<<<<<
- * i = word_id
- * fwrite(&(i), sizeof(int), 1, f)
- */
- if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) {
- __pyx_t_6 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_6)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_6)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_5 = __pyx_t_9(__pyx_t_6);
- if (unlikely(!__pyx_t_5)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_5);
- }
- __Pyx_XDECREF(__pyx_v_word_id);
- __pyx_v_word_id = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":254
- * fwrite(&(N), sizeof(int), 1, f)
- * for word_id in pattern:
- * i = word_id # <<<<<<<<<<<<<<
- * fwrite(&(i), sizeof(int), 1, f)
- * arr = val
- */
- __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_v_word_id); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_i = __pyx_t_7;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":255
- * for word_id in pattern:
- * i = word_id
- * fwrite(&(i), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * arr = val
- * arr.write_handle(f)
- */
- fwrite((&__pyx_v_i), (sizeof(int)), 1, __pyx_v_f);
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":256
- * i = word_id
- * fwrite(&(i), sizeof(int), 1, f)
- * arr = val # <<<<<<<<<<<<<<
- * arr.write_handle(f)
- *
- */
- if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_INCREF(__pyx_v_val);
- __Pyx_XDECREF(((PyObject *)__pyx_v_arr));
- __pyx_v_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_v_val);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":257
- * fwrite(&(i), sizeof(int), 1, f)
- * arr = val
- * arr.write_handle(f) # <<<<<<<<<<<<<<
- *
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_arr->__pyx_vtab)->write_handle(__pyx_v_arr, __pyx_v_f);
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_sa.Precomputation.write_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_arr);
- __Pyx_XDECREF(__pyx_v_pattern);
- __Pyx_XDECREF(__pyx_v_val);
- __Pyx_XDECREF(__pyx_v_word_id);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":260
- *
- *
- * cdef read_map(self, FILE* f): # <<<<<<<<<<<<<<
- * cdef int i, j, k, word_id, N
- * cdef IntList arr
- */
-
-static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, FILE *__pyx_v_f) {
- int __pyx_v_i;
- CYTHON_UNUSED int __pyx_v_j;
- CYTHON_UNUSED int __pyx_v_k;
- int __pyx_v_word_id;
- int __pyx_v_N;
- struct __pyx_obj_3_sa_IntList *__pyx_v_arr = 0;
- PyObject *__pyx_v_m = NULL;
- PyObject *__pyx_v_key = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_map", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":264
- * cdef IntList arr
- *
- * m = {} # <<<<<<<<<<<<<<
- * fread(&(N), sizeof(int), 1, f)
- * for j from 0 <= j < N:
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_m = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":265
- *
- * m = {}
- * fread(&(N), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * for j from 0 <= j < N:
- * fread(&(i), sizeof(int), 1, f)
- */
- fread((&__pyx_v_N), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":266
- * m = {}
- * fread(&(N), sizeof(int), 1, f)
- * for j from 0 <= j < N: # <<<<<<<<<<<<<<
- * fread(&(i), sizeof(int), 1, f)
- * key = ()
- */
- __pyx_t_2 = __pyx_v_N;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":267
- * fread(&(N), sizeof(int), 1, f)
- * for j from 0 <= j < N:
- * fread(&(i), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * key = ()
- * for k from 0 <= k < i:
- */
- fread((&__pyx_v_i), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":268
- * for j from 0 <= j < N:
- * fread(&(i), sizeof(int), 1, f)
- * key = () # <<<<<<<<<<<<<<
- * for k from 0 <= k < i:
- * fread(&(word_id), sizeof(int), 1, f)
- */
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- __Pyx_XDECREF(((PyObject *)__pyx_v_key));
- __pyx_v_key = __pyx_empty_tuple;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":269
- * fread(&(i), sizeof(int), 1, f)
- * key = ()
- * for k from 0 <= k < i: # <<<<<<<<<<<<<<
- * fread(&(word_id), sizeof(int), 1, f)
- * key = key + (word_id,)
- */
- __pyx_t_3 = __pyx_v_i;
- for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_3; __pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":270
- * key = ()
- * for k from 0 <= k < i:
- * fread(&(word_id), sizeof(int), 1, f) # <<<<<<<<<<<<<<
- * key = key + (word_id,)
- * arr = IntList()
- */
- fread((&__pyx_v_word_id), (sizeof(int)), 1, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":271
- * for k from 0 <= k < i:
- * fread(&(word_id), sizeof(int), 1, f)
- * key = key + (word_id,) # <<<<<<<<<<<<<<
- * arr = IntList()
- * arr.read_handle(f)
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_word_id); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_key), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_key));
- __pyx_v_key = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":272
- * fread(&(word_id), sizeof(int), 1, f)
- * key = key + (word_id,)
- * arr = IntList() # <<<<<<<<<<<<<<
- * arr.read_handle(f)
- * m[key] = arr
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(((PyObject *)__pyx_v_arr));
- __pyx_v_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":273
- * key = key + (word_id,)
- * arr = IntList()
- * arr.read_handle(f) # <<<<<<<<<<<<<<
- * m[key] = arr
- * return m
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_arr->__pyx_vtab)->read_handle(__pyx_v_arr, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":274
- * arr = IntList()
- * arr.read_handle(f)
- * m[key] = arr # <<<<<<<<<<<<<<
- * return m
- *
- */
- if (PyDict_SetItem(((PyObject *)__pyx_v_m), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_arr)) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":275
- * arr.read_handle(f)
- * m[key] = arr
- * return m # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_m));
- __pyx_r = ((PyObject *)__pyx_v_m);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.Precomputation.read_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_arr);
- __Pyx_XDECREF(__pyx_v_m);
- __Pyx_XDECREF(__pyx_v_key);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_14Precomputation_7precompute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_14Precomputation_7precompute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_stats = 0;
- struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sarray = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("precompute (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__stats,&__pyx_n_s__sarray,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stats)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sarray)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("precompute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "precompute") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_stats = values[0];
- __pyx_v_sarray = ((struct __pyx_obj_3_sa_SuffixArray *)values[1]);
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("precompute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Precomputation.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sarray), __pyx_ptype_3_sa_SuffixArray, 1, "sarray", 0))) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_14Precomputation_6precompute(((struct __pyx_obj_3_sa_Precomputation *)__pyx_v_self), __pyx_v_stats, __pyx_v_sarray);
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":278
- *
- *
- * def precompute(self, stats, SuffixArray sarray): # <<<<<<<<<<<<<<
- * cdef int i, l, N, max_pattern_len, i1, l1, i2, l2, i3, l3, ptr1, ptr2, ptr3, is_super, sent_count, max_rank
- * cdef DataArray darray = sarray.darray
- */
-
-static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_sa_Precomputation *__pyx_v_self, PyObject *__pyx_v_stats, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sarray) {
- int __pyx_v_i;
- int __pyx_v_l;
- int __pyx_v_N;
- int __pyx_v_max_pattern_len;
- int __pyx_v_i1;
- int __pyx_v_l1;
- int __pyx_v_i2;
- int __pyx_v_l2;
- int __pyx_v_i3;
- int __pyx_v_l3;
- int __pyx_v_ptr1;
- int __pyx_v_ptr2;
- int __pyx_v_ptr3;
- int __pyx_v_is_super;
- int __pyx_v_sent_count;
- int __pyx_v_max_rank;
- struct __pyx_obj_3_sa_DataArray *__pyx_v_darray = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_data = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_queue = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_cost_by_rank = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_count_by_rank = 0;
- struct __pyx_obj_3_sa_TrieMap *__pyx_v_frequent_patterns = 0;
- struct __pyx_obj_3_sa_TrieMap *__pyx_v_super_frequent_patterns = 0;
- struct __pyx_obj_3_sa_TrieMap *__pyx_v_collocations = 0;
- struct __pyx_t_3_sa__Trie_Node *__pyx_v_node;
- PyObject *__pyx_v_I_set = NULL;
- PyObject *__pyx_v_J_set = NULL;
- PyObject *__pyx_v_J2_set = NULL;
- PyObject *__pyx_v_IJ_set = NULL;
- PyObject *__pyx_v_pattern_rank = NULL;
- float __pyx_v_start_time;
- PyObject *__pyx_v_rank = NULL;
- CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
- PyObject *__pyx_v_phrase = NULL;
- int __pyx_v_sa_word_id;
- PyObject *__pyx_v_x = NULL;
- PyObject *__pyx_v_pattern1 = NULL;
- PyObject *__pyx_v_pattern2 = NULL;
- PyObject *__pyx_v_combined_pattern = NULL;
- PyObject *__pyx_v_pattern = NULL;
- PyObject *__pyx_v_arr = NULL;
- PyObject *__pyx_v_s = NULL;
- PyObject *__pyx_v_word_id = NULL;
- PyObject *__pyx_v_chunk = NULL;
- PyObject *__pyx_v_arity = NULL;
- PyObject *__pyx_v_cumul_cost = NULL;
- PyObject *__pyx_v_cumul_count = NULL;
- PyObject *__pyx_v_num_found_patterns = NULL;
- float __pyx_v_stop_time;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- float __pyx_t_4;
- PyObject *(*__pyx_t_5)(PyObject *);
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- PyObject *(*__pyx_t_11)(PyObject *);
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
- int __pyx_t_17;
- int __pyx_t_18;
- int __pyx_t_19;
- int __pyx_t_20;
- PyObject *(*__pyx_t_21)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("precompute", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":280
- * def precompute(self, stats, SuffixArray sarray):
- * cdef int i, l, N, max_pattern_len, i1, l1, i2, l2, i3, l3, ptr1, ptr2, ptr3, is_super, sent_count, max_rank
- * cdef DataArray darray = sarray.darray # <<<<<<<<<<<<<<
- * cdef IntList data, queue, cost_by_rank, count_by_rank
- * cdef TrieMap frequent_patterns, super_frequent_patterns, collocations
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_sarray->darray);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_darray = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":285
- * cdef _Trie_Node* node
- *
- * data = darray.data # <<<<<<<<<<<<<<
- *
- * frequent_patterns = TrieMap(len(darray.id2word))
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_darray->data);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_v_data = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":287
- * data = darray.data
- *
- * frequent_patterns = TrieMap(len(darray.id2word)) # <<<<<<<<<<<<<<
- * super_frequent_patterns = TrieMap(len(darray.id2word))
- * collocations = TrieMap(len(darray.id2word))
- */
- __pyx_t_1 = __pyx_v_darray->id2word;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_TrieMap)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_frequent_patterns = ((struct __pyx_obj_3_sa_TrieMap *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":288
- *
- * frequent_patterns = TrieMap(len(darray.id2word))
- * super_frequent_patterns = TrieMap(len(darray.id2word)) # <<<<<<<<<<<<<<
- * collocations = TrieMap(len(darray.id2word))
- *
- */
- __pyx_t_1 = __pyx_v_darray->id2word;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_TrieMap)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_super_frequent_patterns = ((struct __pyx_obj_3_sa_TrieMap *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":289
- * frequent_patterns = TrieMap(len(darray.id2word))
- * super_frequent_patterns = TrieMap(len(darray.id2word))
- * collocations = TrieMap(len(darray.id2word)) # <<<<<<<<<<<<<<
- *
- * I_set = set()
- */
- __pyx_t_1 = __pyx_v_darray->id2word;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_TrieMap)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_collocations = ((struct __pyx_obj_3_sa_TrieMap *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":291
- * collocations = TrieMap(len(darray.id2word))
- *
- * I_set = set() # <<<<<<<<<<<<<<
- * J_set = set()
- * J2_set = set()
- */
- __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_I_set = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":292
- *
- * I_set = set()
- * J_set = set() # <<<<<<<<<<<<<<
- * J2_set = set()
- * IJ_set = set()
- */
- __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_J_set = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":293
- * I_set = set()
- * J_set = set()
- * J2_set = set() # <<<<<<<<<<<<<<
- * IJ_set = set()
- * pattern_rank = {}
- */
- __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_J2_set = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":294
- * J_set = set()
- * J2_set = set()
- * IJ_set = set() # <<<<<<<<<<<<<<
- * pattern_rank = {}
- *
- */
- __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_IJ_set = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":295
- * J2_set = set()
- * IJ_set = set()
- * pattern_rank = {} # <<<<<<<<<<<<<<
- *
- * logger.info("Precomputing frequent intersections")
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_v_pattern_rank = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":297
- * pattern_rank = {}
- *
- * logger.info("Precomputing frequent intersections") # <<<<<<<<<<<<<<
- * cdef float start_time = monitor_cpu()
- *
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_75), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":298
- *
- * logger.info("Precomputing frequent intersections")
- * cdef float start_time = monitor_cpu() # <<<<<<<<<<<<<<
- *
- * max_pattern_len = 0
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_start_time = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":300
- * cdef float start_time = monitor_cpu()
- *
- * max_pattern_len = 0 # <<<<<<<<<<<<<<
- * for rank, (_, _, phrase) in enumerate(stats):
- * if rank >= self.precompute_rank:
- */
- __pyx_v_max_pattern_len = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":301
- *
- * max_pattern_len = 0
- * for rank, (_, _, phrase) in enumerate(stats): # <<<<<<<<<<<<<<
- * if rank >= self.precompute_rank:
- * break
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_3 = __pyx_int_0;
- if (PyList_CheckExact(__pyx_v_stats) || PyTuple_CheckExact(__pyx_v_stats)) {
- __pyx_t_1 = __pyx_v_stats; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_stats); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_6 = __pyx_t_5(__pyx_t_1);
- if (unlikely(!__pyx_t_6)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_6);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
- PyObject* sequence = __pyx_t_6;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_7 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_8 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_9 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_9);
- #else
- __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- #endif
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_7 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_7);
- index = 1; __pyx_t_8 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_8);
- index = 2; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_9);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 3) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_11 = NULL;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L6_unpacking_done;
- __pyx_L5_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_11 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L6_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v__);
- __pyx_v__ = __pyx_t_7;
- __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_v__);
- __pyx_v__ = __pyx_t_8;
- __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_v_phrase);
- __pyx_v_phrase = __pyx_t_9;
- __pyx_t_9 = 0;
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_rank);
- __pyx_v_rank = __pyx_t_3;
- __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3);
- __pyx_t_3 = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":302
- * max_pattern_len = 0
- * for rank, (_, _, phrase) in enumerate(stats):
- * if rank >= self.precompute_rank: # <<<<<<<<<<<<<<
- * break
- * max_pattern_len = max(max_pattern_len, len(phrase))
- */
- __pyx_t_6 = PyInt_FromLong(__pyx_v_self->precompute_rank); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = PyObject_RichCompare(__pyx_v_rank, __pyx_t_6, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":303
- * for rank, (_, _, phrase) in enumerate(stats):
- * if rank >= self.precompute_rank:
- * break # <<<<<<<<<<<<<<
- * max_pattern_len = max(max_pattern_len, len(phrase))
- * frequent_patterns.insert(phrase)
- */
- goto __pyx_L4_break;
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":304
- * if rank >= self.precompute_rank:
- * break
- * max_pattern_len = max(max_pattern_len, len(phrase)) # <<<<<<<<<<<<<<
- * frequent_patterns.insert(phrase)
- * I_set.add(phrase)
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_14 = __pyx_v_max_pattern_len;
- if (((__pyx_t_13 > __pyx_t_14) != 0)) {
- __pyx_t_15 = __pyx_t_13;
- } else {
- __pyx_t_15 = __pyx_t_14;
- }
- __pyx_v_max_pattern_len = __pyx_t_15;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":305
- * break
- * max_pattern_len = max(max_pattern_len, len(phrase))
- * frequent_patterns.insert(phrase) # <<<<<<<<<<<<<<
- * I_set.add(phrase)
- * pattern_rank[phrase] = rank
- */
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_frequent_patterns), __pyx_n_s__insert); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_phrase);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_phrase);
- __Pyx_GIVEREF(__pyx_v_phrase);
- __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":306
- * max_pattern_len = max(max_pattern_len, len(phrase))
- * frequent_patterns.insert(phrase)
- * I_set.add(phrase) # <<<<<<<<<<<<<<
- * pattern_rank[phrase] = rank
- * if rank < self.precompute_secondary_rank:
- */
- __pyx_t_16 = PySet_Add(__pyx_v_I_set, __pyx_v_phrase); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":307
- * frequent_patterns.insert(phrase)
- * I_set.add(phrase)
- * pattern_rank[phrase] = rank # <<<<<<<<<<<<<<
- * if rank < self.precompute_secondary_rank:
- * super_frequent_patterns.insert(phrase)
- */
- if (PyDict_SetItem(((PyObject *)__pyx_v_pattern_rank), __pyx_v_phrase, __pyx_v_rank) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":308
- * I_set.add(phrase)
- * pattern_rank[phrase] = rank
- * if rank < self.precompute_secondary_rank: # <<<<<<<<<<<<<<
- * super_frequent_patterns.insert(phrase)
- * J_set.add(phrase)
- */
- __pyx_t_8 = PyInt_FromLong(__pyx_v_self->precompute_secondary_rank); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = PyObject_RichCompare(__pyx_v_rank, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":309
- * pattern_rank[phrase] = rank
- * if rank < self.precompute_secondary_rank:
- * super_frequent_patterns.insert(phrase) # <<<<<<<<<<<<<<
- * J_set.add(phrase)
- *
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_super_frequent_patterns), __pyx_n_s__insert); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_phrase);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_phrase);
- __Pyx_GIVEREF(__pyx_v_phrase);
- __pyx_t_9 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":310
- * if rank < self.precompute_secondary_rank:
- * super_frequent_patterns.insert(phrase)
- * J_set.add(phrase) # <<<<<<<<<<<<<<
- *
- * queue = IntList(increment=1000)
- */
- __pyx_t_16 = PySet_Add(__pyx_v_J_set, __pyx_v_phrase); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
- __pyx_L4_break:;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":312
- * J_set.add(phrase)
- *
- * queue = IntList(increment=1000) # <<<<<<<<<<<<<<
- *
- * logger.info(" Computing inverted indexes...")
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__increment), __pyx_int_1000) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_queue = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":314
- * queue = IntList(increment=1000)
- *
- * logger.info(" Computing inverted indexes...") # <<<<<<<<<<<<<<
- * N = len(data)
- * for i from 0 <= i < N:
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_77), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":315
- *
- * logger.info(" Computing inverted indexes...")
- * N = len(data) # <<<<<<<<<<<<<<
- * for i from 0 <= i < N:
- * sa_word_id = data.arr[i]
- */
- __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_data)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_N = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":316
- * logger.info(" Computing inverted indexes...")
- * N = len(data)
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * sa_word_id = data.arr[i]
- * if sa_word_id == 1:
- */
- __pyx_t_14 = __pyx_v_N;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_14; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":317
- * N = len(data)
- * for i from 0 <= i < N:
- * sa_word_id = data.arr[i] # <<<<<<<<<<<<<<
- * if sa_word_id == 1:
- * queue._append(-1)
- */
- __pyx_v_sa_word_id = (__pyx_v_data->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":318
- * for i from 0 <= i < N:
- * sa_word_id = data.arr[i]
- * if sa_word_id == 1: # <<<<<<<<<<<<<<
- * queue._append(-1)
- * else:
- */
- __pyx_t_12 = ((__pyx_v_sa_word_id == 1) != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":319
- * sa_word_id = data.arr[i]
- * if sa_word_id == 1:
- * queue._append(-1) # <<<<<<<<<<<<<<
- * else:
- * for l from 1 <= l <= max_pattern_len:
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_queue->__pyx_vtab)->_append(__pyx_v_queue, -1);
- goto __pyx_L11;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":321
- * queue._append(-1)
- * else:
- * for l from 1 <= l <= max_pattern_len: # <<<<<<<<<<<<<<
- * node = frequent_patterns._contains(data.arr+i, l)
- * if node == NULL:
- */
- __pyx_t_17 = __pyx_v_max_pattern_len;
- for (__pyx_v_l = 1; __pyx_v_l <= __pyx_t_17; __pyx_v_l++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":322
- * else:
- * for l from 1 <= l <= max_pattern_len:
- * node = frequent_patterns._contains(data.arr+i, l) # <<<<<<<<<<<<<<
- * if node == NULL:
- * break
- */
- __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i), __pyx_v_l);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":323
- * for l from 1 <= l <= max_pattern_len:
- * node = frequent_patterns._contains(data.arr+i, l)
- * if node == NULL: # <<<<<<<<<<<<<<
- * break
- * queue._append(i)
- */
- __pyx_t_12 = ((__pyx_v_node == NULL) != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":324
- * node = frequent_patterns._contains(data.arr+i, l)
- * if node == NULL:
- * break # <<<<<<<<<<<<<<
- * queue._append(i)
- * queue._append(l)
- */
- goto __pyx_L13_break;
- goto __pyx_L14;
- }
- __pyx_L14:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":325
- * if node == NULL:
- * break
- * queue._append(i) # <<<<<<<<<<<<<<
- * queue._append(l)
- * trie_node_data_append(node, i)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_queue->__pyx_vtab)->_append(__pyx_v_queue, __pyx_v_i);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":326
- * break
- * queue._append(i)
- * queue._append(l) # <<<<<<<<<<<<<<
- * trie_node_data_append(node, i)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_queue->__pyx_vtab)->_append(__pyx_v_queue, __pyx_v_l);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":327
- * queue._append(i)
- * queue._append(l)
- * trie_node_data_append(node, i) # <<<<<<<<<<<<<<
- *
- * logger.info(" Computing collocations...")
- */
- __pyx_t_1 = __pyx_f_3_sa_trie_node_data_append(__pyx_v_node, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __pyx_L13_break:;
- }
- __pyx_L11:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":329
- * trie_node_data_append(node, i)
- *
- * logger.info(" Computing collocations...") # <<<<<<<<<<<<<<
- * N = len(queue)
- * ptr1 = 0
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_79), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":330
- *
- * logger.info(" Computing collocations...")
- * N = len(queue) # <<<<<<<<<<<<<<
- * ptr1 = 0
- * sent_count = 0
- */
- __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_queue)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_N = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":331
- * logger.info(" Computing collocations...")
- * N = len(queue)
- * ptr1 = 0 # <<<<<<<<<<<<<<
- * sent_count = 0
- * while ptr1 < N: # main loop
- */
- __pyx_v_ptr1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":332
- * N = len(queue)
- * ptr1 = 0
- * sent_count = 0 # <<<<<<<<<<<<<<
- * while ptr1 < N: # main loop
- * i1 = queue.arr[ptr1]
- */
- __pyx_v_sent_count = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":333
- * ptr1 = 0
- * sent_count = 0
- * while ptr1 < N: # main loop # <<<<<<<<<<<<<<
- * i1 = queue.arr[ptr1]
- * if i1 > -1:
- */
- while (1) {
- __pyx_t_12 = ((__pyx_v_ptr1 < __pyx_v_N) != 0);
- if (!__pyx_t_12) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":334
- * sent_count = 0
- * while ptr1 < N: # main loop
- * i1 = queue.arr[ptr1] # <<<<<<<<<<<<<<
- * if i1 > -1:
- * l1 = queue.arr[ptr1+1]
- */
- __pyx_v_i1 = (__pyx_v_queue->arr[__pyx_v_ptr1]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":335
- * while ptr1 < N: # main loop
- * i1 = queue.arr[ptr1]
- * if i1 > -1: # <<<<<<<<<<<<<<
- * l1 = queue.arr[ptr1+1]
- * ptr2 = ptr1 + 2
- */
- __pyx_t_12 = ((__pyx_v_i1 > -1) != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":336
- * i1 = queue.arr[ptr1]
- * if i1 > -1:
- * l1 = queue.arr[ptr1+1] # <<<<<<<<<<<<<<
- * ptr2 = ptr1 + 2
- * while ptr2 < N:
- */
- __pyx_v_l1 = (__pyx_v_queue->arr[(__pyx_v_ptr1 + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":337
- * if i1 > -1:
- * l1 = queue.arr[ptr1+1]
- * ptr2 = ptr1 + 2 # <<<<<<<<<<<<<<
- * while ptr2 < N:
- * i2 = queue.arr[ptr2]
- */
- __pyx_v_ptr2 = (__pyx_v_ptr1 + 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":338
- * l1 = queue.arr[ptr1+1]
- * ptr2 = ptr1 + 2
- * while ptr2 < N: # <<<<<<<<<<<<<<
- * i2 = queue.arr[ptr2]
- * if i2 == -1 or i2 - i1 >= self.train_max_initial_size:
- */
- while (1) {
- __pyx_t_12 = ((__pyx_v_ptr2 < __pyx_v_N) != 0);
- if (!__pyx_t_12) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":339
- * ptr2 = ptr1 + 2
- * while ptr2 < N:
- * i2 = queue.arr[ptr2] # <<<<<<<<<<<<<<
- * if i2 == -1 or i2 - i1 >= self.train_max_initial_size:
- * break
- */
- __pyx_v_i2 = (__pyx_v_queue->arr[__pyx_v_ptr2]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":340
- * while ptr2 < N:
- * i2 = queue.arr[ptr2]
- * if i2 == -1 or i2 - i1 >= self.train_max_initial_size: # <<<<<<<<<<<<<<
- * break
- * l2 = queue.arr[ptr2+1]
- */
- __pyx_t_12 = ((__pyx_v_i2 == -1) != 0);
- if (!__pyx_t_12) {
- __pyx_t_18 = (((__pyx_v_i2 - __pyx_v_i1) >= __pyx_v_self->train_max_initial_size) != 0);
- __pyx_t_19 = __pyx_t_18;
- } else {
- __pyx_t_19 = __pyx_t_12;
- }
- if (__pyx_t_19) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":341
- * i2 = queue.arr[ptr2]
- * if i2 == -1 or i2 - i1 >= self.train_max_initial_size:
- * break # <<<<<<<<<<<<<<
- * l2 = queue.arr[ptr2+1]
- * if (i2 - i1 - l1 >= self.train_min_gap_size and
- */
- goto __pyx_L19_break;
- goto __pyx_L20;
- }
- __pyx_L20:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":342
- * if i2 == -1 or i2 - i1 >= self.train_max_initial_size:
- * break
- * l2 = queue.arr[ptr2+1] # <<<<<<<<<<<<<<
- * if (i2 - i1 - l1 >= self.train_min_gap_size and
- * i2 + l2 - i1 <= self.train_max_initial_size and
- */
- __pyx_v_l2 = (__pyx_v_queue->arr[(__pyx_v_ptr2 + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":343
- * break
- * l2 = queue.arr[ptr2+1]
- * if (i2 - i1 - l1 >= self.train_min_gap_size and # <<<<<<<<<<<<<<
- * i2 + l2 - i1 <= self.train_max_initial_size and
- * l1+l2+1 <= self.max_length):
- */
- __pyx_t_19 = ((((__pyx_v_i2 - __pyx_v_i1) - __pyx_v_l1) >= __pyx_v_self->train_min_gap_size) != 0);
- if (__pyx_t_19) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":344
- * l2 = queue.arr[ptr2+1]
- * if (i2 - i1 - l1 >= self.train_min_gap_size and
- * i2 + l2 - i1 <= self.train_max_initial_size and # <<<<<<<<<<<<<<
- * l1+l2+1 <= self.max_length):
- * node = collocations._insert(data.arr+i1, l1)
- */
- __pyx_t_12 = ((((__pyx_v_i2 + __pyx_v_l2) - __pyx_v_i1) <= __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":345
- * if (i2 - i1 - l1 >= self.train_min_gap_size and
- * i2 + l2 - i1 <= self.train_max_initial_size and
- * l1+l2+1 <= self.max_length): # <<<<<<<<<<<<<<
- * node = collocations._insert(data.arr+i1, l1)
- * node = trie_insert(node, -1)
- */
- __pyx_t_18 = ((((__pyx_v_l1 + __pyx_v_l2) + 1) <= __pyx_v_self->max_length) != 0);
- __pyx_t_20 = __pyx_t_18;
- } else {
- __pyx_t_20 = __pyx_t_12;
- }
- __pyx_t_12 = __pyx_t_20;
- } else {
- __pyx_t_12 = __pyx_t_19;
- }
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":346
- * i2 + l2 - i1 <= self.train_max_initial_size and
- * l1+l2+1 <= self.max_length):
- * node = collocations._insert(data.arr+i1, l1) # <<<<<<<<<<<<<<
- * node = trie_insert(node, -1)
- * for i from i2 <= i < i2+l2:
- */
- __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_collocations->__pyx_vtab)->_insert(__pyx_v_collocations, (__pyx_v_data->arr + __pyx_v_i1), __pyx_v_l1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":347
- * l1+l2+1 <= self.max_length):
- * node = collocations._insert(data.arr+i1, l1)
- * node = trie_insert(node, -1) # <<<<<<<<<<<<<<
- * for i from i2 <= i < i2+l2:
- * node = trie_insert(node, data.arr[i])
- */
- __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, -1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":348
- * node = collocations._insert(data.arr+i1, l1)
- * node = trie_insert(node, -1)
- * for i from i2 <= i < i2+l2: # <<<<<<<<<<<<<<
- * node = trie_insert(node, data.arr[i])
- * trie_node_data_append(node, i1)
- */
- __pyx_t_14 = (__pyx_v_i2 + __pyx_v_l2);
- for (__pyx_v_i = __pyx_v_i2; __pyx_v_i < __pyx_t_14; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":349
- * node = trie_insert(node, -1)
- * for i from i2 <= i < i2+l2:
- * node = trie_insert(node, data.arr[i]) # <<<<<<<<<<<<<<
- * trie_node_data_append(node, i1)
- * trie_node_data_append(node, i2)
- */
- __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_data->arr[__pyx_v_i]));
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":350
- * for i from i2 <= i < i2+l2:
- * node = trie_insert(node, data.arr[i])
- * trie_node_data_append(node, i1) # <<<<<<<<<<<<<<
- * trie_node_data_append(node, i2)
- * if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:
- */
- __pyx_t_1 = __pyx_f_3_sa_trie_node_data_append(__pyx_v_node, __pyx_v_i1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":351
- * node = trie_insert(node, data.arr[i])
- * trie_node_data_append(node, i1)
- * trie_node_data_append(node, i2) # <<<<<<<<<<<<<<
- * if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:
- * if super_frequent_patterns._contains(data.arr+i1, l1) != NULL:
- */
- __pyx_t_1 = __pyx_f_3_sa_trie_node_data_append(__pyx_v_node, __pyx_v_i2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":352
- * trie_node_data_append(node, i1)
- * trie_node_data_append(node, i2)
- * if super_frequent_patterns._contains(data.arr+i2, l2) != NULL: # <<<<<<<<<<<<<<
- * if super_frequent_patterns._contains(data.arr+i1, l1) != NULL:
- * is_super = 1
- */
- __pyx_t_12 = ((((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i2), __pyx_v_l2) != NULL) != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":353
- * trie_node_data_append(node, i2)
- * if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:
- * if super_frequent_patterns._contains(data.arr+i1, l1) != NULL: # <<<<<<<<<<<<<<
- * is_super = 1
- * else:
- */
- __pyx_t_12 = ((((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i1), __pyx_v_l1) != NULL) != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":354
- * if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:
- * if super_frequent_patterns._contains(data.arr+i1, l1) != NULL:
- * is_super = 1 # <<<<<<<<<<<<<<
- * else:
- * is_super = 0
- */
- __pyx_v_is_super = 1;
- goto __pyx_L25;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":356
- * is_super = 1
- * else:
- * is_super = 0 # <<<<<<<<<<<<<<
- * ptr3 = ptr2 + 2
- * while ptr3 < N:
- */
- __pyx_v_is_super = 0;
- }
- __pyx_L25:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":357
- * else:
- * is_super = 0
- * ptr3 = ptr2 + 2 # <<<<<<<<<<<<<<
- * while ptr3 < N:
- * i3 = queue.arr[ptr3]
- */
- __pyx_v_ptr3 = (__pyx_v_ptr2 + 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":358
- * is_super = 0
- * ptr3 = ptr2 + 2
- * while ptr3 < N: # <<<<<<<<<<<<<<
- * i3 = queue.arr[ptr3]
- * if i3 == -1 or i3 - i1 >= self.train_max_initial_size:
- */
- while (1) {
- __pyx_t_12 = ((__pyx_v_ptr3 < __pyx_v_N) != 0);
- if (!__pyx_t_12) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":359
- * ptr3 = ptr2 + 2
- * while ptr3 < N:
- * i3 = queue.arr[ptr3] # <<<<<<<<<<<<<<
- * if i3 == -1 or i3 - i1 >= self.train_max_initial_size:
- * break
- */
- __pyx_v_i3 = (__pyx_v_queue->arr[__pyx_v_ptr3]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":360
- * while ptr3 < N:
- * i3 = queue.arr[ptr3]
- * if i3 == -1 or i3 - i1 >= self.train_max_initial_size: # <<<<<<<<<<<<<<
- * break
- * l3 = queue.arr[ptr3+1]
- */
- __pyx_t_12 = ((__pyx_v_i3 == -1) != 0);
- if (!__pyx_t_12) {
- __pyx_t_19 = (((__pyx_v_i3 - __pyx_v_i1) >= __pyx_v_self->train_max_initial_size) != 0);
- __pyx_t_20 = __pyx_t_19;
- } else {
- __pyx_t_20 = __pyx_t_12;
- }
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":361
- * i3 = queue.arr[ptr3]
- * if i3 == -1 or i3 - i1 >= self.train_max_initial_size:
- * break # <<<<<<<<<<<<<<
- * l3 = queue.arr[ptr3+1]
- * if (i3 - i2 - l2 >= self.train_min_gap_size and
- */
- goto __pyx_L27_break;
- goto __pyx_L28;
- }
- __pyx_L28:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":362
- * if i3 == -1 or i3 - i1 >= self.train_max_initial_size:
- * break
- * l3 = queue.arr[ptr3+1] # <<<<<<<<<<<<<<
- * if (i3 - i2 - l2 >= self.train_min_gap_size and
- * i3 + l3 - i1 <= self.train_max_initial_size and
- */
- __pyx_v_l3 = (__pyx_v_queue->arr[(__pyx_v_ptr3 + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":363
- * break
- * l3 = queue.arr[ptr3+1]
- * if (i3 - i2 - l2 >= self.train_min_gap_size and # <<<<<<<<<<<<<<
- * i3 + l3 - i1 <= self.train_max_initial_size and
- * l1+l2+l3+2 <= self.max_length):
- */
- __pyx_t_20 = ((((__pyx_v_i3 - __pyx_v_i2) - __pyx_v_l2) >= __pyx_v_self->train_min_gap_size) != 0);
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":364
- * l3 = queue.arr[ptr3+1]
- * if (i3 - i2 - l2 >= self.train_min_gap_size and
- * i3 + l3 - i1 <= self.train_max_initial_size and # <<<<<<<<<<<<<<
- * l1+l2+l3+2 <= self.max_length):
- * if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:
- */
- __pyx_t_12 = ((((__pyx_v_i3 + __pyx_v_l3) - __pyx_v_i1) <= __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":365
- * if (i3 - i2 - l2 >= self.train_min_gap_size and
- * i3 + l3 - i1 <= self.train_max_initial_size and
- * l1+l2+l3+2 <= self.max_length): # <<<<<<<<<<<<<<
- * if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:
- * node = collocations._insert(data.arr+i1, l1)
- */
- __pyx_t_19 = (((((__pyx_v_l1 + __pyx_v_l2) + __pyx_v_l3) + 2) <= __pyx_v_self->max_length) != 0);
- __pyx_t_18 = __pyx_t_19;
- } else {
- __pyx_t_18 = __pyx_t_12;
- }
- __pyx_t_12 = __pyx_t_18;
- } else {
- __pyx_t_12 = __pyx_t_20;
- }
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":366
- * i3 + l3 - i1 <= self.train_max_initial_size and
- * l1+l2+l3+2 <= self.max_length):
- * if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL: # <<<<<<<<<<<<<<
- * node = collocations._insert(data.arr+i1, l1)
- * node = trie_insert(node, -1)
- */
- if (!(__pyx_v_is_super != 0)) {
- __pyx_t_12 = (((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i3), __pyx_v_l3) != NULL);
- __pyx_t_20 = __pyx_t_12;
- } else {
- __pyx_t_20 = (__pyx_v_is_super != 0);
- }
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":367
- * l1+l2+l3+2 <= self.max_length):
- * if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:
- * node = collocations._insert(data.arr+i1, l1) # <<<<<<<<<<<<<<
- * node = trie_insert(node, -1)
- * for i from i2 <= i < i2+l2:
- */
- __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_collocations->__pyx_vtab)->_insert(__pyx_v_collocations, (__pyx_v_data->arr + __pyx_v_i1), __pyx_v_l1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":368
- * if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:
- * node = collocations._insert(data.arr+i1, l1)
- * node = trie_insert(node, -1) # <<<<<<<<<<<<<<
- * for i from i2 <= i < i2+l2:
- * node = trie_insert(node, data.arr[i])
- */
- __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, -1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":369
- * node = collocations._insert(data.arr+i1, l1)
- * node = trie_insert(node, -1)
- * for i from i2 <= i < i2+l2: # <<<<<<<<<<<<<<
- * node = trie_insert(node, data.arr[i])
- * node = trie_insert(node, -1)
- */
- __pyx_t_14 = (__pyx_v_i2 + __pyx_v_l2);
- for (__pyx_v_i = __pyx_v_i2; __pyx_v_i < __pyx_t_14; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":370
- * node = trie_insert(node, -1)
- * for i from i2 <= i < i2+l2:
- * node = trie_insert(node, data.arr[i]) # <<<<<<<<<<<<<<
- * node = trie_insert(node, -1)
- * for i from i3 <= i < i3+l3:
- */
- __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_data->arr[__pyx_v_i]));
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":371
- * for i from i2 <= i < i2+l2:
- * node = trie_insert(node, data.arr[i])
- * node = trie_insert(node, -1) # <<<<<<<<<<<<<<
- * for i from i3 <= i < i3+l3:
- * node = trie_insert(node, data.arr[i])
- */
- __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, -1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":372
- * node = trie_insert(node, data.arr[i])
- * node = trie_insert(node, -1)
- * for i from i3 <= i < i3+l3: # <<<<<<<<<<<<<<
- * node = trie_insert(node, data.arr[i])
- * trie_node_data_append(node, i1)
- */
- __pyx_t_14 = (__pyx_v_i3 + __pyx_v_l3);
- for (__pyx_v_i = __pyx_v_i3; __pyx_v_i < __pyx_t_14; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":373
- * node = trie_insert(node, -1)
- * for i from i3 <= i < i3+l3:
- * node = trie_insert(node, data.arr[i]) # <<<<<<<<<<<<<<
- * trie_node_data_append(node, i1)
- * trie_node_data_append(node, i2)
- */
- __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_data->arr[__pyx_v_i]));
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":374
- * for i from i3 <= i < i3+l3:
- * node = trie_insert(node, data.arr[i])
- * trie_node_data_append(node, i1) # <<<<<<<<<<<<<<
- * trie_node_data_append(node, i2)
- * trie_node_data_append(node, i3)
- */
- __pyx_t_1 = __pyx_f_3_sa_trie_node_data_append(__pyx_v_node, __pyx_v_i1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":375
- * node = trie_insert(node, data.arr[i])
- * trie_node_data_append(node, i1)
- * trie_node_data_append(node, i2) # <<<<<<<<<<<<<<
- * trie_node_data_append(node, i3)
- * ptr3 = ptr3 + 2
- */
- __pyx_t_1 = __pyx_f_3_sa_trie_node_data_append(__pyx_v_node, __pyx_v_i2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":376
- * trie_node_data_append(node, i1)
- * trie_node_data_append(node, i2)
- * trie_node_data_append(node, i3) # <<<<<<<<<<<<<<
- * ptr3 = ptr3 + 2
- * ptr2 = ptr2 + 2
- */
- __pyx_t_1 = __pyx_f_3_sa_trie_node_data_append(__pyx_v_node, __pyx_v_i3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L30;
- }
- __pyx_L30:;
- goto __pyx_L29;
- }
- __pyx_L29:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":377
- * trie_node_data_append(node, i2)
- * trie_node_data_append(node, i3)
- * ptr3 = ptr3 + 2 # <<<<<<<<<<<<<<
- * ptr2 = ptr2 + 2
- * ptr1 = ptr1 + 2
- */
- __pyx_v_ptr3 = (__pyx_v_ptr3 + 2);
- }
- __pyx_L27_break:;
- goto __pyx_L24;
- }
- __pyx_L24:;
- goto __pyx_L21;
- }
- __pyx_L21:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":378
- * trie_node_data_append(node, i3)
- * ptr3 = ptr3 + 2
- * ptr2 = ptr2 + 2 # <<<<<<<<<<<<<<
- * ptr1 = ptr1 + 2
- * else:
- */
- __pyx_v_ptr2 = (__pyx_v_ptr2 + 2);
- }
- __pyx_L19_break:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":379
- * ptr3 = ptr3 + 2
- * ptr2 = ptr2 + 2
- * ptr1 = ptr1 + 2 # <<<<<<<<<<<<<<
- * else:
- * sent_count = sent_count + 1
- */
- __pyx_v_ptr1 = (__pyx_v_ptr1 + 2);
- goto __pyx_L17;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":381
- * ptr1 = ptr1 + 2
- * else:
- * sent_count = sent_count + 1 # <<<<<<<<<<<<<<
- * if sent_count % 10000 == 0:
- * logger.debug(" %d sentences", sent_count)
- */
- __pyx_v_sent_count = (__pyx_v_sent_count + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":382
- * else:
- * sent_count = sent_count + 1
- * if sent_count % 10000 == 0: # <<<<<<<<<<<<<<
- * logger.debug(" %d sentences", sent_count)
- * ptr1 = ptr1 + 1
- */
- __pyx_t_20 = ((__Pyx_mod_long(__pyx_v_sent_count, 10000) == 0) != 0);
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":383
- * sent_count = sent_count + 1
- * if sent_count % 10000 == 0:
- * logger.debug(" %d sentences", sent_count) # <<<<<<<<<<<<<<
- * ptr1 = ptr1 + 1
- *
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong(__pyx_v_sent_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_80));
- PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_80));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_80));
- PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L35;
- }
- __pyx_L35:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":384
- * if sent_count % 10000 == 0:
- * logger.debug(" %d sentences", sent_count)
- * ptr1 = ptr1 + 1 # <<<<<<<<<<<<<<
- *
- * self.precomputed_collocations = collocations.toMap(False)
- */
- __pyx_v_ptr1 = (__pyx_v_ptr1 + 1);
- }
- __pyx_L17:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":386
- * ptr1 = ptr1 + 1
- *
- * self.precomputed_collocations = collocations.toMap(False) # <<<<<<<<<<<<<<
- * self.precomputed_index = frequent_patterns.toMap(True)
- *
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_collocations), __pyx_n_s__toMap); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_GIVEREF(__pyx_t_9);
- __Pyx_GOTREF(__pyx_v_self->precomputed_collocations);
- __Pyx_DECREF(__pyx_v_self->precomputed_collocations);
- __pyx_v_self->precomputed_collocations = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":387
- *
- * self.precomputed_collocations = collocations.toMap(False)
- * self.precomputed_index = frequent_patterns.toMap(True) # <<<<<<<<<<<<<<
- *
- * x = 0
- */
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_frequent_patterns), __pyx_n_s__toMap); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->precomputed_index);
- __Pyx_DECREF(__pyx_v_self->precomputed_index);
- __pyx_v_self->precomputed_index = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":389
- * self.precomputed_index = frequent_patterns.toMap(True)
- *
- * x = 0 # <<<<<<<<<<<<<<
- * for pattern1 in J_set:
- * for pattern2 in J_set:
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_x = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":390
- *
- * x = 0
- * for pattern1 in J_set: # <<<<<<<<<<<<<<
- * for pattern2 in J_set:
- * if len(pattern1) + len(pattern2) + 1 < self.max_length:
- */
- __pyx_t_3 = PyObject_GetIter(((PyObject *)__pyx_v_J_set)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- for (;;) {
- {
- __pyx_t_1 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_pattern1);
- __pyx_v_pattern1 = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":391
- * x = 0
- * for pattern1 in J_set:
- * for pattern2 in J_set: # <<<<<<<<<<<<<<
- * if len(pattern1) + len(pattern2) + 1 < self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2
- */
- __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_J_set)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_21 = Py_TYPE(__pyx_t_1)->tp_iternext;
- for (;;) {
- {
- __pyx_t_9 = __pyx_t_21(__pyx_t_1);
- if (unlikely(!__pyx_t_9)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_9);
- }
- __Pyx_XDECREF(__pyx_v_pattern2);
- __pyx_v_pattern2 = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":392
- * for pattern1 in J_set:
- * for pattern2 in J_set:
- * if len(pattern1) + len(pattern2) + 1 < self.max_length: # <<<<<<<<<<<<<<
- * combined_pattern = pattern1 + (-1,) + pattern2
- * J2_set.add(combined_pattern)
- */
- __pyx_t_2 = PyObject_Length(__pyx_v_pattern1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_15 = PyObject_Length(__pyx_v_pattern2); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = ((((__pyx_t_2 + __pyx_t_15) + 1) < __pyx_v_self->max_length) != 0);
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":393
- * for pattern2 in J_set:
- * if len(pattern1) + len(pattern2) + 1 < self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2 # <<<<<<<<<<<<<<
- * J2_set.add(combined_pattern)
- *
- */
- __pyx_t_9 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_81)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_v_pattern2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_v_combined_pattern);
- __pyx_v_combined_pattern = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":394
- * if len(pattern1) + len(pattern2) + 1 < self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2
- * J2_set.add(combined_pattern) # <<<<<<<<<<<<<<
- *
- * for pattern1 in I_set:
- */
- __pyx_t_16 = PySet_Add(__pyx_v_J2_set, __pyx_v_combined_pattern); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L40;
- }
- __pyx_L40:;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":396
- * J2_set.add(combined_pattern)
- *
- * for pattern1 in I_set: # <<<<<<<<<<<<<<
- * for pattern2 in I_set:
- * x = x+1
- */
- __pyx_t_3 = PyObject_GetIter(((PyObject *)__pyx_v_I_set)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- for (;;) {
- {
- __pyx_t_1 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_pattern1);
- __pyx_v_pattern1 = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":397
- *
- * for pattern1 in I_set:
- * for pattern2 in I_set: # <<<<<<<<<<<<<<
- * x = x+1
- * if len(pattern1) + len(pattern2) + 1 <= self.max_length:
- */
- __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_I_set)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_21 = Py_TYPE(__pyx_t_1)->tp_iternext;
- for (;;) {
- {
- __pyx_t_8 = __pyx_t_21(__pyx_t_1);
- if (unlikely(!__pyx_t_8)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- __Pyx_XDECREF(__pyx_v_pattern2);
- __pyx_v_pattern2 = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":398
- * for pattern1 in I_set:
- * for pattern2 in I_set:
- * x = x+1 # <<<<<<<<<<<<<<
- * if len(pattern1) + len(pattern2) + 1 <= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2
- */
- __pyx_t_8 = PyNumber_Add(__pyx_v_x, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_v_x);
- __pyx_v_x = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":399
- * for pattern2 in I_set:
- * x = x+1
- * if len(pattern1) + len(pattern2) + 1 <= self.max_length: # <<<<<<<<<<<<<<
- * combined_pattern = pattern1 + (-1,) + pattern2
- * IJ_set.add(combined_pattern)
- */
- __pyx_t_15 = PyObject_Length(__pyx_v_pattern1); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyObject_Length(__pyx_v_pattern2); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = ((((__pyx_t_15 + __pyx_t_2) + 1) <= __pyx_v_self->max_length) != 0);
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":400
- * x = x+1
- * if len(pattern1) + len(pattern2) + 1 <= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2 # <<<<<<<<<<<<<<
- * IJ_set.add(combined_pattern)
- *
- */
- __pyx_t_8 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_82)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = PyNumber_Add(__pyx_t_8, __pyx_v_pattern2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_v_combined_pattern);
- __pyx_v_combined_pattern = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":401
- * if len(pattern1) + len(pattern2) + 1 <= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2
- * IJ_set.add(combined_pattern) # <<<<<<<<<<<<<<
- *
- * for pattern1 in I_set:
- */
- __pyx_t_16 = PySet_Add(__pyx_v_IJ_set, __pyx_v_combined_pattern); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L45;
- }
- __pyx_L45:;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":403
- * IJ_set.add(combined_pattern)
- *
- * for pattern1 in I_set: # <<<<<<<<<<<<<<
- * for pattern2 in J2_set:
- * x = x+2
- */
- __pyx_t_3 = PyObject_GetIter(((PyObject *)__pyx_v_I_set)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- for (;;) {
- {
- __pyx_t_1 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_pattern1);
- __pyx_v_pattern1 = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":404
- *
- * for pattern1 in I_set:
- * for pattern2 in J2_set: # <<<<<<<<<<<<<<
- * x = x+2
- * if len(pattern1) + len(pattern2) + 1<= self.max_length:
- */
- __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_J2_set)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_21 = Py_TYPE(__pyx_t_1)->tp_iternext;
- for (;;) {
- {
- __pyx_t_9 = __pyx_t_21(__pyx_t_1);
- if (unlikely(!__pyx_t_9)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_9);
- }
- __Pyx_XDECREF(__pyx_v_pattern2);
- __pyx_v_pattern2 = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":405
- * for pattern1 in I_set:
- * for pattern2 in J2_set:
- * x = x+2 # <<<<<<<<<<<<<<
- * if len(pattern1) + len(pattern2) + 1<= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2
- */
- __pyx_t_9 = PyNumber_Add(__pyx_v_x, __pyx_int_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_v_x);
- __pyx_v_x = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":406
- * for pattern2 in J2_set:
- * x = x+2
- * if len(pattern1) + len(pattern2) + 1<= self.max_length: # <<<<<<<<<<<<<<
- * combined_pattern = pattern1 + (-1,) + pattern2
- * IJ_set.add(combined_pattern)
- */
- __pyx_t_2 = PyObject_Length(__pyx_v_pattern1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_15 = PyObject_Length(__pyx_v_pattern2); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = ((((__pyx_t_2 + __pyx_t_15) + 1) <= __pyx_v_self->max_length) != 0);
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":407
- * x = x+2
- * if len(pattern1) + len(pattern2) + 1<= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2 # <<<<<<<<<<<<<<
- * IJ_set.add(combined_pattern)
- * combined_pattern = pattern2 + (-1,) + pattern1
- */
- __pyx_t_9 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_83)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_v_pattern2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_v_combined_pattern);
- __pyx_v_combined_pattern = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":408
- * if len(pattern1) + len(pattern2) + 1<= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2
- * IJ_set.add(combined_pattern) # <<<<<<<<<<<<<<
- * combined_pattern = pattern2 + (-1,) + pattern1
- * IJ_set.add(combined_pattern)
- */
- __pyx_t_16 = PySet_Add(__pyx_v_IJ_set, __pyx_v_combined_pattern); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":409
- * combined_pattern = pattern1 + (-1,) + pattern2
- * IJ_set.add(combined_pattern)
- * combined_pattern = pattern2 + (-1,) + pattern1 # <<<<<<<<<<<<<<
- * IJ_set.add(combined_pattern)
- *
- */
- __pyx_t_8 = PyNumber_Add(__pyx_v_pattern2, ((PyObject *)__pyx_k_tuple_84)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = PyNumber_Add(__pyx_t_8, __pyx_v_pattern1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_v_combined_pattern);
- __pyx_v_combined_pattern = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":410
- * IJ_set.add(combined_pattern)
- * combined_pattern = pattern2 + (-1,) + pattern1
- * IJ_set.add(combined_pattern) # <<<<<<<<<<<<<<
- *
- * N = len(pattern_rank)
- */
- __pyx_t_16 = PySet_Add(__pyx_v_IJ_set, __pyx_v_combined_pattern); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L50;
- }
- __pyx_L50:;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":412
- * IJ_set.add(combined_pattern)
- *
- * N = len(pattern_rank) # <<<<<<<<<<<<<<
- * cost_by_rank = IntList(initial_len=N)
- * count_by_rank = IntList(initial_len=N)
- */
- __pyx_t_15 = PyDict_Size(((PyObject *)__pyx_v_pattern_rank)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_N = __pyx_t_15;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":413
- *
- * N = len(pattern_rank)
- * cost_by_rank = IntList(initial_len=N) # <<<<<<<<<<<<<<
- * count_by_rank = IntList(initial_len=N)
- * for pattern, arr in self.precomputed_collocations.iteritems():
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_1 = PyInt_FromLong(__pyx_v_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_cost_by_rank = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":414
- * N = len(pattern_rank)
- * cost_by_rank = IntList(initial_len=N)
- * count_by_rank = IntList(initial_len=N) # <<<<<<<<<<<<<<
- * for pattern, arr in self.precomputed_collocations.iteritems():
- * if pattern not in IJ_set:
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_3 = PyInt_FromLong(__pyx_v_N); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_v_count_by_rank = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":415
- * cost_by_rank = IntList(initial_len=N)
- * count_by_rank = IntList(initial_len=N)
- * for pattern, arr in self.precomputed_collocations.iteritems(): # <<<<<<<<<<<<<<
- * if pattern not in IJ_set:
- * s = ""
- */
- __pyx_t_15 = 0;
- if (unlikely(__pyx_v_self->precomputed_collocations == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_1 = __Pyx_dict_iterator(__pyx_v_self->precomputed_collocations, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_2), (&__pyx_t_14)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __pyx_t_3 = __pyx_t_1;
- __pyx_t_1 = 0;
- while (1) {
- __pyx_t_17 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_2, &__pyx_t_15, &__pyx_t_1, &__pyx_t_9, NULL, __pyx_t_14);
- if (unlikely(__pyx_t_17 == 0)) break;
- if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_v_pattern);
- __pyx_v_pattern = __pyx_t_1;
- __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_v_arr);
- __pyx_v_arr = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":416
- * count_by_rank = IntList(initial_len=N)
- * for pattern, arr in self.precomputed_collocations.iteritems():
- * if pattern not in IJ_set: # <<<<<<<<<<<<<<
- * s = ""
- * for word_id in pattern:
- */
- __pyx_t_20 = (__Pyx_PySequence_Contains(__pyx_v_pattern, ((PyObject *)__pyx_v_IJ_set), Py_NE)); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_12 = (__pyx_t_20 != 0);
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":417
- * for pattern, arr in self.precomputed_collocations.iteritems():
- * if pattern not in IJ_set:
- * s = "" # <<<<<<<<<<<<<<
- * for word_id in pattern:
- * if word_id == -1:
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_47));
- __Pyx_XDECREF(__pyx_v_s);
- __pyx_v_s = ((PyObject *)__pyx_kp_s_47);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":418
- * if pattern not in IJ_set:
- * s = ""
- * for word_id in pattern: # <<<<<<<<<<<<<<
- * if word_id == -1:
- * s = s + "X "
- */
- if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) {
- __pyx_t_9 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_9); __pyx_t_13 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_13 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_5 = Py_TYPE(__pyx_t_9)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_9)) {
- if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_9)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_9)) {
- if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_5(__pyx_t_9);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_word_id);
- __pyx_v_word_id = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":419
- * s = ""
- * for word_id in pattern:
- * if word_id == -1: # <<<<<<<<<<<<<<
- * s = s + "X "
- * else:
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":420
- * for word_id in pattern:
- * if word_id == -1:
- * s = s + "X " # <<<<<<<<<<<<<<
- * else:
- * s = s + darray.id2word[word_id] + " "
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_s, ((PyObject *)__pyx_kp_s_85)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_s);
- __pyx_v_s = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L56;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":422
- * s = s + "X "
- * else:
- * s = s + darray.id2word[word_id] + " " # <<<<<<<<<<<<<<
- * logger.warn("ERROR: unexpected pattern %s in set of precomputed collocations", s)
- * else:
- */
- __pyx_t_1 = PyObject_GetItem(__pyx_v_darray->id2word, __pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyNumber_Add(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Add(__pyx_t_8, ((PyObject *)__pyx_kp_s_69)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_v_s);
- __pyx_v_s = __pyx_t_1;
- __pyx_t_1 = 0;
- }
- __pyx_L56:;
- }
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":423
- * else:
- * s = s + darray.id2word[word_id] + " "
- * logger.warn("ERROR: unexpected pattern %s in set of precomputed collocations", s) # <<<<<<<<<<<<<<
- * else:
- * chunk = ()
- */
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s__warn); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_86));
- PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_86));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_86));
- __Pyx_INCREF(__pyx_v_s);
- PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_s);
- __Pyx_GIVEREF(__pyx_v_s);
- __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L53;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":425
- * logger.warn("ERROR: unexpected pattern %s in set of precomputed collocations", s)
- * else:
- * chunk = () # <<<<<<<<<<<<<<
- * max_rank = 0
- * arity = 0
- */
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- __Pyx_XDECREF(((PyObject *)__pyx_v_chunk));
- __pyx_v_chunk = __pyx_empty_tuple;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":426
- * else:
- * chunk = ()
- * max_rank = 0 # <<<<<<<<<<<<<<
- * arity = 0
- * for word_id in pattern:
- */
- __pyx_v_max_rank = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":427
- * chunk = ()
- * max_rank = 0
- * arity = 0 # <<<<<<<<<<<<<<
- * for word_id in pattern:
- * if word_id == -1:
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_XDECREF(__pyx_v_arity);
- __pyx_v_arity = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":428
- * max_rank = 0
- * arity = 0
- * for word_id in pattern: # <<<<<<<<<<<<<<
- * if word_id == -1:
- * max_rank = max(max_rank, pattern_rank[chunk])
- */
- if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) {
- __pyx_t_8 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_8); __pyx_t_13 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_13 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_5 = Py_TYPE(__pyx_t_8)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_8)) {
- if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_8)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_9 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_9 = PySequence_ITEM(__pyx_t_8, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_8)) {
- if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_9 = PySequence_ITEM(__pyx_t_8, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_9 = __pyx_t_5(__pyx_t_8);
- if (unlikely(!__pyx_t_9)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_9);
- }
- __Pyx_XDECREF(__pyx_v_word_id);
- __pyx_v_word_id = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":429
- * arity = 0
- * for word_id in pattern:
- * if word_id == -1: # <<<<<<<<<<<<<<
- * max_rank = max(max_rank, pattern_rank[chunk])
- * arity = arity + 1
- */
- __pyx_t_9 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":430
- * for word_id in pattern:
- * if word_id == -1:
- * max_rank = max(max_rank, pattern_rank[chunk]) # <<<<<<<<<<<<<<
- * arity = arity + 1
- * chunk = ()
- */
- __pyx_t_9 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_pattern_rank), ((PyObject *)__pyx_v_chunk)); if (!__pyx_t_9) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_17 = __pyx_v_max_rank;
- __pyx_t_6 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_9, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_12) {
- __Pyx_INCREF(__pyx_t_9);
- __pyx_t_1 = __pyx_t_9;
- } else {
- __pyx_t_7 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __pyx_t_7;
- __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_max_rank = __pyx_t_17;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":431
- * if word_id == -1:
- * max_rank = max(max_rank, pattern_rank[chunk])
- * arity = arity + 1 # <<<<<<<<<<<<<<
- * chunk = ()
- * else:
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_arity, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_arity);
- __pyx_v_arity = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":432
- * max_rank = max(max_rank, pattern_rank[chunk])
- * arity = arity + 1
- * chunk = () # <<<<<<<<<<<<<<
- * else:
- * chunk = chunk + (word_id,)
- */
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- __Pyx_DECREF(((PyObject *)__pyx_v_chunk));
- __pyx_v_chunk = __pyx_empty_tuple;
- goto __pyx_L59;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":434
- * chunk = ()
- * else:
- * chunk = chunk + (word_id,) # <<<<<<<<<<<<<<
- * max_rank = max(max_rank, pattern_rank[chunk])
- * cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_word_id);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_word_id);
- __Pyx_GIVEREF(__pyx_v_word_id);
- __pyx_t_9 = PyNumber_Add(((PyObject *)__pyx_v_chunk), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_9));
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_chunk));
- __pyx_v_chunk = ((PyObject*)__pyx_t_9);
- __pyx_t_9 = 0;
- }
- __pyx_L59:;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":435
- * else:
- * chunk = chunk + (word_id,)
- * max_rank = max(max_rank, pattern_rank[chunk]) # <<<<<<<<<<<<<<
- * cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))
- * count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))
- */
- __pyx_t_8 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_pattern_rank), ((PyObject *)__pyx_v_chunk)); if (!__pyx_t_8) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_17 = __pyx_v_max_rank;
- __pyx_t_1 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_12) {
- __Pyx_INCREF(__pyx_t_8);
- __pyx_t_9 = __pyx_t_8;
- } else {
- __pyx_t_7 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = __pyx_t_7;
- __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_t_9); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_max_rank = __pyx_t_17;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":436
- * chunk = chunk + (word_id,)
- * max_rank = max(max_rank, pattern_rank[chunk])
- * cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr)) # <<<<<<<<<<<<<<
- * count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))
- *
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- (__pyx_v_cost_by_rank->arr[__pyx_v_max_rank]) = ((__pyx_v_cost_by_rank->arr[__pyx_v_max_rank]) + (4 * __pyx_t_13));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":437
- * max_rank = max(max_rank, pattern_rank[chunk])
- * cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))
- * count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1)) # <<<<<<<<<<<<<<
- *
- * cumul_cost = 0
- */
- __pyx_t_9 = PyInt_FromLong((__pyx_v_count_by_rank->arr[__pyx_v_max_rank])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_13 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = PyNumber_Add(__pyx_v_arity, __pyx_int_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyNumber_Add(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_t_7); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- (__pyx_v_count_by_rank->arr[__pyx_v_max_rank]) = __pyx_t_17;
- }
- __pyx_L53:;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":439
- * count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))
- *
- * cumul_cost = 0 # <<<<<<<<<<<<<<
- * cumul_count = 0
- * for i from 0 <= i < N:
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_cumul_cost = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":440
- *
- * cumul_cost = 0
- * cumul_count = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < N:
- * cumul_cost = cumul_cost + cost_by_rank.arr[i]
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_cumul_count = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":441
- * cumul_cost = 0
- * cumul_count = 0
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * cumul_cost = cumul_cost + cost_by_rank.arr[i]
- * cumul_count = cumul_count + count_by_rank.arr[i]
- */
- __pyx_t_14 = __pyx_v_N;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_14; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":442
- * cumul_count = 0
- * for i from 0 <= i < N:
- * cumul_cost = cumul_cost + cost_by_rank.arr[i] # <<<<<<<<<<<<<<
- * cumul_count = cumul_count + count_by_rank.arr[i]
- * logger.debug("RANK %d\tCOUNT, COST: %d %d\tCUMUL: %d, %d", i, count_by_rank.arr[i], cost_by_rank.arr[i], cumul_count, cumul_cost)
- */
- __pyx_t_3 = PyInt_FromLong((__pyx_v_cost_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyNumber_Add(__pyx_v_cumul_cost, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_v_cumul_cost);
- __pyx_v_cumul_cost = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":443
- * for i from 0 <= i < N:
- * cumul_cost = cumul_cost + cost_by_rank.arr[i]
- * cumul_count = cumul_count + count_by_rank.arr[i] # <<<<<<<<<<<<<<
- * logger.debug("RANK %d\tCOUNT, COST: %d %d\tCUMUL: %d, %d", i, count_by_rank.arr[i], cost_by_rank.arr[i], cumul_count, cumul_cost)
- *
- */
- __pyx_t_7 = PyInt_FromLong((__pyx_v_count_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_3 = PyNumber_Add(__pyx_v_cumul_count, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_v_cumul_count);
- __pyx_v_cumul_count = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":444
- * cumul_cost = cumul_cost + cost_by_rank.arr[i]
- * cumul_count = cumul_count + count_by_rank.arr[i]
- * logger.debug("RANK %d\tCOUNT, COST: %d %d\tCUMUL: %d, %d", i, count_by_rank.arr[i], cost_by_rank.arr[i], cumul_count, cumul_cost) # <<<<<<<<<<<<<<
- *
- * num_found_patterns = len(self.precomputed_collocations)
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__debug); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyInt_FromLong((__pyx_v_count_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = PyInt_FromLong((__pyx_v_cost_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_87));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_kp_s_87));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_87));
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_9);
- __Pyx_INCREF(__pyx_v_cumul_count);
- PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_cumul_count);
- __Pyx_GIVEREF(__pyx_v_cumul_count);
- __Pyx_INCREF(__pyx_v_cumul_cost);
- PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_v_cumul_cost);
- __Pyx_GIVEREF(__pyx_v_cumul_cost);
- __pyx_t_3 = 0;
- __pyx_t_1 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":446
- * logger.debug("RANK %d\tCOUNT, COST: %d %d\tCUMUL: %d, %d", i, count_by_rank.arr[i], cost_by_rank.arr[i], cumul_count, cumul_cost)
- *
- * num_found_patterns = len(self.precomputed_collocations) # <<<<<<<<<<<<<<
- * for pattern in IJ_set:
- * if pattern not in self.precomputed_collocations:
- */
- __pyx_t_9 = __pyx_v_self->precomputed_collocations;
- __Pyx_INCREF(__pyx_t_9);
- __pyx_t_2 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_v_num_found_patterns = __pyx_t_9;
- __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":447
- *
- * num_found_patterns = len(self.precomputed_collocations)
- * for pattern in IJ_set: # <<<<<<<<<<<<<<
- * if pattern not in self.precomputed_collocations:
- * self.precomputed_collocations[pattern] = IntList()
- */
- __pyx_t_9 = PyObject_GetIter(((PyObject *)__pyx_v_IJ_set)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_5 = Py_TYPE(__pyx_t_9)->tp_iternext;
- for (;;) {
- {
- __pyx_t_8 = __pyx_t_5(__pyx_t_9);
- if (unlikely(!__pyx_t_8)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- __Pyx_XDECREF(__pyx_v_pattern);
- __pyx_v_pattern = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":448
- * num_found_patterns = len(self.precomputed_collocations)
- * for pattern in IJ_set:
- * if pattern not in self.precomputed_collocations: # <<<<<<<<<<<<<<
- * self.precomputed_collocations[pattern] = IntList()
- *
- */
- __pyx_t_12 = (__Pyx_PySequence_Contains(__pyx_v_pattern, __pyx_v_self->precomputed_collocations, Py_NE)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = (__pyx_t_12 != 0);
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":449
- * for pattern in IJ_set:
- * if pattern not in self.precomputed_collocations:
- * self.precomputed_collocations[pattern] = IntList() # <<<<<<<<<<<<<<
- *
- * cdef float stop_time = monitor_cpu()
- */
- __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- if (PyObject_SetItem(__pyx_v_self->precomputed_collocations, __pyx_v_pattern, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L64;
- }
- __pyx_L64:;
- }
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":451
- * self.precomputed_collocations[pattern] = IntList()
- *
- * cdef float stop_time = monitor_cpu() # <<<<<<<<<<<<<<
- * logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)
- * logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))
- */
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_8); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_stop_time = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":452
- *
- * cdef float stop_time = monitor_cpu()
- * logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x) # <<<<<<<<<<<<<<
- * logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))
- * logger.info("Precomputation took %f seconds", (stop_time - start_time))
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_v_self->precomputed_collocations;
- __Pyx_INCREF(__pyx_t_8);
- __pyx_t_2 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_88));
- PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_s_88));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_88));
- __Pyx_INCREF(__pyx_v_num_found_patterns);
- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_num_found_patterns);
- __Pyx_GIVEREF(__pyx_v_num_found_patterns);
- PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_x);
- __Pyx_GIVEREF(__pyx_v_x);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":453
- * cdef float stop_time = monitor_cpu()
- * logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)
- * logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index)) # <<<<<<<<<<<<<<
- * logger.info("Precomputation took %f seconds", (stop_time - start_time))
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_v_self->precomputed_index;
- __Pyx_INCREF(__pyx_t_8);
- __pyx_t_2 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_89));
- PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_89));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_89));
- PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":454
- * logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)
- * logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))
- * logger.info("Precomputation took %f seconds", (stop_time - start_time)) # <<<<<<<<<<<<<<
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyFloat_FromDouble((__pyx_v_stop_time - __pyx_v_start_time)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_90));
- PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_s_90));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_90));
- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_sa.Precomputation.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_darray);
- __Pyx_XDECREF((PyObject *)__pyx_v_data);
- __Pyx_XDECREF((PyObject *)__pyx_v_queue);
- __Pyx_XDECREF((PyObject *)__pyx_v_cost_by_rank);
- __Pyx_XDECREF((PyObject *)__pyx_v_count_by_rank);
- __Pyx_XDECREF((PyObject *)__pyx_v_frequent_patterns);
- __Pyx_XDECREF((PyObject *)__pyx_v_super_frequent_patterns);
- __Pyx_XDECREF((PyObject *)__pyx_v_collocations);
- __Pyx_XDECREF(__pyx_v_I_set);
- __Pyx_XDECREF(__pyx_v_J_set);
- __Pyx_XDECREF(__pyx_v_J2_set);
- __Pyx_XDECREF(__pyx_v_IJ_set);
- __Pyx_XDECREF(__pyx_v_pattern_rank);
- __Pyx_XDECREF(__pyx_v_rank);
- __Pyx_XDECREF(__pyx_v__);
- __Pyx_XDECREF(__pyx_v_phrase);
- __Pyx_XDECREF(__pyx_v_x);
- __Pyx_XDECREF(__pyx_v_pattern1);
- __Pyx_XDECREF(__pyx_v_pattern2);
- __Pyx_XDECREF(__pyx_v_combined_pattern);
- __Pyx_XDECREF(__pyx_v_pattern);
- __Pyx_XDECREF(__pyx_v_arr);
- __Pyx_XDECREF(__pyx_v_s);
- __Pyx_XDECREF(__pyx_v_word_id);
- __Pyx_XDECREF(__pyx_v_chunk);
- __Pyx_XDECREF(__pyx_v_arity);
- __Pyx_XDECREF(__pyx_v_cumul_cost);
- __Pyx_XDECREF(__pyx_v_cumul_count);
- __Pyx_XDECREF(__pyx_v_num_found_patterns);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_11SuffixArray_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_11SuffixArray_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_from_binary = 0;
- PyObject *__pyx_v_from_text = 0;
- PyObject *__pyx_v_side = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,&__pyx_n_s__side,0};
- PyObject* values[3] = {0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":11
- * cdef IntList ha
- *
- * def __cinit__(self, from_binary=None, from_text=None, side=None): # <<<<<<<<<<<<<<
- * self.darray = DataArray()
- * self.sa = IntList()
- */
- values[0] = ((PyObject *)Py_None);
- values[1] = ((PyObject *)Py_None);
- values[2] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_binary);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__from_text);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side);
- if (value) { values[2] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_from_binary = values[0];
- __pyx_v_from_text = values[1];
- __pyx_v_side = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_11SuffixArray___cinit__(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), __pyx_v_from_binary, __pyx_v_from_text, __pyx_v_side);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_from_binary, PyObject *__pyx_v_from_text, PyObject *__pyx_v_side) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":12
- *
- * def __cinit__(self, from_binary=None, from_text=None, side=None):
- * self.darray = DataArray() # <<<<<<<<<<<<<<
- * self.sa = IntList()
- * self.ha = IntList()
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_DataArray)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->darray);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->darray));
- __pyx_v_self->darray = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":13
- * def __cinit__(self, from_binary=None, from_text=None, side=None):
- * self.darray = DataArray()
- * self.sa = IntList() # <<<<<<<<<<<<<<
- * self.ha = IntList()
- * if from_binary:
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->sa);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sa));
- __pyx_v_self->sa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":14
- * self.darray = DataArray()
- * self.sa = IntList()
- * self.ha = IntList() # <<<<<<<<<<<<<<
- * if from_binary:
- * self.read_binary(from_binary)
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->ha);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->ha));
- __pyx_v_self->ha = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":15
- * self.sa = IntList()
- * self.ha = IntList()
- * if from_binary: # <<<<<<<<<<<<<<
- * self.read_binary(from_binary)
- * elif from_text:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":16
- * self.ha = IntList()
- * if from_binary:
- * self.read_binary(from_binary) # <<<<<<<<<<<<<<
- * elif from_text:
- * self.read_text(from_text, side)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_from_binary);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_binary);
- __Pyx_GIVEREF(__pyx_v_from_binary);
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":17
- * if from_binary:
- * self.read_binary(from_binary)
- * elif from_text: # <<<<<<<<<<<<<<
- * self.read_text(from_text, side)
- *
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":18
- * self.read_binary(from_binary)
- * elif from_text:
- * self.read_text(from_text, side) # <<<<<<<<<<<<<<
- *
- * def __getitem__(self, i):
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_from_text);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_text);
- __Pyx_GIVEREF(__pyx_v_from_text);
- __Pyx_INCREF(__pyx_v_side);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_side);
- __Pyx_GIVEREF(__pyx_v_side);
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.SuffixArray.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
-static PyObject *__pyx_pw_3_sa_11SuffixArray_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_2__getitem__(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), ((PyObject *)__pyx_v_i));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":20
- * self.read_text(from_text, side)
- *
- * def __getitem__(self, i): # <<<<<<<<<<<<<<
- * return self.sa.arr[i]
- *
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_2__getitem__(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_i) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- Py_ssize_t __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__getitem__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":21
- *
- * def __getitem__(self, i):
- * return self.sa.arr[i] # <<<<<<<<<<<<<<
- *
- * def read_text(self, filename, side):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->sa->arr[__pyx_t_1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.SuffixArray.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_5read_text(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_3_sa_11SuffixArray_4read_text[] = "Constructs suffix array using the algorithm\n of Larsson & Sadahkane (1999)";
-static PyObject *__pyx_pw_3_sa_11SuffixArray_5read_text(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_filename = 0;
- PyObject *__pyx_v_side = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_text (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__side,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("read_text", 1, 2, 2, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_text") < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_filename = values[0];
- __pyx_v_side = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("read_text", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_4read_text(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), __pyx_v_filename, __pyx_v_side);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":23
- * return self.sa.arr[i]
- *
- * def read_text(self, filename, side): # <<<<<<<<<<<<<<
- * '''Constructs suffix array using the algorithm
- * of Larsson & Sadahkane (1999)'''
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_side) {
- int __pyx_v_V;
- int __pyx_v_N;
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_h;
- int __pyx_v_a_i;
- int __pyx_v_n;
- int __pyx_v_current_run;
- int __pyx_v_skip;
- struct __pyx_obj_3_sa_IntList *__pyx_v_isa = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_word_count = 0;
- float __pyx_v_sort_start_time;
- float __pyx_v_start_time;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- float __pyx_t_4;
- int __pyx_t_5;
- long __pyx_t_6;
- int __pyx_t_7;
- int __pyx_t_8;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("read_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":29
- * cdef IntList isa, word_count
- *
- * self.darray = DataArray(from_text=filename, side=side, use_sent_id=True) # <<<<<<<<<<<<<<
- * N = len(self.darray)
- * V = len(self.darray.id2word)
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__from_text), __pyx_v_filename) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__side), __pyx_v_side) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__use_sent_id), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_DataArray)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->darray);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->darray));
- __pyx_v_self->darray = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":30
- *
- * self.darray = DataArray(from_text=filename, side=side, use_sent_id=True)
- * N = len(self.darray) # <<<<<<<<<<<<<<
- * V = len(self.darray.id2word)
- *
- */
- __pyx_t_2 = ((PyObject *)__pyx_v_self->darray);
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_N = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":31
- * self.darray = DataArray(from_text=filename, side=side, use_sent_id=True)
- * N = len(self.darray)
- * V = len(self.darray.id2word) # <<<<<<<<<<<<<<
- *
- * self.sa = IntList(initial_len=N)
- */
- __pyx_t_2 = __pyx_v_self->darray->id2word;
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_V = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":33
- * V = len(self.darray.id2word)
- *
- * self.sa = IntList(initial_len=N) # <<<<<<<<<<<<<<
- * self.ha = IntList(initial_len=V+1)
- *
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_1 = PyInt_FromLong(__pyx_v_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->sa);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sa));
- __pyx_v_self->sa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":34
- *
- * self.sa = IntList(initial_len=N)
- * self.ha = IntList(initial_len=V+1) # <<<<<<<<<<<<<<
- *
- * isa = IntList(initial_len=N)
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyInt_FromLong((__pyx_v_V + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->ha);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->ha));
- __pyx_v_self->ha = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":36
- * self.ha = IntList(initial_len=V+1)
- *
- * isa = IntList(initial_len=N) # <<<<<<<<<<<<<<
- * word_count = IntList(initial_len=V+1)
- *
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_1 = PyInt_FromLong(__pyx_v_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_v_isa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":37
- *
- * isa = IntList(initial_len=N)
- * word_count = IntList(initial_len=V+1) # <<<<<<<<<<<<<<
- *
- * '''Step 1: bucket sort data'''
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyInt_FromLong((__pyx_v_V + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_v_word_count = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":40
- *
- * '''Step 1: bucket sort data'''
- * cdef float sort_start_time = monitor_cpu() # <<<<<<<<<<<<<<
- * cdef float start_time = sort_start_time
- * for i from 0 <= i < N:
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_sort_start_time = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":41
- * '''Step 1: bucket sort data'''
- * cdef float sort_start_time = monitor_cpu()
- * cdef float start_time = sort_start_time # <<<<<<<<<<<<<<
- * for i from 0 <= i < N:
- * a_i = self.darray.data.arr[i]
- */
- __pyx_v_start_time = __pyx_v_sort_start_time;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":42
- * cdef float sort_start_time = monitor_cpu()
- * cdef float start_time = sort_start_time
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * a_i = self.darray.data.arr[i]
- * word_count.arr[a_i] = word_count.arr[a_i] + 1
- */
- __pyx_t_5 = __pyx_v_N;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":43
- * cdef float start_time = sort_start_time
- * for i from 0 <= i < N:
- * a_i = self.darray.data.arr[i] # <<<<<<<<<<<<<<
- * word_count.arr[a_i] = word_count.arr[a_i] + 1
- *
- */
- __pyx_v_a_i = (__pyx_v_self->darray->data->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":44
- * for i from 0 <= i < N:
- * a_i = self.darray.data.arr[i]
- * word_count.arr[a_i] = word_count.arr[a_i] + 1 # <<<<<<<<<<<<<<
- *
- * n = 0
- */
- (__pyx_v_word_count->arr[__pyx_v_a_i]) = ((__pyx_v_word_count->arr[__pyx_v_a_i]) + 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":46
- * word_count.arr[a_i] = word_count.arr[a_i] + 1
- *
- * n = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < V+1:
- * self.ha.arr[i] = n
- */
- __pyx_v_n = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":47
- *
- * n = 0
- * for i from 0 <= i < V+1: # <<<<<<<<<<<<<<
- * self.ha.arr[i] = n
- * n = n + word_count.arr[i]
- */
- __pyx_t_6 = (__pyx_v_V + 1);
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":48
- * n = 0
- * for i from 0 <= i < V+1:
- * self.ha.arr[i] = n # <<<<<<<<<<<<<<
- * n = n + word_count.arr[i]
- * word_count.arr[i] = 0
- */
- (__pyx_v_self->ha->arr[__pyx_v_i]) = __pyx_v_n;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":49
- * for i from 0 <= i < V+1:
- * self.ha.arr[i] = n
- * n = n + word_count.arr[i] # <<<<<<<<<<<<<<
- * word_count.arr[i] = 0
- *
- */
- __pyx_v_n = (__pyx_v_n + (__pyx_v_word_count->arr[__pyx_v_i]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":50
- * self.ha.arr[i] = n
- * n = n + word_count.arr[i]
- * word_count.arr[i] = 0 # <<<<<<<<<<<<<<
- *
- * for i from 0 <= i < N:
- */
- (__pyx_v_word_count->arr[__pyx_v_i]) = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":52
- * word_count.arr[i] = 0
- *
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * a_i = self.darray.data.arr[i]
- * self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i
- */
- __pyx_t_5 = __pyx_v_N;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":53
- *
- * for i from 0 <= i < N:
- * a_i = self.darray.data.arr[i] # <<<<<<<<<<<<<<
- * self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i
- * isa.arr[i] = self.ha.arr[a_i + 1] - 1 # bucket pointer is last index in bucket
- */
- __pyx_v_a_i = (__pyx_v_self->darray->data->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":54
- * for i from 0 <= i < N:
- * a_i = self.darray.data.arr[i]
- * self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i # <<<<<<<<<<<<<<
- * isa.arr[i] = self.ha.arr[a_i + 1] - 1 # bucket pointer is last index in bucket
- * word_count.arr[a_i] = word_count.arr[a_i] + 1
- */
- (__pyx_v_self->sa->arr[((__pyx_v_self->ha->arr[__pyx_v_a_i]) + (__pyx_v_word_count->arr[__pyx_v_a_i]))]) = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":55
- * a_i = self.darray.data.arr[i]
- * self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i
- * isa.arr[i] = self.ha.arr[a_i + 1] - 1 # bucket pointer is last index in bucket # <<<<<<<<<<<<<<
- * word_count.arr[a_i] = word_count.arr[a_i] + 1
- *
- */
- (__pyx_v_isa->arr[__pyx_v_i]) = ((__pyx_v_self->ha->arr[(__pyx_v_a_i + 1)]) - 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":56
- * self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i
- * isa.arr[i] = self.ha.arr[a_i + 1] - 1 # bucket pointer is last index in bucket
- * word_count.arr[a_i] = word_count.arr[a_i] + 1 # <<<<<<<<<<<<<<
- *
- * '''Determine size of initial runs'''
- */
- (__pyx_v_word_count->arr[__pyx_v_a_i]) = ((__pyx_v_word_count->arr[__pyx_v_a_i]) + 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":59
- *
- * '''Determine size of initial runs'''
- * current_run = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < V+1:
- * if i < V and self.ha.arr[i+1] - self.ha.arr[i] == 1:
- */
- __pyx_v_current_run = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":60
- * '''Determine size of initial runs'''
- * current_run = 0
- * for i from 0 <= i < V+1: # <<<<<<<<<<<<<<
- * if i < V and self.ha.arr[i+1] - self.ha.arr[i] == 1:
- * current_run = current_run + 1
- */
- __pyx_t_6 = (__pyx_v_V + 1);
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":61
- * current_run = 0
- * for i from 0 <= i < V+1:
- * if i < V and self.ha.arr[i+1] - self.ha.arr[i] == 1: # <<<<<<<<<<<<<<
- * current_run = current_run + 1
- * else:
- */
- __pyx_t_7 = ((__pyx_v_i < __pyx_v_V) != 0);
- if (__pyx_t_7) {
- __pyx_t_8 = ((((__pyx_v_self->ha->arr[(__pyx_v_i + 1)]) - (__pyx_v_self->ha->arr[__pyx_v_i])) == 1) != 0);
- __pyx_t_9 = __pyx_t_8;
- } else {
- __pyx_t_9 = __pyx_t_7;
- }
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":62
- * for i from 0 <= i < V+1:
- * if i < V and self.ha.arr[i+1] - self.ha.arr[i] == 1:
- * current_run = current_run + 1 # <<<<<<<<<<<<<<
- * else:
- * if current_run > 0:
- */
- __pyx_v_current_run = (__pyx_v_current_run + 1);
- goto __pyx_L11;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":64
- * current_run = current_run + 1
- * else:
- * if current_run > 0: # <<<<<<<<<<<<<<
- * self.sa.arr[self.ha.arr[i] - current_run] = -current_run
- * current_run = 0
- */
- __pyx_t_9 = ((__pyx_v_current_run > 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":65
- * else:
- * if current_run > 0:
- * self.sa.arr[self.ha.arr[i] - current_run] = -current_run # <<<<<<<<<<<<<<
- * current_run = 0
- *
- */
- (__pyx_v_self->sa->arr[((__pyx_v_self->ha->arr[__pyx_v_i]) - __pyx_v_current_run)]) = (-__pyx_v_current_run);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":66
- * if current_run > 0:
- * self.sa.arr[self.ha.arr[i] - current_run] = -current_run
- * current_run = 0 # <<<<<<<<<<<<<<
- *
- * logger.info(" Bucket sort took %f seconds", (monitor_cpu() - sort_start_time))
- */
- __pyx_v_current_run = 0;
- goto __pyx_L12;
- }
- __pyx_L12:;
- }
- __pyx_L11:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":68
- * current_run = 0
- *
- * logger.info(" Bucket sort took %f seconds", (monitor_cpu() - sort_start_time)) # <<<<<<<<<<<<<<
- *
- * '''Step 2: prefix-doubling sort'''
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyFloat_FromDouble(__pyx_v_sort_start_time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = PyNumber_Subtract(__pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_91));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_91));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_91));
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":71
- *
- * '''Step 2: prefix-doubling sort'''
- * h = 1 # <<<<<<<<<<<<<<
- * while self.sa.arr[0] != -N:
- * sort_start_time = monitor_cpu()
- */
- __pyx_v_h = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":72
- * '''Step 2: prefix-doubling sort'''
- * h = 1
- * while self.sa.arr[0] != -N: # <<<<<<<<<<<<<<
- * sort_start_time = monitor_cpu()
- * logger.debug(" Refining, sort depth = %d", h)
- */
- while (1) {
- __pyx_t_9 = (((__pyx_v_self->sa->arr[0]) != (-__pyx_v_N)) != 0);
- if (!__pyx_t_9) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":73
- * h = 1
- * while self.sa.arr[0] != -N:
- * sort_start_time = monitor_cpu() # <<<<<<<<<<<<<<
- * logger.debug(" Refining, sort depth = %d", h)
- * i = 0
- */
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_1 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_sort_start_time = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":74
- * while self.sa.arr[0] != -N:
- * sort_start_time = monitor_cpu()
- * logger.debug(" Refining, sort depth = %d", h) # <<<<<<<<<<<<<<
- * i = 0
- * skip = 0
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong(__pyx_v_h); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_92));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_92));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_92));
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":75
- * sort_start_time = monitor_cpu()
- * logger.debug(" Refining, sort depth = %d", h)
- * i = 0 # <<<<<<<<<<<<<<
- * skip = 0
- * while i < N:
- */
- __pyx_v_i = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":76
- * logger.debug(" Refining, sort depth = %d", h)
- * i = 0
- * skip = 0 # <<<<<<<<<<<<<<
- * while i < N:
- * if self.sa.arr[i] < 0:
- */
- __pyx_v_skip = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":77
- * i = 0
- * skip = 0
- * while i < N: # <<<<<<<<<<<<<<
- * if self.sa.arr[i] < 0:
- * skip = skip + self.sa.arr[i]
- */
- while (1) {
- __pyx_t_9 = ((__pyx_v_i < __pyx_v_N) != 0);
- if (!__pyx_t_9) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":78
- * skip = 0
- * while i < N:
- * if self.sa.arr[i] < 0: # <<<<<<<<<<<<<<
- * skip = skip + self.sa.arr[i]
- * i = i - self.sa.arr[i]
- */
- __pyx_t_9 = (((__pyx_v_self->sa->arr[__pyx_v_i]) < 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":79
- * while i < N:
- * if self.sa.arr[i] < 0:
- * skip = skip + self.sa.arr[i] # <<<<<<<<<<<<<<
- * i = i - self.sa.arr[i]
- * else:
- */
- __pyx_v_skip = (__pyx_v_skip + (__pyx_v_self->sa->arr[__pyx_v_i]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":80
- * if self.sa.arr[i] < 0:
- * skip = skip + self.sa.arr[i]
- * i = i - self.sa.arr[i] # <<<<<<<<<<<<<<
- * else:
- * if skip < 0:
- */
- __pyx_v_i = (__pyx_v_i - (__pyx_v_self->sa->arr[__pyx_v_i]));
- goto __pyx_L17;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":82
- * i = i - self.sa.arr[i]
- * else:
- * if skip < 0: # <<<<<<<<<<<<<<
- * self.sa.arr[i+skip] = skip
- * skip = 0
- */
- __pyx_t_9 = ((__pyx_v_skip < 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":83
- * else:
- * if skip < 0:
- * self.sa.arr[i+skip] = skip # <<<<<<<<<<<<<<
- * skip = 0
- * j = isa.arr[self.sa.arr[i]]
- */
- (__pyx_v_self->sa->arr[(__pyx_v_i + __pyx_v_skip)]) = __pyx_v_skip;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":84
- * if skip < 0:
- * self.sa.arr[i+skip] = skip
- * skip = 0 # <<<<<<<<<<<<<<
- * j = isa.arr[self.sa.arr[i]]
- * self.q3sort(i, j, h, isa)
- */
- __pyx_v_skip = 0;
- goto __pyx_L18;
- }
- __pyx_L18:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":85
- * self.sa.arr[i+skip] = skip
- * skip = 0
- * j = isa.arr[self.sa.arr[i]] # <<<<<<<<<<<<<<
- * self.q3sort(i, j, h, isa)
- * i = j+1
- */
- __pyx_v_j = (__pyx_v_isa->arr[(__pyx_v_self->sa->arr[__pyx_v_i])]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":86
- * skip = 0
- * j = isa.arr[self.sa.arr[i]]
- * self.q3sort(i, j, h, isa) # <<<<<<<<<<<<<<
- * i = j+1
- * if skip < 0:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_11 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_10 = PyInt_FromLong(__pyx_v_h); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = PyTuple_New(4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_INCREF(((PyObject *)__pyx_v_isa));
- PyTuple_SET_ITEM(__pyx_t_12, 3, ((PyObject *)__pyx_v_isa));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_isa));
- __pyx_t_2 = 0;
- __pyx_t_11 = 0;
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":87
- * j = isa.arr[self.sa.arr[i]]
- * self.q3sort(i, j, h, isa)
- * i = j+1 # <<<<<<<<<<<<<<
- * if skip < 0:
- * self.sa.arr[i+skip] = skip
- */
- __pyx_v_i = (__pyx_v_j + 1);
- }
- __pyx_L17:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":88
- * self.q3sort(i, j, h, isa)
- * i = j+1
- * if skip < 0: # <<<<<<<<<<<<<<
- * self.sa.arr[i+skip] = skip
- * h = h * 2
- */
- __pyx_t_9 = ((__pyx_v_skip < 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":89
- * i = j+1
- * if skip < 0:
- * self.sa.arr[i+skip] = skip # <<<<<<<<<<<<<<
- * h = h * 2
- * logger.debug(" Refinement took %f seconds", (monitor_cpu() - sort_start_time))
- */
- (__pyx_v_self->sa->arr[(__pyx_v_i + __pyx_v_skip)]) = __pyx_v_skip;
- goto __pyx_L19;
- }
- __pyx_L19:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":90
- * if skip < 0:
- * self.sa.arr[i+skip] = skip
- * h = h * 2 # <<<<<<<<<<<<<<
- * logger.debug(" Refinement took %f seconds", (monitor_cpu() - sort_start_time))
- *
- */
- __pyx_v_h = (__pyx_v_h * 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":91
- * self.sa.arr[i+skip] = skip
- * h = h * 2
- * logger.debug(" Refinement took %f seconds", (monitor_cpu() - sort_start_time)) # <<<<<<<<<<<<<<
- *
- * '''Step 3: read off suffix array from inverse suffix array'''
- */
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__debug); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_1 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyFloat_FromDouble(__pyx_v_sort_start_time); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = PyNumber_Subtract(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_93));
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_kp_s_93));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_93));
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":94
- *
- * '''Step 3: read off suffix array from inverse suffix array'''
- * logger.info(" Finalizing sort...") # <<<<<<<<<<<<<<
- * for i from 0 <= i < N:
- * j = isa.arr[i]
- */
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s__info); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_k_tuple_95), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":95
- * '''Step 3: read off suffix array from inverse suffix array'''
- * logger.info(" Finalizing sort...")
- * for i from 0 <= i < N: # <<<<<<<<<<<<<<
- * j = isa.arr[i]
- * self.sa.arr[j] = i
- */
- __pyx_t_5 = __pyx_v_N;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":96
- * logger.info(" Finalizing sort...")
- * for i from 0 <= i < N:
- * j = isa.arr[i] # <<<<<<<<<<<<<<
- * self.sa.arr[j] = i
- * logger.info("Suffix array construction took %f seconds", (monitor_cpu() - start_time))
- */
- __pyx_v_j = (__pyx_v_isa->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":97
- * for i from 0 <= i < N:
- * j = isa.arr[i]
- * self.sa.arr[j] = i # <<<<<<<<<<<<<<
- * logger.info("Suffix array construction took %f seconds", (monitor_cpu() - start_time))
- *
- */
- (__pyx_v_self->sa->arr[__pyx_v_j]) = __pyx_v_i;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":98
- * j = isa.arr[i]
- * self.sa.arr[j] = i
- * logger.info("Suffix array construction took %f seconds", (monitor_cpu() - start_time)) # <<<<<<<<<<<<<<
- *
- * def q3sort(self, int i, int j, int h, IntList isa, pad=""):
- */
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s__info); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyFloat_FromDouble(__pyx_v_start_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_1 = PyNumber_Subtract(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_96));
- PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_kp_s_96));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_96));
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_sa.SuffixArray.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_isa);
- __Pyx_XDECREF((PyObject *)__pyx_v_word_count);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_7q3sort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_3_sa_11SuffixArray_6q3sort[] = "This is a ternary quicksort. It divides the array into\n three partitions: items less than the pivot, items equal\n to pivot, and items greater than pivot. The first and last\n of these partitions are then recursively sorted";
-static PyObject *__pyx_pw_3_sa_11SuffixArray_7q3sort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_h;
- struct __pyx_obj_3_sa_IntList *__pyx_v_isa = 0;
- PyObject *__pyx_v_pad = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("q3sort (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i,&__pyx_n_s__j,&__pyx_n_s__h,&__pyx_n_s__isa,&__pyx_n_s__pad,0};
- PyObject* values[5] = {0,0,0,0,0};
- values[4] = ((PyObject *)__pyx_kp_s_47);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("q3sort", 0, 4, 5, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__h)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("q3sort", 0, 4, 5, 2); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__isa)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("q3sort", 0, 4, 5, 3); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 4:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pad);
- if (value) { values[4] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "q3sort") < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_i = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_j = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_h = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_h == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_isa = ((struct __pyx_obj_3_sa_IntList *)values[3]);
- __pyx_v_pad = values[4];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("q3sort", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.q3sort", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_isa), __pyx_ptype_3_sa_IntList, 1, "isa", 0))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_6q3sort(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), __pyx_v_i, __pyx_v_j, __pyx_v_h, __pyx_v_isa, __pyx_v_pad);
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":100
- * logger.info("Suffix array construction took %f seconds", (monitor_cpu() - start_time))
- *
- * def q3sort(self, int i, int j, int h, IntList isa, pad=""): # <<<<<<<<<<<<<<
- * '''This is a ternary quicksort. It divides the array into
- * three partitions: items less than the pivot, items equal
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, int __pyx_v_i, int __pyx_v_j, int __pyx_v_h, struct __pyx_obj_3_sa_IntList *__pyx_v_isa, PyObject *__pyx_v_pad) {
- int __pyx_v_k;
- int __pyx_v_midpoint;
- int __pyx_v_pval;
- int __pyx_v_phead;
- int __pyx_v_ptail;
- int __pyx_v_tmp;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- long __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("q3sort", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":107
- * cdef int k, midpoint, pval, phead, ptail, tmp
- *
- * if j-i < -1: # <<<<<<<<<<<<<<
- * raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))
- * if j-i == -1: # recursive base case -- empty interval
- */
- __pyx_t_1 = (((__pyx_v_j - __pyx_v_i) < -1) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":108
- *
- * if j-i < -1:
- * raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j)) # <<<<<<<<<<<<<<
- * if j-i == -1: # recursive base case -- empty interval
- * return
- */
- __pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_2 = 0;
- __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_97), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":109
- * if j-i < -1:
- * raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))
- * if j-i == -1: # recursive base case -- empty interval # <<<<<<<<<<<<<<
- * return
- * if (j-i == 0): # recursive base case -- singleton interval
- */
- __pyx_t_1 = (((__pyx_v_j - __pyx_v_i) == -1) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":110
- * raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))
- * if j-i == -1: # recursive base case -- empty interval
- * return # <<<<<<<<<<<<<<
- * if (j-i == 0): # recursive base case -- singleton interval
- * isa.arr[self.sa.arr[i]] = i
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":111
- * if j-i == -1: # recursive base case -- empty interval
- * return
- * if (j-i == 0): # recursive base case -- singleton interval # <<<<<<<<<<<<<<
- * isa.arr[self.sa.arr[i]] = i
- * self.sa.arr[i] = -1
- */
- __pyx_t_1 = (((__pyx_v_j - __pyx_v_i) == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":112
- * return
- * if (j-i == 0): # recursive base case -- singleton interval
- * isa.arr[self.sa.arr[i]] = i # <<<<<<<<<<<<<<
- * self.sa.arr[i] = -1
- * return
- */
- (__pyx_v_isa->arr[(__pyx_v_self->sa->arr[__pyx_v_i])]) = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":113
- * if (j-i == 0): # recursive base case -- singleton interval
- * isa.arr[self.sa.arr[i]] = i
- * self.sa.arr[i] = -1 # <<<<<<<<<<<<<<
- * return
- *
- */
- (__pyx_v_self->sa->arr[__pyx_v_i]) = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":114
- * isa.arr[self.sa.arr[i]] = i
- * self.sa.arr[i] = -1
- * return # <<<<<<<<<<<<<<
- *
- * # NOTE: choosing the first item as a pivot value resulted in
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":123
- * # If the method of assigning word_id's is changed, this method
- * # may need to be reconsidered as well.
- * midpoint = (i+j)/2 # <<<<<<<<<<<<<<
- * pval = isa.arr[self.sa.arr[midpoint] + h]
- * if i != midpoint:
- */
- __pyx_v_midpoint = __Pyx_div_long((__pyx_v_i + __pyx_v_j), 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":124
- * # may need to be reconsidered as well.
- * midpoint = (i+j)/2
- * pval = isa.arr[self.sa.arr[midpoint] + h] # <<<<<<<<<<<<<<
- * if i != midpoint:
- * tmp = self.sa.arr[midpoint]
- */
- __pyx_v_pval = (__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_h)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":125
- * midpoint = (i+j)/2
- * pval = isa.arr[self.sa.arr[midpoint] + h]
- * if i != midpoint: # <<<<<<<<<<<<<<
- * tmp = self.sa.arr[midpoint]
- * self.sa.arr[midpoint] = self.sa.arr[i]
- */
- __pyx_t_1 = ((__pyx_v_i != __pyx_v_midpoint) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":126
- * pval = isa.arr[self.sa.arr[midpoint] + h]
- * if i != midpoint:
- * tmp = self.sa.arr[midpoint] # <<<<<<<<<<<<<<
- * self.sa.arr[midpoint] = self.sa.arr[i]
- * self.sa.arr[i] = tmp
- */
- __pyx_v_tmp = (__pyx_v_self->sa->arr[__pyx_v_midpoint]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":127
- * if i != midpoint:
- * tmp = self.sa.arr[midpoint]
- * self.sa.arr[midpoint] = self.sa.arr[i] # <<<<<<<<<<<<<<
- * self.sa.arr[i] = tmp
- * phead = i
- */
- (__pyx_v_self->sa->arr[__pyx_v_midpoint]) = (__pyx_v_self->sa->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":128
- * tmp = self.sa.arr[midpoint]
- * self.sa.arr[midpoint] = self.sa.arr[i]
- * self.sa.arr[i] = tmp # <<<<<<<<<<<<<<
- * phead = i
- * ptail = i
- */
- (__pyx_v_self->sa->arr[__pyx_v_i]) = __pyx_v_tmp;
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":129
- * self.sa.arr[midpoint] = self.sa.arr[i]
- * self.sa.arr[i] = tmp
- * phead = i # <<<<<<<<<<<<<<
- * ptail = i
- *
- */
- __pyx_v_phead = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":130
- * self.sa.arr[i] = tmp
- * phead = i
- * ptail = i # <<<<<<<<<<<<<<
- *
- * # find the three partitions. phead marks the first element
- */
- __pyx_v_ptail = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":134
- * # find the three partitions. phead marks the first element
- * # of the middle partition, and ptail marks the last element
- * for k from i+1 <= k < j+1: # <<<<<<<<<<<<<<
- * if isa.arr[self.sa.arr[k] + h] < pval:
- * if k > ptail+1:
- */
- __pyx_t_5 = (__pyx_v_j + 1);
- for (__pyx_v_k = (__pyx_v_i + 1); __pyx_v_k < __pyx_t_5; __pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":135
- * # of the middle partition, and ptail marks the last element
- * for k from i+1 <= k < j+1:
- * if isa.arr[self.sa.arr[k] + h] < pval: # <<<<<<<<<<<<<<
- * if k > ptail+1:
- * tmp = self.sa.arr[phead]
- */
- __pyx_t_1 = (((__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_k]) + __pyx_v_h)]) < __pyx_v_pval) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":136
- * for k from i+1 <= k < j+1:
- * if isa.arr[self.sa.arr[k] + h] < pval:
- * if k > ptail+1: # <<<<<<<<<<<<<<
- * tmp = self.sa.arr[phead]
- * self.sa.arr[phead] = self.sa.arr[k]
- */
- __pyx_t_1 = ((__pyx_v_k > (__pyx_v_ptail + 1)) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":137
- * if isa.arr[self.sa.arr[k] + h] < pval:
- * if k > ptail+1:
- * tmp = self.sa.arr[phead] # <<<<<<<<<<<<<<
- * self.sa.arr[phead] = self.sa.arr[k]
- * self.sa.arr[k] = self.sa.arr[ptail+1]
- */
- __pyx_v_tmp = (__pyx_v_self->sa->arr[__pyx_v_phead]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":138
- * if k > ptail+1:
- * tmp = self.sa.arr[phead]
- * self.sa.arr[phead] = self.sa.arr[k] # <<<<<<<<<<<<<<
- * self.sa.arr[k] = self.sa.arr[ptail+1]
- * self.sa.arr[ptail+1] = tmp
- */
- (__pyx_v_self->sa->arr[__pyx_v_phead]) = (__pyx_v_self->sa->arr[__pyx_v_k]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":139
- * tmp = self.sa.arr[phead]
- * self.sa.arr[phead] = self.sa.arr[k]
- * self.sa.arr[k] = self.sa.arr[ptail+1] # <<<<<<<<<<<<<<
- * self.sa.arr[ptail+1] = tmp
- * else: # k == ptail+1
- */
- (__pyx_v_self->sa->arr[__pyx_v_k]) = (__pyx_v_self->sa->arr[(__pyx_v_ptail + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":140
- * self.sa.arr[phead] = self.sa.arr[k]
- * self.sa.arr[k] = self.sa.arr[ptail+1]
- * self.sa.arr[ptail+1] = tmp # <<<<<<<<<<<<<<
- * else: # k == ptail+1
- * tmp = self.sa.arr[phead]
- */
- (__pyx_v_self->sa->arr[(__pyx_v_ptail + 1)]) = __pyx_v_tmp;
- goto __pyx_L10;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":142
- * self.sa.arr[ptail+1] = tmp
- * else: # k == ptail+1
- * tmp = self.sa.arr[phead] # <<<<<<<<<<<<<<
- * self.sa.arr[phead] = self.sa.arr[k]
- * self.sa.arr[k] = tmp
- */
- __pyx_v_tmp = (__pyx_v_self->sa->arr[__pyx_v_phead]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":143
- * else: # k == ptail+1
- * tmp = self.sa.arr[phead]
- * self.sa.arr[phead] = self.sa.arr[k] # <<<<<<<<<<<<<<
- * self.sa.arr[k] = tmp
- * phead = phead + 1
- */
- (__pyx_v_self->sa->arr[__pyx_v_phead]) = (__pyx_v_self->sa->arr[__pyx_v_k]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":144
- * tmp = self.sa.arr[phead]
- * self.sa.arr[phead] = self.sa.arr[k]
- * self.sa.arr[k] = tmp # <<<<<<<<<<<<<<
- * phead = phead + 1
- * ptail = ptail + 1
- */
- (__pyx_v_self->sa->arr[__pyx_v_k]) = __pyx_v_tmp;
- }
- __pyx_L10:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":145
- * self.sa.arr[phead] = self.sa.arr[k]
- * self.sa.arr[k] = tmp
- * phead = phead + 1 # <<<<<<<<<<<<<<
- * ptail = ptail + 1
- * else:
- */
- __pyx_v_phead = (__pyx_v_phead + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":146
- * self.sa.arr[k] = tmp
- * phead = phead + 1
- * ptail = ptail + 1 # <<<<<<<<<<<<<<
- * else:
- * if isa.arr[self.sa.arr[k] + h] == pval:
- */
- __pyx_v_ptail = (__pyx_v_ptail + 1);
- goto __pyx_L9;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":148
- * ptail = ptail + 1
- * else:
- * if isa.arr[self.sa.arr[k] + h] == pval: # <<<<<<<<<<<<<<
- * if k > ptail+1:
- * tmp = self.sa.arr[ptail+1]
- */
- __pyx_t_1 = (((__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_k]) + __pyx_v_h)]) == __pyx_v_pval) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":149
- * else:
- * if isa.arr[self.sa.arr[k] + h] == pval:
- * if k > ptail+1: # <<<<<<<<<<<<<<
- * tmp = self.sa.arr[ptail+1]
- * self.sa.arr[ptail+1] = self.sa.arr[k]
- */
- __pyx_t_1 = ((__pyx_v_k > (__pyx_v_ptail + 1)) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":150
- * if isa.arr[self.sa.arr[k] + h] == pval:
- * if k > ptail+1:
- * tmp = self.sa.arr[ptail+1] # <<<<<<<<<<<<<<
- * self.sa.arr[ptail+1] = self.sa.arr[k]
- * self.sa.arr[k] = tmp
- */
- __pyx_v_tmp = (__pyx_v_self->sa->arr[(__pyx_v_ptail + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":151
- * if k > ptail+1:
- * tmp = self.sa.arr[ptail+1]
- * self.sa.arr[ptail+1] = self.sa.arr[k] # <<<<<<<<<<<<<<
- * self.sa.arr[k] = tmp
- * ptail = ptail + 1
- */
- (__pyx_v_self->sa->arr[(__pyx_v_ptail + 1)]) = (__pyx_v_self->sa->arr[__pyx_v_k]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":152
- * tmp = self.sa.arr[ptail+1]
- * self.sa.arr[ptail+1] = self.sa.arr[k]
- * self.sa.arr[k] = tmp # <<<<<<<<<<<<<<
- * ptail = ptail + 1
- *
- */
- (__pyx_v_self->sa->arr[__pyx_v_k]) = __pyx_v_tmp;
- goto __pyx_L12;
- }
- __pyx_L12:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":153
- * self.sa.arr[ptail+1] = self.sa.arr[k]
- * self.sa.arr[k] = tmp
- * ptail = ptail + 1 # <<<<<<<<<<<<<<
- *
- * # recursively sort smaller suffixes
- */
- __pyx_v_ptail = (__pyx_v_ptail + 1);
- goto __pyx_L11;
- }
- __pyx_L11:;
- }
- __pyx_L9:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":156
- *
- * # recursively sort smaller suffixes
- * self.q3sort(i, phead-1, h, isa, pad+" ") # <<<<<<<<<<<<<<
- *
- * # update suffixes with pivot value
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyInt_FromLong((__pyx_v_phead - 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyInt_FromLong(__pyx_v_h); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PyTuple_New(5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __Pyx_INCREF(((PyObject *)__pyx_v_isa));
- PyTuple_SET_ITEM(__pyx_t_8, 3, ((PyObject *)__pyx_v_isa));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_isa));
- PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_7);
- __pyx_t_4 = 0;
- __pyx_t_2 = 0;
- __pyx_t_6 = 0;
- __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":160
- * # update suffixes with pivot value
- * # corresponds to update_group function in Larsson & Sadakane
- * for k from phead <= k < ptail+1: # <<<<<<<<<<<<<<
- * isa.arr[self.sa.arr[k]] = ptail
- * if phead == ptail:
- */
- __pyx_t_5 = (__pyx_v_ptail + 1);
- for (__pyx_v_k = __pyx_v_phead; __pyx_v_k < __pyx_t_5; __pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":161
- * # corresponds to update_group function in Larsson & Sadakane
- * for k from phead <= k < ptail+1:
- * isa.arr[self.sa.arr[k]] = ptail # <<<<<<<<<<<<<<
- * if phead == ptail:
- * self.sa.arr[phead] = -1
- */
- (__pyx_v_isa->arr[(__pyx_v_self->sa->arr[__pyx_v_k])]) = __pyx_v_ptail;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":162
- * for k from phead <= k < ptail+1:
- * isa.arr[self.sa.arr[k]] = ptail
- * if phead == ptail: # <<<<<<<<<<<<<<
- * self.sa.arr[phead] = -1
- *
- */
- __pyx_t_1 = ((__pyx_v_phead == __pyx_v_ptail) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":163
- * isa.arr[self.sa.arr[k]] = ptail
- * if phead == ptail:
- * self.sa.arr[phead] = -1 # <<<<<<<<<<<<<<
- *
- * # recursively sort larger suffixes
- */
- (__pyx_v_self->sa->arr[__pyx_v_phead]) = -1;
- goto __pyx_L15;
- }
- __pyx_L15:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":166
- *
- * # recursively sort larger suffixes
- * self.q3sort(ptail+1, j, h, isa, pad+" ") # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PyInt_FromLong((__pyx_v_ptail + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyInt_FromLong(__pyx_v_h); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __Pyx_INCREF(((PyObject *)__pyx_v_isa));
- PyTuple_SET_ITEM(__pyx_t_4, 3, ((PyObject *)__pyx_v_isa));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_isa));
- PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_8 = 0;
- __pyx_t_3 = 0;
- __pyx_t_6 = 0;
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_sa.SuffixArray.q3sort", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_9write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_11SuffixArray_9write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_text (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_8write_text(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":169
- *
- *
- * def write_text(self, char* filename): # <<<<<<<<<<<<<<
- * self.darray.write_text(filename)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_8write_text(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_text", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":170
- *
- * def write_text(self, char* filename):
- * self.darray.write_text(filename) # <<<<<<<<<<<<<<
- *
- * def read_binary(self, char* filename):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->darray), __pyx_n_s__write_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.SuffixArray.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_11read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_11SuffixArray_11read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.read_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_10read_binary(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":172
- * self.darray.write_text(filename)
- *
- * def read_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE *f
- * f = fopen(filename, "r")
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("read_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":174
- * def read_binary(self, char* filename):
- * cdef FILE *f
- * f = fopen(filename, "r") # <<<<<<<<<<<<<<
- * self.darray.read_handle(f)
- * self.sa.read_handle(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":175
- * cdef FILE *f
- * f = fopen(filename, "r")
- * self.darray.read_handle(f) # <<<<<<<<<<<<<<
- * self.sa.read_handle(f)
- * self.ha.read_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->darray->__pyx_vtab)->read_handle(__pyx_v_self->darray, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":176
- * f = fopen(filename, "r")
- * self.darray.read_handle(f)
- * self.sa.read_handle(f) # <<<<<<<<<<<<<<
- * self.ha.read_handle(f)
- * fclose(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sa->__pyx_vtab)->read_handle(__pyx_v_self->sa, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":177
- * self.darray.read_handle(f)
- * self.sa.read_handle(f)
- * self.ha.read_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->ha->__pyx_vtab)->read_handle(__pyx_v_self->ha, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":178
- * self.sa.read_handle(f)
- * self.ha.read_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * def write_binary(self, char* filename):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_11SuffixArray_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.write_binary", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_12write_binary(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":180
- * fclose(f)
- *
- * def write_binary(self, char* filename): # <<<<<<<<<<<<<<
- * cdef FILE* f
- * f = fopen(filename, "w")
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename) {
- FILE *__pyx_v_f;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_binary", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":182
- * def write_binary(self, char* filename):
- * cdef FILE* f
- * f = fopen(filename, "w") # <<<<<<<<<<<<<<
- * self.darray.write_handle(f)
- * self.sa.write_handle(f)
- */
- __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":183
- * cdef FILE* f
- * f = fopen(filename, "w")
- * self.darray.write_handle(f) # <<<<<<<<<<<<<<
- * self.sa.write_handle(f)
- * self.ha.write_handle(f)
- */
- ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->darray->__pyx_vtab)->write_handle(__pyx_v_self->darray, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":184
- * f = fopen(filename, "w")
- * self.darray.write_handle(f)
- * self.sa.write_handle(f) # <<<<<<<<<<<<<<
- * self.ha.write_handle(f)
- * fclose(f)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sa->__pyx_vtab)->write_handle(__pyx_v_self->sa, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":185
- * self.darray.write_handle(f)
- * self.sa.write_handle(f)
- * self.ha.write_handle(f) # <<<<<<<<<<<<<<
- * fclose(f)
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->ha->__pyx_vtab)->write_handle(__pyx_v_self->ha, __pyx_v_f);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":186
- * self.sa.write_handle(f)
- * self.ha.write_handle(f)
- * fclose(f) # <<<<<<<<<<<<<<
- *
- * def write_enhanced(self, char* filename):
- */
- fclose(__pyx_v_f);
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/
-static PyObject *__pyx_pw_3_sa_11SuffixArray_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {
- char *__pyx_v_filename;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);
- assert(__pyx_arg_filename); {
- __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_14write_enhanced(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), ((char *)__pyx_v_filename));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":188
- * fclose(f)
- *
- * def write_enhanced(self, char* filename): # <<<<<<<<<<<<<<
- * with open(filename, "w") as f:
- * self.darray.write_enhanced_handle(f)
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, char *__pyx_v_filename) {
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_a_i = NULL;
- PyObject *__pyx_v_w_i = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("write_enhanced", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":189
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * self.darray.write_enhanced_handle(f)
- * for a_i in self.sa:
- */
- /*with:*/ {
- __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__w));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /*try:*/ {
- {
- __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
- __Pyx_XGOTREF(__pyx_t_5);
- __Pyx_XGOTREF(__pyx_t_6);
- __Pyx_XGOTREF(__pyx_t_7);
- /*try:*/ {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_v_f = __pyx_t_4;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":190
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f:
- * self.darray.write_enhanced_handle(f) # <<<<<<<<<<<<<<
- * for a_i in self.sa:
- * f.write("%d " % a_i)
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->darray), __pyx_n_s_29); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":191
- * with open(filename, "w") as f:
- * self.darray.write_enhanced_handle(f)
- * for a_i in self.sa: # <<<<<<<<<<<<<<
- * f.write("%d " % a_i)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->sa)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->sa))) {
- __pyx_t_2 = ((PyObject *)__pyx_v_self->sa); __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self->sa)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_9(__pyx_t_2);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_a_i);
- __pyx_v_a_i = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":192
- * self.darray.write_enhanced_handle(f)
- * for a_i in self.sa:
- * f.write("%d " % a_i) # <<<<<<<<<<<<<<
- * f.write("\n")
- * for w_i in self.ha:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_a_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_4));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":193
- * for a_i in self.sa:
- * f.write("%d " % a_i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for w_i in self.ha:
- * f.write("%d " % w_i)
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_98), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":194
- * f.write("%d " % a_i)
- * f.write("\n")
- * for w_i in self.ha: # <<<<<<<<<<<<<<
- * f.write("%d " % w_i)
- * f.write("\n")
- */
- if (PyList_CheckExact(((PyObject *)__pyx_v_self->ha)) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->ha))) {
- __pyx_t_4 = ((PyObject *)__pyx_v_self->ha); __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_self->ha)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_9(__pyx_t_4);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_w_i);
- __pyx_v_w_i = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":195
- * f.write("\n")
- * for w_i in self.ha:
- * f.write("%d " % w_i) # <<<<<<<<<<<<<<
- * f.write("\n")
- *
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_w_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_10));
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_10));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_10));
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":196
- * for w_i in self.ha:
- * f.write("%d " % w_i)
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * cdef int __search_high(self, int word_id, int offset, int low, int high):
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_99), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L14_try_end;
- __pyx_L7_error:;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":189
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * self.darray.write_enhanced_handle(f)
- * for a_i in self.sa:
- */
- /*except:*/ {
- __Pyx_AddTraceback("_sa.SuffixArray.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- __pyx_t_13 = ((!(__pyx_t_11 != 0)) != 0);
- if (__pyx_t_13) {
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_ErrRestore(__pyx_t_10, __pyx_t_4, __pyx_t_1);
- __pyx_t_10 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
- goto __pyx_L22;
- }
- __pyx_L22:;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L8_exception_handled;
- }
- __pyx_L9_except_error:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- goto __pyx_L1_error;
- __pyx_L8_exception_handled:;
- __Pyx_XGIVEREF(__pyx_t_5);
- __Pyx_XGIVEREF(__pyx_t_6);
- __Pyx_XGIVEREF(__pyx_t_7);
- __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
- __pyx_L14_try_end:;
- }
- }
- /*finally:*/ {
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_100, NULL);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_13 < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- goto __pyx_L23;
- __pyx_L3_error:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L1_error;
- __pyx_L23:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_sa.SuffixArray.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_a_i);
- __Pyx_XDECREF(__pyx_v_w_i);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":198
- * f.write("\n")
- *
- * cdef int __search_high(self, int word_id, int offset, int low, int high): # <<<<<<<<<<<<<<
- * cdef int midpoint
- *
- */
-
-static int __pyx_f_3_sa_11SuffixArray___search_high(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, int __pyx_v_word_id, int __pyx_v_offset, int __pyx_v_low, int __pyx_v_high) {
- int __pyx_v_midpoint;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("__search_high", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":201
- * cdef int midpoint
- *
- * if low >= high: # <<<<<<<<<<<<<<
- * return high
- * midpoint = (high + low) / 2
- */
- __pyx_t_1 = ((__pyx_v_low >= __pyx_v_high) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":202
- *
- * if low >= high:
- * return high # <<<<<<<<<<<<<<
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- */
- __pyx_r = __pyx_v_high;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":203
- * if low >= high:
- * return high
- * midpoint = (high + low) / 2 # <<<<<<<<<<<<<<
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- * return self.__search_high(word_id, offset, midpoint+1, high)
- */
- __pyx_v_midpoint = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":204
- * return high
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id: # <<<<<<<<<<<<<<
- * return self.__search_high(word_id, offset, midpoint+1, high)
- * else:
- */
- __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":205
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- * return self.__search_high(word_id, offset, midpoint+1, high) # <<<<<<<<<<<<<<
- * else:
- * return self.__search_high(word_id, offset, low, midpoint)
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___search_high(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, (__pyx_v_midpoint + 1), __pyx_v_high);
- goto __pyx_L0;
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":207
- * return self.__search_high(word_id, offset, midpoint+1, high)
- * else:
- * return self.__search_high(word_id, offset, low, midpoint) # <<<<<<<<<<<<<<
- *
- * cdef int __search_low(self, int word_id, int offset, int low, int high):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___search_high(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, __pyx_v_low, __pyx_v_midpoint);
- goto __pyx_L0;
- }
- __pyx_L4:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":209
- * return self.__search_high(word_id, offset, low, midpoint)
- *
- * cdef int __search_low(self, int word_id, int offset, int low, int high): # <<<<<<<<<<<<<<
- * cdef int midpoint
- *
- */
-
-static int __pyx_f_3_sa_11SuffixArray___search_low(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, int __pyx_v_word_id, int __pyx_v_offset, int __pyx_v_low, int __pyx_v_high) {
- int __pyx_v_midpoint;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("__search_low", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":212
- * cdef int midpoint
- *
- * if low >= high: # <<<<<<<<<<<<<<
- * return high
- * midpoint = (high + low) / 2
- */
- __pyx_t_1 = ((__pyx_v_low >= __pyx_v_high) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":213
- *
- * if low >= high:
- * return high # <<<<<<<<<<<<<<
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- */
- __pyx_r = __pyx_v_high;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":214
- * if low >= high:
- * return high
- * midpoint = (high + low) / 2 # <<<<<<<<<<<<<<
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- * return self.__search_low(word_id, offset, low, midpoint)
- */
- __pyx_v_midpoint = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":215
- * return high
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id: # <<<<<<<<<<<<<<
- * return self.__search_low(word_id, offset, low, midpoint)
- * else:
- */
- __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":216
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- * return self.__search_low(word_id, offset, low, midpoint) # <<<<<<<<<<<<<<
- * else:
- * return self.__search_low(word_id, offset, midpoint+1, high)
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___search_low(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, __pyx_v_low, __pyx_v_midpoint);
- goto __pyx_L0;
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":218
- * return self.__search_low(word_id, offset, low, midpoint)
- * else:
- * return self.__search_low(word_id, offset, midpoint+1, high) # <<<<<<<<<<<<<<
- *
- * cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint):
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___search_low(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, (__pyx_v_midpoint + 1), __pyx_v_high);
- goto __pyx_L0;
- }
- __pyx_L4:;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":220
- * return self.__search_low(word_id, offset, midpoint+1, high)
- *
- * cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint): # <<<<<<<<<<<<<<
- * return (self.__search_low(word_id, offset, low, midpoint),
- * self.__search_high(word_id, offset, midpoint, high))
- */
-
-static PyObject *__pyx_f_3_sa_11SuffixArray___get_range(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, int __pyx_v_word_id, int __pyx_v_offset, int __pyx_v_low, int __pyx_v_high, int __pyx_v_midpoint) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get_range", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":221
- *
- * cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint):
- * return (self.__search_low(word_id, offset, low, midpoint), # <<<<<<<<<<<<<<
- * self.__search_high(word_id, offset, midpoint, high))
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___search_low(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, __pyx_v_low, __pyx_v_midpoint)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":222
- * cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint):
- * return (self.__search_low(word_id, offset, low, midpoint),
- * self.__search_high(word_id, offset, midpoint, high)) # <<<<<<<<<<<<<<
- *
- * cdef __lookup_helper(self, int word_id, int offset, int low, int high):
- */
- __pyx_t_2 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___search_high(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, __pyx_v_midpoint, __pyx_v_high)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_r = ((PyObject *)__pyx_t_3);
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.SuffixArray.__get_range", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":224
- * self.__search_high(word_id, offset, midpoint, high))
- *
- * cdef __lookup_helper(self, int word_id, int offset, int low, int high): # <<<<<<<<<<<<<<
- * cdef int midpoint
- *
- */
-
-static PyObject *__pyx_f_3_sa_11SuffixArray___lookup_helper(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, int __pyx_v_word_id, int __pyx_v_offset, int __pyx_v_low, int __pyx_v_high) {
- int __pyx_v_midpoint;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__lookup_helper", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":227
- * cdef int midpoint
- *
- * if offset == 0: # <<<<<<<<<<<<<<
- * return (self.ha.arr[word_id], self.ha.arr[word_id+1])
- * if low >= high:
- */
- __pyx_t_1 = ((__pyx_v_offset == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":228
- *
- * if offset == 0:
- * return (self.ha.arr[word_id], self.ha.arr[word_id+1]) # <<<<<<<<<<<<<<
- * if low >= high:
- * return None
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyInt_FromLong((__pyx_v_self->ha->arr[__pyx_v_word_id])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyInt_FromLong((__pyx_v_self->ha->arr[(__pyx_v_word_id + 1)])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_2 = 0;
- __pyx_t_3 = 0;
- __pyx_r = ((PyObject *)__pyx_t_4);
- __pyx_t_4 = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":229
- * if offset == 0:
- * return (self.ha.arr[word_id], self.ha.arr[word_id+1])
- * if low >= high: # <<<<<<<<<<<<<<
- * return None
- *
- */
- __pyx_t_1 = ((__pyx_v_low >= __pyx_v_high) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":230
- * return (self.ha.arr[word_id], self.ha.arr[word_id+1])
- * if low >= high:
- * return None # <<<<<<<<<<<<<<
- *
- * midpoint = (high + low) / 2
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":232
- * return None
- *
- * midpoint = (high + low) / 2 # <<<<<<<<<<<<<<
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- * return self.__get_range(word_id, offset, low, high, midpoint)
- */
- __pyx_v_midpoint = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":233
- *
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id: # <<<<<<<<<<<<<<
- * return self.__get_range(word_id, offset, low, high, midpoint)
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id:
- */
- __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":234
- * midpoint = (high + low) / 2
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- * return self.__get_range(word_id, offset, low, high, midpoint) # <<<<<<<<<<<<<<
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id:
- * return self.__lookup_helper(word_id, offset, low, midpoint)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___get_range(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, __pyx_v_low, __pyx_v_high, __pyx_v_midpoint); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":235
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- * return self.__get_range(word_id, offset, low, high, midpoint)
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id: # <<<<<<<<<<<<<<
- * return self.__lookup_helper(word_id, offset, low, midpoint)
- * else:
- */
- __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) > __pyx_v_word_id) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":236
- * return self.__get_range(word_id, offset, low, high, midpoint)
- * if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id:
- * return self.__lookup_helper(word_id, offset, low, midpoint) # <<<<<<<<<<<<<<
- * else:
- * return self.__lookup_helper(word_id, offset, midpoint+1, high)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___lookup_helper(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, __pyx_v_low, __pyx_v_midpoint); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":238
- * return self.__lookup_helper(word_id, offset, low, midpoint)
- * else:
- * return self.__lookup_helper(word_id, offset, midpoint+1, high) # <<<<<<<<<<<<<<
- *
- * def lookup(self, word, int offset, int low, int high):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___lookup_helper(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, (__pyx_v_midpoint + 1), __pyx_v_high); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- }
- __pyx_L6:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.SuffixArray.__lookup_helper", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_11SuffixArray_17lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_11SuffixArray_17lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_word = 0;
- int __pyx_v_offset;
- int __pyx_v_low;
- int __pyx_v_high;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lookup (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__word,&__pyx_n_s__offset,&__pyx_n_s__low,&__pyx_n_s__high,0};
- PyObject* values[4] = {0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__low)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 2); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__high)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 3); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lookup") < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- }
- __pyx_v_word = values[0];
- __pyx_v_offset = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_offset == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_low = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_high = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_high == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.SuffixArray.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_11SuffixArray_16lookup(((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_self), __pyx_v_word, __pyx_v_offset, __pyx_v_low, __pyx_v_high);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":240
- * return self.__lookup_helper(word_id, offset, midpoint+1, high)
- *
- * def lookup(self, word, int offset, int low, int high): # <<<<<<<<<<<<<<
- * cdef int wordid
- * if low == -1:
- */
-
-static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_SuffixArray *__pyx_v_self, PyObject *__pyx_v_word, int __pyx_v_offset, int __pyx_v_low, int __pyx_v_high) {
- PyObject *__pyx_v_word_id = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lookup", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":242
- * def lookup(self, word, int offset, int low, int high):
- * cdef int wordid
- * if low == -1: # <<<<<<<<<<<<<<
- * low = 0
- * if high == -1:
- */
- __pyx_t_1 = ((__pyx_v_low == -1) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":243
- * cdef int wordid
- * if low == -1:
- * low = 0 # <<<<<<<<<<<<<<
- * if high == -1:
- * high = len(self.sa)
- */
- __pyx_v_low = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":244
- * if low == -1:
- * low = 0
- * if high == -1: # <<<<<<<<<<<<<<
- * high = len(self.sa)
- * if word in self.darray.word2id:
- */
- __pyx_t_1 = ((__pyx_v_high == -1) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":245
- * low = 0
- * if high == -1:
- * high = len(self.sa) # <<<<<<<<<<<<<<
- * if word in self.darray.word2id:
- * word_id = self.darray.word2id[word]
- */
- __pyx_t_2 = ((PyObject *)__pyx_v_self->sa);
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_high = __pyx_t_3;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":246
- * if high == -1:
- * high = len(self.sa)
- * if word in self.darray.word2id: # <<<<<<<<<<<<<<
- * word_id = self.darray.word2id[word]
- * return self.__lookup_helper(word_id, offset, low, high)
- */
- __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_word, __pyx_v_self->darray->word2id, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = (__pyx_t_1 != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":247
- * high = len(self.sa)
- * if word in self.darray.word2id:
- * word_id = self.darray.word2id[word] # <<<<<<<<<<<<<<
- * return self.__lookup_helper(word_id, offset, low, high)
- * else:
- */
- __pyx_t_2 = PyObject_GetItem(__pyx_v_self->darray->word2id, __pyx_v_word); if (!__pyx_t_2) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_v_word_id = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":248
- * if word in self.darray.word2id:
- * word_id = self.darray.word2id[word]
- * return self.__lookup_helper(word_id, offset, low, high) # <<<<<<<<<<<<<<
- * else:
- * return None
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_word_id); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___lookup_helper(__pyx_v_self, __pyx_t_5, __pyx_v_offset, __pyx_v_low, __pyx_v_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":250
- * return self.__lookup_helper(word_id, offset, low, high)
- * else:
- * return None # <<<<<<<<<<<<<<
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
- }
- __pyx_L5:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.SuffixArray.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_word_id);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_8TrieNode_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_8TrieNode_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
- __pyx_r = __pyx_pf_3_sa_8TrieNode___cinit__(((struct __pyx_obj_3_sa_TrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":49
- * cdef public children
- *
- * def __cinit__(self): # <<<<<<<<<<<<<<
- * self.children = {}
- *
- */
-
-static int __pyx_pf_3_sa_8TrieNode___cinit__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":50
- *
- * def __cinit__(self):
- * self.children = {} # <<<<<<<<<<<<<<
- *
- * cdef class ExtendedTrieNode(TrieNode):
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __Pyx_GOTREF(__pyx_v_self->children);
- __Pyx_DECREF(__pyx_v_self->children);
- __pyx_v_self->children = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.TrieNode.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_8TrieNode_8children_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_8TrieNode_8children_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_8TrieNode_8children___get__(((struct __pyx_obj_3_sa_TrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":47
- *
- * cdef class TrieNode:
- * cdef public children # <<<<<<<<<<<<<<
- *
- * def __cinit__(self):
- */
-
-static PyObject *__pyx_pf_3_sa_8TrieNode_8children___get__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->children);
- __pyx_r = __pyx_v_self->children;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_8TrieNode_8children_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_8TrieNode_8children_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_8TrieNode_8children_2__set__(((struct __pyx_obj_3_sa_TrieNode *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_8TrieNode_8children_2__set__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->children);
- __Pyx_DECREF(__pyx_v_self->children);
- __pyx_v_self->children = __pyx_v_value;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_8TrieNode_8children_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_8TrieNode_8children_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_8TrieNode_8children_4__del__(((struct __pyx_obj_3_sa_TrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_8TrieNode_8children_4__del__(struct __pyx_obj_3_sa_TrieNode *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->children);
- __Pyx_DECREF(__pyx_v_self->children);
- __pyx_v_self->children = Py_None;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_16ExtendedTrieNode_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_16ExtendedTrieNode_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_phrase = 0;
- PyObject *__pyx_v_phrase_location = 0;
- PyObject *__pyx_v_suffix_link = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__phrase,&__pyx_n_s__phrase_location,&__pyx_n_s__suffix_link,0};
- PyObject* values[3] = {0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":57
- * cdef public suffix_link
- *
- * def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None): # <<<<<<<<<<<<<<
- * self.phrase = phrase
- * self.phrase_location = phrase_location
- */
- values[0] = ((PyObject *)Py_None);
- values[1] = ((PyObject *)Py_None);
- values[2] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__phrase);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__phrase_location);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__suffix_link);
- if (value) { values[2] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_phrase = values[0];
- __pyx_v_phrase_location = values[1];
- __pyx_v_suffix_link = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.ExtendedTrieNode.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode___cinit__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self), __pyx_v_phrase, __pyx_v_phrase_location, __pyx_v_suffix_link);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_16ExtendedTrieNode___cinit__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_phrase, PyObject *__pyx_v_phrase_location, PyObject *__pyx_v_suffix_link) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":58
- *
- * def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None):
- * self.phrase = phrase # <<<<<<<<<<<<<<
- * self.phrase_location = phrase_location
- * self.suffix_link = suffix_link
- */
- __Pyx_INCREF(__pyx_v_phrase);
- __Pyx_GIVEREF(__pyx_v_phrase);
- __Pyx_GOTREF(__pyx_v_self->phrase);
- __Pyx_DECREF(__pyx_v_self->phrase);
- __pyx_v_self->phrase = __pyx_v_phrase;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":59
- * def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None):
- * self.phrase = phrase
- * self.phrase_location = phrase_location # <<<<<<<<<<<<<<
- * self.suffix_link = suffix_link
- *
- */
- __Pyx_INCREF(__pyx_v_phrase_location);
- __Pyx_GIVEREF(__pyx_v_phrase_location);
- __Pyx_GOTREF(__pyx_v_self->phrase_location);
- __Pyx_DECREF(__pyx_v_self->phrase_location);
- __pyx_v_self->phrase_location = __pyx_v_phrase_location;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":60
- * self.phrase = phrase
- * self.phrase_location = phrase_location
- * self.suffix_link = suffix_link # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_INCREF(__pyx_v_suffix_link);
- __Pyx_GIVEREF(__pyx_v_suffix_link);
- __Pyx_GOTREF(__pyx_v_self->suffix_link);
- __Pyx_DECREF(__pyx_v_self->suffix_link);
- __pyx_v_self->suffix_link = __pyx_v_suffix_link;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_6phrase_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_6phrase_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_6phrase___get__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":53
- *
- * cdef class ExtendedTrieNode(TrieNode):
- * cdef public phrase # <<<<<<<<<<<<<<
- * cdef public phrase_location
- * cdef public suffix_link
- */
-
-static PyObject *__pyx_pf_3_sa_16ExtendedTrieNode_6phrase___get__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->phrase);
- __pyx_r = __pyx_v_self->phrase;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_6phrase_2__set__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_16ExtendedTrieNode_6phrase_2__set__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->phrase);
- __Pyx_DECREF(__pyx_v_self->phrase);
- __pyx_v_self->phrase = __pyx_v_value;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_6phrase_4__del__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_16ExtendedTrieNode_6phrase_4__del__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->phrase);
- __Pyx_DECREF(__pyx_v_self->phrase);
- __pyx_v_self->phrase = Py_None;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location___get__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":54
- * cdef class ExtendedTrieNode(TrieNode):
- * cdef public phrase
- * cdef public phrase_location # <<<<<<<<<<<<<<
- * cdef public suffix_link
- *
- */
-
-static PyObject *__pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location___get__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->phrase_location);
- __pyx_r = __pyx_v_self->phrase_location;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location_2__set__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location_2__set__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->phrase_location);
- __Pyx_DECREF(__pyx_v_self->phrase_location);
- __pyx_v_self->phrase_location = __pyx_v_value;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location_4__del__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_16ExtendedTrieNode_15phrase_location_4__del__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->phrase_location);
- __Pyx_DECREF(__pyx_v_self->phrase_location);
- __pyx_v_self->phrase_location = Py_None;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link___get__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":55
- * cdef public phrase
- * cdef public phrase_location
- * cdef public suffix_link # <<<<<<<<<<<<<<
- *
- * def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None):
- */
-
-static PyObject *__pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link___get__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->suffix_link);
- __pyx_r = __pyx_v_self->suffix_link;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link_2__set__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link_2__set__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->suffix_link);
- __Pyx_DECREF(__pyx_v_self->suffix_link);
- __pyx_v_self->suffix_link = __pyx_v_value;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link_4__del__(((struct __pyx_obj_3_sa_ExtendedTrieNode *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link_4__del__(struct __pyx_obj_3_sa_ExtendedTrieNode *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->suffix_link);
- __Pyx_DECREF(__pyx_v_self->suffix_link);
- __pyx_v_self->suffix_link = Py_None;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9TrieTable_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_9TrieTable_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_extended = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__extended,0};
- PyObject* values[1] = {0};
- values[0] = __pyx_k_101;
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extended);
- if (value) { values[0] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_extended = values[0];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.TrieTable.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_9TrieTable___cinit__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self), __pyx_v_extended);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":67
- * cdef public int count
- * cdef public root
- * def __cinit__(self, extended=False): # <<<<<<<<<<<<<<
- * self.count = 0
- * self.extended = extended
- */
-
-static int __pyx_pf_3_sa_9TrieTable___cinit__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_extended) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":68
- * cdef public root
- * def __cinit__(self, extended=False):
- * self.count = 0 # <<<<<<<<<<<<<<
- * self.extended = extended
- * if extended:
- */
- __pyx_v_self->count = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":69
- * def __cinit__(self, extended=False):
- * self.count = 0
- * self.extended = extended # <<<<<<<<<<<<<<
- * if extended:
- * self.root = ExtendedTrieNode()
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_extended); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->extended = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":70
- * self.count = 0
- * self.extended = extended
- * if extended: # <<<<<<<<<<<<<<
- * self.root = ExtendedTrieNode()
- * else:
- */
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_extended); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":71
- * self.extended = extended
- * if extended:
- * self.root = ExtendedTrieNode() # <<<<<<<<<<<<<<
- * else:
- * self.root = TrieNode()
- */
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->root);
- __Pyx_DECREF(__pyx_v_self->root);
- __pyx_v_self->root = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":73
- * self.root = ExtendedTrieNode()
- * else:
- * self.root = TrieNode() # <<<<<<<<<<<<<<
- *
- * # linked list structure for storing matches in BaselineRuleFactory
- */
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_TrieNode)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->root);
- __Pyx_DECREF(__pyx_v_self->root);
- __pyx_v_self->root = __pyx_t_3;
- __pyx_t_3 = 0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.TrieTable.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9TrieTable_8extended_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9TrieTable_8extended_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9TrieTable_8extended___get__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":64
- *
- * cdef class TrieTable:
- * cdef public int extended # <<<<<<<<<<<<<<
- * cdef public int count
- * cdef public root
- */
-
-static PyObject *__pyx_pf_3_sa_9TrieTable_8extended___get__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->extended); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.TrieTable.extended.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9TrieTable_8extended_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9TrieTable_8extended_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9TrieTable_8extended_2__set__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9TrieTable_8extended_2__set__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->extended = __pyx_t_1;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.TrieTable.extended.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9TrieTable_5count_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9TrieTable_5count_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9TrieTable_5count___get__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":65
- * cdef class TrieTable:
- * cdef public int extended
- * cdef public int count # <<<<<<<<<<<<<<
- * cdef public root
- * def __cinit__(self, extended=False):
- */
-
-static PyObject *__pyx_pf_3_sa_9TrieTable_5count___get__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.TrieTable.count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9TrieTable_5count_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9TrieTable_5count_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9TrieTable_5count_2__set__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9TrieTable_5count_2__set__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__set__", 0);
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->count = __pyx_t_1;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.TrieTable.count.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_9TrieTable_4root_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_9TrieTable_4root_1__get__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9TrieTable_4root___get__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":66
- * cdef public int extended
- * cdef public int count
- * cdef public root # <<<<<<<<<<<<<<
- * def __cinit__(self, extended=False):
- * self.count = 0
- */
-
-static PyObject *__pyx_pf_3_sa_9TrieTable_4root___get__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__get__", 0);
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_self->root);
- __pyx_r = __pyx_v_self->root;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9TrieTable_4root_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_3_sa_9TrieTable_4root_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9TrieTable_4root_2__set__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self), ((PyObject *)__pyx_v_value));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9TrieTable_4root_2__set__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self, PyObject *__pyx_v_value) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__set__", 0);
- __Pyx_INCREF(__pyx_v_value);
- __Pyx_GIVEREF(__pyx_v_value);
- __Pyx_GOTREF(__pyx_v_self->root);
- __Pyx_DECREF(__pyx_v_self->root);
- __pyx_v_self->root = __pyx_v_value;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_9TrieTable_4root_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_3_sa_9TrieTable_4root_5__del__(PyObject *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_9TrieTable_4root_4__del__(((struct __pyx_obj_3_sa_TrieTable *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static int __pyx_pf_3_sa_9TrieTable_4root_4__del__(struct __pyx_obj_3_sa_TrieTable *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__del__", 0);
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_GOTREF(__pyx_v_self->root);
- __Pyx_DECREF(__pyx_v_self->root);
- __pyx_v_self->root = Py_None;
-
- __pyx_r = 0;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":93
- *
- * # returns true if sent_id is contained
- * cdef int contains(self, int sent_id): # <<<<<<<<<<<<<<
- * return 1
- *
- */
-
-static int __pyx_f_3_sa_14PhraseLocation_contains(CYTHON_UNUSED struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_self, CYTHON_UNUSED int __pyx_v_sent_id) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("contains", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":94
- * # returns true if sent_id is contained
- * cdef int contains(self, int sent_id):
- * return 1 # <<<<<<<<<<<<<<
- *
- * def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1,
- */
- __pyx_r = 1;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_14PhraseLocation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_14PhraseLocation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_sa_low;
- int __pyx_v_sa_high;
- int __pyx_v_arr_low;
- int __pyx_v_arr_high;
- PyObject *__pyx_v_arr = 0;
- int __pyx_v_num_subpatterns;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sa_low,&__pyx_n_s__sa_high,&__pyx_n_s__arr_low,&__pyx_n_s__arr_high,&__pyx_n_s__arr,&__pyx_n_s__num_subpatterns,0};
- PyObject* values[6] = {0,0,0,0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":97
- *
- * def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1,
- * arr=None, int num_subpatterns=1): # <<<<<<<<<<<<<<
- * self.sa_low = sa_low
- * self.sa_high = sa_high
- */
- values[4] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sa_low);
- if (value) { values[0] = value; kw_args--; }
- }
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sa_high);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr_low);
- if (value) { values[2] = value; kw_args--; }
- }
- case 3:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr_high);
- if (value) { values[3] = value; kw_args--; }
- }
- case 4:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr);
- if (value) { values[4] = value; kw_args--; }
- }
- case 5:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__num_subpatterns);
- if (value) { values[5] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- if (values[0]) {
- __pyx_v_sa_low = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_sa_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_sa_low = ((int)-1);
- }
- if (values[1]) {
- __pyx_v_sa_high = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_sa_high == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_sa_high = ((int)-1);
- }
- if (values[2]) {
- __pyx_v_arr_low = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_arr_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_arr_low = ((int)-1);
- }
- if (values[3]) {
- __pyx_v_arr_high = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_arr_high == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_arr_high = ((int)-1);
- }
- __pyx_v_arr = values[4];
- if (values[5]) {
- __pyx_v_num_subpatterns = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_num_subpatterns == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_num_subpatterns = ((int)1);
- }
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.PhraseLocation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_14PhraseLocation___cinit__(((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_v_self), __pyx_v_sa_low, __pyx_v_sa_high, __pyx_v_arr_low, __pyx_v_arr_high, __pyx_v_arr, __pyx_v_num_subpatterns);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":96
- * return 1
- *
- * def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1, # <<<<<<<<<<<<<<
- * arr=None, int num_subpatterns=1):
- * self.sa_low = sa_low
- */
-
-static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_self, int __pyx_v_sa_low, int __pyx_v_sa_high, int __pyx_v_arr_low, int __pyx_v_arr_high, PyObject *__pyx_v_arr, int __pyx_v_num_subpatterns) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":98
- * def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1,
- * arr=None, int num_subpatterns=1):
- * self.sa_low = sa_low # <<<<<<<<<<<<<<
- * self.sa_high = sa_high
- * self.arr_low = arr_low
- */
- __pyx_v_self->sa_low = __pyx_v_sa_low;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":99
- * arr=None, int num_subpatterns=1):
- * self.sa_low = sa_low
- * self.sa_high = sa_high # <<<<<<<<<<<<<<
- * self.arr_low = arr_low
- * self.arr_high = arr_high
- */
- __pyx_v_self->sa_high = __pyx_v_sa_high;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":100
- * self.sa_low = sa_low
- * self.sa_high = sa_high
- * self.arr_low = arr_low # <<<<<<<<<<<<<<
- * self.arr_high = arr_high
- * self.arr = arr
- */
- __pyx_v_self->arr_low = __pyx_v_arr_low;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":101
- * self.sa_high = sa_high
- * self.arr_low = arr_low
- * self.arr_high = arr_high # <<<<<<<<<<<<<<
- * self.arr = arr
- * self.num_subpatterns = num_subpatterns
- */
- __pyx_v_self->arr_high = __pyx_v_arr_high;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":102
- * self.arr_low = arr_low
- * self.arr_high = arr_high
- * self.arr = arr # <<<<<<<<<<<<<<
- * self.num_subpatterns = num_subpatterns
- *
- */
- if (!(likely(((__pyx_v_arr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_arr, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_INCREF(__pyx_v_arr);
- __Pyx_GIVEREF(__pyx_v_arr);
- __Pyx_GOTREF(__pyx_v_self->arr);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->arr));
- __pyx_v_self->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_v_arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":103
- * self.arr_high = arr_high
- * self.arr = arr
- * self.num_subpatterns = num_subpatterns # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_v_self->num_subpatterns = __pyx_v_num_subpatterns;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.PhraseLocation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_7Sampler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_7Sampler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_v_sample_size;
- struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sample_size,&__pyx_n_s__fsarray,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sample_size)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_sample_size = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_sample_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_fsarray = ((struct __pyx_obj_3_sa_SuffixArray *)values[1]);
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.Sampler.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fsarray), __pyx_ptype_3_sa_SuffixArray, 1, "fsarray", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_7Sampler___cinit__(((struct __pyx_obj_3_sa_Sampler *)__pyx_v_self), __pyx_v_sample_size, __pyx_v_fsarray);
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":113
- * cdef IntList sa
- *
- * def __cinit__(self, int sample_size, SuffixArray fsarray): # <<<<<<<<<<<<<<
- * self.sample_size = sample_size
- * self.sa = fsarray.sa
- */
-
-static int __pyx_pf_3_sa_7Sampler___cinit__(struct __pyx_obj_3_sa_Sampler *__pyx_v_self, int __pyx_v_sample_size, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":114
- *
- * def __cinit__(self, int sample_size, SuffixArray fsarray):
- * self.sample_size = sample_size # <<<<<<<<<<<<<<
- * self.sa = fsarray.sa
- * if sample_size > 0:
- */
- __pyx_v_self->sample_size = __pyx_v_sample_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":115
- * def __cinit__(self, int sample_size, SuffixArray fsarray):
- * self.sample_size = sample_size
- * self.sa = fsarray.sa # <<<<<<<<<<<<<<
- * if sample_size > 0:
- * logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_fsarray->sa);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->sa);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sa));
- __pyx_v_self->sa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":116
- * self.sample_size = sample_size
- * self.sa = fsarray.sa
- * if sample_size > 0: # <<<<<<<<<<<<<<
- * logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)
- * else:
- */
- __pyx_t_2 = ((__pyx_v_sample_size > 0) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":117
- * self.sa = fsarray.sa
- * if sample_size > 0:
- * logger.info("Sampling strategy: uniform, max sample size = %d", sample_size) # <<<<<<<<<<<<<<
- * else:
- * logger.info("Sampling strategy: no sampling")
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong(__pyx_v_sample_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_102));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_102));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_102));
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":119
- * logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)
- * else:
- * logger.info("Sampling strategy: no sampling") # <<<<<<<<<<<<<<
- *
- * def sample(self, PhraseLocation phrase_location):
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_104), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __pyx_L3:;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.Sampler.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_7Sampler_3sample(PyObject *__pyx_v_self, PyObject *__pyx_v_phrase_location); /*proto*/
-static char __pyx_doc_3_sa_7Sampler_2sample[] = "Returns a sample of the locations for\n the phrase. If there are less than self.sample_size\n locations, return all of them; otherwise, return\n up to self.sample_size locations. In the latter case,\n we choose to sample UNIFORMLY -- that is, the locations\n are chosen at uniform intervals over the entire set, rather\n than randomly. This makes the algorithm deterministic, which\n is good for things like MERT";
-static PyObject *__pyx_pw_3_sa_7Sampler_3sample(PyObject *__pyx_v_self, PyObject *__pyx_v_phrase_location) {
- CYTHON_UNUSED int __pyx_lineno = 0;
- CYTHON_UNUSED const char *__pyx_filename = NULL;
- CYTHON_UNUSED int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("sample (wrapper)", 0);
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_phrase_location), __pyx_ptype_3_sa_PhraseLocation, 1, "phrase_location", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_7Sampler_2sample(((struct __pyx_obj_3_sa_Sampler *)__pyx_v_self), ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_v_phrase_location));
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":121
- * logger.info("Sampling strategy: no sampling")
- *
- * def sample(self, PhraseLocation phrase_location): # <<<<<<<<<<<<<<
- * '''Returns a sample of the locations for
- * the phrase. If there are less than self.sample_size
- */
-
-static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *__pyx_v_self, struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_phrase_location) {
- struct __pyx_obj_3_sa_IntList *__pyx_v_sample = 0;
- double __pyx_v_i;
- double __pyx_v_stepsize;
- int __pyx_v_num_locations;
- int __pyx_v_val;
- int __pyx_v_j;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("sample", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":134
- * cdef int num_locations, val, j
- *
- * sample = IntList() # <<<<<<<<<<<<<<
- * if phrase_location.arr is None:
- * num_locations = phrase_location.sa_high - phrase_location.sa_low
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_sample = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":135
- *
- * sample = IntList()
- * if phrase_location.arr is None: # <<<<<<<<<<<<<<
- * num_locations = phrase_location.sa_high - phrase_location.sa_low
- * if self.sample_size == -1 or num_locations <= self.sample_size:
- */
- __pyx_t_2 = (((PyObject *)__pyx_v_phrase_location->arr) == Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":136
- * sample = IntList()
- * if phrase_location.arr is None:
- * num_locations = phrase_location.sa_high - phrase_location.sa_low # <<<<<<<<<<<<<<
- * if self.sample_size == -1 or num_locations <= self.sample_size:
- * sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations)
- */
- __pyx_v_num_locations = (__pyx_v_phrase_location->sa_high - __pyx_v_phrase_location->sa_low);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":137
- * if phrase_location.arr is None:
- * num_locations = phrase_location.sa_high - phrase_location.sa_low
- * if self.sample_size == -1 or num_locations <= self.sample_size: # <<<<<<<<<<<<<<
- * sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations)
- * else:
- */
- __pyx_t_3 = ((__pyx_v_self->sample_size == -1) != 0);
- if (!__pyx_t_3) {
- __pyx_t_2 = ((__pyx_v_num_locations <= __pyx_v_self->sample_size) != 0);
- __pyx_t_4 = __pyx_t_2;
- } else {
- __pyx_t_4 = __pyx_t_3;
- }
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":138
- * num_locations = phrase_location.sa_high - phrase_location.sa_low
- * if self.sample_size == -1 or num_locations <= self.sample_size:
- * sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations) # <<<<<<<<<<<<<<
- * else:
- * stepsize = float(num_locations)/float(self.sample_size)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_sample->__pyx_vtab)->_extend_arr(__pyx_v_sample, (__pyx_v_self->sa->arr + __pyx_v_phrase_location->sa_low), __pyx_v_num_locations);
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":140
- * sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations)
- * else:
- * stepsize = float(num_locations)/float(self.sample_size) # <<<<<<<<<<<<<<
- * i = phrase_location.sa_low
- * while i < phrase_location.sa_high and sample.len < self.sample_size:
- */
- if (unlikely(((double)__pyx_v_self->sample_size) == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_stepsize = (((double)__pyx_v_num_locations) / ((double)__pyx_v_self->sample_size));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":141
- * else:
- * stepsize = float(num_locations)/float(self.sample_size)
- * i = phrase_location.sa_low # <<<<<<<<<<<<<<
- * while i < phrase_location.sa_high and sample.len < self.sample_size:
- * '''Note: int(i) not guaranteed to have the desired
- */
- __pyx_t_5 = __pyx_v_phrase_location->sa_low;
- __pyx_v_i = __pyx_t_5;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":142
- * stepsize = float(num_locations)/float(self.sample_size)
- * i = phrase_location.sa_low
- * while i < phrase_location.sa_high and sample.len < self.sample_size: # <<<<<<<<<<<<<<
- * '''Note: int(i) not guaranteed to have the desired
- * effect, according to the python documentation'''
- */
- while (1) {
- __pyx_t_4 = ((__pyx_v_i < __pyx_v_phrase_location->sa_high) != 0);
- if (__pyx_t_4) {
- __pyx_t_3 = ((__pyx_v_sample->len < __pyx_v_self->sample_size) != 0);
- __pyx_t_2 = __pyx_t_3;
- } else {
- __pyx_t_2 = __pyx_t_4;
- }
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":145
- * '''Note: int(i) not guaranteed to have the desired
- * effect, according to the python documentation'''
- * if fmod(i,1.0) > 0.5: # <<<<<<<<<<<<<<
- * val = int(ceil(i))
- * else:
- */
- __pyx_t_2 = ((fmod(__pyx_v_i, 1.0) > 0.5) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":146
- * effect, according to the python documentation'''
- * if fmod(i,1.0) > 0.5:
- * val = int(ceil(i)) # <<<<<<<<<<<<<<
- * else:
- * val = int(floor(i))
- */
- __pyx_v_val = ((int)ceil(__pyx_v_i));
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":148
- * val = int(ceil(i))
- * else:
- * val = int(floor(i)) # <<<<<<<<<<<<<<
- * sample._append(self.sa.arr[val])
- * i = i + stepsize
- */
- __pyx_v_val = ((int)floor(__pyx_v_i));
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":149
- * else:
- * val = int(floor(i))
- * sample._append(self.sa.arr[val]) # <<<<<<<<<<<<<<
- * i = i + stepsize
- * else:
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_sample->__pyx_vtab)->_append(__pyx_v_sample, (__pyx_v_self->sa->arr[__pyx_v_val]));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":150
- * val = int(floor(i))
- * sample._append(self.sa.arr[val])
- * i = i + stepsize # <<<<<<<<<<<<<<
- * else:
- * num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns
- */
- __pyx_v_i = (__pyx_v_i + __pyx_v_stepsize);
- }
- }
- __pyx_L4:;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":152
- * i = i + stepsize
- * else:
- * num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns # <<<<<<<<<<<<<<
- * if self.sample_size == -1 or num_locations <= self.sample_size:
- * sample = phrase_location.arr
- */
- __pyx_t_5 = (__pyx_v_phrase_location->arr_high - __pyx_v_phrase_location->arr_low);
- if (unlikely(__pyx_v_phrase_location->num_subpatterns == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_phrase_location->num_subpatterns == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_5))) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_OverflowError, "value too large to perform division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_num_locations = __Pyx_div_int(__pyx_t_5, __pyx_v_phrase_location->num_subpatterns);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":153
- * else:
- * num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns
- * if self.sample_size == -1 or num_locations <= self.sample_size: # <<<<<<<<<<<<<<
- * sample = phrase_location.arr
- * else:
- */
- __pyx_t_2 = ((__pyx_v_self->sample_size == -1) != 0);
- if (!__pyx_t_2) {
- __pyx_t_4 = ((__pyx_v_num_locations <= __pyx_v_self->sample_size) != 0);
- __pyx_t_3 = __pyx_t_4;
- } else {
- __pyx_t_3 = __pyx_t_2;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":154
- * num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns
- * if self.sample_size == -1 or num_locations <= self.sample_size:
- * sample = phrase_location.arr # <<<<<<<<<<<<<<
- * else:
- * stepsize = float(num_locations)/float(self.sample_size)
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_phrase_location->arr);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_v_sample));
- __pyx_v_sample = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
- goto __pyx_L8;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":156
- * sample = phrase_location.arr
- * else:
- * stepsize = float(num_locations)/float(self.sample_size) # <<<<<<<<<<<<<<
- * i = phrase_location.arr_low
- * while i < num_locations and sample.len < self.sample_size * phrase_location.num_subpatterns:
- */
- if (unlikely(((double)__pyx_v_self->sample_size) == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_stepsize = (((double)__pyx_v_num_locations) / ((double)__pyx_v_self->sample_size));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":157
- * else:
- * stepsize = float(num_locations)/float(self.sample_size)
- * i = phrase_location.arr_low # <<<<<<<<<<<<<<
- * while i < num_locations and sample.len < self.sample_size * phrase_location.num_subpatterns:
- * '''Note: int(i) not guaranteed to have the desired
- */
- __pyx_t_5 = __pyx_v_phrase_location->arr_low;
- __pyx_v_i = __pyx_t_5;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":158
- * stepsize = float(num_locations)/float(self.sample_size)
- * i = phrase_location.arr_low
- * while i < num_locations and sample.len < self.sample_size * phrase_location.num_subpatterns: # <<<<<<<<<<<<<<
- * '''Note: int(i) not guaranteed to have the desired
- * effect, according to the python documentation'''
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_i < __pyx_v_num_locations) != 0);
- if (__pyx_t_3) {
- __pyx_t_2 = ((__pyx_v_sample->len < (__pyx_v_self->sample_size * __pyx_v_phrase_location->num_subpatterns)) != 0);
- __pyx_t_4 = __pyx_t_2;
- } else {
- __pyx_t_4 = __pyx_t_3;
- }
- if (!__pyx_t_4) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":161
- * '''Note: int(i) not guaranteed to have the desired
- * effect, according to the python documentation'''
- * if fmod(i,1.0) > 0.5: # <<<<<<<<<<<<<<
- * val = int(ceil(i))
- * else:
- */
- __pyx_t_4 = ((fmod(__pyx_v_i, 1.0) > 0.5) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":162
- * effect, according to the python documentation'''
- * if fmod(i,1.0) > 0.5:
- * val = int(ceil(i)) # <<<<<<<<<<<<<<
- * else:
- * val = int(floor(i))
- */
- __pyx_v_val = ((int)ceil(__pyx_v_i));
- goto __pyx_L11;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":164
- * val = int(ceil(i))
- * else:
- * val = int(floor(i)) # <<<<<<<<<<<<<<
- * j = phrase_location.arr_low + (val*phrase_location.num_subpatterns)
- * sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)
- */
- __pyx_v_val = ((int)floor(__pyx_v_i));
- }
- __pyx_L11:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":165
- * else:
- * val = int(floor(i))
- * j = phrase_location.arr_low + (val*phrase_location.num_subpatterns) # <<<<<<<<<<<<<<
- * sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)
- * i = i + stepsize
- */
- __pyx_v_j = (__pyx_v_phrase_location->arr_low + (__pyx_v_val * __pyx_v_phrase_location->num_subpatterns));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":166
- * val = int(floor(i))
- * j = phrase_location.arr_low + (val*phrase_location.num_subpatterns)
- * sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns) # <<<<<<<<<<<<<<
- * i = i + stepsize
- * return sample
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_sample->__pyx_vtab)->_extend_arr(__pyx_v_sample, (__pyx_v_phrase_location->arr->arr + __pyx_v_j), __pyx_v_phrase_location->num_subpatterns);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":167
- * j = phrase_location.arr_low + (val*phrase_location.num_subpatterns)
- * sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)
- * i = i + stepsize # <<<<<<<<<<<<<<
- * return sample
- *
- */
- __pyx_v_i = (__pyx_v_i + __pyx_v_stepsize);
- }
- }
- __pyx_L8:;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":168
- * sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)
- * i = i + stepsize
- * return sample # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_sample));
- __pyx_r = ((PyObject *)__pyx_v_sample);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.Sampler.sample", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_sample);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":180
- *
- *
- * cdef void assign_matching(Matching* m, int* arr, int start, int step, int* sent_id_arr): # <<<<<<<<<<<<<<
- * m.arr = arr
- * m.start = start
- */
-
-static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *__pyx_v_m, int *__pyx_v_arr, int __pyx_v_start, int __pyx_v_step, int *__pyx_v_sent_id_arr) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("assign_matching", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":181
- *
- * cdef void assign_matching(Matching* m, int* arr, int start, int step, int* sent_id_arr):
- * m.arr = arr # <<<<<<<<<<<<<<
- * m.start = start
- * m.end = start + step
- */
- __pyx_v_m->arr = __pyx_v_arr;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":182
- * cdef void assign_matching(Matching* m, int* arr, int start, int step, int* sent_id_arr):
- * m.arr = arr
- * m.start = start # <<<<<<<<<<<<<<
- * m.end = start + step
- * m.sent_id = sent_id_arr[arr[start]]
- */
- __pyx_v_m->start = __pyx_v_start;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":183
- * m.arr = arr
- * m.start = start
- * m.end = start + step # <<<<<<<<<<<<<<
- * m.sent_id = sent_id_arr[arr[start]]
- * m.size = step
- */
- __pyx_v_m->end = (__pyx_v_start + __pyx_v_step);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":184
- * m.start = start
- * m.end = start + step
- * m.sent_id = sent_id_arr[arr[start]] # <<<<<<<<<<<<<<
- * m.size = step
- *
- */
- __pyx_v_m->sent_id = (__pyx_v_sent_id_arr[(__pyx_v_arr[__pyx_v_start])]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":185
- * m.end = start + step
- * m.sent_id = sent_id_arr[arr[start]]
- * m.size = step # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_v_m->size = __pyx_v_step;
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":188
- *
- *
- * cdef int* append_combined_matching(int* arr, Matching* loc1, Matching* loc2, # <<<<<<<<<<<<<<
- * int offset_by_one, int num_subpatterns, int* result_len):
- * cdef int i, new_len
- */
-
-static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx_t_3_sa_Matching *__pyx_v_loc1, struct __pyx_t_3_sa_Matching *__pyx_v_loc2, CYTHON_UNUSED int __pyx_v_offset_by_one, int __pyx_v_num_subpatterns, int *__pyx_v_result_len) {
- int __pyx_v_i;
- int __pyx_v_new_len;
- int *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- __Pyx_RefNannySetupContext("append_combined_matching", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":192
- * cdef int i, new_len
- *
- * new_len = result_len[0] + num_subpatterns # <<<<<<<<<<<<<<
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- *
- */
- __pyx_v_new_len = ((__pyx_v_result_len[0]) + __pyx_v_num_subpatterns);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":193
- *
- * new_len = result_len[0] + num_subpatterns
- * arr = <int*> realloc(arr, new_len*sizeof(int)) # <<<<<<<<<<<<<<
- *
- * for i from 0 <= i < loc1.size:
- */
- __pyx_v_arr = ((int *)realloc(__pyx_v_arr, (__pyx_v_new_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":195
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- *
- * for i from 0 <= i < loc1.size: # <<<<<<<<<<<<<<
- * arr[result_len[0]+i] = loc1.arr[loc1.start+i]
- * if num_subpatterns > loc1.size:
- */
- __pyx_t_1 = __pyx_v_loc1->size;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":196
- *
- * for i from 0 <= i < loc1.size:
- * arr[result_len[0]+i] = loc1.arr[loc1.start+i] # <<<<<<<<<<<<<<
- * if num_subpatterns > loc1.size:
- * arr[new_len-1] = loc2.arr[loc2.end-1]
- */
- (__pyx_v_arr[((__pyx_v_result_len[0]) + __pyx_v_i)]) = (__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":197
- * for i from 0 <= i < loc1.size:
- * arr[result_len[0]+i] = loc1.arr[loc1.start+i]
- * if num_subpatterns > loc1.size: # <<<<<<<<<<<<<<
- * arr[new_len-1] = loc2.arr[loc2.end-1]
- * result_len[0] = new_len
- */
- __pyx_t_2 = ((__pyx_v_num_subpatterns > __pyx_v_loc1->size) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":198
- * arr[result_len[0]+i] = loc1.arr[loc1.start+i]
- * if num_subpatterns > loc1.size:
- * arr[new_len-1] = loc2.arr[loc2.end-1] # <<<<<<<<<<<<<<
- * result_len[0] = new_len
- * return arr
- */
- (__pyx_v_arr[(__pyx_v_new_len - 1)]) = (__pyx_v_loc2->arr[(__pyx_v_loc2->end - 1)]);
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":199
- * if num_subpatterns > loc1.size:
- * arr[new_len-1] = loc2.arr[loc2.end-1]
- * result_len[0] = new_len # <<<<<<<<<<<<<<
- * return arr
- *
- */
- (__pyx_v_result_len[0]) = __pyx_v_new_len;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":200
- * arr[new_len-1] = loc2.arr[loc2.end-1]
- * result_len[0] = new_len
- * return arr # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_arr;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":203
- *
- *
- * cdef int* extend_arr(int* arr, int* arr_len, int* appendix, int appendix_len): # <<<<<<<<<<<<<<
- * cdef int new_len
- *
- */
-
-static int *__pyx_f_3_sa_extend_arr(int *__pyx_v_arr, int *__pyx_v_arr_len, int *__pyx_v_appendix, int __pyx_v_appendix_len) {
- int __pyx_v_new_len;
- int *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("extend_arr", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":206
- * cdef int new_len
- *
- * new_len = arr_len[0] + appendix_len # <<<<<<<<<<<<<<
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- * memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))
- */
- __pyx_v_new_len = ((__pyx_v_arr_len[0]) + __pyx_v_appendix_len);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":207
- *
- * new_len = arr_len[0] + appendix_len
- * arr = <int*> realloc(arr, new_len*sizeof(int)) # <<<<<<<<<<<<<<
- * memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))
- * arr_len[0] = new_len
- */
- __pyx_v_arr = ((int *)realloc(__pyx_v_arr, (__pyx_v_new_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":208
- * new_len = arr_len[0] + appendix_len
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- * memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int)) # <<<<<<<<<<<<<<
- * arr_len[0] = new_len
- * return arr
- */
- memcpy((__pyx_v_arr + (__pyx_v_arr_len[0])), __pyx_v_appendix, (__pyx_v_appendix_len * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":209
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- * memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))
- * arr_len[0] = new_len # <<<<<<<<<<<<<<
- * return arr
- *
- */
- (__pyx_v_arr_len[0]) = __pyx_v_new_len;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":210
- * memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))
- * arr_len[0] = new_len
- * return arr # <<<<<<<<<<<<<<
- *
- * cdef int median(int low, int high, int step):
- */
- __pyx_r = __pyx_v_arr;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":212
- * return arr
- *
- * cdef int median(int low, int high, int step): # <<<<<<<<<<<<<<
- * return low + (((high - low)/step)/2)*step
- *
- */
-
-static int __pyx_f_3_sa_median(int __pyx_v_low, int __pyx_v_high, int __pyx_v_step) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("median", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":213
- *
- * cdef int median(int low, int high, int step):
- * return low + (((high - low)/step)/2)*step # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_1 = (__pyx_v_high - __pyx_v_low);
- if (unlikely(__pyx_v_step == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_step == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_OverflowError, "value too large to perform division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_r = (__pyx_v_low + (__Pyx_div_long(__Pyx_div_int(__pyx_t_1, __pyx_v_step), 2) * __pyx_v_step));
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_WriteUnraisable("_sa.median", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":216
- *
- *
- * cdef void find_comparable_matchings(int low, int high, int* arr, int step, int loc, int* loc_minus, int* loc_plus): # <<<<<<<<<<<<<<
- * # Returns (minus, plus) indices for the portion of the array
- * # in which all matchings have the same first index as the one
- */
-
-static void __pyx_f_3_sa_find_comparable_matchings(int __pyx_v_low, int __pyx_v_high, int *__pyx_v_arr, int __pyx_v_step, int __pyx_v_loc, int *__pyx_v_loc_minus, int *__pyx_v_loc_plus) {
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- __Pyx_RefNannySetupContext("find_comparable_matchings", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":220
- * # in which all matchings have the same first index as the one
- * # starting at loc
- * loc_plus[0] = loc + step # <<<<<<<<<<<<<<
- * while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]:
- * loc_plus[0] = loc_plus[0] + step
- */
- (__pyx_v_loc_plus[0]) = (__pyx_v_loc + __pyx_v_step);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":221
- * # starting at loc
- * loc_plus[0] = loc + step
- * while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]: # <<<<<<<<<<<<<<
- * loc_plus[0] = loc_plus[0] + step
- * loc_minus[0] = loc
- */
- while (1) {
- __pyx_t_1 = (((__pyx_v_loc_plus[0]) < __pyx_v_high) != 0);
- if (__pyx_t_1) {
- __pyx_t_2 = (((__pyx_v_arr[(__pyx_v_loc_plus[0])]) == (__pyx_v_arr[__pyx_v_loc])) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":222
- * loc_plus[0] = loc + step
- * while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]:
- * loc_plus[0] = loc_plus[0] + step # <<<<<<<<<<<<<<
- * loc_minus[0] = loc
- * while loc_minus[0]-step >= low and arr[loc_minus[0]-step] == arr[loc]:
- */
- (__pyx_v_loc_plus[0]) = ((__pyx_v_loc_plus[0]) + __pyx_v_step);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":223
- * while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]:
- * loc_plus[0] = loc_plus[0] + step
- * loc_minus[0] = loc # <<<<<<<<<<<<<<
- * while loc_minus[0]-step >= low and arr[loc_minus[0]-step] == arr[loc]:
- * loc_minus[0] = loc_minus[0] - step
- */
- (__pyx_v_loc_minus[0]) = __pyx_v_loc;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":224
- * loc_plus[0] = loc_plus[0] + step
- * loc_minus[0] = loc
- * while loc_minus[0]-step >= low and arr[loc_minus[0]-step] == arr[loc]: # <<<<<<<<<<<<<<
- * loc_minus[0] = loc_minus[0] - step
- *
- */
- while (1) {
- __pyx_t_3 = ((((__pyx_v_loc_minus[0]) - __pyx_v_step) >= __pyx_v_low) != 0);
- if (__pyx_t_3) {
- __pyx_t_1 = (((__pyx_v_arr[((__pyx_v_loc_minus[0]) - __pyx_v_step)]) == (__pyx_v_arr[__pyx_v_loc])) != 0);
- __pyx_t_2 = __pyx_t_1;
- } else {
- __pyx_t_2 = __pyx_t_3;
- }
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":225
- * loc_minus[0] = loc
- * while loc_minus[0]-step >= low and arr[loc_minus[0]-step] == arr[loc]:
- * loc_minus[0] = loc_minus[0] - step # <<<<<<<<<<<<<<
- *
- *
- */
- (__pyx_v_loc_minus[0]) = ((__pyx_v_loc_minus[0]) - __pyx_v_step);
- }
-
- __Pyx_RefNannyFinishContext();
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- struct __pyx_obj_3_sa_Alignment *__pyx_v_alignment = 0;
- float __pyx_v_by_slack_factor;
- char *__pyx_v_category;
- PyObject *__pyx_v_max_chunks = 0;
- unsigned int __pyx_v_max_initial_size;
- unsigned int __pyx_v_max_length;
- unsigned int __pyx_v_max_nonterminals;
- PyObject *__pyx_v_max_target_chunks = 0;
- PyObject *__pyx_v_max_target_length = 0;
- unsigned int __pyx_v_min_gap_size;
- PyObject *__pyx_v_precompute_file = 0;
- unsigned int __pyx_v_precompute_secondary_rank;
- unsigned int __pyx_v_precompute_rank;
- int __pyx_v_require_aligned_terminal;
- int __pyx_v_require_aligned_chunks;
- unsigned int __pyx_v_train_max_initial_size;
- unsigned int __pyx_v_train_min_gap_size;
- int __pyx_v_tight_phrases;
- int __pyx_v_use_baeza_yates;
- int __pyx_v_use_collocations;
- int __pyx_v_use_index;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__alignment,&__pyx_n_s__by_slack_factor,&__pyx_n_s__category,&__pyx_n_s__max_chunks,&__pyx_n_s__max_initial_size,&__pyx_n_s__max_length,&__pyx_n_s__max_nonterminals,&__pyx_n_s__max_target_chunks,&__pyx_n_s__max_target_length,&__pyx_n_s__min_gap_size,&__pyx_n_s__precompute_file,&__pyx_n_s_72,&__pyx_n_s__precompute_rank,&__pyx_n_s_105,&__pyx_n_s_106,&__pyx_n_s_73,&__pyx_n_s__train_min_gap_size,&__pyx_n_s__tight_phrases,&__pyx_n_s__use_baeza_yates,&__pyx_n_s__use_collocations,&__pyx_n_s__use_index,0};
- PyObject* values[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":296
- * char* category="[X]",
- * # maximum number of contiguous chunks of terminal symbols in RHS of a rule. If None, defaults to max_nonterminals+1
- * max_chunks=None, # <<<<<<<<<<<<<<
- * # maximum span of a grammar rule in TEST DATA
- * unsigned max_initial_size=10,
- */
- values[3] = ((PyObject *)Py_None);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":304
- * unsigned max_nonterminals=2,
- * # maximum number of contiguous chunks of terminal symbols in target-side RHS of a rule. If None, defaults to max_nonterminals+1
- * max_target_chunks=None, # <<<<<<<<<<<<<<
- * # maximum number of target side symbols (both T and NT) allowed in a rule. If None, defaults to max_initial_size
- * max_target_length=None,
- */
- values[7] = ((PyObject *)Py_None);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":306
- * max_target_chunks=None,
- * # maximum number of target side symbols (both T and NT) allowed in a rule. If None, defaults to max_initial_size
- * max_target_length=None, # <<<<<<<<<<<<<<
- * # minimum span of a nonterminal in the RHS of a rule in TEST DATA
- * unsigned min_gap_size=2,
- */
- values[8] = ((PyObject *)Py_None);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":310
- * unsigned min_gap_size=2,
- * # filename of file containing precomputed collocations
- * precompute_file=None, # <<<<<<<<<<<<<<
- * # maximum frequency rank of patterns used to compute triples (don't set higher than 20).
- * unsigned precompute_secondary_rank=20,
- */
- values[10] = ((PyObject *)Py_None);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
- case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
- case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
- case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
- case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
- case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
- case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
- case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
- case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
- case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
- case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
- case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alignment)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__by_slack_factor);
- if (value) { values[1] = value; kw_args--; }
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__category);
- if (value) { values[2] = value; kw_args--; }
- }
- case 3:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_chunks);
- if (value) { values[3] = value; kw_args--; }
- }
- case 4:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_initial_size);
- if (value) { values[4] = value; kw_args--; }
- }
- case 5:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_length);
- if (value) { values[5] = value; kw_args--; }
- }
- case 6:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_nonterminals);
- if (value) { values[6] = value; kw_args--; }
- }
- case 7:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_target_chunks);
- if (value) { values[7] = value; kw_args--; }
- }
- case 8:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_target_length);
- if (value) { values[8] = value; kw_args--; }
- }
- case 9:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__min_gap_size);
- if (value) { values[9] = value; kw_args--; }
- }
- case 10:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__precompute_file);
- if (value) { values[10] = value; kw_args--; }
- }
- case 11:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_72);
- if (value) { values[11] = value; kw_args--; }
- }
- case 12:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__precompute_rank);
- if (value) { values[12] = value; kw_args--; }
- }
- case 13:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_105);
- if (value) { values[13] = value; kw_args--; }
- }
- case 14:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_106);
- if (value) { values[14] = value; kw_args--; }
- }
- case 15:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_73);
- if (value) { values[15] = value; kw_args--; }
- }
- case 16:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__train_min_gap_size);
- if (value) { values[16] = value; kw_args--; }
- }
- case 17:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tight_phrases);
- if (value) { values[17] = value; kw_args--; }
- }
- case 18:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__use_baeza_yates);
- if (value) { values[18] = value; kw_args--; }
- }
- case 19:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__use_collocations);
- if (value) { values[19] = value; kw_args--; }
- }
- case 20:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__use_index);
- if (value) { values[20] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
- case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
- case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
- case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
- case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
- case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
- case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
- case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
- case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
- case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
- case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
- case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v_alignment = ((struct __pyx_obj_3_sa_Alignment *)values[0]);
- if (values[1]) {
- __pyx_v_by_slack_factor = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_by_slack_factor == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":292
- * Alignment alignment,
- * # parameter for double-binary search; doesn't seem to matter much
- * float by_slack_factor=1.0, # <<<<<<<<<<<<<<
- * # name of generic nonterminal used by Hiero
- * char* category="[X]",
- */
- __pyx_v_by_slack_factor = ((float)1.0);
- }
- if (values[2]) {
- __pyx_v_category = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_category) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_category = ((char *)__pyx_k_107);
- }
- __pyx_v_max_chunks = values[3];
- if (values[4]) {
- __pyx_v_max_initial_size = __Pyx_PyInt_AsUnsignedInt(values[4]); if (unlikely((__pyx_v_max_initial_size == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_max_initial_size = ((unsigned int)10);
- }
- if (values[5]) {
- __pyx_v_max_length = __Pyx_PyInt_AsUnsignedInt(values[5]); if (unlikely((__pyx_v_max_length == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_max_length = ((unsigned int)5);
- }
- if (values[6]) {
- __pyx_v_max_nonterminals = __Pyx_PyInt_AsUnsignedInt(values[6]); if (unlikely((__pyx_v_max_nonterminals == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_max_nonterminals = ((unsigned int)2);
- }
- __pyx_v_max_target_chunks = values[7];
- __pyx_v_max_target_length = values[8];
- if (values[9]) {
- __pyx_v_min_gap_size = __Pyx_PyInt_AsUnsignedInt(values[9]); if (unlikely((__pyx_v_min_gap_size == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_min_gap_size = ((unsigned int)2);
- }
- __pyx_v_precompute_file = values[10];
- if (values[11]) {
- __pyx_v_precompute_secondary_rank = __Pyx_PyInt_AsUnsignedInt(values[11]); if (unlikely((__pyx_v_precompute_secondary_rank == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_precompute_secondary_rank = ((unsigned int)20);
- }
- if (values[12]) {
- __pyx_v_precompute_rank = __Pyx_PyInt_AsUnsignedInt(values[12]); if (unlikely((__pyx_v_precompute_rank == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_precompute_rank = ((unsigned int)100);
- }
- if (values[13]) {
- __pyx_v_require_aligned_terminal = __Pyx_PyObject_IsTrue(values[13]); if (unlikely((__pyx_v_require_aligned_terminal == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":316
- * unsigned precompute_rank=100,
- * # require extracted rules to have at least one aligned word
- * bint require_aligned_terminal=True, # <<<<<<<<<<<<<<
- * # require each contiguous chunk of extracted rules to have at least one aligned word
- * bint require_aligned_chunks=False,
- */
- __pyx_v_require_aligned_terminal = ((int)1);
- }
- if (values[14]) {
- __pyx_v_require_aligned_chunks = __Pyx_PyObject_IsTrue(values[14]); if (unlikely((__pyx_v_require_aligned_chunks == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":318
- * bint require_aligned_terminal=True,
- * # require each contiguous chunk of extracted rules to have at least one aligned word
- * bint require_aligned_chunks=False, # <<<<<<<<<<<<<<
- * # maximum span of a grammar rule extracted from TRAINING DATA
- * unsigned train_max_initial_size=10,
- */
- __pyx_v_require_aligned_chunks = ((int)0);
- }
- if (values[15]) {
- __pyx_v_train_max_initial_size = __Pyx_PyInt_AsUnsignedInt(values[15]); if (unlikely((__pyx_v_train_max_initial_size == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_train_max_initial_size = ((unsigned int)10);
- }
- if (values[16]) {
- __pyx_v_train_min_gap_size = __Pyx_PyInt_AsUnsignedInt(values[16]); if (unlikely((__pyx_v_train_min_gap_size == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
- __pyx_v_train_min_gap_size = ((unsigned int)2);
- }
- if (values[17]) {
- __pyx_v_tight_phrases = __Pyx_PyObject_IsTrue(values[17]); if (unlikely((__pyx_v_tight_phrases == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":324
- * unsigned train_min_gap_size=2,
- * # False if phrases should be loose (better but slower), True otherwise
- * bint tight_phrases=True, # <<<<<<<<<<<<<<
- * # True to require use of double-binary alg, false otherwise
- * bint use_baeza_yates=True,
- */
- __pyx_v_tight_phrases = ((int)1);
- }
- if (values[18]) {
- __pyx_v_use_baeza_yates = __Pyx_PyObject_IsTrue(values[18]); if (unlikely((__pyx_v_use_baeza_yates == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":326
- * bint tight_phrases=True,
- * # True to require use of double-binary alg, false otherwise
- * bint use_baeza_yates=True, # <<<<<<<<<<<<<<
- * # True to enable used of precomputed collocations
- * bint use_collocations=True,
- */
- __pyx_v_use_baeza_yates = ((int)1);
- }
- if (values[19]) {
- __pyx_v_use_collocations = __Pyx_PyObject_IsTrue(values[19]); if (unlikely((__pyx_v_use_collocations == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":328
- * bint use_baeza_yates=True,
- * # True to enable used of precomputed collocations
- * bint use_collocations=True, # <<<<<<<<<<<<<<
- * # True to enable use of precomputed inverted indices
- * bint use_index=True):
- */
- __pyx_v_use_collocations = ((int)1);
- }
- if (values[20]) {
- __pyx_v_use_index = __Pyx_PyObject_IsTrue(values[20]); if (unlikely((__pyx_v_use_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- } else {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":330
- * bint use_collocations=True,
- * # True to enable use of precomputed inverted indices
- * bint use_index=True): # <<<<<<<<<<<<<<
- * '''Note: we make a distinction between the min_gap_size
- * and max_initial_size used in test and train. The latter
- */
- __pyx_v_use_index = ((int)1);
- }
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 21, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return -1;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_alignment), __pyx_ptype_3_sa_Alignment, 1, "alignment", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_alignment, __pyx_v_by_slack_factor, __pyx_v_category, __pyx_v_max_chunks, __pyx_v_max_initial_size, __pyx_v_max_length, __pyx_v_max_nonterminals, __pyx_v_max_target_chunks, __pyx_v_max_target_length, __pyx_v_min_gap_size, __pyx_v_precompute_file, __pyx_v_precompute_secondary_rank, __pyx_v_precompute_rank, __pyx_v_require_aligned_terminal, __pyx_v_require_aligned_chunks, __pyx_v_train_max_initial_size, __pyx_v_train_min_gap_size, __pyx_v_tight_phrases, __pyx_v_use_baeza_yates, __pyx_v_use_collocations, __pyx_v_use_index);
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1 = {__Pyx_NAMESTR("lambda1"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1, METH_NOARGS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda1 (wrapper)", 0);
- __pyx_r = __pyx_lambda_funcdef_lambda1(__pyx_self);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":406
- * self.phrases_f = defaultdict(int)
- * self.phrases_e = defaultdict(int)
- * self.phrases_fe = defaultdict(lambda: defaultdict(int)) # <<<<<<<<<<<<<<
- * self.phrases_al = defaultdict(lambda: defaultdict(tuple))
- *
- */
-
-static PyObject *__pyx_lambda_funcdef_lambda1(CYTHON_UNUSED PyObject *__pyx_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda1", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.__cinit__.lambda1", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2 = {__Pyx_NAMESTR("lambda2"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2, METH_NOARGS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda2 (wrapper)", 0);
- __pyx_r = __pyx_lambda_funcdef_lambda2(__pyx_self);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":407
- * self.phrases_e = defaultdict(int)
- * self.phrases_fe = defaultdict(lambda: defaultdict(int))
- * self.phrases_al = defaultdict(lambda: defaultdict(tuple)) # <<<<<<<<<<<<<<
- *
- * # Bilexical counts
- */
-
-static PyObject *__pyx_lambda_funcdef_lambda2(CYTHON_UNUSED PyObject *__pyx_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda2", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyTuple_Type))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)((PyObject*)(&PyTuple_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyTuple_Type))));
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.__cinit__.lambda2", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3 = {__Pyx_NAMESTR("lambda3"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3, METH_NOARGS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda3 (wrapper)", 0);
- __pyx_r = __pyx_lambda_funcdef_lambda3(__pyx_self);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":412
- * self.bilex_f = defaultdict(int)
- * self.bilex_e = defaultdict(int)
- * self.bilex_fe = defaultdict(lambda: defaultdict(int)) # <<<<<<<<<<<<<<
- *
- * def configure(self, SuffixArray fsarray, DataArray edarray,
- */
-
-static PyObject *__pyx_lambda_funcdef_lambda3(CYTHON_UNUSED PyObject *__pyx_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda3", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.__cinit__.lambda3", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":288
- * cdef bilex_fe
- *
- * def __cinit__(self, # <<<<<<<<<<<<<<
- * # compiled alignment object (REQUIRED)
- * Alignment alignment,
- */
-
-static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_Alignment *__pyx_v_alignment, float __pyx_v_by_slack_factor, char *__pyx_v_category, PyObject *__pyx_v_max_chunks, unsigned int __pyx_v_max_initial_size, unsigned int __pyx_v_max_length, unsigned int __pyx_v_max_nonterminals, PyObject *__pyx_v_max_target_chunks, PyObject *__pyx_v_max_target_length, unsigned int __pyx_v_min_gap_size, PyObject *__pyx_v_precompute_file, unsigned int __pyx_v_precompute_secondary_rank, unsigned int __pyx_v_precompute_rank, int __pyx_v_require_aligned_terminal, int __pyx_v_require_aligned_chunks, unsigned int __pyx_v_train_max_initial_size, unsigned int __pyx_v_train_min_gap_size, int __pyx_v_tight_phrases, int __pyx_v_use_baeza_yates, int __pyx_v_use_collocations, int __pyx_v_use_index) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":336
- * respectively. This is because Chiang's model does not require
- * them to be the same, therefore we don't either.'''
- * self.rules = TrieTable(True) # cache # <<<<<<<<<<<<<<
- * self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())
- * if alignment is None:
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_TrieTable)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->rules);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->rules));
- __pyx_v_self->rules = ((struct __pyx_obj_3_sa_TrieTable *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":337
- * them to be the same, therefore we don't either.'''
- * self.rules = TrieTable(True) # cache
- * self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation()) # <<<<<<<<<<<<<<
- * if alignment is None:
- * raise Exception("Must specify an alignment object")
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__phrase_location), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->rules->root);
- __Pyx_DECREF(__pyx_v_self->rules->root);
- __pyx_v_self->rules->root = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":338
- * self.rules = TrieTable(True) # cache
- * self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())
- * if alignment is None: # <<<<<<<<<<<<<<
- * raise Exception("Must specify an alignment object")
- * self.alignment = alignment
- */
- __pyx_t_3 = (((PyObject *)__pyx_v_alignment) == Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":339
- * self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())
- * if alignment is None:
- * raise Exception("Must specify an alignment object") # <<<<<<<<<<<<<<
- * self.alignment = alignment
- *
- */
- __pyx_t_2 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_109), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_Raise(__pyx_t_2, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":340
- * if alignment is None:
- * raise Exception("Must specify an alignment object")
- * self.alignment = alignment # <<<<<<<<<<<<<<
- *
- * # grammar parameters and settings
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_alignment));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_alignment));
- __Pyx_GOTREF(__pyx_v_self->alignment);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->alignment));
- __pyx_v_self->alignment = __pyx_v_alignment;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":344
- * # grammar parameters and settings
- * # NOTE: setting max_nonterminals > 2 is not currently supported in Hiero
- * self.max_length = max_length # <<<<<<<<<<<<<<
- * self.max_nonterminals = max_nonterminals
- * self.max_initial_size = max_initial_size
- */
- __pyx_v_self->max_length = __pyx_v_max_length;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":345
- * # NOTE: setting max_nonterminals > 2 is not currently supported in Hiero
- * self.max_length = max_length
- * self.max_nonterminals = max_nonterminals # <<<<<<<<<<<<<<
- * self.max_initial_size = max_initial_size
- * self.train_max_initial_size = train_max_initial_size
- */
- __pyx_v_self->max_nonterminals = __pyx_v_max_nonterminals;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":346
- * self.max_length = max_length
- * self.max_nonterminals = max_nonterminals
- * self.max_initial_size = max_initial_size # <<<<<<<<<<<<<<
- * self.train_max_initial_size = train_max_initial_size
- * self.min_gap_size = min_gap_size
- */
- __pyx_v_self->max_initial_size = __pyx_v_max_initial_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":347
- * self.max_nonterminals = max_nonterminals
- * self.max_initial_size = max_initial_size
- * self.train_max_initial_size = train_max_initial_size # <<<<<<<<<<<<<<
- * self.min_gap_size = min_gap_size
- * self.train_min_gap_size = train_min_gap_size
- */
- __pyx_v_self->train_max_initial_size = __pyx_v_train_max_initial_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":348
- * self.max_initial_size = max_initial_size
- * self.train_max_initial_size = train_max_initial_size
- * self.min_gap_size = min_gap_size # <<<<<<<<<<<<<<
- * self.train_min_gap_size = train_min_gap_size
- * self.category = sym_fromstring(category, False)
- */
- __pyx_v_self->min_gap_size = __pyx_v_min_gap_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":349
- * self.train_max_initial_size = train_max_initial_size
- * self.min_gap_size = min_gap_size
- * self.train_min_gap_size = train_min_gap_size # <<<<<<<<<<<<<<
- * self.category = sym_fromstring(category, False)
- *
- */
- __pyx_v_self->train_min_gap_size = __pyx_v_train_min_gap_size;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":350
- * self.min_gap_size = min_gap_size
- * self.train_min_gap_size = train_min_gap_size
- * self.category = sym_fromstring(category, False) # <<<<<<<<<<<<<<
- *
- * if max_chunks is None:
- */
- __pyx_v_self->category = __pyx_f_3_sa_sym_fromstring(__pyx_v_category, 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":352
- * self.category = sym_fromstring(category, False)
- *
- * if max_chunks is None: # <<<<<<<<<<<<<<
- * self.max_chunks = self.max_nonterminals + 1
- * else:
- */
- __pyx_t_4 = (__pyx_v_max_chunks == Py_None);
- __pyx_t_3 = (__pyx_t_4 != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":353
- *
- * if max_chunks is None:
- * self.max_chunks = self.max_nonterminals + 1 # <<<<<<<<<<<<<<
- * else:
- * self.max_chunks = max_chunks
- */
- __pyx_v_self->max_chunks = (__pyx_v_self->max_nonterminals + 1);
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":355
- * self.max_chunks = self.max_nonterminals + 1
- * else:
- * self.max_chunks = max_chunks # <<<<<<<<<<<<<<
- *
- * if max_target_chunks is None:
- */
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_max_chunks); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->max_chunks = __pyx_t_5;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":357
- * self.max_chunks = max_chunks
- *
- * if max_target_chunks is None: # <<<<<<<<<<<<<<
- * self.max_target_chunks = self.max_nonterminals + 1
- * else:
- */
- __pyx_t_3 = (__pyx_v_max_target_chunks == Py_None);
- __pyx_t_4 = (__pyx_t_3 != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":358
- *
- * if max_target_chunks is None:
- * self.max_target_chunks = self.max_nonterminals + 1 # <<<<<<<<<<<<<<
- * else:
- * self.max_target_chunks = max_target_chunks
- */
- __pyx_v_self->max_target_chunks = (__pyx_v_self->max_nonterminals + 1);
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":360
- * self.max_target_chunks = self.max_nonterminals + 1
- * else:
- * self.max_target_chunks = max_target_chunks # <<<<<<<<<<<<<<
- *
- * if max_target_length is None:
- */
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_max_target_chunks); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->max_target_chunks = __pyx_t_5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":362
- * self.max_target_chunks = max_target_chunks
- *
- * if max_target_length is None: # <<<<<<<<<<<<<<
- * self.max_target_length = max_initial_size
- * else:
- */
- __pyx_t_4 = (__pyx_v_max_target_length == Py_None);
- __pyx_t_3 = (__pyx_t_4 != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":363
- *
- * if max_target_length is None:
- * self.max_target_length = max_initial_size # <<<<<<<<<<<<<<
- * else:
- * self.max_target_length = max_target_length
- */
- __pyx_v_self->max_target_length = __pyx_v_max_initial_size;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":365
- * self.max_target_length = max_initial_size
- * else:
- * self.max_target_length = max_target_length # <<<<<<<<<<<<<<
- *
- * # algorithmic parameters and settings
- */
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_max_target_length); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_self->max_target_length = __pyx_t_5;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":368
- *
- * # algorithmic parameters and settings
- * self.precomputed_collocations = {} # <<<<<<<<<<<<<<
- * self.precomputed_index = {}
- * self.use_index = use_index
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __Pyx_GOTREF(__pyx_v_self->precomputed_collocations);
- __Pyx_DECREF(__pyx_v_self->precomputed_collocations);
- __pyx_v_self->precomputed_collocations = ((PyObject *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":369
- * # algorithmic parameters and settings
- * self.precomputed_collocations = {}
- * self.precomputed_index = {} # <<<<<<<<<<<<<<
- * self.use_index = use_index
- * self.use_collocations = use_collocations
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __Pyx_GOTREF(__pyx_v_self->precomputed_index);
- __Pyx_DECREF(__pyx_v_self->precomputed_index);
- __pyx_v_self->precomputed_index = ((PyObject *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":370
- * self.precomputed_collocations = {}
- * self.precomputed_index = {}
- * self.use_index = use_index # <<<<<<<<<<<<<<
- * self.use_collocations = use_collocations
- * self.max_rank = {}
- */
- __pyx_v_self->use_index = __pyx_v_use_index;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":371
- * self.precomputed_index = {}
- * self.use_index = use_index
- * self.use_collocations = use_collocations # <<<<<<<<<<<<<<
- * self.max_rank = {}
- * self.precompute_file = precompute_file
- */
- __pyx_v_self->use_collocations = __pyx_v_use_collocations;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":372
- * self.use_index = use_index
- * self.use_collocations = use_collocations
- * self.max_rank = {} # <<<<<<<<<<<<<<
- * self.precompute_file = precompute_file
- * self.precompute_rank = precompute_rank
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
- __Pyx_GOTREF(__pyx_v_self->max_rank);
- __Pyx_DECREF(__pyx_v_self->max_rank);
- __pyx_v_self->max_rank = ((PyObject *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":373
- * self.use_collocations = use_collocations
- * self.max_rank = {}
- * self.precompute_file = precompute_file # <<<<<<<<<<<<<<
- * self.precompute_rank = precompute_rank
- * self.precompute_secondary_rank = precompute_secondary_rank
- */
- __Pyx_INCREF(__pyx_v_precompute_file);
- __Pyx_GIVEREF(__pyx_v_precompute_file);
- __Pyx_GOTREF(__pyx_v_self->precompute_file);
- __Pyx_DECREF(__pyx_v_self->precompute_file);
- __pyx_v_self->precompute_file = __pyx_v_precompute_file;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":374
- * self.max_rank = {}
- * self.precompute_file = precompute_file
- * self.precompute_rank = precompute_rank # <<<<<<<<<<<<<<
- * self.precompute_secondary_rank = precompute_secondary_rank
- * self.use_baeza_yates = use_baeza_yates
- */
- __pyx_v_self->precompute_rank = __pyx_v_precompute_rank;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":375
- * self.precompute_file = precompute_file
- * self.precompute_rank = precompute_rank
- * self.precompute_secondary_rank = precompute_secondary_rank # <<<<<<<<<<<<<<
- * self.use_baeza_yates = use_baeza_yates
- * self.by_slack_factor = by_slack_factor
- */
- __pyx_v_self->precompute_secondary_rank = __pyx_v_precompute_secondary_rank;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":376
- * self.precompute_rank = precompute_rank
- * self.precompute_secondary_rank = precompute_secondary_rank
- * self.use_baeza_yates = use_baeza_yates # <<<<<<<<<<<<<<
- * self.by_slack_factor = by_slack_factor
- * self.tight_phrases = tight_phrases
- */
- __pyx_v_self->use_baeza_yates = __pyx_v_use_baeza_yates;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":377
- * self.precompute_secondary_rank = precompute_secondary_rank
- * self.use_baeza_yates = use_baeza_yates
- * self.by_slack_factor = by_slack_factor # <<<<<<<<<<<<<<
- * self.tight_phrases = tight_phrases
- *
- */
- __pyx_v_self->by_slack_factor = __pyx_v_by_slack_factor;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":378
- * self.use_baeza_yates = use_baeza_yates
- * self.by_slack_factor = by_slack_factor
- * self.tight_phrases = tight_phrases # <<<<<<<<<<<<<<
- *
- * if require_aligned_chunks:
- */
- __pyx_v_self->tight_phrases = __pyx_v_tight_phrases;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":380
- * self.tight_phrases = tight_phrases
- *
- * if require_aligned_chunks: # <<<<<<<<<<<<<<
- * # one condition is a stronger version of the other.
- * self.require_aligned_chunks = self.require_aligned_terminal = True
- */
- __pyx_t_3 = (__pyx_v_require_aligned_chunks != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":382
- * if require_aligned_chunks:
- * # one condition is a stronger version of the other.
- * self.require_aligned_chunks = self.require_aligned_terminal = True # <<<<<<<<<<<<<<
- * elif require_aligned_terminal:
- * self.require_aligned_chunks = False
- */
- __pyx_v_self->require_aligned_chunks = 1;
- __pyx_v_self->require_aligned_terminal = 1;
- goto __pyx_L7;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":383
- * # one condition is a stronger version of the other.
- * self.require_aligned_chunks = self.require_aligned_terminal = True
- * elif require_aligned_terminal: # <<<<<<<<<<<<<<
- * self.require_aligned_chunks = False
- * self.require_aligned_terminal = True
- */
- __pyx_t_3 = (__pyx_v_require_aligned_terminal != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":384
- * self.require_aligned_chunks = self.require_aligned_terminal = True
- * elif require_aligned_terminal:
- * self.require_aligned_chunks = False # <<<<<<<<<<<<<<
- * self.require_aligned_terminal = True
- * else:
- */
- __pyx_v_self->require_aligned_chunks = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":385
- * elif require_aligned_terminal:
- * self.require_aligned_chunks = False
- * self.require_aligned_terminal = True # <<<<<<<<<<<<<<
- * else:
- * self.require_aligned_chunks = self.require_aligned_terminal = False
- */
- __pyx_v_self->require_aligned_terminal = 1;
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":387
- * self.require_aligned_terminal = True
- * else:
- * self.require_aligned_chunks = self.require_aligned_terminal = False # <<<<<<<<<<<<<<
- *
- * # diagnostics
- */
- __pyx_v_self->require_aligned_chunks = 0;
- __pyx_v_self->require_aligned_terminal = 0;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":390
- *
- * # diagnostics
- * self.prev_norm_prefix = () # <<<<<<<<<<<<<<
- *
- * self.findexes = IntList(initial_len=10)
- */
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- __Pyx_GIVEREF(((PyObject *)__pyx_empty_tuple));
- __Pyx_GOTREF(__pyx_v_self->prev_norm_prefix);
- __Pyx_DECREF(__pyx_v_self->prev_norm_prefix);
- __pyx_v_self->prev_norm_prefix = ((PyObject *)__pyx_empty_tuple);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":392
- * self.prev_norm_prefix = ()
- *
- * self.findexes = IntList(initial_len=10) # <<<<<<<<<<<<<<
- * self.findexes1 = IntList(initial_len=10)
- *
- */
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__initial_len), __pyx_int_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->findexes);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->findexes));
- __pyx_v_self->findexes = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":393
- *
- * self.findexes = IntList(initial_len=10)
- * self.findexes1 = IntList(initial_len=10) # <<<<<<<<<<<<<<
- *
- * # Online stats
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_int_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->findexes1);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->findexes1));
- __pyx_v_self->findexes1 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":398
- *
- * # True after data is added
- * self.online = False # <<<<<<<<<<<<<<
- *
- * # Keep track of everything that can be sampled:
- */
- __pyx_v_self->online = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":401
- *
- * # Keep track of everything that can be sampled:
- * self.samples_f = defaultdict(int) # <<<<<<<<<<<<<<
- *
- * # Phrase counts
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_v_self->samples_f);
- __Pyx_DECREF(__pyx_v_self->samples_f);
- __pyx_v_self->samples_f = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":404
- *
- * # Phrase counts
- * self.phrases_f = defaultdict(int) # <<<<<<<<<<<<<<
- * self.phrases_e = defaultdict(int)
- * self.phrases_fe = defaultdict(lambda: defaultdict(int))
- */
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->phrases_f);
- __Pyx_DECREF(__pyx_v_self->phrases_f);
- __pyx_v_self->phrases_f = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":405
- * # Phrase counts
- * self.phrases_f = defaultdict(int)
- * self.phrases_e = defaultdict(int) # <<<<<<<<<<<<<<
- * self.phrases_fe = defaultdict(lambda: defaultdict(int))
- * self.phrases_al = defaultdict(lambda: defaultdict(tuple))
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_v_self->phrases_e);
- __Pyx_DECREF(__pyx_v_self->phrases_e);
- __pyx_v_self->phrases_e = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":406
- * self.phrases_f = defaultdict(int)
- * self.phrases_e = defaultdict(int)
- * self.phrases_fe = defaultdict(lambda: defaultdict(int)) # <<<<<<<<<<<<<<
- * self.phrases_al = defaultdict(lambda: defaultdict(tuple))
- *
- */
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1, 0, __pyx_n_s_110, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->phrases_fe);
- __Pyx_DECREF(__pyx_v_self->phrases_fe);
- __pyx_v_self->phrases_fe = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":407
- * self.phrases_e = defaultdict(int)
- * self.phrases_fe = defaultdict(lambda: defaultdict(int))
- * self.phrases_al = defaultdict(lambda: defaultdict(tuple)) # <<<<<<<<<<<<<<
- *
- * # Bilexical counts
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2, 0, __pyx_n_s_110, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->phrases_al);
- __Pyx_DECREF(__pyx_v_self->phrases_al);
- __pyx_v_self->phrases_al = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":410
- *
- * # Bilexical counts
- * self.bilex_f = defaultdict(int) # <<<<<<<<<<<<<<
- * self.bilex_e = defaultdict(int)
- * self.bilex_fe = defaultdict(lambda: defaultdict(int))
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->bilex_f);
- __Pyx_DECREF(__pyx_v_self->bilex_f);
- __pyx_v_self->bilex_f = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":411
- * # Bilexical counts
- * self.bilex_f = defaultdict(int)
- * self.bilex_e = defaultdict(int) # <<<<<<<<<<<<<<
- * self.bilex_fe = defaultdict(lambda: defaultdict(int))
- *
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->bilex_e);
- __Pyx_DECREF(__pyx_v_self->bilex_e);
- __pyx_v_self->bilex_e = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":412
- * self.bilex_f = defaultdict(int)
- * self.bilex_e = defaultdict(int)
- * self.bilex_fe = defaultdict(lambda: defaultdict(int)) # <<<<<<<<<<<<<<
- *
- * def configure(self, SuffixArray fsarray, DataArray edarray,
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3, 0, __pyx_n_s_110, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_v_self->bilex_fe);
- __Pyx_DECREF(__pyx_v_self->bilex_fe);
- __pyx_v_self->bilex_fe = __pyx_t_6;
- __pyx_t_6 = 0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_3_sa_23HieroCachingRuleFactory_2configure[] = "This gives the RuleFactory access to the Context object.\n Here we also use it to precompute the most expensive intersections\n in the corpus quickly.";
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray = 0;
- struct __pyx_obj_3_sa_DataArray *__pyx_v_edarray = 0;
- struct __pyx_obj_3_sa_Sampler *__pyx_v_sampler = 0;
- struct __pyx_obj_3_sa_Scorer *__pyx_v_scorer = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("configure (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fsarray,&__pyx_n_s__edarray,&__pyx_n_s__sampler,&__pyx_n_s__scorer,0};
- PyObject* values[4] = {0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__edarray)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("configure", 1, 4, 4, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sampler)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("configure", 1, 4, 4, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__scorer)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("configure", 1, 4, 4, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "configure") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- }
- __pyx_v_fsarray = ((struct __pyx_obj_3_sa_SuffixArray *)values[0]);
- __pyx_v_edarray = ((struct __pyx_obj_3_sa_DataArray *)values[1]);
- __pyx_v_sampler = ((struct __pyx_obj_3_sa_Sampler *)values[2]);
- __pyx_v_scorer = ((struct __pyx_obj_3_sa_Scorer *)values[3]);
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("configure", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.configure", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fsarray), __pyx_ptype_3_sa_SuffixArray, 1, "fsarray", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_edarray), __pyx_ptype_3_sa_DataArray, 1, "edarray", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sampler), __pyx_ptype_3_sa_Sampler, 1, "sampler", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scorer), __pyx_ptype_3_sa_Scorer, 1, "scorer", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_fsarray, __pyx_v_edarray, __pyx_v_sampler, __pyx_v_scorer);
- goto __pyx_L0;
- __pyx_L1_error:;
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":414
- * self.bilex_fe = defaultdict(lambda: defaultdict(int))
- *
- * def configure(self, SuffixArray fsarray, DataArray edarray, # <<<<<<<<<<<<<<
- * Sampler sampler, Scorer scorer):
- * '''This gives the RuleFactory access to the Context object.
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray, struct __pyx_obj_3_sa_DataArray *__pyx_v_edarray, struct __pyx_obj_3_sa_Sampler *__pyx_v_sampler, struct __pyx_obj_3_sa_Scorer *__pyx_v_scorer) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("configure", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":419
- * Here we also use it to precompute the most expensive intersections
- * in the corpus quickly.'''
- * self.fsa = fsarray # <<<<<<<<<<<<<<
- * self.fda = fsarray.darray
- * self.eda = edarray
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_fsarray));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fsarray));
- __Pyx_GOTREF(__pyx_v_self->fsa);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->fsa));
- __pyx_v_self->fsa = __pyx_v_fsarray;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":420
- * in the corpus quickly.'''
- * self.fsa = fsarray
- * self.fda = fsarray.darray # <<<<<<<<<<<<<<
- * self.eda = edarray
- * self.fid2symid = self.set_idmap(self.fda)
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_fsarray->darray);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->fda);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->fda));
- __pyx_v_self->fda = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":421
- * self.fsa = fsarray
- * self.fda = fsarray.darray
- * self.eda = edarray # <<<<<<<<<<<<<<
- * self.fid2symid = self.set_idmap(self.fda)
- * self.eid2symid = self.set_idmap(self.eda)
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_edarray));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_edarray));
- __Pyx_GOTREF(__pyx_v_self->eda);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->eda));
- __pyx_v_self->eda = __pyx_v_edarray;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":422
- * self.fda = fsarray.darray
- * self.eda = edarray
- * self.fid2symid = self.set_idmap(self.fda) # <<<<<<<<<<<<<<
- * self.eid2symid = self.set_idmap(self.eda)
- * self.precompute()
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_self->fda);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->set_idmap(__pyx_v_self, ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->fid2symid);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->fid2symid));
- __pyx_v_self->fid2symid = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":423
- * self.eda = edarray
- * self.fid2symid = self.set_idmap(self.fda)
- * self.eid2symid = self.set_idmap(self.eda) # <<<<<<<<<<<<<<
- * self.precompute()
- * self.sampler = sampler
- */
- __pyx_t_2 = ((PyObject *)__pyx_v_self->eda);
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->set_idmap(__pyx_v_self, ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->eid2symid);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->eid2symid));
- __pyx_v_self->eid2symid = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":424
- * self.fid2symid = self.set_idmap(self.fda)
- * self.eid2symid = self.set_idmap(self.eda)
- * self.precompute() # <<<<<<<<<<<<<<
- * self.sampler = sampler
- * self.scorer = scorer
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__precompute); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":425
- * self.eid2symid = self.set_idmap(self.eda)
- * self.precompute()
- * self.sampler = sampler # <<<<<<<<<<<<<<
- * self.scorer = scorer
- *
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_sampler));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_sampler));
- __Pyx_GOTREF(__pyx_v_self->sampler);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->sampler));
- __pyx_v_self->sampler = __pyx_v_sampler;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":426
- * self.precompute()
- * self.sampler = sampler
- * self.scorer = scorer # <<<<<<<<<<<<<<
- *
- * cdef set_idmap(self, DataArray darray):
- */
- __Pyx_INCREF(((PyObject *)__pyx_v_scorer));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_scorer));
- __Pyx_GOTREF(__pyx_v_self->scorer);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->scorer));
- __pyx_v_self->scorer = __pyx_v_scorer;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.configure", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":428
- * self.scorer = scorer
- *
- * cdef set_idmap(self, DataArray darray): # <<<<<<<<<<<<<<
- * cdef int word_id, new_word_id, N
- * cdef IntList idmap
- */
-
-static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap(CYTHON_UNUSED struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_DataArray *__pyx_v_darray) {
- int __pyx_v_word_id;
- int __pyx_v_new_word_id;
- int __pyx_v_N;
- struct __pyx_obj_3_sa_IntList *__pyx_v_idmap = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- char *__pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("set_idmap", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":432
- * cdef IntList idmap
- *
- * N = len(darray.id2word) # <<<<<<<<<<<<<<
- * idmap = IntList(initial_len=N)
- * for word_id from 0 <= word_id < N:
- */
- __pyx_t_1 = __pyx_v_darray->id2word;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_N = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":433
- *
- * N = len(darray.id2word)
- * idmap = IntList(initial_len=N) # <<<<<<<<<<<<<<
- * for word_id from 0 <= word_id < N:
- * new_word_id = sym_fromstring(darray.id2word[word_id], True)
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_3 = PyInt_FromLong(__pyx_v_N); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_v_idmap = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":434
- * N = len(darray.id2word)
- * idmap = IntList(initial_len=N)
- * for word_id from 0 <= word_id < N: # <<<<<<<<<<<<<<
- * new_word_id = sym_fromstring(darray.id2word[word_id], True)
- * idmap.arr[word_id] = new_word_id
- */
- __pyx_t_4 = __pyx_v_N;
- for (__pyx_v_word_id = 0; __pyx_v_word_id < __pyx_t_4; __pyx_v_word_id++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":435
- * idmap = IntList(initial_len=N)
- * for word_id from 0 <= word_id < N:
- * new_word_id = sym_fromstring(darray.id2word[word_id], True) # <<<<<<<<<<<<<<
- * idmap.arr[word_id] = new_word_id
- * return idmap
- */
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_darray->id2word, __pyx_v_word_id, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_new_word_id = __pyx_f_3_sa_sym_fromstring(__pyx_t_5, 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":436
- * for word_id from 0 <= word_id < N:
- * new_word_id = sym_fromstring(darray.id2word[word_id], True)
- * idmap.arr[word_id] = new_word_id # <<<<<<<<<<<<<<
- * return idmap
- *
- */
- (__pyx_v_idmap->arr[__pyx_v_word_id]) = __pyx_v_new_word_id;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":437
- * new_word_id = sym_fromstring(darray.id2word[word_id], True)
- * idmap.arr[word_id] = new_word_id
- * return idmap # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_idmap));
- __pyx_r = ((PyObject *)__pyx_v_idmap);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.set_idmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_idmap);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5pattern2phrase(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5pattern2phrase(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("pattern2phrase (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), ((PyObject *)__pyx_v_pattern));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":440
- *
- *
- * def pattern2phrase(self, pattern): # <<<<<<<<<<<<<<
- * # pattern is a tuple, which we must convert to a hiero Phrase
- * result = ()
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_pattern) {
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_v_arity = NULL;
- PyObject *__pyx_v_word_id = NULL;
- int __pyx_v_new_id;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_t_6;
- char *__pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("pattern2phrase", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":442
- * def pattern2phrase(self, pattern):
- * # pattern is a tuple, which we must convert to a hiero Phrase
- * result = () # <<<<<<<<<<<<<<
- * arity = 0
- * for word_id in pattern:
- */
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- __pyx_v_result = __pyx_empty_tuple;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":443
- * # pattern is a tuple, which we must convert to a hiero Phrase
- * result = ()
- * arity = 0 # <<<<<<<<<<<<<<
- * for word_id in pattern:
- * if word_id == -1:
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_arity = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":444
- * result = ()
- * arity = 0
- * for word_id in pattern: # <<<<<<<<<<<<<<
- * if word_id == -1:
- * arity = arity + 1
- */
- if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) {
- __pyx_t_1 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_word_id);
- __pyx_v_word_id = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":445
- * arity = 0
- * for word_id in pattern:
- * if word_id == -1: # <<<<<<<<<<<<<<
- * arity = arity + 1
- * new_id = sym_setindex(self.category, arity)
- */
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":446
- * for word_id in pattern:
- * if word_id == -1:
- * arity = arity + 1 # <<<<<<<<<<<<<<
- * new_id = sym_setindex(self.category, arity)
- * else:
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_arity, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_v_arity);
- __pyx_v_arity = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":447
- * if word_id == -1:
- * arity = arity + 1
- * new_id = sym_setindex(self.category, arity) # <<<<<<<<<<<<<<
- * else:
- * new_id = sym_fromstring(self.fda.id2word[word_id], True)
- */
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_arity); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_new_id = __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_t_6);
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":449
- * new_id = sym_setindex(self.category, arity)
- * else:
- * new_id = sym_fromstring(self.fda.id2word[word_id], True) # <<<<<<<<<<<<<<
- * result = result + (new_id,)
- * return Phrase(result)
- */
- __pyx_t_4 = PyObject_GetItem(__pyx_v_self->fda->id2word, __pyx_v_word_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_new_id = __pyx_f_3_sa_sym_fromstring(__pyx_t_7, 1);
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":450
- * else:
- * new_id = sym_fromstring(self.fda.id2word[word_id], True)
- * result = result + (new_id,) # <<<<<<<<<<<<<<
- * return Phrase(result)
- *
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_new_id); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_result), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_result));
- __pyx_v_result = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":451
- * new_id = sym_fromstring(self.fda.id2word[word_id], True)
- * result = result + (new_id,)
- * return Phrase(result) # <<<<<<<<<<<<<<
- *
- * def pattern2phrase_plus(self, pattern):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_result));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.pattern2phrase", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XDECREF(__pyx_v_arity);
- __Pyx_XDECREF(__pyx_v_word_id);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_7pattern2phrase_plus(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_7pattern2phrase_plus(PyObject *__pyx_v_self, PyObject *__pyx_v_pattern) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("pattern2phrase_plus (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), ((PyObject *)__pyx_v_pattern));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":453
- * return Phrase(result)
- *
- * def pattern2phrase_plus(self, pattern): # <<<<<<<<<<<<<<
- * # returns a list containing both the pattern, and pattern
- * # suffixed/prefixed with the NT category.
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_pattern) {
- PyObject *__pyx_v_patterns = NULL;
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_v_arity = NULL;
- PyObject *__pyx_v_word_id = NULL;
- int __pyx_v_new_id;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_t_6;
- char *__pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("pattern2phrase_plus", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":456
- * # returns a list containing both the pattern, and pattern
- * # suffixed/prefixed with the NT category.
- * patterns = [] # <<<<<<<<<<<<<<
- * result = ()
- * arity = 0
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_patterns = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":457
- * # suffixed/prefixed with the NT category.
- * patterns = []
- * result = () # <<<<<<<<<<<<<<
- * arity = 0
- * for word_id in pattern:
- */
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- __pyx_v_result = __pyx_empty_tuple;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":458
- * patterns = []
- * result = ()
- * arity = 0 # <<<<<<<<<<<<<<
- * for word_id in pattern:
- * if word_id == -1:
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_arity = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":459
- * result = ()
- * arity = 0
- * for word_id in pattern: # <<<<<<<<<<<<<<
- * if word_id == -1:
- * arity = arity + 1
- */
- if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) {
- __pyx_t_1 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_word_id);
- __pyx_v_word_id = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":460
- * arity = 0
- * for word_id in pattern:
- * if word_id == -1: # <<<<<<<<<<<<<<
- * arity = arity + 1
- * new_id = sym_setindex(self.category, arity)
- */
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":461
- * for word_id in pattern:
- * if word_id == -1:
- * arity = arity + 1 # <<<<<<<<<<<<<<
- * new_id = sym_setindex(self.category, arity)
- * else:
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_arity, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_v_arity);
- __pyx_v_arity = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":462
- * if word_id == -1:
- * arity = arity + 1
- * new_id = sym_setindex(self.category, arity) # <<<<<<<<<<<<<<
- * else:
- * new_id = sym_fromstring(self.fda.id2word[word_id], True)
- */
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_arity); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_new_id = __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_t_6);
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":464
- * new_id = sym_setindex(self.category, arity)
- * else:
- * new_id = sym_fromstring(self.fda.id2word[word_id], True) # <<<<<<<<<<<<<<
- * result = result + (new_id,)
- * patterns.append(Phrase(result))
- */
- __pyx_t_4 = PyObject_GetItem(__pyx_v_self->fda->id2word, __pyx_v_word_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_new_id = __pyx_f_3_sa_sym_fromstring(__pyx_t_7, 1);
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":465
- * else:
- * new_id = sym_fromstring(self.fda.id2word[word_id], True)
- * result = result + (new_id,) # <<<<<<<<<<<<<<
- * patterns.append(Phrase(result))
- * patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_new_id); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_result), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_result));
- __pyx_v_result = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":466
- * new_id = sym_fromstring(self.fda.id2word[word_id], True)
- * result = result + (new_id,)
- * patterns.append(Phrase(result)) # <<<<<<<<<<<<<<
- * patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))
- * patterns.append(Phrase((sym_setindex(self.category, 1),) + result))
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_result));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":467
- * result = result + (new_id,)
- * patterns.append(Phrase(result))
- * patterns.append(Phrase(result + (sym_setindex(self.category, 1),))) # <<<<<<<<<<<<<<
- * patterns.append(Phrase((sym_setindex(self.category, 1),) + result))
- * return patterns
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_result), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_4));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":468
- * patterns.append(Phrase(result))
- * patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))
- * patterns.append(Phrase((sym_setindex(self.category, 1),) + result)) # <<<<<<<<<<<<<<
- * return patterns
- *
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_v_result)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_4));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":469
- * patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))
- * patterns.append(Phrase((sym_setindex(self.category, 1),) + result))
- * return patterns # <<<<<<<<<<<<<<
- *
- * def precompute(self):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_patterns));
- __pyx_r = ((PyObject *)__pyx_v_patterns);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.pattern2phrase_plus", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_patterns);
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XDECREF(__pyx_v_arity);
- __Pyx_XDECREF(__pyx_v_word_id);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9precompute(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9precompute(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("precompute (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":471
- * return patterns
- *
- * def precompute(self): # <<<<<<<<<<<<<<
- * cdef Precomputation pre
- *
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self) {
- struct __pyx_obj_3_sa_Precomputation *__pyx_v_pre = 0;
- PyObject *__pyx_v_start_time = NULL;
- PyObject *__pyx_v_pattern = NULL;
- PyObject *__pyx_v_arr = NULL;
- PyObject *__pyx_v_phrases = NULL;
- PyObject *__pyx_v_phrase = NULL;
- PyObject *__pyx_v_stop_time = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- Py_ssize_t __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- int __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- PyObject *(*__pyx_t_12)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("precompute", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":474
- * cdef Precomputation pre
- *
- * if self.precompute_file is not None: # <<<<<<<<<<<<<<
- * start_time = monitor_cpu()
- * logger.info("Reading precomputed data from file %s... ", self.precompute_file)
- */
- __pyx_t_1 = (__pyx_v_self->precompute_file != Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":475
- *
- * if self.precompute_file is not None:
- * start_time = monitor_cpu() # <<<<<<<<<<<<<<
- * logger.info("Reading precomputed data from file %s... ", self.precompute_file)
- * pre = Precomputation(from_binary=self.precompute_file)
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_start_time = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":476
- * if self.precompute_file is not None:
- * start_time = monitor_cpu()
- * logger.info("Reading precomputed data from file %s... ", self.precompute_file) # <<<<<<<<<<<<<<
- * pre = Precomputation(from_binary=self.precompute_file)
- * # check parameters of precomputation -- some are critical and some are not
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_111));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_111));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_111));
- __Pyx_INCREF(__pyx_v_self->precompute_file);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->precompute_file);
- __Pyx_GIVEREF(__pyx_v_self->precompute_file);
- __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":477
- * start_time = monitor_cpu()
- * logger.info("Reading precomputed data from file %s... ", self.precompute_file)
- * pre = Precomputation(from_binary=self.precompute_file) # <<<<<<<<<<<<<<
- * # check parameters of precomputation -- some are critical and some are not
- * if pre.max_nonterminals != self.max_nonterminals:
- */
- __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__from_binary), __pyx_v_self->precompute_file) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Precomputation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_v_pre = ((struct __pyx_obj_3_sa_Precomputation *)__pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":479
- * pre = Precomputation(from_binary=self.precompute_file)
- * # check parameters of precomputation -- some are critical and some are not
- * if pre.max_nonterminals != self.max_nonterminals: # <<<<<<<<<<<<<<
- * logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)
- * if pre.max_length != self.max_length:
- */
- __pyx_t_2 = ((__pyx_v_pre->max_nonterminals != __pyx_v_self->max_nonterminals) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":480
- * # check parameters of precomputation -- some are critical and some are not
- * if pre.max_nonterminals != self.max_nonterminals:
- * logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals) # <<<<<<<<<<<<<<
- * if pre.max_length != self.max_length:
- * logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__warn); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyInt_FromLong(__pyx_v_pre->max_nonterminals); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyInt_FromLong(__pyx_v_self->max_nonterminals); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_112));
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_kp_s_112));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_112));
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_4 = 0;
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":481
- * if pre.max_nonterminals != self.max_nonterminals:
- * logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)
- * if pre.max_length != self.max_length: # <<<<<<<<<<<<<<
- * logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)
- * if pre.train_max_initial_size != self.train_max_initial_size:
- */
- __pyx_t_2 = ((__pyx_v_pre->max_length != __pyx_v_self->max_length) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":482
- * logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)
- * if pre.max_length != self.max_length:
- * logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length) # <<<<<<<<<<<<<<
- * if pre.train_max_initial_size != self.train_max_initial_size:
- * raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__warn); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromLong(__pyx_v_pre->max_length); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyInt_FromLong(__pyx_v_self->max_length); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_113));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_113));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_113));
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_3 = 0;
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":483
- * if pre.max_length != self.max_length:
- * logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)
- * if pre.train_max_initial_size != self.train_max_initial_size: # <<<<<<<<<<<<<<
- * raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))
- * if pre.train_min_gap_size != self.train_min_gap_size:
- */
- __pyx_t_2 = ((__pyx_v_pre->train_max_initial_size != __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":484
- * logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)
- * if pre.train_max_initial_size != self.train_max_initial_size:
- * raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size)) # <<<<<<<<<<<<<<
- * if pre.train_min_gap_size != self.train_min_gap_size:
- * raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))
- */
- __pyx_t_5 = PyInt_FromLong(__pyx_v_pre->train_max_initial_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_self->train_max_initial_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_5 = 0;
- __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_114), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_4));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_Raise(__pyx_t_4, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":485
- * if pre.train_max_initial_size != self.train_max_initial_size:
- * raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))
- * if pre.train_min_gap_size != self.train_min_gap_size: # <<<<<<<<<<<<<<
- * raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))
- * if self.use_index:
- */
- __pyx_t_2 = ((__pyx_v_pre->train_min_gap_size != __pyx_v_self->train_min_gap_size) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":486
- * raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))
- * if pre.train_min_gap_size != self.train_min_gap_size:
- * raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size)) # <<<<<<<<<<<<<<
- * if self.use_index:
- * logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_pre->train_min_gap_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyInt_FromLong(__pyx_v_self->train_min_gap_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_115), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":487
- * if pre.train_min_gap_size != self.train_min_gap_size:
- * raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))
- * if self.use_index: # <<<<<<<<<<<<<<
- * logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))
- * for pattern, arr in pre.precomputed_index.iteritems():
- */
- __pyx_t_2 = (__pyx_v_self->use_index != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":488
- * raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))
- * if self.use_index:
- * logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index)) # <<<<<<<<<<<<<<
- * for pattern, arr in pre.precomputed_index.iteritems():
- * phrases = self.pattern2phrase_plus(pattern)
- */
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_v_pre->precomputed_index;
- __Pyx_INCREF(__pyx_t_6);
- __pyx_t_7 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_116));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_116));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_116));
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":489
- * if self.use_index:
- * logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))
- * for pattern, arr in pre.precomputed_index.iteritems(): # <<<<<<<<<<<<<<
- * phrases = self.pattern2phrase_plus(pattern)
- * for phrase in phrases:
- */
- __pyx_t_7 = 0;
- if (unlikely(__pyx_v_pre->precomputed_index == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_pre->precomputed_index, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __pyx_t_6 = __pyx_t_4;
- __pyx_t_4 = 0;
- while (1) {
- __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_8, &__pyx_t_7, &__pyx_t_4, &__pyx_t_5, NULL, __pyx_t_9);
- if (unlikely(__pyx_t_10 == 0)) break;
- if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_v_pattern);
- __pyx_v_pattern = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_v_arr);
- __pyx_v_arr = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":490
- * logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))
- * for pattern, arr in pre.precomputed_index.iteritems():
- * phrases = self.pattern2phrase_plus(pattern) # <<<<<<<<<<<<<<
- * for phrase in phrases:
- * self.precomputed_index[phrase] = arr
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__pattern2phrase_plus); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_pattern);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pattern);
- __Pyx_GIVEREF(__pyx_v_pattern);
- __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_v_phrases);
- __pyx_v_phrases = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":491
- * for pattern, arr in pre.precomputed_index.iteritems():
- * phrases = self.pattern2phrase_plus(pattern)
- * for phrase in phrases: # <<<<<<<<<<<<<<
- * self.precomputed_index[phrase] = arr
- * if self.use_collocations:
- */
- if (PyList_CheckExact(__pyx_v_phrases) || PyTuple_CheckExact(__pyx_v_phrases)) {
- __pyx_t_3 = __pyx_v_phrases; __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = 0;
- __pyx_t_12 = NULL;
- } else {
- __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_phrases); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_3)) {
- if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_3)) {
- if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_12(__pyx_t_3);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_phrase);
- __pyx_v_phrase = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":492
- * phrases = self.pattern2phrase_plus(pattern)
- * for phrase in phrases:
- * self.precomputed_index[phrase] = arr # <<<<<<<<<<<<<<
- * if self.use_collocations:
- * logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))
- */
- if (PyObject_SetItem(__pyx_v_self->precomputed_index, __pyx_v_phrase, __pyx_v_arr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":493
- * for phrase in phrases:
- * self.precomputed_index[phrase] = arr
- * if self.use_collocations: # <<<<<<<<<<<<<<
- * logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))
- * for pattern, arr in pre.precomputed_collocations.iteritems():
- */
- __pyx_t_2 = (__pyx_v_self->use_collocations != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":494
- * self.precomputed_index[phrase] = arr
- * if self.use_collocations:
- * logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations)) # <<<<<<<<<<<<<<
- * for pattern, arr in pre.precomputed_collocations.iteritems():
- * phrase = self.pattern2phrase(pattern)
- */
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_v_pre->precomputed_collocations;
- __Pyx_INCREF(__pyx_t_6);
- __pyx_t_8 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_117));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_117));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_117));
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":495
- * if self.use_collocations:
- * logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))
- * for pattern, arr in pre.precomputed_collocations.iteritems(): # <<<<<<<<<<<<<<
- * phrase = self.pattern2phrase(pattern)
- * self.precomputed_collocations[phrase] = arr
- */
- __pyx_t_8 = 0;
- if (unlikely(__pyx_v_pre->precomputed_collocations == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_pre->precomputed_collocations, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_7), (&__pyx_t_9)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __pyx_t_6 = __pyx_t_4;
- __pyx_t_4 = 0;
- while (1) {
- __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_7, &__pyx_t_8, &__pyx_t_4, &__pyx_t_3, NULL, __pyx_t_9);
- if (unlikely(__pyx_t_10 == 0)) break;
- if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_v_pattern);
- __pyx_v_pattern = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_v_arr);
- __pyx_v_arr = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":496
- * logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))
- * for pattern, arr in pre.precomputed_collocations.iteritems():
- * phrase = self.pattern2phrase(pattern) # <<<<<<<<<<<<<<
- * self.precomputed_collocations[phrase] = arr
- * stop_time = monitor_cpu()
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__pattern2phrase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_pattern);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pattern);
- __Pyx_GIVEREF(__pyx_v_pattern);
- __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_v_phrase);
- __pyx_v_phrase = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":497
- * for pattern, arr in pre.precomputed_collocations.iteritems():
- * phrase = self.pattern2phrase(pattern)
- * self.precomputed_collocations[phrase] = arr # <<<<<<<<<<<<<<
- * stop_time = monitor_cpu()
- * logger.info("Processing precomputations took %f seconds", stop_time - start_time)
- */
- if (PyObject_SetItem(__pyx_v_self->precomputed_collocations, __pyx_v_phrase, __pyx_v_arr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L13;
- }
- __pyx_L13:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":498
- * phrase = self.pattern2phrase(pattern)
- * self.precomputed_collocations[phrase] = arr
- * stop_time = monitor_cpu() # <<<<<<<<<<<<<<
- * logger.info("Processing precomputations took %f seconds", stop_time - start_time)
- *
- */
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_stop_time = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":499
- * self.precomputed_collocations[phrase] = arr
- * stop_time = monitor_cpu()
- * logger.info("Processing precomputations took %f seconds", stop_time - start_time) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__info); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Subtract(__pyx_v_stop_time, __pyx_v_start_time); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_118));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_118));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_118));
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_pre);
- __Pyx_XDECREF(__pyx_v_start_time);
- __Pyx_XDECREF(__pyx_v_pattern);
- __Pyx_XDECREF(__pyx_v_arr);
- __Pyx_XDECREF(__pyx_v_phrases);
- __Pyx_XDECREF(__pyx_v_phrase);
- __Pyx_XDECREF(__pyx_v_stop_time);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_11get_precomputed_collocation(PyObject *__pyx_v_self, PyObject *__pyx_v_phrase); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_11get_precomputed_collocation(PyObject *__pyx_v_self, PyObject *__pyx_v_phrase) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_precomputed_collocation (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_10get_precomputed_collocation(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), ((PyObject *)__pyx_v_phrase));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":502
- *
- *
- * def get_precomputed_collocation(self, phrase): # <<<<<<<<<<<<<<
- * if phrase in self.precomputed_collocations:
- * arr = self.precomputed_collocations[phrase]
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_10get_precomputed_collocation(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_phrase) {
- PyObject *__pyx_v_arr = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_precomputed_collocation", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":503
- *
- * def get_precomputed_collocation(self, phrase):
- * if phrase in self.precomputed_collocations: # <<<<<<<<<<<<<<
- * arr = self.precomputed_collocations[phrase]
- * return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)
- */
- __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_phrase, __pyx_v_self->precomputed_collocations, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":504
- * def get_precomputed_collocation(self, phrase):
- * if phrase in self.precomputed_collocations:
- * arr = self.precomputed_collocations[phrase] # <<<<<<<<<<<<<<
- * return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)
- * return None
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_v_self->precomputed_collocations, __pyx_v_phrase); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_arr = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":505
- * if phrase in self.precomputed_collocations:
- * arr = self.precomputed_collocations[phrase]
- * return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1) # <<<<<<<<<<<<<<
- * return None
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__arr), __pyx_v_arr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__arr_low), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__arr_high), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_phrase, __pyx_n_s__arity); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__num_subpatterns), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":506
- * arr = self.precomputed_collocations[phrase]
- * return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)
- * return None # <<<<<<<<<<<<<<
- *
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_precomputed_collocation", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_arr);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":509
- *
- *
- * cdef int* baeza_yates_helper(self, int low1, int high1, int* arr1, int step1, # <<<<<<<<<<<<<<
- * int low2, int high2, int* arr2, int step2,
- * int offset_by_one, int len_last, int num_subpatterns, int* result_len):
- */
-
-static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int __pyx_v_low1, int __pyx_v_high1, int *__pyx_v_arr1, int __pyx_v_step1, int __pyx_v_low2, int __pyx_v_high2, int *__pyx_v_arr2, int __pyx_v_step2, int __pyx_v_offset_by_one, int __pyx_v_len_last, int __pyx_v_num_subpatterns, int *__pyx_v_result_len) {
- int __pyx_v_i1;
- int __pyx_v_i2;
- int __pyx_v_med1;
- int __pyx_v_med2;
- int __pyx_v_med1_plus;
- int __pyx_v_med1_minus;
- int __pyx_v_med2_minus;
- int __pyx_v_med2_plus;
- int __pyx_v_d_first;
- int __pyx_v_qsetsize;
- int __pyx_v_dsetsize;
- int __pyx_v_tmp;
- int __pyx_v_search_low;
- int __pyx_v_search_high;
- int __pyx_v_med_result_len;
- int __pyx_v_low_result_len;
- int __pyx_v_high_result_len;
- long __pyx_v_comparison;
- int *__pyx_v_result;
- int *__pyx_v_low_result;
- int *__pyx_v_med_result;
- int *__pyx_v_high_result;
- struct __pyx_t_3_sa_Matching __pyx_v_loc1;
- struct __pyx_t_3_sa_Matching __pyx_v_loc2;
- int *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- double __pyx_t_5;
- double __pyx_t_6;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("baeza_yates_helper", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":522
- * cdef Matching loc1, loc2
- *
- * result = <int*> malloc(0*sizeof(int*)) # <<<<<<<<<<<<<<
- *
- * d_first = 0
- */
- __pyx_v_result = ((int *)malloc((0 * (sizeof(int *)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":524
- * result = <int*> malloc(0*sizeof(int*))
- *
- * d_first = 0 # <<<<<<<<<<<<<<
- * if high1 - low1 > high2 - low2:
- * d_first = 1
- */
- __pyx_v_d_first = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":525
- *
- * d_first = 0
- * if high1 - low1 > high2 - low2: # <<<<<<<<<<<<<<
- * d_first = 1
- *
- */
- __pyx_t_1 = (((__pyx_v_high1 - __pyx_v_low1) > (__pyx_v_high2 - __pyx_v_low2)) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":526
- * d_first = 0
- * if high1 - low1 > high2 - low2:
- * d_first = 1 # <<<<<<<<<<<<<<
- *
- * # First, check to see if we are at any of the recursive base cases
- */
- __pyx_v_d_first = 1;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":530
- * # First, check to see if we are at any of the recursive base cases
- * # Case 1: one of the sets is empty
- * if low1 >= high1 or low2 >= high2: # <<<<<<<<<<<<<<
- * return result
- *
- */
- __pyx_t_1 = ((__pyx_v_low1 >= __pyx_v_high1) != 0);
- if (!__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_low2 >= __pyx_v_high2) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":531
- * # Case 1: one of the sets is empty
- * if low1 >= high1 or low2 >= high2:
- * return result # <<<<<<<<<<<<<<
- *
- * # Case 2: sets are non-overlapping
- */
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":534
- *
- * # Case 2: sets are non-overlapping
- * assign_matching(&loc1, arr1, high1-step1, step1, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == -1:
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, (__pyx_v_high1 - __pyx_v_step1), __pyx_v_step1, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":535
- * # Case 2: sets are non-overlapping
- * assign_matching(&loc1, arr1, high1-step1, step1, self.fda.sent_id.arr)
- * assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == -1:
- * return result
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_low2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":536
- * assign_matching(&loc1, arr1, high1-step1, step1, self.fda.sent_id.arr)
- * assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == -1: # <<<<<<<<<<<<<<
- * return result
- *
- */
- __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == -1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":537
- * assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == -1:
- * return result # <<<<<<<<<<<<<<
- *
- * assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr)
- */
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":539
- * return result
- *
- * assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_low1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":540
- *
- * assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr)
- * assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- * return result
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, (__pyx_v_high2 - __pyx_v_step2), __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":541
- * assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr)
- * assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1: # <<<<<<<<<<<<<<
- * return result
- *
- */
- __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == 1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":542
- * assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- * return result # <<<<<<<<<<<<<<
- *
- * # Case 3: query set and data set do not meet size mismatch constraints;
- */
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":546
- * # Case 3: query set and data set do not meet size mismatch constraints;
- * # We use mergesort instead in this case
- * qsetsize = (high1-low1) / step1 # <<<<<<<<<<<<<<
- * dsetsize = (high2-low2) / step2
- * if d_first:
- */
- __pyx_t_4 = (__pyx_v_high1 - __pyx_v_low1);
- if (unlikely(__pyx_v_step1 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_step1 == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_4))) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_OverflowError, "value too large to perform division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_qsetsize = __Pyx_div_int(__pyx_t_4, __pyx_v_step1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":547
- * # We use mergesort instead in this case
- * qsetsize = (high1-low1) / step1
- * dsetsize = (high2-low2) / step2 # <<<<<<<<<<<<<<
- * if d_first:
- * tmp = qsetsize
- */
- __pyx_t_4 = (__pyx_v_high2 - __pyx_v_low2);
- if (unlikely(__pyx_v_step2 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_step2 == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_4))) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_OverflowError, "value too large to perform division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_dsetsize = __Pyx_div_int(__pyx_t_4, __pyx_v_step2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":548
- * qsetsize = (high1-low1) / step1
- * dsetsize = (high2-low2) / step2
- * if d_first: # <<<<<<<<<<<<<<
- * tmp = qsetsize
- * qsetsize = dsetsize
- */
- __pyx_t_3 = (__pyx_v_d_first != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":549
- * dsetsize = (high2-low2) / step2
- * if d_first:
- * tmp = qsetsize # <<<<<<<<<<<<<<
- * qsetsize = dsetsize
- * dsetsize = tmp
- */
- __pyx_v_tmp = __pyx_v_qsetsize;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":550
- * if d_first:
- * tmp = qsetsize
- * qsetsize = dsetsize # <<<<<<<<<<<<<<
- * dsetsize = tmp
- *
- */
- __pyx_v_qsetsize = __pyx_v_dsetsize;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":551
- * tmp = qsetsize
- * qsetsize = dsetsize
- * dsetsize = tmp # <<<<<<<<<<<<<<
- *
- * if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize:
- */
- __pyx_v_dsetsize = __pyx_v_tmp;
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":553
- * dsetsize = tmp
- *
- * if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize: # <<<<<<<<<<<<<<
- * free(result)
- * return self.merge_helper(low1, high1, arr1, step1, low2, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, result_len)
- */
- __pyx_t_5 = ((__pyx_v_self->by_slack_factor * __pyx_v_qsetsize) * log(__pyx_v_dsetsize));
- __pyx_t_6 = log(2.0);
- if (unlikely(__pyx_t_6 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_3 = (((__pyx_t_5 / __pyx_t_6) > __pyx_v_dsetsize) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":554
- *
- * if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize:
- * free(result) # <<<<<<<<<<<<<<
- * return self.merge_helper(low1, high1, arr1, step1, low2, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, result_len)
- *
- */
- free(__pyx_v_result);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":555
- * if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize:
- * free(result)
- * return self.merge_helper(low1, high1, arr1, step1, low2, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, result_len) # <<<<<<<<<<<<<<
- *
- * # binary search. There are two flavors, depending on
- */
- __pyx_r = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->merge_helper(__pyx_v_self, __pyx_v_low1, __pyx_v_high1, __pyx_v_arr1, __pyx_v_step1, __pyx_v_low2, __pyx_v_high2, __pyx_v_arr2, __pyx_v_step2, __pyx_v_offset_by_one, __pyx_v_len_last, __pyx_v_num_subpatterns, __pyx_v_result_len);
- goto __pyx_L0;
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":559
- * # binary search. There are two flavors, depending on
- * # whether the queryset or dataset is first
- * if d_first: # <<<<<<<<<<<<<<
- * med2 = median(low2, high2, step2)
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- */
- __pyx_t_3 = (__pyx_v_d_first != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":560
- * # whether the queryset or dataset is first
- * if d_first:
- * med2 = median(low2, high2, step2) # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- *
- */
- __pyx_v_med2 = __pyx_f_3_sa_median(__pyx_v_low2, __pyx_v_high2, __pyx_v_step2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":561
- * if d_first:
- * med2 = median(low2, high2, step2)
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- *
- * search_low = low1
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_med2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":563
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- *
- * search_low = low1 # <<<<<<<<<<<<<<
- * search_high = high1
- * while search_low < search_high:
- */
- __pyx_v_search_low = __pyx_v_low1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":564
- *
- * search_low = low1
- * search_high = high1 # <<<<<<<<<<<<<<
- * while search_low < search_high:
- * med1 = median(search_low, search_high, step1)
- */
- __pyx_v_search_high = __pyx_v_high1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":565
- * search_low = low1
- * search_high = high1
- * while search_low < search_high: # <<<<<<<<<<<<<<
- * med1 = median(search_low, search_high, step1)
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_search_low < __pyx_v_search_high) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":566
- * search_high = high1
- * while search_low < search_high:
- * med1 = median(search_low, search_high, step1) # <<<<<<<<<<<<<<
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- */
- __pyx_v_med1 = __pyx_f_3_sa_median(__pyx_v_search_low, __pyx_v_search_high, __pyx_v_step1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":567
- * while search_low < search_high:
- * med1 = median(search_low, search_high, step1)
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus) # <<<<<<<<<<<<<<
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- * if comparison == -1:
- */
- __pyx_f_3_sa_find_comparable_matchings(__pyx_v_low1, __pyx_v_high1, __pyx_v_arr1, __pyx_v_step1, __pyx_v_med1, (&__pyx_v_med1_minus), (&__pyx_v_med1_plus));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":568
- * med1 = median(search_low, search_high, step1)
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last) # <<<<<<<<<<<<<<
- * if comparison == -1:
- * search_low = med1_plus
- */
- __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings_set(__pyx_v_self, __pyx_v_med1_minus, __pyx_v_med1_plus, __pyx_v_arr1, __pyx_v_step1, (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":571
- * if comparison == -1:
- * search_low = med1_plus
- * elif comparison == 1: # <<<<<<<<<<<<<<
- * search_high = med1_minus
- * else:
- */
- switch (__pyx_v_comparison) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":569
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- * if comparison == -1: # <<<<<<<<<<<<<<
- * search_low = med1_plus
- * elif comparison == 1:
- */
- case -1:
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":570
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- * if comparison == -1:
- * search_low = med1_plus # <<<<<<<<<<<<<<
- * elif comparison == 1:
- * search_high = med1_minus
- */
- __pyx_v_search_low = __pyx_v_med1_plus;
- break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":571
- * if comparison == -1:
- * search_low = med1_plus
- * elif comparison == 1: # <<<<<<<<<<<<<<
- * search_high = med1_minus
- * else:
- */
- case 1:
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":572
- * search_low = med1_plus
- * elif comparison == 1:
- * search_high = med1_minus # <<<<<<<<<<<<<<
- * else:
- * break
- */
- __pyx_v_search_high = __pyx_v_med1_minus;
- break;
- default:
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":574
- * search_high = med1_minus
- * else:
- * break # <<<<<<<<<<<<<<
- * else:
- * med1 = median(low1, high1, step1)
- */
- goto __pyx_L11_break;
- break;
- }
- }
- __pyx_L11_break:;
- goto __pyx_L9;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":576
- * break
- * else:
- * med1 = median(low1, high1, step1) # <<<<<<<<<<<<<<
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
- *
- */
- __pyx_v_med1 = __pyx_f_3_sa_median(__pyx_v_low1, __pyx_v_high1, __pyx_v_step1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":577
- * else:
- * med1 = median(low1, high1, step1)
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus) # <<<<<<<<<<<<<<
- *
- * search_low = low2
- */
- __pyx_f_3_sa_find_comparable_matchings(__pyx_v_low1, __pyx_v_high1, __pyx_v_arr1, __pyx_v_step1, __pyx_v_med1, (&__pyx_v_med1_minus), (&__pyx_v_med1_plus));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":579
- * find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
- *
- * search_low = low2 # <<<<<<<<<<<<<<
- * search_high = high2
- * while search_low < search_high:
- */
- __pyx_v_search_low = __pyx_v_low2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":580
- *
- * search_low = low2
- * search_high = high2 # <<<<<<<<<<<<<<
- * while search_low < search_high:
- * med2 = median(search_low, search_high, step2)
- */
- __pyx_v_search_high = __pyx_v_high2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":581
- * search_low = low2
- * search_high = high2
- * while search_low < search_high: # <<<<<<<<<<<<<<
- * med2 = median(search_low, search_high, step2)
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_search_low < __pyx_v_search_high) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":582
- * search_high = high2
- * while search_low < search_high:
- * med2 = median(search_low, search_high, step2) # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- */
- __pyx_v_med2 = __pyx_f_3_sa_median(__pyx_v_search_low, __pyx_v_search_high, __pyx_v_step2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":583
- * while search_low < search_high:
- * med2 = median(search_low, search_high, step2)
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- * if comparison == -1:
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_med2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":584
- * med2 = median(search_low, search_high, step2)
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last) # <<<<<<<<<<<<<<
- * if comparison == -1:
- * search_high = med2
- */
- __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings_set(__pyx_v_self, __pyx_v_med1_minus, __pyx_v_med1_plus, __pyx_v_arr1, __pyx_v_step1, (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":587
- * if comparison == -1:
- * search_high = med2
- * elif comparison == 1: # <<<<<<<<<<<<<<
- * search_low = med2 + step2
- * else:
- */
- switch (__pyx_v_comparison) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":585
- * assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- * if comparison == -1: # <<<<<<<<<<<<<<
- * search_high = med2
- * elif comparison == 1:
- */
- case -1:
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":586
- * comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- * if comparison == -1:
- * search_high = med2 # <<<<<<<<<<<<<<
- * elif comparison == 1:
- * search_low = med2 + step2
- */
- __pyx_v_search_high = __pyx_v_med2;
- break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":587
- * if comparison == -1:
- * search_high = med2
- * elif comparison == 1: # <<<<<<<<<<<<<<
- * search_low = med2 + step2
- * else:
- */
- case 1:
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":588
- * search_high = med2
- * elif comparison == 1:
- * search_low = med2 + step2 # <<<<<<<<<<<<<<
- * else:
- * break
- */
- __pyx_v_search_low = (__pyx_v_med2 + __pyx_v_step2);
- break;
- default:
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":590
- * search_low = med2 + step2
- * else:
- * break # <<<<<<<<<<<<<<
- *
- * med_result_len = 0
- */
- goto __pyx_L13_break;
- break;
- }
- }
- __pyx_L13_break:;
- }
- __pyx_L9:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":592
- * break
- *
- * med_result_len = 0 # <<<<<<<<<<<<<<
- * med_result = <int*> malloc(0*sizeof(int*))
- * if search_high > search_low:
- */
- __pyx_v_med_result_len = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":593
- *
- * med_result_len = 0
- * med_result = <int*> malloc(0*sizeof(int*)) # <<<<<<<<<<<<<<
- * if search_high > search_low:
- * # Then there is a match for the median element of Q
- */
- __pyx_v_med_result = ((int *)malloc((0 * (sizeof(int *)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":594
- * med_result_len = 0
- * med_result = <int*> malloc(0*sizeof(int*))
- * if search_high > search_low: # <<<<<<<<<<<<<<
- * # Then there is a match for the median element of Q
- * # What we want to find is the group of all bindings in the first set
- */
- __pyx_t_3 = ((__pyx_v_search_high > __pyx_v_search_low) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":600
- * # want to store the bindings for all of those elements. We can
- * # subsequently throw all of them away.
- * med2_minus = med2 # <<<<<<<<<<<<<<
- * med2_plus = med2 + step2
- * i1 = med1_minus
- */
- __pyx_v_med2_minus = __pyx_v_med2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":601
- * # subsequently throw all of them away.
- * med2_minus = med2
- * med2_plus = med2 + step2 # <<<<<<<<<<<<<<
- * i1 = med1_minus
- * while i1 < med1_plus:
- */
- __pyx_v_med2_plus = (__pyx_v_med2 + __pyx_v_step2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":602
- * med2_minus = med2
- * med2_plus = med2 + step2
- * i1 = med1_minus # <<<<<<<<<<<<<<
- * while i1 < med1_plus:
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- */
- __pyx_v_i1 = __pyx_v_med1_minus;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":603
- * med2_plus = med2 + step2
- * i1 = med1_minus
- * while i1 < med1_plus: # <<<<<<<<<<<<<<
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * while med2_minus-step2 >= low2:
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_i1 < __pyx_v_med1_plus) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":604
- * i1 = med1_minus
- * while i1 < med1_plus:
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * while med2_minus-step2 >= low2:
- * assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":605
- * while i1 < med1_plus:
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * while med2_minus-step2 >= low2: # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1:
- */
- while (1) {
- __pyx_t_3 = (((__pyx_v_med2_minus - __pyx_v_step2) >= __pyx_v_low2) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":606
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * while med2_minus-step2 >= low2:
- * assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1:
- * med2_minus = med2_minus - step2
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, (__pyx_v_med2_minus - __pyx_v_step2), __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":607
- * while med2_minus-step2 >= low2:
- * assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1: # <<<<<<<<<<<<<<
- * med2_minus = med2_minus - step2
- * else:
- */
- __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) < 1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":608
- * assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1:
- * med2_minus = med2_minus - step2 # <<<<<<<<<<<<<<
- * else:
- * break
- */
- __pyx_v_med2_minus = (__pyx_v_med2_minus - __pyx_v_step2);
- goto __pyx_L19;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":610
- * med2_minus = med2_minus - step2
- * else:
- * break # <<<<<<<<<<<<<<
- * i2 = med2_minus
- * while i2 < high2:
- */
- goto __pyx_L18_break;
- }
- __pyx_L19:;
- }
- __pyx_L18_break:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":611
- * else:
- * break
- * i2 = med2_minus # <<<<<<<<<<<<<<
- * while i2 < high2:
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- */
- __pyx_v_i2 = __pyx_v_med2_minus;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":612
- * break
- * i2 = med2_minus
- * while i2 < high2: # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_i2 < __pyx_v_high2) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":613
- * i2 = med2_minus
- * while i2 < high2:
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- * if comparison == 0:
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_i2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":614
- * while i2 < high2:
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) # <<<<<<<<<<<<<<
- * if comparison == 0:
- * pass
- */
- __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":615
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- * if comparison == 0: # <<<<<<<<<<<<<<
- * pass
- * med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)
- */
- __pyx_t_3 = ((__pyx_v_comparison == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":617
- * if comparison == 0:
- * pass
- * med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len) # <<<<<<<<<<<<<<
- * if comparison == -1:
- * break
- */
- __pyx_v_med_result = __pyx_f_3_sa_append_combined_matching(__pyx_v_med_result, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_num_subpatterns, (&__pyx_v_med_result_len));
- goto __pyx_L22;
- }
- __pyx_L22:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":618
- * pass
- * med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)
- * if comparison == -1: # <<<<<<<<<<<<<<
- * break
- * i2 = i2 + step2
- */
- __pyx_t_3 = ((__pyx_v_comparison == -1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":619
- * med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)
- * if comparison == -1:
- * break # <<<<<<<<<<<<<<
- * i2 = i2 + step2
- * if i2 > med2_plus:
- */
- goto __pyx_L21_break;
- goto __pyx_L23;
- }
- __pyx_L23:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":620
- * if comparison == -1:
- * break
- * i2 = i2 + step2 # <<<<<<<<<<<<<<
- * if i2 > med2_plus:
- * med2_plus = i2
- */
- __pyx_v_i2 = (__pyx_v_i2 + __pyx_v_step2);
- }
- __pyx_L21_break:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":621
- * break
- * i2 = i2 + step2
- * if i2 > med2_plus: # <<<<<<<<<<<<<<
- * med2_plus = i2
- * i1 = i1 + step1
- */
- __pyx_t_3 = ((__pyx_v_i2 > __pyx_v_med2_plus) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":622
- * i2 = i2 + step2
- * if i2 > med2_plus:
- * med2_plus = i2 # <<<<<<<<<<<<<<
- * i1 = i1 + step1
- *
- */
- __pyx_v_med2_plus = __pyx_v_i2;
- goto __pyx_L24;
- }
- __pyx_L24:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":623
- * if i2 > med2_plus:
- * med2_plus = i2
- * i1 = i1 + step1 # <<<<<<<<<<<<<<
- *
- * tmp = med1_minus
- */
- __pyx_v_i1 = (__pyx_v_i1 + __pyx_v_step1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":625
- * i1 = i1 + step1
- *
- * tmp = med1_minus # <<<<<<<<<<<<<<
- * med1_minus = med1_plus
- * med1_plus = tmp
- */
- __pyx_v_tmp = __pyx_v_med1_minus;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":626
- *
- * tmp = med1_minus
- * med1_minus = med1_plus # <<<<<<<<<<<<<<
- * med1_plus = tmp
- * else:
- */
- __pyx_v_med1_minus = __pyx_v_med1_plus;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":627
- * tmp = med1_minus
- * med1_minus = med1_plus
- * med1_plus = tmp # <<<<<<<<<<<<<<
- * else:
- * # No match; need to figure out the point of division in D and Q
- */
- __pyx_v_med1_plus = __pyx_v_tmp;
- goto __pyx_L14;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":630
- * else:
- * # No match; need to figure out the point of division in D and Q
- * med2_minus = med2 # <<<<<<<<<<<<<<
- * med2_plus = med2
- * if d_first:
- */
- __pyx_v_med2_minus = __pyx_v_med2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":631
- * # No match; need to figure out the point of division in D and Q
- * med2_minus = med2
- * med2_plus = med2 # <<<<<<<<<<<<<<
- * if d_first:
- * med2_minus = med2_minus + step2
- */
- __pyx_v_med2_plus = __pyx_v_med2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":632
- * med2_minus = med2
- * med2_plus = med2
- * if d_first: # <<<<<<<<<<<<<<
- * med2_minus = med2_minus + step2
- * if comparison == -1:
- */
- __pyx_t_3 = (__pyx_v_d_first != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":633
- * med2_plus = med2
- * if d_first:
- * med2_minus = med2_minus + step2 # <<<<<<<<<<<<<<
- * if comparison == -1:
- * med1_minus = med1_plus
- */
- __pyx_v_med2_minus = (__pyx_v_med2_minus + __pyx_v_step2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":634
- * if d_first:
- * med2_minus = med2_minus + step2
- * if comparison == -1: # <<<<<<<<<<<<<<
- * med1_minus = med1_plus
- * if comparison == 1:
- */
- __pyx_t_3 = ((__pyx_v_comparison == -1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":635
- * med2_minus = med2_minus + step2
- * if comparison == -1:
- * med1_minus = med1_plus # <<<<<<<<<<<<<<
- * if comparison == 1:
- * med1_plus = med1_minus
- */
- __pyx_v_med1_minus = __pyx_v_med1_plus;
- goto __pyx_L26;
- }
- __pyx_L26:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":636
- * if comparison == -1:
- * med1_minus = med1_plus
- * if comparison == 1: # <<<<<<<<<<<<<<
- * med1_plus = med1_minus
- * else:
- */
- __pyx_t_3 = ((__pyx_v_comparison == 1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":637
- * med1_minus = med1_plus
- * if comparison == 1:
- * med1_plus = med1_minus # <<<<<<<<<<<<<<
- * else:
- * tmp = med1_minus
- */
- __pyx_v_med1_plus = __pyx_v_med1_minus;
- goto __pyx_L27;
- }
- __pyx_L27:;
- goto __pyx_L25;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":639
- * med1_plus = med1_minus
- * else:
- * tmp = med1_minus # <<<<<<<<<<<<<<
- * med1_minus = med1_plus
- * med1_plus = tmp
- */
- __pyx_v_tmp = __pyx_v_med1_minus;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":640
- * else:
- * tmp = med1_minus
- * med1_minus = med1_plus # <<<<<<<<<<<<<<
- * med1_plus = tmp
- * if comparison == 1:
- */
- __pyx_v_med1_minus = __pyx_v_med1_plus;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":641
- * tmp = med1_minus
- * med1_minus = med1_plus
- * med1_plus = tmp # <<<<<<<<<<<<<<
- * if comparison == 1:
- * med2_minus = med2_minus + step2
- */
- __pyx_v_med1_plus = __pyx_v_tmp;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":642
- * med1_minus = med1_plus
- * med1_plus = tmp
- * if comparison == 1: # <<<<<<<<<<<<<<
- * med2_minus = med2_minus + step2
- * med2_plus = med2_plus + step2
- */
- __pyx_t_3 = ((__pyx_v_comparison == 1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":643
- * med1_plus = tmp
- * if comparison == 1:
- * med2_minus = med2_minus + step2 # <<<<<<<<<<<<<<
- * med2_plus = med2_plus + step2
- *
- */
- __pyx_v_med2_minus = (__pyx_v_med2_minus + __pyx_v_step2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":644
- * if comparison == 1:
- * med2_minus = med2_minus + step2
- * med2_plus = med2_plus + step2 # <<<<<<<<<<<<<<
- *
- * low_result_len = 0
- */
- __pyx_v_med2_plus = (__pyx_v_med2_plus + __pyx_v_step2);
- goto __pyx_L28;
- }
- __pyx_L28:;
- }
- __pyx_L25:;
- }
- __pyx_L14:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":646
- * med2_plus = med2_plus + step2
- *
- * low_result_len = 0 # <<<<<<<<<<<<<<
- * low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len)
- * high_result_len = 0
- */
- __pyx_v_low_result_len = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":647
- *
- * low_result_len = 0
- * low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len) # <<<<<<<<<<<<<<
- * high_result_len = 0
- * high_result = self.baeza_yates_helper(med1_minus, high1, arr1, step1, med2_minus, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, &high_result_len)
- */
- __pyx_v_low_result = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->baeza_yates_helper(__pyx_v_self, __pyx_v_low1, __pyx_v_med1_plus, __pyx_v_arr1, __pyx_v_step1, __pyx_v_low2, __pyx_v_med2_plus, __pyx_v_arr2, __pyx_v_step2, __pyx_v_offset_by_one, __pyx_v_len_last, __pyx_v_num_subpatterns, (&__pyx_v_low_result_len));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":648
- * low_result_len = 0
- * low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len)
- * high_result_len = 0 # <<<<<<<<<<<<<<
- * high_result = self.baeza_yates_helper(med1_minus, high1, arr1, step1, med2_minus, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, &high_result_len)
- *
- */
- __pyx_v_high_result_len = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":649
- * low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len)
- * high_result_len = 0
- * high_result = self.baeza_yates_helper(med1_minus, high1, arr1, step1, med2_minus, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, &high_result_len) # <<<<<<<<<<<<<<
- *
- * result = extend_arr(result, result_len, low_result, low_result_len)
- */
- __pyx_v_high_result = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->baeza_yates_helper(__pyx_v_self, __pyx_v_med1_minus, __pyx_v_high1, __pyx_v_arr1, __pyx_v_step1, __pyx_v_med2_minus, __pyx_v_high2, __pyx_v_arr2, __pyx_v_step2, __pyx_v_offset_by_one, __pyx_v_len_last, __pyx_v_num_subpatterns, (&__pyx_v_high_result_len));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":651
- * high_result = self.baeza_yates_helper(med1_minus, high1, arr1, step1, med2_minus, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, &high_result_len)
- *
- * result = extend_arr(result, result_len, low_result, low_result_len) # <<<<<<<<<<<<<<
- * result = extend_arr(result, result_len, med_result, med_result_len)
- * result = extend_arr(result, result_len, high_result, high_result_len)
- */
- __pyx_v_result = __pyx_f_3_sa_extend_arr(__pyx_v_result, __pyx_v_result_len, __pyx_v_low_result, __pyx_v_low_result_len);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":652
- *
- * result = extend_arr(result, result_len, low_result, low_result_len)
- * result = extend_arr(result, result_len, med_result, med_result_len) # <<<<<<<<<<<<<<
- * result = extend_arr(result, result_len, high_result, high_result_len)
- * free(low_result)
- */
- __pyx_v_result = __pyx_f_3_sa_extend_arr(__pyx_v_result, __pyx_v_result_len, __pyx_v_med_result, __pyx_v_med_result_len);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":653
- * result = extend_arr(result, result_len, low_result, low_result_len)
- * result = extend_arr(result, result_len, med_result, med_result_len)
- * result = extend_arr(result, result_len, high_result, high_result_len) # <<<<<<<<<<<<<<
- * free(low_result)
- * free(med_result)
- */
- __pyx_v_result = __pyx_f_3_sa_extend_arr(__pyx_v_result, __pyx_v_result_len, __pyx_v_high_result, __pyx_v_high_result_len);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":654
- * result = extend_arr(result, result_len, med_result, med_result_len)
- * result = extend_arr(result, result_len, high_result, high_result_len)
- * free(low_result) # <<<<<<<<<<<<<<
- * free(med_result)
- * free(high_result)
- */
- free(__pyx_v_low_result);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":655
- * result = extend_arr(result, result_len, high_result, high_result_len)
- * free(low_result)
- * free(med_result) # <<<<<<<<<<<<<<
- * free(high_result)
- *
- */
- free(__pyx_v_med_result);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":656
- * free(low_result)
- * free(med_result)
- * free(high_result) # <<<<<<<<<<<<<<
- *
- * return result
- */
- free(__pyx_v_high_result);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":658
- * free(high_result)
- *
- * return result # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_WriteUnraisable("_sa.HieroCachingRuleFactory.baeza_yates_helper", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":662
- *
- *
- * cdef long compare_matchings_set(self, int i1_minus, int i1_plus, int* arr1, int step1, # <<<<<<<<<<<<<<
- * Matching* loc2, int offset_by_one, int len_last):
- * """
- */
-
-static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int __pyx_v_i1_minus, int __pyx_v_i1_plus, int *__pyx_v_arr1, int __pyx_v_step1, struct __pyx_t_3_sa_Matching *__pyx_v_loc2, int __pyx_v_offset_by_one, int __pyx_v_len_last) {
- int __pyx_v_i1;
- int __pyx_v_comparison;
- int __pyx_v_prev_comparison;
- struct __pyx_t_3_sa_Matching __pyx_v_l1_stack;
- struct __pyx_t_3_sa_Matching *__pyx_v_loc1;
- long __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- __Pyx_RefNannySetupContext("compare_matchings_set", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":673
- * cdef Matching* loc1
- *
- * loc1 = &l1_stack # <<<<<<<<<<<<<<
- *
- * i1 = i1_minus
- */
- __pyx_v_loc1 = (&__pyx_v_l1_stack);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":675
- * loc1 = &l1_stack
- *
- * i1 = i1_minus # <<<<<<<<<<<<<<
- * while i1 < i1_plus:
- * assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)
- */
- __pyx_v_i1 = __pyx_v_i1_minus;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":676
- *
- * i1 = i1_minus
- * while i1 < i1_plus: # <<<<<<<<<<<<<<
- * assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)
- */
- while (1) {
- __pyx_t_1 = ((__pyx_v_i1 < __pyx_v_i1_plus) != 0);
- if (!__pyx_t_1) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":677
- * i1 = i1_minus
- * while i1 < i1_plus:
- * assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)
- * if comparison == 0:
- */
- __pyx_f_3_sa_assign_matching(__pyx_v_loc1, __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":678
- * while i1 < i1_plus:
- * assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last) # <<<<<<<<<<<<<<
- * if comparison == 0:
- * prev_comparison = 0
- */
- __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, __pyx_v_loc1, __pyx_v_loc2, __pyx_v_offset_by_one, __pyx_v_len_last);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":679
- * assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)
- * if comparison == 0: # <<<<<<<<<<<<<<
- * prev_comparison = 0
- * break
- */
- __pyx_t_1 = ((__pyx_v_comparison == 0) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":680
- * comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)
- * if comparison == 0:
- * prev_comparison = 0 # <<<<<<<<<<<<<<
- * break
- * elif i1 == i1_minus:
- */
- __pyx_v_prev_comparison = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":681
- * if comparison == 0:
- * prev_comparison = 0
- * break # <<<<<<<<<<<<<<
- * elif i1 == i1_minus:
- * prev_comparison = comparison
- */
- goto __pyx_L4_break;
- goto __pyx_L5;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":682
- * prev_comparison = 0
- * break
- * elif i1 == i1_minus: # <<<<<<<<<<<<<<
- * prev_comparison = comparison
- * else:
- */
- __pyx_t_1 = ((__pyx_v_i1 == __pyx_v_i1_minus) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":683
- * break
- * elif i1 == i1_minus:
- * prev_comparison = comparison # <<<<<<<<<<<<<<
- * else:
- * if comparison != prev_comparison:
- */
- __pyx_v_prev_comparison = __pyx_v_comparison;
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":685
- * prev_comparison = comparison
- * else:
- * if comparison != prev_comparison: # <<<<<<<<<<<<<<
- * prev_comparison = 0
- * break
- */
- __pyx_t_1 = ((__pyx_v_comparison != __pyx_v_prev_comparison) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":686
- * else:
- * if comparison != prev_comparison:
- * prev_comparison = 0 # <<<<<<<<<<<<<<
- * break
- * i1 = i1 + step1
- */
- __pyx_v_prev_comparison = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":687
- * if comparison != prev_comparison:
- * prev_comparison = 0
- * break # <<<<<<<<<<<<<<
- * i1 = i1 + step1
- * return prev_comparison
- */
- goto __pyx_L4_break;
- goto __pyx_L6;
- }
- __pyx_L6:;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":688
- * prev_comparison = 0
- * break
- * i1 = i1 + step1 # <<<<<<<<<<<<<<
- * return prev_comparison
- *
- */
- __pyx_v_i1 = (__pyx_v_i1 + __pyx_v_step1);
- }
- __pyx_L4_break:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":689
- * break
- * i1 = i1 + step1
- * return prev_comparison # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_prev_comparison;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":692
- *
- *
- * cdef long compare_matchings(self, Matching* loc1, Matching* loc2, int offset_by_one, int len_last): # <<<<<<<<<<<<<<
- * cdef int i
- *
- */
-
-static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_t_3_sa_Matching *__pyx_v_loc1, struct __pyx_t_3_sa_Matching *__pyx_v_loc2, int __pyx_v_offset_by_one, int __pyx_v_len_last) {
- int __pyx_v_i;
- long __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- __Pyx_RefNannySetupContext("compare_matchings", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":695
- * cdef int i
- *
- * if loc1.sent_id > loc2.sent_id: # <<<<<<<<<<<<<<
- * return 1
- * if loc2.sent_id > loc1.sent_id:
- */
- __pyx_t_1 = ((__pyx_v_loc1->sent_id > __pyx_v_loc2->sent_id) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":696
- *
- * if loc1.sent_id > loc2.sent_id:
- * return 1 # <<<<<<<<<<<<<<
- * if loc2.sent_id > loc1.sent_id:
- * return -1
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":697
- * if loc1.sent_id > loc2.sent_id:
- * return 1
- * if loc2.sent_id > loc1.sent_id: # <<<<<<<<<<<<<<
- * return -1
- *
- */
- __pyx_t_1 = ((__pyx_v_loc2->sent_id > __pyx_v_loc1->sent_id) != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":698
- * return 1
- * if loc2.sent_id > loc1.sent_id:
- * return -1 # <<<<<<<<<<<<<<
- *
- * if loc1.size == 1 and loc2.size == 1:
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":700
- * return -1
- *
- * if loc1.size == 1 and loc2.size == 1: # <<<<<<<<<<<<<<
- * if loc2.arr[loc2.start] - loc1.arr[loc1.start] <= self.train_min_gap_size:
- * return 1
- */
- __pyx_t_1 = ((__pyx_v_loc1->size == 1) != 0);
- if (__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_loc2->size == 1) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":701
- *
- * if loc1.size == 1 and loc2.size == 1:
- * if loc2.arr[loc2.start] - loc1.arr[loc1.start] <= self.train_min_gap_size: # <<<<<<<<<<<<<<
- * return 1
- *
- */
- __pyx_t_3 = ((((__pyx_v_loc2->arr[__pyx_v_loc2->start]) - (__pyx_v_loc1->arr[__pyx_v_loc1->start])) <= __pyx_v_self->train_min_gap_size) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":702
- * if loc1.size == 1 and loc2.size == 1:
- * if loc2.arr[loc2.start] - loc1.arr[loc1.start] <= self.train_min_gap_size:
- * return 1 # <<<<<<<<<<<<<<
- *
- * elif offset_by_one:
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L6;
- }
- __pyx_L6:;
- goto __pyx_L5;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":704
- * return 1
- *
- * elif offset_by_one: # <<<<<<<<<<<<<<
- * for i from 1 <= i < loc1.size:
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:
- */
- __pyx_t_3 = (__pyx_v_offset_by_one != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":705
- *
- * elif offset_by_one:
- * for i from 1 <= i < loc1.size: # <<<<<<<<<<<<<<
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:
- * return 1
- */
- __pyx_t_4 = __pyx_v_loc1->size;
- for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_4; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":706
- * elif offset_by_one:
- * for i from 1 <= i < loc1.size:
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]: # <<<<<<<<<<<<<<
- * return 1
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]:
- */
- __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) > (__pyx_v_loc2->arr[((__pyx_v_loc2->start + __pyx_v_i) - 1)])) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":707
- * for i from 1 <= i < loc1.size:
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:
- * return 1 # <<<<<<<<<<<<<<
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]:
- * return -1
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L9;
- }
- __pyx_L9:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":708
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:
- * return 1
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]: # <<<<<<<<<<<<<<
- * return -1
- *
- */
- __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) < (__pyx_v_loc2->arr[((__pyx_v_loc2->start + __pyx_v_i) - 1)])) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":709
- * return 1
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]:
- * return -1 # <<<<<<<<<<<<<<
- *
- * else:
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L10;
- }
- __pyx_L10:;
- }
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":712
- *
- * else:
- * if loc1.arr[loc1.start]+1 > loc2.arr[loc2.start]: # <<<<<<<<<<<<<<
- * return 1
- * if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]:
- */
- __pyx_t_3 = ((((__pyx_v_loc1->arr[__pyx_v_loc1->start]) + 1) > (__pyx_v_loc2->arr[__pyx_v_loc2->start])) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":713
- * else:
- * if loc1.arr[loc1.start]+1 > loc2.arr[loc2.start]:
- * return 1 # <<<<<<<<<<<<<<
- * if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]:
- * return -1
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L11;
- }
- __pyx_L11:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":714
- * if loc1.arr[loc1.start]+1 > loc2.arr[loc2.start]:
- * return 1
- * if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]: # <<<<<<<<<<<<<<
- * return -1
- *
- */
- __pyx_t_3 = ((((__pyx_v_loc1->arr[__pyx_v_loc1->start]) + 1) < (__pyx_v_loc2->arr[__pyx_v_loc2->start])) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":715
- * return 1
- * if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]:
- * return -1 # <<<<<<<<<<<<<<
- *
- * for i from 1 <= i < loc1.size:
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L12;
- }
- __pyx_L12:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":717
- * return -1
- *
- * for i from 1 <= i < loc1.size: # <<<<<<<<<<<<<<
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]:
- * return 1
- */
- __pyx_t_4 = __pyx_v_loc1->size;
- for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_4; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":718
- *
- * for i from 1 <= i < loc1.size:
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]: # <<<<<<<<<<<<<<
- * return 1
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]:
- */
- __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) > (__pyx_v_loc2->arr[(__pyx_v_loc2->start + __pyx_v_i)])) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":719
- * for i from 1 <= i < loc1.size:
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]:
- * return 1 # <<<<<<<<<<<<<<
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]:
- * return -1
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L15;
- }
- __pyx_L15:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":720
- * if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]:
- * return 1
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]: # <<<<<<<<<<<<<<
- * return -1
- *
- */
- __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) < (__pyx_v_loc2->arr[(__pyx_v_loc2->start + __pyx_v_i)])) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":721
- * return 1
- * if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]:
- * return -1 # <<<<<<<<<<<<<<
- *
- * if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size:
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L16;
- }
- __pyx_L16:;
- }
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":723
- * return -1
- *
- * if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size: # <<<<<<<<<<<<<<
- * return -1
- * return 0
- */
- __pyx_t_3 = (((((__pyx_v_loc2->arr[(__pyx_v_loc2->end - 1)]) + __pyx_v_len_last) - (__pyx_v_loc1->arr[__pyx_v_loc1->start])) > __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":724
- *
- * if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size:
- * return -1 # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __pyx_r = -1;
- goto __pyx_L0;
- goto __pyx_L17;
- }
- __pyx_L17:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":725
- * if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size:
- * return -1
- * return 0 # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = 0;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":728
- *
- *
- * cdef int* merge_helper(self, int low1, int high1, int* arr1, int step1, # <<<<<<<<<<<<<<
- * int low2, int high2, int* arr2, int step2,
- * int offset_by_one, int len_last, int num_subpatterns, int* result_len):
- */
-
-static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int __pyx_v_low1, int __pyx_v_high1, int *__pyx_v_arr1, int __pyx_v_step1, int __pyx_v_low2, int __pyx_v_high2, int *__pyx_v_arr2, int __pyx_v_step2, int __pyx_v_offset_by_one, int __pyx_v_len_last, int __pyx_v_num_subpatterns, int *__pyx_v_result_len) {
- int __pyx_v_i1;
- int __pyx_v_i2;
- int __pyx_v_j1;
- int __pyx_v_j2;
- long __pyx_v_comparison;
- int *__pyx_v_result;
- struct __pyx_t_3_sa_Matching __pyx_v_loc1;
- struct __pyx_t_3_sa_Matching __pyx_v_loc2;
- int *__pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- __Pyx_RefNannySetupContext("merge_helper", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":736
- * cdef Matching loc1, loc2
- *
- * result_len[0] = 0 # <<<<<<<<<<<<<<
- * result = <int*> malloc(0*sizeof(int))
- *
- */
- (__pyx_v_result_len[0]) = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":737
- *
- * result_len[0] = 0
- * result = <int*> malloc(0*sizeof(int)) # <<<<<<<<<<<<<<
- *
- * i1 = low1
- */
- __pyx_v_result = ((int *)malloc((0 * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":739
- * result = <int*> malloc(0*sizeof(int))
- *
- * i1 = low1 # <<<<<<<<<<<<<<
- * i2 = low2
- * while i1 < high1 and i2 < high2:
- */
- __pyx_v_i1 = __pyx_v_low1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":740
- *
- * i1 = low1
- * i2 = low2 # <<<<<<<<<<<<<<
- * while i1 < high1 and i2 < high2:
- *
- */
- __pyx_v_i2 = __pyx_v_low2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":741
- * i1 = low1
- * i2 = low2
- * while i1 < high1 and i2 < high2: # <<<<<<<<<<<<<<
- *
- * # First, pop all unneeded loc2's off the stack
- */
- while (1) {
- __pyx_t_1 = ((__pyx_v_i1 < __pyx_v_high1) != 0);
- if (__pyx_t_1) {
- __pyx_t_2 = ((__pyx_v_i2 < __pyx_v_high2) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_1;
- }
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":744
- *
- * # First, pop all unneeded loc2's off the stack
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * while i2 < high2:
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":745
- * # First, pop all unneeded loc2's off the stack
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * while i2 < high2: # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_i2 < __pyx_v_high2) != 0);
- if (!__pyx_t_3) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":746
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * while i2 < high2:
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- * i2 = i2 + step2
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_i2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":747
- * while i2 < high2:
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1: # <<<<<<<<<<<<<<
- * i2 = i2 + step2
- * else:
- */
- __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == 1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":748
- * assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- * if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- * i2 = i2 + step2 # <<<<<<<<<<<<<<
- * else:
- * break
- */
- __pyx_v_i2 = (__pyx_v_i2 + __pyx_v_step2);
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":750
- * i2 = i2 + step2
- * else:
- * break # <<<<<<<<<<<<<<
- *
- * # Next: process all loc1's with the same starting val
- */
- goto __pyx_L6_break;
- }
- __pyx_L7:;
- }
- __pyx_L6_break:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":753
- *
- * # Next: process all loc1's with the same starting val
- * j1 = i1 # <<<<<<<<<<<<<<
- * while i1 < high1 and arr1[j1] == arr1[i1]:
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- */
- __pyx_v_j1 = __pyx_v_i1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":754
- * # Next: process all loc1's with the same starting val
- * j1 = i1
- * while i1 < high1 and arr1[j1] == arr1[i1]: # <<<<<<<<<<<<<<
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * j2 = i2
- */
- while (1) {
- __pyx_t_3 = ((__pyx_v_i1 < __pyx_v_high1) != 0);
- if (__pyx_t_3) {
- __pyx_t_1 = (((__pyx_v_arr1[__pyx_v_j1]) == (__pyx_v_arr1[__pyx_v_i1])) != 0);
- __pyx_t_2 = __pyx_t_1;
- } else {
- __pyx_t_2 = __pyx_t_3;
- }
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":755
- * j1 = i1
- * while i1 < high1 and arr1[j1] == arr1[i1]:
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * j2 = i2
- * while j2 < high2:
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":756
- * while i1 < high1 and arr1[j1] == arr1[i1]:
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * j2 = i2 # <<<<<<<<<<<<<<
- * while j2 < high2:
- * assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)
- */
- __pyx_v_j2 = __pyx_v_i2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":757
- * assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- * j2 = i2
- * while j2 < high2: # <<<<<<<<<<<<<<
- * assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- */
- while (1) {
- __pyx_t_2 = ((__pyx_v_j2 < __pyx_v_high2) != 0);
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":758
- * j2 = i2
- * while j2 < high2:
- * assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- * if comparison == 0:
- */
- __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_j2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":759
- * while j2 < high2:
- * assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) # <<<<<<<<<<<<<<
- * if comparison == 0:
- * result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len)
- */
- __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":760
- * assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- * if comparison == 0: # <<<<<<<<<<<<<<
- * result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len)
- * if comparison == 1:
- */
- __pyx_t_2 = ((__pyx_v_comparison == 0) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":761
- * comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- * if comparison == 0:
- * result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len) # <<<<<<<<<<<<<<
- * if comparison == 1:
- * pass
- */
- __pyx_v_result = __pyx_f_3_sa_append_combined_matching(__pyx_v_result, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_num_subpatterns, __pyx_v_result_len);
- goto __pyx_L12;
- }
- __pyx_L12:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":762
- * if comparison == 0:
- * result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len)
- * if comparison == 1: # <<<<<<<<<<<<<<
- * pass
- * if comparison == -1:
- */
- __pyx_t_2 = ((__pyx_v_comparison == 1) != 0);
- if (__pyx_t_2) {
- goto __pyx_L13;
- }
- __pyx_L13:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":764
- * if comparison == 1:
- * pass
- * if comparison == -1: # <<<<<<<<<<<<<<
- * break
- * else:
- */
- __pyx_t_2 = ((__pyx_v_comparison == -1) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":765
- * pass
- * if comparison == -1:
- * break # <<<<<<<<<<<<<<
- * else:
- * j2 = j2 + step2
- */
- goto __pyx_L11_break;
- goto __pyx_L14;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":767
- * break
- * else:
- * j2 = j2 + step2 # <<<<<<<<<<<<<<
- * i1 = i1 + step1
- * return result
- */
- __pyx_v_j2 = (__pyx_v_j2 + __pyx_v_step2);
- }
- __pyx_L14:;
- }
- __pyx_L11_break:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":768
- * else:
- * j2 = j2 + step2
- * i1 = i1 + step1 # <<<<<<<<<<<<<<
- * return result
- *
- */
- __pyx_v_i1 = (__pyx_v_i1 + __pyx_v_step1);
- }
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":769
- * j2 = j2 + step2
- * i1 = i1 + step1
- * return result # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":772
- *
- *
- * cdef void sort_phrase_loc(self, IntList arr, PhraseLocation loc, Phrase phrase): # <<<<<<<<<<<<<<
- * cdef int i, j
- * cdef VEB veb
- */
-
-static void __pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_IntList *__pyx_v_arr, struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_loc, struct __pyx_obj_3_sa_Phrase *__pyx_v_phrase) {
- int __pyx_v_i;
- int __pyx_v_j;
- struct __pyx_obj_3_sa_VEB *__pyx_v_veb = 0;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("sort_phrase_loc", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":777
- * cdef IntList result
- *
- * if phrase in self.precomputed_index: # <<<<<<<<<<<<<<
- * loc.arr = self.precomputed_index[phrase]
- * else:
- */
- __pyx_t_1 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_phrase), __pyx_v_self->precomputed_index, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":778
- *
- * if phrase in self.precomputed_index:
- * loc.arr = self.precomputed_index[phrase] # <<<<<<<<<<<<<<
- * else:
- * loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_v_self->precomputed_index, ((PyObject *)__pyx_v_phrase)); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_loc->arr);
- __Pyx_DECREF(((PyObject *)__pyx_v_loc->arr));
- __pyx_v_loc->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":780
- * loc.arr = self.precomputed_index[phrase]
- * else:
- * loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low) # <<<<<<<<<<<<<<
- * veb = VEB(arr.len)
- * for i from loc.sa_low <= i < loc.sa_high:
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_4 = PyInt_FromLong((__pyx_v_loc->sa_high - __pyx_v_loc->sa_low)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_GOTREF(__pyx_v_loc->arr);
- __Pyx_DECREF(((PyObject *)__pyx_v_loc->arr));
- __pyx_v_loc->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":781
- * else:
- * loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)
- * veb = VEB(arr.len) # <<<<<<<<<<<<<<
- * for i from loc.sa_low <= i < loc.sa_high:
- * veb._insert(arr.arr[i])
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_v_arr->len); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_VEB)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)__pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":782
- * loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)
- * veb = VEB(arr.len)
- * for i from loc.sa_low <= i < loc.sa_high: # <<<<<<<<<<<<<<
- * veb._insert(arr.arr[i])
- * i = veb.veb.min_val
- */
- __pyx_t_5 = __pyx_v_loc->sa_high;
- for (__pyx_v_i = __pyx_v_loc->sa_low; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":783
- * veb = VEB(arr.len)
- * for i from loc.sa_low <= i < loc.sa_high:
- * veb._insert(arr.arr[i]) # <<<<<<<<<<<<<<
- * i = veb.veb.min_val
- * for j from 0 <= j < loc.sa_high-loc.sa_low:
- */
- ((struct __pyx_vtabstruct_3_sa_VEB *)__pyx_v_veb->__pyx_vtab)->_insert(__pyx_v_veb, (__pyx_v_arr->arr[__pyx_v_i]));
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":784
- * for i from loc.sa_low <= i < loc.sa_high:
- * veb._insert(arr.arr[i])
- * i = veb.veb.min_val # <<<<<<<<<<<<<<
- * for j from 0 <= j < loc.sa_high-loc.sa_low:
- * loc.arr.arr[j] = i
- */
- __pyx_t_5 = __pyx_v_veb->veb->min_val;
- __pyx_v_i = __pyx_t_5;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":785
- * veb._insert(arr.arr[i])
- * i = veb.veb.min_val
- * for j from 0 <= j < loc.sa_high-loc.sa_low: # <<<<<<<<<<<<<<
- * loc.arr.arr[j] = i
- * i = veb._findsucc(i)
- */
- __pyx_t_5 = (__pyx_v_loc->sa_high - __pyx_v_loc->sa_low);
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_5; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":786
- * i = veb.veb.min_val
- * for j from 0 <= j < loc.sa_high-loc.sa_low:
- * loc.arr.arr[j] = i # <<<<<<<<<<<<<<
- * i = veb._findsucc(i)
- * loc.arr_low = 0
- */
- (__pyx_v_loc->arr->arr[__pyx_v_j]) = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":787
- * for j from 0 <= j < loc.sa_high-loc.sa_low:
- * loc.arr.arr[j] = i
- * i = veb._findsucc(i) # <<<<<<<<<<<<<<
- * loc.arr_low = 0
- * loc.arr_high = loc.arr.len
- */
- __pyx_v_i = ((struct __pyx_vtabstruct_3_sa_VEB *)__pyx_v_veb->__pyx_vtab)->_findsucc(__pyx_v_veb, __pyx_v_i);
- }
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":788
- * loc.arr.arr[j] = i
- * i = veb._findsucc(i)
- * loc.arr_low = 0 # <<<<<<<<<<<<<<
- * loc.arr_high = loc.arr.len
- *
- */
- __pyx_v_loc->arr_low = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":789
- * i = veb._findsucc(i)
- * loc.arr_low = 0
- * loc.arr_high = loc.arr.len # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_5 = __pyx_v_loc->arr->len;
- __pyx_v_loc->arr_high = __pyx_t_5;
-
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_WriteUnraisable("_sa.HieroCachingRuleFactory.sort_phrase_loc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_veb);
- __Pyx_RefNannyFinishContext();
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":792
- *
- *
- * cdef intersect_helper(self, Phrase prefix, Phrase suffix, # <<<<<<<<<<<<<<
- * PhraseLocation prefix_loc, PhraseLocation suffix_loc, int algorithm):
- *
- */
-
-static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_Phrase *__pyx_v_prefix, struct __pyx_obj_3_sa_Phrase *__pyx_v_suffix, struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_prefix_loc, struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_suffix_loc, int __pyx_v_algorithm) {
- struct __pyx_obj_3_sa_IntList *__pyx_v_arr1 = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_arr2 = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_result = 0;
- int __pyx_v_low1;
- int __pyx_v_high1;
- int __pyx_v_step1;
- int __pyx_v_low2;
- int __pyx_v_high2;
- int __pyx_v_step2;
- int __pyx_v_offset_by_one;
- int __pyx_v_len_last;
- int __pyx_v_num_subpatterns;
- int __pyx_v_result_len;
- int *__pyx_v_result_ptr;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- Py_ssize_t __pyx_t_6;
- int __pyx_t_7;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("intersect_helper", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":799
- * cdef int* result_ptr
- *
- * result_len = 0 # <<<<<<<<<<<<<<
- *
- * if sym_isvar(suffix[0]):
- */
- __pyx_v_result_len = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":801
- * result_len = 0
- *
- * if sym_isvar(suffix[0]): # <<<<<<<<<<<<<<
- * offset_by_one = 1
- * else:
- */
- __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_suffix), 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_t_2) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":802
- *
- * if sym_isvar(suffix[0]):
- * offset_by_one = 1 # <<<<<<<<<<<<<<
- * else:
- * offset_by_one = 0
- */
- __pyx_v_offset_by_one = 1;
- goto __pyx_L3;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":804
- * offset_by_one = 1
- * else:
- * offset_by_one = 0 # <<<<<<<<<<<<<<
- *
- * len_last = len(suffix.getchunk(suffix.arity()))
- */
- __pyx_v_offset_by_one = 0;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":806
- * offset_by_one = 0
- *
- * len_last = len(suffix.getchunk(suffix.arity())) # <<<<<<<<<<<<<<
- *
- * if prefix_loc.arr is None:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_suffix), __pyx_n_s__getchunk); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_suffix), __pyx_n_s__arity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_len_last = __pyx_t_6;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":808
- * len_last = len(suffix.getchunk(suffix.arity()))
- *
- * if prefix_loc.arr is None: # <<<<<<<<<<<<<<
- * self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)
- * arr1 = prefix_loc.arr
- */
- __pyx_t_3 = (((PyObject *)__pyx_v_prefix_loc->arr) == Py_None);
- __pyx_t_7 = (__pyx_t_3 != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":809
- *
- * if prefix_loc.arr is None:
- * self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix) # <<<<<<<<<<<<<<
- * arr1 = prefix_loc.arr
- * low1 = prefix_loc.arr_low
- */
- __pyx_t_5 = ((PyObject *)__pyx_v_self->fsa->sa);
- __Pyx_INCREF(__pyx_t_5);
- ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->sort_phrase_loc(__pyx_v_self, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5), __pyx_v_prefix_loc, __pyx_v_prefix);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":810
- * if prefix_loc.arr is None:
- * self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)
- * arr1 = prefix_loc.arr # <<<<<<<<<<<<<<
- * low1 = prefix_loc.arr_low
- * high1 = prefix_loc.arr_high
- */
- __pyx_t_5 = ((PyObject *)__pyx_v_prefix_loc->arr);
- __Pyx_INCREF(__pyx_t_5);
- __pyx_v_arr1 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5);
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":811
- * self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)
- * arr1 = prefix_loc.arr
- * low1 = prefix_loc.arr_low # <<<<<<<<<<<<<<
- * high1 = prefix_loc.arr_high
- * step1 = prefix_loc.num_subpatterns
- */
- __pyx_t_2 = __pyx_v_prefix_loc->arr_low;
- __pyx_v_low1 = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":812
- * arr1 = prefix_loc.arr
- * low1 = prefix_loc.arr_low
- * high1 = prefix_loc.arr_high # <<<<<<<<<<<<<<
- * step1 = prefix_loc.num_subpatterns
- *
- */
- __pyx_t_2 = __pyx_v_prefix_loc->arr_high;
- __pyx_v_high1 = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":813
- * low1 = prefix_loc.arr_low
- * high1 = prefix_loc.arr_high
- * step1 = prefix_loc.num_subpatterns # <<<<<<<<<<<<<<
- *
- * if suffix_loc.arr is None:
- */
- __pyx_t_2 = __pyx_v_prefix_loc->num_subpatterns;
- __pyx_v_step1 = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":815
- * step1 = prefix_loc.num_subpatterns
- *
- * if suffix_loc.arr is None: # <<<<<<<<<<<<<<
- * self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix)
- * arr2 = suffix_loc.arr
- */
- __pyx_t_7 = (((PyObject *)__pyx_v_suffix_loc->arr) == Py_None);
- __pyx_t_3 = (__pyx_t_7 != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":816
- *
- * if suffix_loc.arr is None:
- * self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix) # <<<<<<<<<<<<<<
- * arr2 = suffix_loc.arr
- * low2 = suffix_loc.arr_low
- */
- __pyx_t_5 = ((PyObject *)__pyx_v_self->fsa->sa);
- __Pyx_INCREF(__pyx_t_5);
- ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->sort_phrase_loc(__pyx_v_self, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5), __pyx_v_suffix_loc, __pyx_v_suffix);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":817
- * if suffix_loc.arr is None:
- * self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix)
- * arr2 = suffix_loc.arr # <<<<<<<<<<<<<<
- * low2 = suffix_loc.arr_low
- * high2 = suffix_loc.arr_high
- */
- __pyx_t_5 = ((PyObject *)__pyx_v_suffix_loc->arr);
- __Pyx_INCREF(__pyx_t_5);
- __pyx_v_arr2 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5);
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":818
- * self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix)
- * arr2 = suffix_loc.arr
- * low2 = suffix_loc.arr_low # <<<<<<<<<<<<<<
- * high2 = suffix_loc.arr_high
- * step2 = suffix_loc.num_subpatterns
- */
- __pyx_t_2 = __pyx_v_suffix_loc->arr_low;
- __pyx_v_low2 = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":819
- * arr2 = suffix_loc.arr
- * low2 = suffix_loc.arr_low
- * high2 = suffix_loc.arr_high # <<<<<<<<<<<<<<
- * step2 = suffix_loc.num_subpatterns
- *
- */
- __pyx_t_2 = __pyx_v_suffix_loc->arr_high;
- __pyx_v_high2 = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":820
- * low2 = suffix_loc.arr_low
- * high2 = suffix_loc.arr_high
- * step2 = suffix_loc.num_subpatterns # <<<<<<<<<<<<<<
- *
- * num_subpatterns = prefix.arity()+1
- */
- __pyx_t_2 = __pyx_v_suffix_loc->num_subpatterns;
- __pyx_v_step2 = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":822
- * step2 = suffix_loc.num_subpatterns
- *
- * num_subpatterns = prefix.arity()+1 # <<<<<<<<<<<<<<
- *
- * if algorithm == MERGE:
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_prefix), __pyx_n_s__arity); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_num_subpatterns = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":824
- * num_subpatterns = prefix.arity()+1
- *
- * if algorithm == MERGE: # <<<<<<<<<<<<<<
- * result_ptr = self.merge_helper(low1, high1, arr1.arr, step1,
- * low2, high2, arr2.arr, step2,
- */
- __pyx_t_3 = ((__pyx_v_algorithm == __pyx_v_3_sa_MERGE) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":827
- * result_ptr = self.merge_helper(low1, high1, arr1.arr, step1,
- * low2, high2, arr2.arr, step2,
- * offset_by_one, len_last, num_subpatterns, &result_len) # <<<<<<<<<<<<<<
- * else:
- * result_ptr = self.baeza_yates_helper(low1, high1, arr1.arr, step1,
- */
- __pyx_v_result_ptr = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->merge_helper(__pyx_v_self, __pyx_v_low1, __pyx_v_high1, __pyx_v_arr1->arr, __pyx_v_step1, __pyx_v_low2, __pyx_v_high2, __pyx_v_arr2->arr, __pyx_v_step2, __pyx_v_offset_by_one, __pyx_v_len_last, __pyx_v_num_subpatterns, (&__pyx_v_result_len));
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":831
- * result_ptr = self.baeza_yates_helper(low1, high1, arr1.arr, step1,
- * low2, high2, arr2.arr, step2,
- * offset_by_one, len_last, num_subpatterns, &result_len) # <<<<<<<<<<<<<<
- *
- * if result_len == 0:
- */
- __pyx_v_result_ptr = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->baeza_yates_helper(__pyx_v_self, __pyx_v_low1, __pyx_v_high1, __pyx_v_arr1->arr, __pyx_v_step1, __pyx_v_low2, __pyx_v_high2, __pyx_v_arr2->arr, __pyx_v_step2, __pyx_v_offset_by_one, __pyx_v_len_last, __pyx_v_num_subpatterns, (&__pyx_v_result_len));
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":833
- * offset_by_one, len_last, num_subpatterns, &result_len)
- *
- * if result_len == 0: # <<<<<<<<<<<<<<
- * free(result_ptr)
- * return None
- */
- __pyx_t_3 = ((__pyx_v_result_len == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":834
- *
- * if result_len == 0:
- * free(result_ptr) # <<<<<<<<<<<<<<
- * return None
- * else:
- */
- free(__pyx_v_result_ptr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":835
- * if result_len == 0:
- * free(result_ptr)
- * return None # <<<<<<<<<<<<<<
- * else:
- * result = IntList()
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":837
- * return None
- * else:
- * result = IntList() # <<<<<<<<<<<<<<
- * free(result.arr)
- * result.arr = result_ptr
- */
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_v_result = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5);
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":838
- * else:
- * result = IntList()
- * free(result.arr) # <<<<<<<<<<<<<<
- * result.arr = result_ptr
- * result.len = result_len
- */
- free(__pyx_v_result->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":839
- * result = IntList()
- * free(result.arr)
- * result.arr = result_ptr # <<<<<<<<<<<<<<
- * result.len = result_len
- * result.size = result_len
- */
- __pyx_v_result->arr = __pyx_v_result_ptr;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":840
- * free(result.arr)
- * result.arr = result_ptr
- * result.len = result_len # <<<<<<<<<<<<<<
- * result.size = result_len
- * return PhraseLocation(arr_low=0, arr_high=result_len, arr=result, num_subpatterns=num_subpatterns)
- */
- __pyx_v_result->len = __pyx_v_result_len;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":841
- * result.arr = result_ptr
- * result.len = result_len
- * result.size = result_len # <<<<<<<<<<<<<<
- * return PhraseLocation(arr_low=0, arr_high=result_len, arr=result, num_subpatterns=num_subpatterns)
- *
- */
- __pyx_v_result->size = __pyx_v_result_len;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":842
- * result.len = result_len
- * result.size = result_len
- * return PhraseLocation(arr_low=0, arr_high=result_len, arr=result, num_subpatterns=num_subpatterns) # <<<<<<<<<<<<<<
- *
- * cdef loc2str(self, PhraseLocation loc):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__arr_low), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = PyInt_FromLong(__pyx_v_result_len); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__arr_high), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__arr), ((PyObject *)__pyx_v_result)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = PyInt_FromLong(__pyx_v_num_subpatterns); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__num_subpatterns), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
- goto __pyx_L0;
- }
- __pyx_L7:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.intersect_helper", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_arr1);
- __Pyx_XDECREF((PyObject *)__pyx_v_arr2);
- __Pyx_XDECREF((PyObject *)__pyx_v_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":844
- * return PhraseLocation(arr_low=0, arr_high=result_len, arr=result, num_subpatterns=num_subpatterns)
- *
- * cdef loc2str(self, PhraseLocation loc): # <<<<<<<<<<<<<<
- * cdef int i, j
- * result = "{"
- */
-
-static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_loc) {
- int __pyx_v_i;
- int __pyx_v_j;
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("loc2str", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":846
- * cdef loc2str(self, PhraseLocation loc):
- * cdef int i, j
- * result = "{" # <<<<<<<<<<<<<<
- * i = 0
- * while i < loc.arr_high:
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_119));
- __pyx_v_result = ((PyObject *)__pyx_kp_s_119);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":847
- * cdef int i, j
- * result = "{"
- * i = 0 # <<<<<<<<<<<<<<
- * while i < loc.arr_high:
- * result = result + "("
- */
- __pyx_v_i = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":848
- * result = "{"
- * i = 0
- * while i < loc.arr_high: # <<<<<<<<<<<<<<
- * result = result + "("
- * for j from i <= j < i + loc.num_subpatterns:
- */
- while (1) {
- __pyx_t_1 = ((__pyx_v_i < __pyx_v_loc->arr_high) != 0);
- if (!__pyx_t_1) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":849
- * i = 0
- * while i < loc.arr_high:
- * result = result + "(" # <<<<<<<<<<<<<<
- * for j from i <= j < i + loc.num_subpatterns:
- * result = result + ("%d " %loc.arr[j])
- */
- __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_120)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_result);
- __pyx_v_result = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":850
- * while i < loc.arr_high:
- * result = result + "("
- * for j from i <= j < i + loc.num_subpatterns: # <<<<<<<<<<<<<<
- * result = result + ("%d " %loc.arr[j])
- * result = result + ")"
- */
- __pyx_t_3 = (__pyx_v_i + __pyx_v_loc->num_subpatterns);
- for (__pyx_v_j = __pyx_v_i; __pyx_v_j < __pyx_t_3; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":851
- * result = result + "("
- * for j from i <= j < i + loc.num_subpatterns:
- * result = result + ("%d " %loc.arr[j]) # <<<<<<<<<<<<<<
- * result = result + ")"
- * i = i + loc.num_subpatterns
- */
- __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_loc->arr), __pyx_v_j, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_v_result);
- __pyx_v_result = __pyx_t_2;
- __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":852
- * for j from i <= j < i + loc.num_subpatterns:
- * result = result + ("%d " %loc.arr[j])
- * result = result + ")" # <<<<<<<<<<<<<<
- * i = i + loc.num_subpatterns
- * result = result + "}"
- */
- __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_61)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_result);
- __pyx_v_result = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":853
- * result = result + ("%d " %loc.arr[j])
- * result = result + ")"
- * i = i + loc.num_subpatterns # <<<<<<<<<<<<<<
- * result = result + "}"
- * return result
- */
- __pyx_v_i = (__pyx_v_i + __pyx_v_loc->num_subpatterns);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":854
- * result = result + ")"
- * i = i + loc.num_subpatterns
- * result = result + "}" # <<<<<<<<<<<<<<
- * return result
- *
- */
- __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_121)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_result);
- __pyx_v_result = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":855
- * i = i + loc.num_subpatterns
- * result = result + "}"
- * return result # <<<<<<<<<<<<<<
- *
- * cdef PhraseLocation intersect(self, prefix_node, suffix_node, Phrase phrase):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_result);
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.loc2str", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":857
- * return result
- *
- * cdef PhraseLocation intersect(self, prefix_node, suffix_node, Phrase phrase): # <<<<<<<<<<<<<<
- * cdef Phrase prefix, suffix
- * cdef PhraseLocation prefix_loc, suffix_loc, result
- */
-
-static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_prefix_node, PyObject *__pyx_v_suffix_node, struct __pyx_obj_3_sa_Phrase *__pyx_v_phrase) {
- struct __pyx_obj_3_sa_Phrase *__pyx_v_prefix = 0;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_suffix = 0;
- struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_prefix_loc = 0;
- struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_suffix_loc = 0;
- struct __pyx_obj_3_sa_PhraseLocation *__pyx_v_result = 0;
- CYTHON_UNUSED PyObject *__pyx_v_intersect_method = NULL;
- struct __pyx_obj_3_sa_PhraseLocation *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("intersect", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":861
- * cdef PhraseLocation prefix_loc, suffix_loc, result
- *
- * prefix = prefix_node.phrase # <<<<<<<<<<<<<<
- * suffix = suffix_node.phrase
- * prefix_loc = prefix_node.phrase_location
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prefix_node, __pyx_n_s__phrase); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_3_sa_Phrase))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_prefix = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":862
- *
- * prefix = prefix_node.phrase
- * suffix = suffix_node.phrase # <<<<<<<<<<<<<<
- * prefix_loc = prefix_node.phrase_location
- * suffix_loc = suffix_node.phrase_location
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_suffix_node, __pyx_n_s__phrase); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_3_sa_Phrase))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_suffix = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":863
- * prefix = prefix_node.phrase
- * suffix = suffix_node.phrase
- * prefix_loc = prefix_node.phrase_location # <<<<<<<<<<<<<<
- * suffix_loc = suffix_node.phrase_location
- *
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prefix_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_prefix_loc = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":864
- * suffix = suffix_node.phrase
- * prefix_loc = prefix_node.phrase_location
- * suffix_loc = suffix_node.phrase_location # <<<<<<<<<<<<<<
- *
- * result = self.get_precomputed_collocation(phrase)
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_suffix_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_suffix_loc = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":866
- * suffix_loc = suffix_node.phrase_location
- *
- * result = self.get_precomputed_collocation(phrase) # <<<<<<<<<<<<<<
- * if result is not None:
- * intersect_method = "precomputed"
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_122); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_v_phrase));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_phrase));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_phrase));
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_result = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":867
- *
- * result = self.get_precomputed_collocation(phrase)
- * if result is not None: # <<<<<<<<<<<<<<
- * intersect_method = "precomputed"
- *
- */
- __pyx_t_4 = (((PyObject *)__pyx_v_result) != Py_None);
- __pyx_t_5 = (__pyx_t_4 != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":868
- * result = self.get_precomputed_collocation(phrase)
- * if result is not None:
- * intersect_method = "precomputed" # <<<<<<<<<<<<<<
- *
- * if result is None:
- */
- __Pyx_INCREF(((PyObject *)__pyx_n_s__precomputed));
- __pyx_v_intersect_method = ((PyObject *)__pyx_n_s__precomputed);
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":870
- * intersect_method = "precomputed"
- *
- * if result is None: # <<<<<<<<<<<<<<
- * if self.use_baeza_yates:
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)
- */
- __pyx_t_5 = (((PyObject *)__pyx_v_result) == Py_None);
- __pyx_t_4 = (__pyx_t_5 != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":871
- *
- * if result is None:
- * if self.use_baeza_yates: # <<<<<<<<<<<<<<
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)
- * intersect_method="double binary"
- */
- __pyx_t_4 = (__pyx_v_self->use_baeza_yates != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":872
- * if result is None:
- * if self.use_baeza_yates:
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES) # <<<<<<<<<<<<<<
- * intersect_method="double binary"
- * else:
- */
- __pyx_t_3 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->intersect_helper(__pyx_v_self, __pyx_v_prefix, __pyx_v_suffix, __pyx_v_prefix_loc, __pyx_v_suffix_loc, __pyx_v_3_sa_BAEZA_YATES); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_v_result));
- __pyx_v_result = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":873
- * if self.use_baeza_yates:
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)
- * intersect_method="double binary" # <<<<<<<<<<<<<<
- * else:
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_123));
- __Pyx_XDECREF(__pyx_v_intersect_method);
- __pyx_v_intersect_method = ((PyObject *)__pyx_kp_s_123);
- goto __pyx_L5;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":875
- * intersect_method="double binary"
- * else:
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE) # <<<<<<<<<<<<<<
- * intersect_method="merge"
- * return result
- */
- __pyx_t_3 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->intersect_helper(__pyx_v_self, __pyx_v_prefix, __pyx_v_suffix, __pyx_v_prefix_loc, __pyx_v_suffix_loc, __pyx_v_3_sa_MERGE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_v_result));
- __pyx_v_result = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":876
- * else:
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)
- * intersect_method="merge" # <<<<<<<<<<<<<<
- * return result
- *
- */
- __Pyx_INCREF(((PyObject *)__pyx_n_s__merge));
- __Pyx_XDECREF(__pyx_v_intersect_method);
- __pyx_v_intersect_method = ((PyObject *)__pyx_n_s__merge);
- }
- __pyx_L5:;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":877
- * result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)
- * intersect_method="merge"
- * return result # <<<<<<<<<<<<<<
- *
- * def advance(self, frontier, res, fwords):
- */
- __Pyx_XDECREF(((PyObject *)__pyx_r));
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
-
- __pyx_r = ((struct __pyx_obj_3_sa_PhraseLocation *)Py_None); __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_prefix);
- __Pyx_XDECREF((PyObject *)__pyx_v_suffix);
- __Pyx_XDECREF((PyObject *)__pyx_v_prefix_loc);
- __Pyx_XDECREF((PyObject *)__pyx_v_suffix_loc);
- __Pyx_XDECREF((PyObject *)__pyx_v_result);
- __Pyx_XDECREF(__pyx_v_intersect_method);
- __Pyx_XGIVEREF((PyObject *)__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_frontier = 0;
- PyObject *__pyx_v_res = 0;
- PyObject *__pyx_v_fwords = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("advance (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__frontier,&__pyx_n_s__res,&__pyx_n_s__fwords,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__frontier)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__res)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("advance", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("advance", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_frontier = values[0];
- __pyx_v_res = values[1];
- __pyx_v_fwords = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("advance", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_frontier, __pyx_v_res, __pyx_v_fwords);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":879
- * return result
- *
- * def advance(self, frontier, res, fwords): # <<<<<<<<<<<<<<
- * cdef unsigned na
- * nf = []
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_frontier, PyObject *__pyx_v_res, PyObject *__pyx_v_fwords) {
- unsigned int __pyx_v_na;
- PyObject *__pyx_v_nf = NULL;
- PyObject *__pyx_v_toskip = NULL;
- PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_v_alt = NULL;
- PyObject *__pyx_v_pathlen = NULL;
- PyObject *__pyx_v_spanlen = NULL;
- PyObject *__pyx_v_ni = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *(*__pyx_t_8)(PyObject *);
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- int __pyx_t_15;
- unsigned int __pyx_t_16;
- int __pyx_t_17;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("advance", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":881
- * def advance(self, frontier, res, fwords):
- * cdef unsigned na
- * nf = [] # <<<<<<<<<<<<<<
- * for toskip, (i, alt, pathlen) in frontier:
- * spanlen = fwords[i][alt][2]
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_nf = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":882
- * cdef unsigned na
- * nf = []
- * for toskip, (i, alt, pathlen) in frontier: # <<<<<<<<<<<<<<
- * spanlen = fwords[i][alt][2]
- * if toskip == 0:
- */
- if (PyList_CheckExact(__pyx_v_frontier) || PyTuple_CheckExact(__pyx_v_frontier)) {
- __pyx_t_1 = __pyx_v_frontier; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_frontier); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
- PyObject* sequence = __pyx_t_4;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_5 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_6);
- #else
- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- #endif
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
- index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = NULL;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L6_unpacking_done;
- __pyx_L5_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L6_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_toskip);
- __pyx_v_toskip = __pyx_t_5;
- __pyx_t_5 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
- PyObject* sequence = __pyx_t_6;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_7 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_9 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_10 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_10);
- #else
- __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- #endif
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = Py_TYPE(__pyx_t_11)->tp_iternext;
- index = 0; __pyx_t_7 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L7_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_7);
- index = 1; __pyx_t_9 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_9);
- index = 2; __pyx_t_10 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L7_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_10);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = NULL;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L8_unpacking_done;
- __pyx_L7_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_8 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L8_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_7;
- __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_v_alt);
- __pyx_v_alt = __pyx_t_9;
- __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_v_pathlen);
- __pyx_v_pathlen = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":883
- * nf = []
- * for toskip, (i, alt, pathlen) in frontier:
- * spanlen = fwords[i][alt][2] # <<<<<<<<<<<<<<
- * if toskip == 0:
- * res.append((i, alt, pathlen))
- */
- __pyx_t_4 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyObject_GetItem(__pyx_t_4, __pyx_v_alt); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_v_spanlen);
- __pyx_v_spanlen = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":884
- * for toskip, (i, alt, pathlen) in frontier:
- * spanlen = fwords[i][alt][2]
- * if toskip == 0: # <<<<<<<<<<<<<<
- * res.append((i, alt, pathlen))
- * ni = i + spanlen
- */
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_toskip, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_12) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":885
- * spanlen = fwords[i][alt][2]
- * if toskip == 0:
- * res.append((i, alt, pathlen)) # <<<<<<<<<<<<<<
- * ni = i + spanlen
- * if ni < len(fwords) and pathlen + 1 < self.max_initial_size:
- */
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- __Pyx_INCREF(__pyx_v_alt);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_alt);
- __Pyx_GIVEREF(__pyx_v_alt);
- __Pyx_INCREF(__pyx_v_pathlen);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_pathlen);
- __Pyx_GIVEREF(__pyx_v_pathlen);
- __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_res, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L9;
- }
- __pyx_L9:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":886
- * if toskip == 0:
- * res.append((i, alt, pathlen))
- * ni = i + spanlen # <<<<<<<<<<<<<<
- * if ni < len(fwords) and pathlen + 1 < self.max_initial_size:
- * for na in range(len(fwords[ni])):
- */
- __pyx_t_6 = PyNumber_Add(__pyx_v_i, __pyx_v_spanlen); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_v_ni);
- __pyx_v_ni = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":887
- * res.append((i, alt, pathlen))
- * ni = i + spanlen
- * if ni < len(fwords) and pathlen + 1 < self.max_initial_size: # <<<<<<<<<<<<<<
- * for na in range(len(fwords[ni])):
- * nf.append((toskip - 1, (ni, na, pathlen + 1)))
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_fwords); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_ni, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_12) {
- __pyx_t_4 = PyNumber_Add(__pyx_v_pathlen, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyInt_FromLong(__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_15 = __pyx_t_14;
- } else {
- __pyx_t_15 = __pyx_t_12;
- }
- if (__pyx_t_15) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":888
- * ni = i + spanlen
- * if ni < len(fwords) and pathlen + 1 < self.max_initial_size:
- * for na in range(len(fwords[ni])): # <<<<<<<<<<<<<<
- * nf.append((toskip - 1, (ni, na, pathlen + 1)))
- * if len(nf) > 0:
- */
- __pyx_t_5 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ni); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_13 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_13; __pyx_t_16+=1) {
- __pyx_v_na = __pyx_t_16;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":889
- * if ni < len(fwords) and pathlen + 1 < self.max_initial_size:
- * for na in range(len(fwords[ni])):
- * nf.append((toskip - 1, (ni, na, pathlen + 1))) # <<<<<<<<<<<<<<
- * if len(nf) > 0:
- * return self.advance(nf, res, fwords)
- */
- __pyx_t_5 = PyNumber_Subtract(__pyx_v_toskip, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyLong_FromUnsignedLong(__pyx_v_na); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = PyNumber_Add(__pyx_v_pathlen, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_v_ni);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_ni);
- __Pyx_GIVEREF(__pyx_v_ni);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_6 = 0;
- __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_10));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_10));
- __pyx_t_5 = 0;
- __pyx_t_10 = 0;
- __pyx_t_17 = __Pyx_PyList_Append(__pyx_v_nf, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- }
- goto __pyx_L10;
- }
- __pyx_L10:;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":890
- * for na in range(len(fwords[ni])):
- * nf.append((toskip - 1, (ni, na, pathlen + 1)))
- * if len(nf) > 0: # <<<<<<<<<<<<<<
- * return self.advance(nf, res, fwords)
- * else:
- */
- __pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_v_nf)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_15 = ((__pyx_t_2 > 0) != 0);
- if (__pyx_t_15) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":891
- * nf.append((toskip - 1, (ni, na, pathlen + 1)))
- * if len(nf) > 0:
- * return self.advance(nf, res, fwords) # <<<<<<<<<<<<<<
- * else:
- * return res
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__advance); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_v_nf));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_nf));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_nf));
- __Pyx_INCREF(__pyx_v_res);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_res);
- __Pyx_GIVEREF(__pyx_v_res);
- __Pyx_INCREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_v_fwords);
- __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_10;
- __pyx_t_10 = 0;
- goto __pyx_L0;
- goto __pyx_L13;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":893
- * return self.advance(nf, res, fwords)
- * else:
- * return res # <<<<<<<<<<<<<<
- *
- * def get_all_nodes_isteps_away(self, skip, i, spanlen, pathlen, fwords, next_states, reachable_buffer):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_res);
- __pyx_r = __pyx_v_res;
- goto __pyx_L0;
- }
- __pyx_L13:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_nf);
- __Pyx_XDECREF(__pyx_v_toskip);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_alt);
- __Pyx_XDECREF(__pyx_v_pathlen);
- __Pyx_XDECREF(__pyx_v_spanlen);
- __Pyx_XDECREF(__pyx_v_ni);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_away(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_away(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_skip = 0;
- PyObject *__pyx_v_i = 0;
- PyObject *__pyx_v_spanlen = 0;
- PyObject *__pyx_v_pathlen = 0;
- PyObject *__pyx_v_fwords = 0;
- PyObject *__pyx_v_next_states = 0;
- PyObject *__pyx_v_reachable_buffer = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_all_nodes_isteps_away (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__skip,&__pyx_n_s__i,&__pyx_n_s__spanlen,&__pyx_n_s__pathlen,&__pyx_n_s__fwords,&__pyx_n_s__next_states,&__pyx_n_s__reachable_buffer,0};
- PyObject* values[7] = {0,0,0,0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__skip)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__spanlen)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pathlen)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 4:
- if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 5:
- if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__next_states)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 6:
- if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reachable_buffer)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_all_nodes_isteps_away") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- }
- __pyx_v_skip = values[0];
- __pyx_v_i = values[1];
- __pyx_v_spanlen = values[2];
- __pyx_v_pathlen = values[3];
- __pyx_v_fwords = values[4];
- __pyx_v_next_states = values[5];
- __pyx_v_reachable_buffer = values[6];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_all_nodes_isteps_away", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_away(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_skip, __pyx_v_i, __pyx_v_spanlen, __pyx_v_pathlen, __pyx_v_fwords, __pyx_v_next_states, __pyx_v_reachable_buffer);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":895
- * return res
- *
- * def get_all_nodes_isteps_away(self, skip, i, spanlen, pathlen, fwords, next_states, reachable_buffer): # <<<<<<<<<<<<<<
- * cdef unsigned alt_it
- * frontier = []
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_away(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_skip, PyObject *__pyx_v_i, PyObject *__pyx_v_spanlen, PyObject *__pyx_v_pathlen, PyObject *__pyx_v_fwords, PyObject *__pyx_v_next_states, PyObject *__pyx_v_reachable_buffer) {
- PyObject *__pyx_v_frontier = NULL;
- PyObject *__pyx_v_key = NULL;
- PyObject *__pyx_v_reachable = NULL;
- PyObject *__pyx_v_nextreachable = NULL;
- PyObject *__pyx_v_next_id = NULL;
- PyObject *__pyx_v_jump = NULL;
- PyObject *__pyx_v_alt_id = NULL;
- PyObject *__pyx_v_newel = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_t_6;
- PyObject *(*__pyx_t_7)(PyObject *);
- Py_ssize_t __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- Py_ssize_t __pyx_t_12;
- PyObject *(*__pyx_t_13)(PyObject *);
- PyObject *__pyx_t_14 = NULL;
- int __pyx_t_15;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_all_nodes_isteps_away", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":897
- * def get_all_nodes_isteps_away(self, skip, i, spanlen, pathlen, fwords, next_states, reachable_buffer):
- * cdef unsigned alt_it
- * frontier = [] # <<<<<<<<<<<<<<
- * if i+spanlen+skip >= len(next_states):
- * return frontier
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_frontier = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":898
- * cdef unsigned alt_it
- * frontier = []
- * if i+spanlen+skip >= len(next_states): # <<<<<<<<<<<<<<
- * return frontier
- * key = tuple([i,spanlen])
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_i, __pyx_v_spanlen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_skip); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = PyObject_Length(__pyx_v_next_states); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":899
- * frontier = []
- * if i+spanlen+skip >= len(next_states):
- * return frontier # <<<<<<<<<<<<<<
- * key = tuple([i,spanlen])
- * reachable = []
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_frontier));
- __pyx_r = ((PyObject *)__pyx_v_frontier);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":900
- * if i+spanlen+skip >= len(next_states):
- * return frontier
- * key = tuple([i,spanlen]) # <<<<<<<<<<<<<<
- * reachable = []
- * if key in reachable_buffer:
- */
- __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_i);
- PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- __Pyx_INCREF(__pyx_v_spanlen);
- PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_spanlen);
- __Pyx_GIVEREF(__pyx_v_spanlen);
- __pyx_t_1 = ((PyObject *)PyList_AsTuple(((PyObject*)__pyx_t_4))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_v_key = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":901
- * return frontier
- * key = tuple([i,spanlen])
- * reachable = [] # <<<<<<<<<<<<<<
- * if key in reachable_buffer:
- * reachable = reachable_buffer[key]
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_reachable = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":902
- * key = tuple([i,spanlen])
- * reachable = []
- * if key in reachable_buffer: # <<<<<<<<<<<<<<
- * reachable = reachable_buffer[key]
- * else:
- */
- __pyx_t_5 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_key), __pyx_v_reachable_buffer, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = (__pyx_t_5 != 0);
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":903
- * reachable = []
- * if key in reachable_buffer:
- * reachable = reachable_buffer[key] # <<<<<<<<<<<<<<
- * else:
- * reachable = self.reachable(fwords, i, spanlen)
- */
- __pyx_t_1 = PyObject_GetItem(__pyx_v_reachable_buffer, ((PyObject *)__pyx_v_key)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_reachable);
- __pyx_v_reachable = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L4;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":905
- * reachable = reachable_buffer[key]
- * else:
- * reachable = self.reachable(fwords, i, spanlen) # <<<<<<<<<<<<<<
- * reachable_buffer[key] = reachable
- * for nextreachable in reachable:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_v_fwords);
- __Pyx_INCREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- __Pyx_INCREF(__pyx_v_spanlen);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_spanlen);
- __Pyx_GIVEREF(__pyx_v_spanlen);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_v_reachable);
- __pyx_v_reachable = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":906
- * else:
- * reachable = self.reachable(fwords, i, spanlen)
- * reachable_buffer[key] = reachable # <<<<<<<<<<<<<<
- * for nextreachable in reachable:
- * for next_id in next_states[nextreachable]:
- */
- if (PyObject_SetItem(__pyx_v_reachable_buffer, ((PyObject *)__pyx_v_key), __pyx_v_reachable) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":907
- * reachable = self.reachable(fwords, i, spanlen)
- * reachable_buffer[key] = reachable
- * for nextreachable in reachable: # <<<<<<<<<<<<<<
- * for next_id in next_states[nextreachable]:
- * jump = self.shortest(fwords,i,next_id)
- */
- if (PyList_CheckExact(__pyx_v_reachable) || PyTuple_CheckExact(__pyx_v_reachable)) {
- __pyx_t_2 = __pyx_v_reachable; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
- __pyx_t_7 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_reachable); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_7(__pyx_t_2);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_nextreachable);
- __pyx_v_nextreachable = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":908
- * reachable_buffer[key] = reachable
- * for nextreachable in reachable:
- * for next_id in next_states[nextreachable]: # <<<<<<<<<<<<<<
- * jump = self.shortest(fwords,i,next_id)
- * if jump < skip:
- */
- __pyx_t_4 = PyObject_GetItem(__pyx_v_next_states, __pyx_v_nextreachable); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
- __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_9(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_next_id);
- __pyx_v_next_id = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":909
- * for nextreachable in reachable:
- * for next_id in next_states[nextreachable]:
- * jump = self.shortest(fwords,i,next_id) # <<<<<<<<<<<<<<
- * if jump < skip:
- * continue
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__shortest); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_v_fwords);
- __Pyx_INCREF(__pyx_v_i);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_i);
- __Pyx_GIVEREF(__pyx_v_i);
- __Pyx_INCREF(__pyx_v_next_id);
- PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_v_next_id);
- __Pyx_GIVEREF(__pyx_v_next_id);
- __pyx_t_11 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_v_jump);
- __pyx_v_jump = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":910
- * for next_id in next_states[nextreachable]:
- * jump = self.shortest(fwords,i,next_id)
- * if jump < skip: # <<<<<<<<<<<<<<
- * continue
- * if pathlen+jump <= self.max_initial_size:
- */
- __pyx_t_11 = PyObject_RichCompare(__pyx_v_jump, __pyx_v_skip, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":911
- * jump = self.shortest(fwords,i,next_id)
- * if jump < skip:
- * continue # <<<<<<<<<<<<<<
- * if pathlen+jump <= self.max_initial_size:
- * for alt_id in range(len(fwords[next_id])):
- */
- goto __pyx_L7_continue;
- goto __pyx_L9;
- }
- __pyx_L9:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":912
- * if jump < skip:
- * continue
- * if pathlen+jump <= self.max_initial_size: # <<<<<<<<<<<<<<
- * for alt_id in range(len(fwords[next_id])):
- * if fwords[next_id][alt_id][0] != EPSILON:
- */
- __pyx_t_11 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_10 = PyInt_FromLong(__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_11, __pyx_t_10, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":913
- * continue
- * if pathlen+jump <= self.max_initial_size:
- * for alt_id in range(len(fwords[next_id])): # <<<<<<<<<<<<<<
- * if fwords[next_id][alt_id][0] != EPSILON:
- * newel = (next_id,alt_id,pathlen+jump)
- */
- __pyx_t_4 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_next_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_12 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
- __pyx_t_10 = __pyx_t_4; __Pyx_INCREF(__pyx_t_10); __pyx_t_12 = 0;
- __pyx_t_13 = NULL;
- } else {
- __pyx_t_12 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_13 = Py_TYPE(__pyx_t_10)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- for (;;) {
- if (!__pyx_t_13 && PyList_CheckExact(__pyx_t_10)) {
- if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_10)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_10, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_13 && PyTuple_CheckExact(__pyx_t_10)) {
- if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_10, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_13(__pyx_t_10);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_alt_id);
- __pyx_v_alt_id = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":914
- * if pathlen+jump <= self.max_initial_size:
- * for alt_id in range(len(fwords[next_id])):
- * if fwords[next_id][alt_id][0] != EPSILON: # <<<<<<<<<<<<<<
- * newel = (next_id,alt_id,pathlen+jump)
- * if newel not in frontier:
- */
- __pyx_t_4 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_next_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = PyObject_GetItem(__pyx_t_4, __pyx_v_alt_id); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_11, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_14 = PyObject_RichCompare(__pyx_t_4, __pyx_t_11, Py_NE); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":915
- * for alt_id in range(len(fwords[next_id])):
- * if fwords[next_id][alt_id][0] != EPSILON:
- * newel = (next_id,alt_id,pathlen+jump) # <<<<<<<<<<<<<<
- * if newel not in frontier:
- * frontier.append((next_id,alt_id,pathlen+jump))
- */
- __pyx_t_14 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_v_next_id);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_next_id);
- __Pyx_GIVEREF(__pyx_v_next_id);
- __Pyx_INCREF(__pyx_v_alt_id);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_alt_id);
- __Pyx_GIVEREF(__pyx_v_alt_id);
- PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_14);
- __pyx_t_14 = 0;
- __Pyx_XDECREF(((PyObject *)__pyx_v_newel));
- __pyx_v_newel = ((PyObject*)__pyx_t_11);
- __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":916
- * if fwords[next_id][alt_id][0] != EPSILON:
- * newel = (next_id,alt_id,pathlen+jump)
- * if newel not in frontier: # <<<<<<<<<<<<<<
- * frontier.append((next_id,alt_id,pathlen+jump))
- * return frontier
- */
- __pyx_t_6 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_newel), ((PyObject *)__pyx_v_frontier), Py_NE)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = (__pyx_t_6 != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":917
- * newel = (next_id,alt_id,pathlen+jump)
- * if newel not in frontier:
- * frontier.append((next_id,alt_id,pathlen+jump)) # <<<<<<<<<<<<<<
- * return frontier
- *
- */
- __pyx_t_11 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_INCREF(__pyx_v_next_id);
- PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_next_id);
- __Pyx_GIVEREF(__pyx_v_next_id);
- __Pyx_INCREF(__pyx_v_alt_id);
- PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_alt_id);
- __Pyx_GIVEREF(__pyx_v_alt_id);
- PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_frontier, ((PyObject *)__pyx_t_14)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
- goto __pyx_L14;
- }
- __pyx_L14:;
- goto __pyx_L13;
- }
- __pyx_L13:;
- }
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L10;
- }
- __pyx_L10:;
- __pyx_L7_continue:;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":918
- * if newel not in frontier:
- * frontier.append((next_id,alt_id,pathlen+jump))
- * return frontier # <<<<<<<<<<<<<<
- *
- * def reachable(self, fwords, ifrom, dist):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_frontier));
- __pyx_r = ((PyObject *)__pyx_v_frontier);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_14);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_all_nodes_isteps_away", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_frontier);
- __Pyx_XDECREF(__pyx_v_key);
- __Pyx_XDECREF(__pyx_v_reachable);
- __Pyx_XDECREF(__pyx_v_nextreachable);
- __Pyx_XDECREF(__pyx_v_next_id);
- __Pyx_XDECREF(__pyx_v_jump);
- __Pyx_XDECREF(__pyx_v_alt_id);
- __Pyx_XDECREF(__pyx_v_newel);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_fwords = 0;
- PyObject *__pyx_v_ifrom = 0;
- PyObject *__pyx_v_dist = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("reachable (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__ifrom,&__pyx_n_s__dist,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ifrom)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("reachable", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dist)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("reachable", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reachable") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_fwords = values[0];
- __pyx_v_ifrom = values[1];
- __pyx_v_dist = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("reachable", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.reachable", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_fwords, __pyx_v_ifrom, __pyx_v_dist);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":920
- * return frontier
- *
- * def reachable(self, fwords, ifrom, dist): # <<<<<<<<<<<<<<
- * ret = []
- * if ifrom >= len(fwords):
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_fwords, PyObject *__pyx_v_ifrom, PyObject *__pyx_v_dist) {
- PyObject *__pyx_v_ret = NULL;
- PyObject *__pyx_v_alt_id = NULL;
- PyObject *__pyx_v_ifromchild = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- PyObject *(*__pyx_t_5)(PyObject *);
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- PyObject *(*__pyx_t_12)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("reachable", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":921
- *
- * def reachable(self, fwords, ifrom, dist):
- * ret = [] # <<<<<<<<<<<<<<
- * if ifrom >= len(fwords):
- * return ret
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_ret = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":922
- * def reachable(self, fwords, ifrom, dist):
- * ret = []
- * if ifrom >= len(fwords): # <<<<<<<<<<<<<<
- * return ret
- * for alt_id in range(len(fwords[ifrom])):
- */
- __pyx_t_2 = PyObject_Length(__pyx_v_fwords); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":923
- * ret = []
- * if ifrom >= len(fwords):
- * return ret # <<<<<<<<<<<<<<
- * for alt_id in range(len(fwords[ifrom])):
- * if fwords[ifrom][alt_id][0] == EPSILON:
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_ret));
- __pyx_r = ((PyObject *)__pyx_v_ret);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":924
- * if ifrom >= len(fwords):
- * return ret
- * for alt_id in range(len(fwords[ifrom])): # <<<<<<<<<<<<<<
- * if fwords[ifrom][alt_id][0] == EPSILON:
- * ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_3 = __pyx_t_5(__pyx_t_1);
- if (unlikely(!__pyx_t_3)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_3);
- }
- __Pyx_XDECREF(__pyx_v_alt_id);
- __pyx_v_alt_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":925
- * return ret
- * for alt_id in range(len(fwords[ifrom])):
- * if fwords[ifrom][alt_id][0] == EPSILON: # <<<<<<<<<<<<<<
- * ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))
- * else:
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyObject_GetItem(__pyx_t_3, __pyx_v_alt_id); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_6, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":926
- * for alt_id in range(len(fwords[ifrom])):
- * if fwords[ifrom][alt_id][0] == EPSILON:
- * ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist)) # <<<<<<<<<<<<<<
- * else:
- * if dist == 0:
- */
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_ret), __pyx_n_s__extend); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_v_alt_id); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_8, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyNumber_Add(__pyx_v_ifrom, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_dist);
- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_dist);
- __Pyx_GIVEREF(__pyx_v_dist);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L6;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":928
- * ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))
- * else:
- * if dist == 0: # <<<<<<<<<<<<<<
- * if ifrom not in ret:
- * ret.append(ifrom)
- */
- __pyx_t_8 = PyObject_RichCompare(__pyx_v_dist, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":929
- * else:
- * if dist == 0:
- * if ifrom not in ret: # <<<<<<<<<<<<<<
- * ret.append(ifrom)
- * else:
- */
- __pyx_t_4 = (__Pyx_PySequence_Contains(__pyx_v_ifrom, ((PyObject *)__pyx_v_ret), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = (__pyx_t_4 != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":930
- * if dist == 0:
- * if ifrom not in ret:
- * ret.append(ifrom) # <<<<<<<<<<<<<<
- * else:
- * for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1):
- */
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_ret, __pyx_v_ifrom); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L8;
- }
- __pyx_L8:;
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":932
- * ret.append(ifrom)
- * else:
- * for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1): # <<<<<<<<<<<<<<
- * if ifromchild not in ret:
- * ret.append(ifromchild)
- */
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_v_alt_id); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_7, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyNumber_Add(__pyx_v_ifrom, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_dist, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_7 = 0;
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6); __pyx_t_11 = 0;
- __pyx_t_12 = NULL;
- } else {
- __pyx_t_11 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- for (;;) {
- if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_6)) {
- if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_6)) {
- if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_3 = __pyx_t_12(__pyx_t_6);
- if (unlikely(!__pyx_t_3)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_3);
- }
- __Pyx_XDECREF(__pyx_v_ifromchild);
- __pyx_v_ifromchild = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":933
- * else:
- * for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1):
- * if ifromchild not in ret: # <<<<<<<<<<<<<<
- * ret.append(ifromchild)
- *
- */
- __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_v_ifromchild, ((PyObject *)__pyx_v_ret), Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = (__pyx_t_9 != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":934
- * for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1):
- * if ifromchild not in ret:
- * ret.append(ifromchild) # <<<<<<<<<<<<<<
- *
- * return ret
- */
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_ret, __pyx_v_ifromchild); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L11;
- }
- __pyx_L11:;
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __pyx_L7:;
- }
- __pyx_L6:;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":936
- * ret.append(ifromchild)
- *
- * return ret # <<<<<<<<<<<<<<
- *
- * def shortest(self, fwords, ifrom, ito):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_ret));
- __pyx_r = ((PyObject *)__pyx_v_ret);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.reachable", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_ret);
- __Pyx_XDECREF(__pyx_v_alt_id);
- __Pyx_XDECREF(__pyx_v_ifromchild);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_fwords = 0;
- PyObject *__pyx_v_ifrom = 0;
- PyObject *__pyx_v_ito = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("shortest (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__ifrom,&__pyx_n_s__ito,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ifrom)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("shortest", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ito)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("shortest", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "shortest") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_fwords = values[0];
- __pyx_v_ifrom = values[1];
- __pyx_v_ito = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("shortest", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.shortest", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_fwords, __pyx_v_ifrom, __pyx_v_ito);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":938
- * return ret
- *
- * def shortest(self, fwords, ifrom, ito): # <<<<<<<<<<<<<<
- * cdef unsigned alt_id
- * min = 1000
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_fwords, PyObject *__pyx_v_ifrom, PyObject *__pyx_v_ito) {
- unsigned int __pyx_v_alt_id;
- PyObject *__pyx_v_min = NULL;
- PyObject *__pyx_v_currmin = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- Py_ssize_t __pyx_t_3;
- unsigned int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("shortest", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":940
- * def shortest(self, fwords, ifrom, ito):
- * cdef unsigned alt_id
- * min = 1000 # <<<<<<<<<<<<<<
- * if ifrom > ito:
- * return min
- */
- __Pyx_INCREF(__pyx_int_1000);
- __pyx_v_min = __pyx_int_1000;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":941
- * cdef unsigned alt_id
- * min = 1000
- * if ifrom > ito: # <<<<<<<<<<<<<<
- * return min
- * if ifrom == ito:
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_v_ito, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":942
- * min = 1000
- * if ifrom > ito:
- * return min # <<<<<<<<<<<<<<
- * if ifrom == ito:
- * return 0
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_min);
- __pyx_r = __pyx_v_min;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":943
- * if ifrom > ito:
- * return min
- * if ifrom == ito: # <<<<<<<<<<<<<<
- * return 0
- * for alt_id in range(len(fwords[ifrom])):
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_v_ito, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":944
- * return min
- * if ifrom == ito:
- * return 0 # <<<<<<<<<<<<<<
- * for alt_id in range(len(fwords[ifrom])):
- * currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito)
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_int_0);
- __pyx_r = __pyx_int_0;
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":945
- * if ifrom == ito:
- * return 0
- * for alt_id in range(len(fwords[ifrom])): # <<<<<<<<<<<<<<
- * currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito)
- * if fwords[ifrom][alt_id][0] != EPSILON:
- */
- __pyx_t_1 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
- __pyx_v_alt_id = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":946
- * return 0
- * for alt_id in range(len(fwords[ifrom])):
- * currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito) # <<<<<<<<<<<<<<
- * if fwords[ifrom][alt_id][0] != EPSILON:
- * currmin += 1
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__shortest); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, __pyx_v_alt_id, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Add(__pyx_v_ifrom, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_ito);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_ito);
- __Pyx_GIVEREF(__pyx_v_ito);
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_v_currmin);
- __pyx_v_currmin = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":947
- * for alt_id in range(len(fwords[ifrom])):
- * currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito)
- * if fwords[ifrom][alt_id][0] != EPSILON: # <<<<<<<<<<<<<<
- * currmin += 1
- * if currmin < min:
- */
- __pyx_t_6 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_alt_id, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":948
- * currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito)
- * if fwords[ifrom][alt_id][0] != EPSILON:
- * currmin += 1 # <<<<<<<<<<<<<<
- * if currmin < min:
- * min = currmin
- */
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_currmin, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_currmin);
- __pyx_v_currmin = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L7;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":949
- * if fwords[ifrom][alt_id][0] != EPSILON:
- * currmin += 1
- * if currmin < min: # <<<<<<<<<<<<<<
- * min = currmin
- * return min
- */
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_currmin, __pyx_v_min, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":950
- * currmin += 1
- * if currmin < min:
- * min = currmin # <<<<<<<<<<<<<<
- * return min
- *
- */
- __Pyx_INCREF(__pyx_v_currmin);
- __Pyx_DECREF(__pyx_v_min);
- __pyx_v_min = __pyx_v_currmin;
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":951
- * if currmin < min:
- * min = currmin
- * return min # <<<<<<<<<<<<<<
- *
- * def get_next_states(self, _columns, curr_idx, min_dist=2):
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_min);
- __pyx_r = __pyx_v_min;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.shortest", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_min);
- __Pyx_XDECREF(__pyx_v_currmin);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v__columns = 0;
- PyObject *__pyx_v_curr_idx = 0;
- PyObject *__pyx_v_min_dist = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_next_states (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___columns,&__pyx_n_s__curr_idx,&__pyx_n_s__min_dist,0};
- PyObject* values[3] = {0,0,0};
- values[2] = ((PyObject *)__pyx_int_2);
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___columns)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__curr_idx)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("get_next_states", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (kw_args > 0) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__min_dist);
- if (value) { values[2] = value; kw_args--; }
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_next_states") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else {
- switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- break;
- default: goto __pyx_L5_argtuple_error;
- }
- }
- __pyx_v__columns = values[0];
- __pyx_v_curr_idx = values[1];
- __pyx_v_min_dist = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("get_next_states", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_next_states", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v__columns, __pyx_v_curr_idx, __pyx_v_min_dist);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":953
- * return min
- *
- * def get_next_states(self, _columns, curr_idx, min_dist=2): # <<<<<<<<<<<<<<
- * result = []
- * candidate = [[curr_idx,0]]
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v__columns, PyObject *__pyx_v_curr_idx, PyObject *__pyx_v_min_dist) {
- PyObject *__pyx_v_result = NULL;
- PyObject *__pyx_v_candidate = NULL;
- PyObject *__pyx_v_curr = NULL;
- PyObject *__pyx_v_curr_col = NULL;
- PyObject *__pyx_v_alt = NULL;
- PyObject *__pyx_v_next_id = NULL;
- PyObject *__pyx_v_jump = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_t_8;
- PyObject *(*__pyx_t_9)(PyObject *);
- PyObject *__pyx_t_10 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_next_states", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":954
- *
- * def get_next_states(self, _columns, curr_idx, min_dist=2):
- * result = [] # <<<<<<<<<<<<<<
- * candidate = [[curr_idx,0]]
- *
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_result = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":955
- * def get_next_states(self, _columns, curr_idx, min_dist=2):
- * result = []
- * candidate = [[curr_idx,0]] # <<<<<<<<<<<<<<
- *
- * while len(candidate) > 0:
- */
- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_curr_idx);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_curr_idx);
- __Pyx_GIVEREF(__pyx_v_curr_idx);
- __Pyx_INCREF(__pyx_int_0);
- PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_t_1 = 0;
- __pyx_v_candidate = ((PyObject*)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":957
- * candidate = [[curr_idx,0]]
- *
- * while len(candidate) > 0: # <<<<<<<<<<<<<<
- * curr = candidate.pop()
- * if curr[0] >= len(_columns):
- */
- while (1) {
- __pyx_t_3 = PyList_GET_SIZE(((PyObject *)__pyx_v_candidate)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = ((__pyx_t_3 > 0) != 0);
- if (!__pyx_t_4) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":958
- *
- * while len(candidate) > 0:
- * curr = candidate.pop() # <<<<<<<<<<<<<<
- * if curr[0] >= len(_columns):
- * continue
- */
- __pyx_t_2 = __Pyx_PyObject_Pop(((PyObject *)__pyx_v_candidate)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_v_curr);
- __pyx_v_curr = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":959
- * while len(candidate) > 0:
- * curr = candidate.pop()
- * if curr[0] >= len(_columns): # <<<<<<<<<<<<<<
- * continue
- * if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Length(__pyx_v__columns); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":960
- * curr = candidate.pop()
- * if curr[0] >= len(_columns):
- * continue # <<<<<<<<<<<<<<
- * if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:
- * result.append(curr[0]);
- */
- goto __pyx_L3_continue;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":961
- * if curr[0] >= len(_columns):
- * continue
- * if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size: # <<<<<<<<<<<<<<
- * result.append(curr[0]);
- * curr_col = _columns[curr[0]]
- */
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = (__Pyx_PySequence_Contains(__pyx_t_5, ((PyObject *)__pyx_v_result), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_4) {
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_min_dist, __pyx_t_5, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = __pyx_t_6;
- } else {
- __pyx_t_7 = __pyx_t_4;
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":962
- * continue
- * if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:
- * result.append(curr[0]); # <<<<<<<<<<<<<<
- * curr_col = _columns[curr[0]]
- * for alt in curr_col:
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":963
- * if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:
- * result.append(curr[0]);
- * curr_col = _columns[curr[0]] # <<<<<<<<<<<<<<
- * for alt in curr_col:
- * next_id = curr[0]+alt[2]
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_GetItem(__pyx_v__columns, __pyx_t_1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_v_curr_col);
- __pyx_v_curr_col = __pyx_t_5;
- __pyx_t_5 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":964
- * result.append(curr[0]);
- * curr_col = _columns[curr[0]]
- * for alt in curr_col: # <<<<<<<<<<<<<<
- * next_id = curr[0]+alt[2]
- * jump = 1
- */
- if (PyList_CheckExact(__pyx_v_curr_col) || PyTuple_CheckExact(__pyx_v_curr_col)) {
- __pyx_t_5 = __pyx_v_curr_col; __Pyx_INCREF(__pyx_t_5); __pyx_t_3 = 0;
- __pyx_t_9 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_curr_col); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_5)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_5)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_5)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_9(__pyx_t_5);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_alt);
- __pyx_v_alt = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":965
- * curr_col = _columns[curr[0]]
- * for alt in curr_col:
- * next_id = curr[0]+alt[2] # <<<<<<<<<<<<<<
- * jump = 1
- * if alt[0] == EPSILON:
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_alt, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_v_next_id);
- __pyx_v_next_id = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":966
- * for alt in curr_col:
- * next_id = curr[0]+alt[2]
- * jump = 1 # <<<<<<<<<<<<<<
- * if alt[0] == EPSILON:
- * jump = 0
- */
- __Pyx_INCREF(__pyx_int_1);
- __Pyx_XDECREF(__pyx_v_jump);
- __pyx_v_jump = __pyx_int_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":967
- * next_id = curr[0]+alt[2]
- * jump = 1
- * if alt[0] == EPSILON: # <<<<<<<<<<<<<<
- * jump = 0
- * if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:
- */
- __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_alt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_10, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":968
- * jump = 1
- * if alt[0] == EPSILON:
- * jump = 0 # <<<<<<<<<<<<<<
- * if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:
- * candidate.append([next_id,curr[1]+jump])
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_DECREF(__pyx_v_jump);
- __pyx_v_jump = __pyx_int_0;
- goto __pyx_L9;
- }
- __pyx_L9:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":969
- * if alt[0] == EPSILON:
- * jump = 0
- * if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1: # <<<<<<<<<<<<<<
- * candidate.append([next_id,curr[1]+jump])
- * return sorted(result);
- */
- __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_next_id, ((PyObject *)__pyx_v_result), Py_NE)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_7) {
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_jump); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_min_dist, __pyx_t_2, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_10 = PyInt_FromLong((__pyx_v_self->max_initial_size + 1)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_10, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = __pyx_t_4;
- } else {
- __pyx_t_6 = __pyx_t_7;
- }
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":970
- * jump = 0
- * if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:
- * candidate.append([next_id,curr[1]+jump]) # <<<<<<<<<<<<<<
- * return sorted(result);
- *
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_jump); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_next_id);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_next_id);
- __Pyx_GIVEREF(__pyx_v_next_id);
- PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_candidate, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- goto __pyx_L10;
- }
- __pyx_L10:;
- }
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_L3_continue:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":971
- * if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:
- * candidate.append([next_id,curr[1]+jump])
- * return sorted(result); # <<<<<<<<<<<<<<
- *
- * def input(self, fwords, meta):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(((PyObject *)__pyx_v_result));
- PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_result));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
- __pyx_t_1 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_next_states", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XDECREF(__pyx_v_candidate);
- __Pyx_XDECREF(__pyx_v_curr);
- __Pyx_XDECREF(__pyx_v_curr_col);
- __Pyx_XDECREF(__pyx_v_alt);
- __Pyx_XDECREF(__pyx_v_next_id);
- __Pyx_XDECREF(__pyx_v_jump);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_23input(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_3_sa_23HieroCachingRuleFactory_22input[] = "When this function is called on the RuleFactory,\n it looks up all of the rules that can be used to translate\n the input sentence";
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_23input(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_fwords = 0;
- PyObject *__pyx_v_meta = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("input (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__meta,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__meta)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("input", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "input") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_fwords = values[0];
- __pyx_v_meta = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("input", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.input", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_22input(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_fwords, __pyx_v_meta);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_lambda4(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_lambda4 = {__Pyx_NAMESTR("lambda4"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_lambda4, METH_NOARGS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_lambda4(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda4 (wrapper)", 0);
- __pyx_r = __pyx_lambda_funcdef_lambda4(__pyx_self);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5 = {__Pyx_NAMESTR("lambda5"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5, METH_NOARGS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda5 (wrapper)", 0);
- __pyx_r = __pyx_lambda_funcdef_lambda5(__pyx_self);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1142
- * if len(extracts) > 0:
- * fcount = Counter()
- * fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list))) # <<<<<<<<<<<<<<
- * for (f, e, count, als), loc in extracts:
- * fcount[f] += count
- */
-
-static PyObject *__pyx_lambda_funcdef_lambda5(CYTHON_UNUSED PyObject *__pyx_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda5", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)((PyObject*)(&PyList_Type))));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)((PyObject*)(&PyList_Type))));
- __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyList_Type))));
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.input.lambda4.lambda5", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_lambda_funcdef_lambda4(CYTHON_UNUSED PyObject *__pyx_self) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda4", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5, 0, __pyx_n_s_124, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.input.lambda4", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_1lambda6(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_1lambda6 = {__Pyx_NAMESTR("lambda6"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_1lambda6, METH_O, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_1lambda6(PyObject *__pyx_self, PyObject *__pyx_v_x) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda6 (wrapper)", 0);
- __pyx_r = __pyx_lambda_funcdef_lambda6(__pyx_self, ((PyObject *)__pyx_v_x));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1148
- * for f, elist in fphrases.iteritems():
- * for e, alslist in elist.iteritems():
- * alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1])) # <<<<<<<<<<<<<<
- * locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))
- * count = len(locs)
- */
-
-static PyObject *__pyx_lambda_funcdef_lambda6(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda6", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.input.lambda6", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1187
- * # Online rule extraction and scoring
- * if self.online:
- * f_syms = tuple(word[0][0] for word in fwords) # <<<<<<<<<<<<<<
- * for f, lex_i, lex_j in self.get_f_phrases(f_syms):
- * spanlen = (lex_j - lex_i) + 1
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_5input_2genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_20_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.input.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fwords)) { __Pyx_RaiseClosureNameError("fwords"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fwords) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fwords)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_fwords; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_fwords); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_word);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_word = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_word, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":973
- * return sorted(result);
- *
- * def input(self, fwords, meta): # <<<<<<<<<<<<<<
- * '''When this function is called on the RuleFactory,
- * it looks up all of the rules that can be used to translate
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_22input(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_fwords, PyObject *__pyx_v_meta) {
- struct __pyx_obj_3_sa___pyx_scope_struct_19_input *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("input", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)__pyx_tp_new_3_sa___pyx_scope_struct_19_input(__pyx_ptype_3_sa___pyx_scope_struct_19_input, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __pyx_cur_scope->__pyx_v_fwords = __pyx_v_fwords;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fwords);
- __pyx_cur_scope->__pyx_v_meta = __pyx_v_meta;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_meta);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_meta);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.input", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_19_input *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- float __pyx_t_4;
- int __pyx_t_5;
- Py_ssize_t __pyx_t_6;
- int __pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
- PyObject *__pyx_t_16 = NULL;
- PyObject *__pyx_t_17 = NULL;
- PyObject *__pyx_t_18 = NULL;
- PyObject *__pyx_t_19 = NULL;
- PyObject *(*__pyx_t_20)(PyObject *);
- int __pyx_t_21;
- PyObject *(*__pyx_t_22)(PyObject *);
- Py_ssize_t __pyx_t_23;
- Py_ssize_t __pyx_t_24;
- Py_ssize_t __pyx_t_25;
- Py_ssize_t __pyx_t_26;
- int __pyx_t_27;
- int __pyx_t_28;
- PyObject *(*__pyx_t_29)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L61_resume_from_yield;
- case 2: goto __pyx_L82_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":984
- * cdef Phrase hiero_phrase
- *
- * flen = len(fwords) # <<<<<<<<<<<<<<
- * start_time = monitor_cpu()
- * self.extract_time = 0.0
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_fwords;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_cur_scope->__pyx_v_flen = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":985
- *
- * flen = len(fwords)
- * start_time = monitor_cpu() # <<<<<<<<<<<<<<
- * self.extract_time = 0.0
- * self.intersect_time = 0.0
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_cur_scope->__pyx_v_start_time = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":986
- * flen = len(fwords)
- * start_time = monitor_cpu()
- * self.extract_time = 0.0 # <<<<<<<<<<<<<<
- * self.intersect_time = 0.0
- * nodes_isteps_away_buffer = {}
- */
- __pyx_cur_scope->__pyx_v_self->extract_time = 0.0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":987
- * start_time = monitor_cpu()
- * self.extract_time = 0.0
- * self.intersect_time = 0.0 # <<<<<<<<<<<<<<
- * nodes_isteps_away_buffer = {}
- * hit = 0
- */
- __pyx_cur_scope->__pyx_v_self->intersect_time = 0.0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":988
- * self.extract_time = 0.0
- * self.intersect_time = 0.0
- * nodes_isteps_away_buffer = {} # <<<<<<<<<<<<<<
- * hit = 0
- * reachable_buffer = {}
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":989
- * self.intersect_time = 0.0
- * nodes_isteps_away_buffer = {}
- * hit = 0 # <<<<<<<<<<<<<<
- * reachable_buffer = {}
- *
- */
- __pyx_cur_scope->__pyx_v_hit = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":990
- * nodes_isteps_away_buffer = {}
- * hit = 0
- * reachable_buffer = {} # <<<<<<<<<<<<<<
- *
- * # Phrase pairs processed by suffix array extractor. Do not re-extract
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_cur_scope->__pyx_v_reachable_buffer = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":995
- * # during online extraction. This is probably the hackiest part of
- * # online grammar extraction.
- * seen_phrases = set() # <<<<<<<<<<<<<<
- *
- * # Do not cache between sentences
- */
- __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_cur_scope->__pyx_v_seen_phrases = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":998
- *
- * # Do not cache between sentences
- * self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation()) # <<<<<<<<<<<<<<
- *
- * frontier = []
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__phrase_location), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->rules->root);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->rules->root);
- __pyx_cur_scope->__pyx_v_self->rules->root = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1000
- * self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())
- *
- * frontier = [] # <<<<<<<<<<<<<<
- * for i in range(len(fwords)):
- * for alt in range(0, len(fwords[i])):
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_frontier = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1001
- *
- * frontier = []
- * for i in range(len(fwords)): # <<<<<<<<<<<<<<
- * for alt in range(0, len(fwords[i])):
- * if fwords[i][alt][0] != EPSILON:
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_fwords;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_2; __pyx_t_5+=1) {
- __pyx_cur_scope->__pyx_v_i = __pyx_t_5;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1002
- * frontier = []
- * for i in range(len(fwords)):
- * for alt in range(0, len(fwords[i])): # <<<<<<<<<<<<<<
- * if fwords[i][alt][0] != EPSILON:
- * frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
- __pyx_cur_scope->__pyx_v_alt = __pyx_t_7;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1003
- * for i in range(len(fwords)):
- * for alt in range(0, len(fwords[i])):
- * if fwords[i][alt][0] != EPSILON: # <<<<<<<<<<<<<<
- * frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))
- *
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1004
- * for alt in range(0, len(fwords[i])):
- * if fwords[i][alt][0] != EPSILON:
- * frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False)) # <<<<<<<<<<<<<<
- *
- * xroot = None
- */
- __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_alt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = PyTuple_New(8); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_12, 2, ((PyObject *)__pyx_t_10));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_10));
- PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_12, 4, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->rules->root);
- PyTuple_SET_ITEM(__pyx_t_12, 5, __pyx_cur_scope->__pyx_v_self->rules->root);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->rules->root);
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- PyTuple_SET_ITEM(__pyx_t_12, 6, ((PyObject *)__pyx_empty_tuple));
- __Pyx_GIVEREF(((PyObject *)__pyx_empty_tuple));
- PyTuple_SET_ITEM(__pyx_t_12, 7, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_8 = 0;
- __pyx_t_3 = 0;
- __pyx_t_10 = 0;
- __pyx_t_1 = 0;
- __pyx_t_11 = 0;
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_12)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1006
- * frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))
- *
- * xroot = None # <<<<<<<<<<<<<<
- * x1 = sym_setindex(self.category, 1)
- * if x1 in self.rules.root.children:
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GIVEREF(Py_None);
- __pyx_cur_scope->__pyx_v_xroot = Py_None;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1007
- *
- * xroot = None
- * x1 = sym_setindex(self.category, 1) # <<<<<<<<<<<<<<
- * if x1 in self.rules.root.children:
- * xroot = self.rules.root.children[x1]
- */
- __pyx_cur_scope->__pyx_v_x1 = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1008
- * xroot = None
- * x1 = sym_setindex(self.category, 1)
- * if x1 in self.rules.root.children: # <<<<<<<<<<<<<<
- * xroot = self.rules.root.children[x1]
- * else:
- */
- __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_x1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_t_12, __pyx_t_11, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1009
- * x1 = sym_setindex(self.category, 1)
- * if x1 in self.rules.root.children:
- * xroot = self.rules.root.children[x1] # <<<<<<<<<<<<<<
- * else:
- * xroot = ExtendedTrieNode(suffix_link=self.rules.root, phrase_location=PhraseLocation())
- */
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_x1, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_xroot);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_xroot);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_xroot = __pyx_t_12;
- __pyx_t_12 = 0;
- goto __pyx_L9;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1011
- * xroot = self.rules.root.children[x1]
- * else:
- * xroot = ExtendedTrieNode(suffix_link=self.rules.root, phrase_location=PhraseLocation()) # <<<<<<<<<<<<<<
- * self.rules.root.children[x1] = xroot
- *
- */
- __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__suffix_link), __pyx_cur_scope->__pyx_v_self->rules->root) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__phrase_location), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_xroot);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_xroot);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_cur_scope->__pyx_v_xroot = __pyx_t_11;
- __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1012
- * else:
- * xroot = ExtendedTrieNode(suffix_link=self.rules.root, phrase_location=PhraseLocation())
- * self.rules.root.children[x1] = xroot # <<<<<<<<<<<<<<
- *
- * for i in range(self.min_gap_size, len(fwords)):
- */
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- if (__Pyx_SetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_x1, __pyx_cur_scope->__pyx_v_xroot, sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
- __pyx_L9:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1014
- * self.rules.root.children[x1] = xroot
- *
- * for i in range(self.min_gap_size, len(fwords)): # <<<<<<<<<<<<<<
- * for alt in range(0, len(fwords[i])):
- * if fwords[i][alt][0] != EPSILON:
- */
- __pyx_t_11 = __pyx_cur_scope->__pyx_v_fwords;
- __Pyx_INCREF(__pyx_t_11);
- __pyx_t_2 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- for (__pyx_t_5 = __pyx_cur_scope->__pyx_v_self->min_gap_size; __pyx_t_5 < __pyx_t_2; __pyx_t_5+=1) {
- __pyx_cur_scope->__pyx_v_i = __pyx_t_5;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1015
- *
- * for i in range(self.min_gap_size, len(fwords)):
- * for alt in range(0, len(fwords[i])): # <<<<<<<<<<<<<<
- * if fwords[i][alt][0] != EPSILON:
- * frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))
- */
- __pyx_t_11 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
- __pyx_cur_scope->__pyx_v_alt = __pyx_t_7;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1016
- * for i in range(self.min_gap_size, len(fwords)):
- * for alt in range(0, len(fwords[i])):
- * if fwords[i][alt][0] != EPSILON: # <<<<<<<<<<<<<<
- * frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))
- *
- */
- __pyx_t_11 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_11, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1017
- * for alt in range(0, len(fwords[i])):
- * if fwords[i][alt][0] != EPSILON:
- * frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True)) # <<<<<<<<<<<<<<
- *
- * next_states = []
- */
- __pyx_t_1 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_i - __pyx_cur_scope->__pyx_v_self->min_gap_size)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_11 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_11 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_alt); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_x1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_16 = PyTuple_New(8); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_16, 2, ((PyObject *)__pyx_t_10));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_10));
- PyTuple_SET_ITEM(__pyx_t_16, 3, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_16, 4, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_xroot);
- PyTuple_SET_ITEM(__pyx_t_16, 5, __pyx_cur_scope->__pyx_v_xroot);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_xroot);
- PyTuple_SET_ITEM(__pyx_t_16, 6, ((PyObject *)__pyx_t_15));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_15));
- PyTuple_SET_ITEM(__pyx_t_16, 7, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_1 = 0;
- __pyx_t_12 = 0;
- __pyx_t_10 = 0;
- __pyx_t_11 = 0;
- __pyx_t_3 = 0;
- __pyx_t_15 = 0;
- __pyx_t_8 = 0;
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_16)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;
- goto __pyx_L14;
- }
- __pyx_L14:;
- }
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1019
- * frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))
- *
- * next_states = [] # <<<<<<<<<<<<<<
- * for i in range(len(fwords)):
- * next_states.append(self.get_next_states(fwords,i,self.min_gap_size))
- */
- __pyx_t_16 = PyList_New(0); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_GIVEREF(((PyObject *)__pyx_t_16));
- __pyx_cur_scope->__pyx_v_next_states = ((PyObject*)__pyx_t_16);
- __pyx_t_16 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1020
- *
- * next_states = []
- * for i in range(len(fwords)): # <<<<<<<<<<<<<<
- * next_states.append(self.get_next_states(fwords,i,self.min_gap_size))
- *
- */
- __pyx_t_16 = __pyx_cur_scope->__pyx_v_fwords;
- __Pyx_INCREF(__pyx_t_16);
- __pyx_t_2 = PyObject_Length(__pyx_t_16); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_2; __pyx_t_5+=1) {
- __pyx_cur_scope->__pyx_v_i = __pyx_t_5;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1021
- * next_states = []
- * for i in range(len(fwords)):
- * next_states.append(self.get_next_states(fwords,i,self.min_gap_size)) # <<<<<<<<<<<<<<
- *
- * while len(frontier) > 0:
- */
- __pyx_t_16 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_next_states); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_15 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_15);
- __pyx_t_8 = 0;
- __pyx_t_15 = 0;
- __pyx_t_15 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_next_states, __pyx_t_15); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1023
- * next_states.append(self.get_next_states(fwords,i,self.min_gap_size))
- *
- * while len(frontier) > 0: # <<<<<<<<<<<<<<
- * new_frontier = []
- * for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:
- */
- while (1) {
- __pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_frontier)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_14 = ((__pyx_t_2 > 0) != 0);
- if (!__pyx_t_14) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1024
- *
- * while len(frontier) > 0:
- * new_frontier = [] # <<<<<<<<<<<<<<
- * for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:
- * word_id = fwords[i][alt][0]
- */
- __pyx_t_15 = PyList_New(0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_new_frontier));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_new_frontier));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_15));
- __pyx_cur_scope->__pyx_v_new_frontier = ((PyObject*)__pyx_t_15);
- __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1025
- * while len(frontier) > 0:
- * new_frontier = []
- * for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier: # <<<<<<<<<<<<<<
- * word_id = fwords[i][alt][0]
- * spanlen = fwords[i][alt][2]
- */
- __pyx_t_15 = ((PyObject *)__pyx_cur_scope->__pyx_v_frontier); __Pyx_INCREF(__pyx_t_15); __pyx_t_2 = 0;
- for (;;) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_15)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_15, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_15, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 8)) {
- if (size > 8) __Pyx_RaiseTooManyValuesError(8);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_16 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 3);
- __pyx_t_12 = PyTuple_GET_ITEM(sequence, 4);
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 5);
- __pyx_t_17 = PyTuple_GET_ITEM(sequence, 6);
- __pyx_t_18 = PyTuple_GET_ITEM(sequence, 7);
- } else {
- __pyx_t_16 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_8 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyList_GET_ITEM(sequence, 2);
- __pyx_t_10 = PyList_GET_ITEM(sequence, 3);
- __pyx_t_12 = PyList_GET_ITEM(sequence, 4);
- __pyx_t_1 = PyList_GET_ITEM(sequence, 5);
- __pyx_t_17 = PyList_GET_ITEM(sequence, 6);
- __pyx_t_18 = PyList_GET_ITEM(sequence, 7);
- }
- __Pyx_INCREF(__pyx_t_16);
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_17);
- __Pyx_INCREF(__pyx_t_18);
- #else
- Py_ssize_t i;
- PyObject** temps[8] = {&__pyx_t_16,&__pyx_t_8,&__pyx_t_11,&__pyx_t_10,&__pyx_t_12,&__pyx_t_1,&__pyx_t_17,&__pyx_t_18};
- for (i=0; i < 8; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(item);
- *(temps[i]) = item;
- }
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- {
- Py_ssize_t index = -1;
- PyObject** temps[8] = {&__pyx_t_16,&__pyx_t_8,&__pyx_t_11,&__pyx_t_10,&__pyx_t_12,&__pyx_t_1,&__pyx_t_17,&__pyx_t_18};
- __pyx_t_19 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_19);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_20 = Py_TYPE(__pyx_t_19)->tp_iternext;
- for (index=0; index < 8; index++) {
- PyObject* item = __pyx_t_20(__pyx_t_19); if (unlikely(!item)) goto __pyx_L21_unpacking_failed;
- __Pyx_GOTREF(item);
- *(temps[index]) = item;
- }
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_19), 8) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = NULL;
- __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
- goto __pyx_L22_unpacking_done;
- __pyx_L21_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
- __pyx_t_20 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L22_unpacking_done:;
- }
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_16); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_cur_scope->__pyx_v_k = __pyx_t_5;
- __pyx_cur_scope->__pyx_v_i = __pyx_t_7;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_input_match);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_input_match);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_cur_scope->__pyx_v_input_match = __pyx_t_11;
- __pyx_t_11 = 0;
- __pyx_cur_scope->__pyx_v_alt = __pyx_t_21;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_pathlen = __pyx_t_12;
- __pyx_t_12 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_node = __pyx_t_1;
- __pyx_t_1 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_prefix);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_prefix);
- __Pyx_GIVEREF(__pyx_t_17);
- __pyx_cur_scope->__pyx_v_prefix = __pyx_t_17;
- __pyx_t_17 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_is_shadow_path = __pyx_t_18;
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1026
- * new_frontier = []
- * for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:
- * word_id = fwords[i][alt][0] # <<<<<<<<<<<<<<
- * spanlen = fwords[i][alt][2]
- * # TODO get rid of k -- pathlen is replacing it
- */
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_18 = __Pyx_GetItemInt(__pyx_t_3, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_18, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_word_id);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_word_id);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_cur_scope->__pyx_v_word_id = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1027
- * for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:
- * word_id = fwords[i][alt][0]
- * spanlen = fwords[i][alt][2] # <<<<<<<<<<<<<<
- * # TODO get rid of k -- pathlen is replacing it
- * if word_id == EPSILON:
- */
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_18 = __Pyx_GetItemInt(__pyx_t_3, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_18, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1029
- * spanlen = fwords[i][alt][2]
- * # TODO get rid of k -- pathlen is replacing it
- * if word_id == EPSILON: # <<<<<<<<<<<<<<
- * # skipping because word_id is epsilon
- * if i+spanlen >= len(fwords):
- */
- __pyx_t_3 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_18 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_word_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_18); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_18); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1031
- * if word_id == EPSILON:
- * # skipping because word_id is epsilon
- * if i+spanlen >= len(fwords): # <<<<<<<<<<<<<<
- * continue
- * for nualt in range(0,len(fwords[i+spanlen])):
- */
- __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_3 = PyNumber_Add(__pyx_t_18, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_18 = __pyx_cur_scope->__pyx_v_fwords;
- __Pyx_INCREF(__pyx_t_18);
- __pyx_t_6 = PyObject_Length(__pyx_t_18); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_18 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_17 = PyObject_RichCompare(__pyx_t_3, __pyx_t_18, Py_GE); __Pyx_XGOTREF(__pyx_t_17); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1032
- * # skipping because word_id is epsilon
- * if i+spanlen >= len(fwords):
- * continue # <<<<<<<<<<<<<<
- * for nualt in range(0,len(fwords[i+spanlen])):
- * frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path))
- */
- goto __pyx_L19_continue;
- goto __pyx_L24;
- }
- __pyx_L24:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1033
- * if i+spanlen >= len(fwords):
- * continue
- * for nualt in range(0,len(fwords[i+spanlen])): # <<<<<<<<<<<<<<
- * frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path))
- * continue
- */
- __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_18 = PyNumber_Add(__pyx_t_17, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fwords, __pyx_t_18); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_6 = PyObject_Length(__pyx_t_17); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_6; __pyx_t_21+=1) {
- __pyx_cur_scope->__pyx_v_nualt = __pyx_t_21;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1034
- * continue
- * for nualt in range(0,len(fwords[i+spanlen])):
- * frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path)) # <<<<<<<<<<<<<<
- * continue
- *
- */
- __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_3 = PyNumber_Add(__pyx_t_18, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_nualt); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_1 = PyTuple_New(8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_17);
- __Pyx_GIVEREF(__pyx_t_17);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_input_match);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_cur_scope->__pyx_v_input_match);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_input_match);
- PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_18);
- __Pyx_GIVEREF(__pyx_t_18);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pathlen);
- PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_node);
- PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_cur_scope->__pyx_v_node);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_prefix);
- PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_cur_scope->__pyx_v_prefix);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_prefix);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_cur_scope->__pyx_v_is_shadow_path);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- __pyx_t_17 = 0;
- __pyx_t_3 = 0;
- __pyx_t_18 = 0;
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1035
- * for nualt in range(0,len(fwords[i+spanlen])):
- * frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path))
- * continue # <<<<<<<<<<<<<<
- *
- * phrase = prefix + (word_id,)
- */
- goto __pyx_L19_continue;
- goto __pyx_L23;
- }
- __pyx_L23:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1037
- * continue
- *
- * phrase = prefix + (word_id,) # <<<<<<<<<<<<<<
- * hiero_phrase = Phrase(phrase)
- * arity = hiero_phrase.arity()
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_word_id);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_word_id);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_word_id);
- __pyx_t_18 = PyNumber_Add(__pyx_cur_scope->__pyx_v_prefix, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_phrase);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_phrase);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_phrase = __pyx_t_18;
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1038
- *
- * phrase = prefix + (word_id,)
- * hiero_phrase = Phrase(phrase) # <<<<<<<<<<<<<<
- * arity = hiero_phrase.arity()
- *
- */
- __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_phrase);
- PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_cur_scope->__pyx_v_phrase);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_phrase);
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase));
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_hiero_phrase = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1039
- * phrase = prefix + (word_id,)
- * hiero_phrase = Phrase(phrase)
- * arity = hiero_phrase.arity() # <<<<<<<<<<<<<<
- *
- * lookup_required = False
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase), __pyx_n_s__arity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_18 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_cur_scope->__pyx_v_arity = __pyx_t_21;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1041
- * arity = hiero_phrase.arity()
- *
- * lookup_required = False # <<<<<<<<<<<<<<
- * if word_id in node.children:
- * if node.children[word_id] is None:
- */
- __pyx_cur_scope->__pyx_v_lookup_required = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1042
- *
- * lookup_required = False
- * if word_id in node.children: # <<<<<<<<<<<<<<
- * if node.children[word_id] is None:
- * # Path dead-ends at this node
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_14 = (__Pyx_PySequence_Contains(__pyx_cur_scope->__pyx_v_word_id, __pyx_t_18, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1043
- * lookup_required = False
- * if word_id in node.children:
- * if node.children[word_id] is None: # <<<<<<<<<<<<<<
- * # Path dead-ends at this node
- * continue
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_1 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_9 = (__pyx_t_1 == Py_None);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1045
- * if node.children[word_id] is None:
- * # Path dead-ends at this node
- * continue # <<<<<<<<<<<<<<
- * else:
- * # Path continues at this node
- */
- goto __pyx_L19_continue;
- goto __pyx_L28;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1048
- * else:
- * # Path continues at this node
- * node = node.children[word_id] # <<<<<<<<<<<<<<
- * else:
- * if node.suffix_link is None:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_18 = PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_node = __pyx_t_18;
- __pyx_t_18 = 0;
- }
- __pyx_L28:;
- goto __pyx_L27;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1050
- * node = node.children[word_id]
- * else:
- * if node.suffix_link is None: # <<<<<<<<<<<<<<
- * # Current node is root; lookup required
- * lookup_required = True
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_14 = (__pyx_t_18 == Py_None);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1052
- * if node.suffix_link is None:
- * # Current node is root; lookup required
- * lookup_required = True # <<<<<<<<<<<<<<
- * else:
- * if word_id in node.suffix_link.children:
- */
- __pyx_cur_scope->__pyx_v_lookup_required = 1;
- goto __pyx_L29;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1054
- * lookup_required = True
- * else:
- * if word_id in node.suffix_link.children: # <<<<<<<<<<<<<<
- * if node.suffix_link.children[word_id] is None:
- * # Suffix link reports path is dead end
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_cur_scope->__pyx_v_word_id, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1055
- * else:
- * if word_id in node.suffix_link.children:
- * if node.suffix_link.children[word_id] is None: # <<<<<<<<<<<<<<
- * # Suffix link reports path is dead end
- * node.children[word_id] = None
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_14 = (__pyx_t_1 == Py_None);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1057
- * if node.suffix_link.children[word_id] is None:
- * # Suffix link reports path is dead end
- * node.children[word_id] = None # <<<<<<<<<<<<<<
- * continue
- * else:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyObject_SetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_word_id, Py_None) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1058
- * # Suffix link reports path is dead end
- * node.children[word_id] = None
- * continue # <<<<<<<<<<<<<<
- * else:
- * # Suffix link indicates lookup is reqired
- */
- goto __pyx_L19_continue;
- goto __pyx_L31;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1061
- * else:
- * # Suffix link indicates lookup is reqired
- * lookup_required = True # <<<<<<<<<<<<<<
- * else:
- * #ERROR: We never get here
- */
- __pyx_cur_scope->__pyx_v_lookup_required = 1;
- }
- __pyx_L31:;
- goto __pyx_L30;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1064
- * else:
- * #ERROR: We never get here
- * raise Exception("Keyword trie error") # <<<<<<<<<<<<<<
- * # checking whether lookup_required
- * if lookup_required:
- */
- __pyx_t_1 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_126), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_L30:;
- }
- __pyx_L29:;
- }
- __pyx_L27:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1066
- * raise Exception("Keyword trie error")
- * # checking whether lookup_required
- * if lookup_required: # <<<<<<<<<<<<<<
- * new_node = None
- * if is_shadow_path:
- */
- __pyx_t_9 = (__pyx_cur_scope->__pyx_v_lookup_required != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1067
- * # checking whether lookup_required
- * if lookup_required:
- * new_node = None # <<<<<<<<<<<<<<
- * if is_shadow_path:
- * # Extending shadow path
- */
- __Pyx_INCREF(Py_None);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_new_node);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_new_node);
- __Pyx_GIVEREF(Py_None);
- __pyx_cur_scope->__pyx_v_new_node = Py_None;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1068
- * if lookup_required:
- * new_node = None
- * if is_shadow_path: # <<<<<<<<<<<<<<
- * # Extending shadow path
- * # on the shadow path we don't do any search, we just use info from suffix link
- */
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1071
- * # Extending shadow path
- * # on the shadow path we don't do any search, we just use info from suffix link
- * new_node = ExtendedTrieNode(phrase_location=node.suffix_link.children[word_id].phrase_location, # <<<<<<<<<<<<<<
- * suffix_link=node.suffix_link.children[word_id],
- * phrase=hiero_phrase)
- */
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s__children); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__phrase_location), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1072
- * # on the shadow path we don't do any search, we just use info from suffix link
- * new_node = ExtendedTrieNode(phrase_location=node.suffix_link.children[word_id].phrase_location,
- * suffix_link=node.suffix_link.children[word_id], # <<<<<<<<<<<<<<
- * phrase=hiero_phrase)
- * else:
- */
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__suffix_link), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1073
- * new_node = ExtendedTrieNode(phrase_location=node.suffix_link.children[word_id].phrase_location,
- * suffix_link=node.suffix_link.children[word_id],
- * phrase=hiero_phrase) # <<<<<<<<<<<<<<
- * else:
- * if arity > 0:
- */
- if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__phrase), ((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_new_node);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_new_node);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_cur_scope->__pyx_v_new_node = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L33;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1075
- * phrase=hiero_phrase)
- * else:
- * if arity > 0: # <<<<<<<<<<<<<<
- * # Intersecting because of arity > 0
- * intersect_start_time = monitor_cpu()
- */
- __pyx_t_9 = ((__pyx_cur_scope->__pyx_v_arity > 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1077
- * if arity > 0:
- * # Intersecting because of arity > 0
- * intersect_start_time = monitor_cpu() # <<<<<<<<<<<<<<
- * phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)
- * intersect_stop_time = monitor_cpu()
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_intersect_start_time);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_intersect_start_time);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_intersect_start_time = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1078
- * # Intersecting because of arity > 0
- * intersect_start_time = monitor_cpu()
- * phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase) # <<<<<<<<<<<<<<
- * intersect_stop_time = monitor_cpu()
- * self.intersect_time += intersect_stop_time - intersect_start_time
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__children); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->intersect(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_node, __pyx_t_1, __pyx_cur_scope->__pyx_v_hiero_phrase)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_cur_scope->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1079
- * intersect_start_time = monitor_cpu()
- * phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)
- * intersect_stop_time = monitor_cpu() # <<<<<<<<<<<<<<
- * self.intersect_time += intersect_stop_time - intersect_start_time
- * else:
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_intersect_stop_time);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_intersect_stop_time);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_intersect_stop_time = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1080
- * phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)
- * intersect_stop_time = monitor_cpu()
- * self.intersect_time += intersect_stop_time - intersect_start_time # <<<<<<<<<<<<<<
- * else:
- * # Suffix array search
- */
- __pyx_t_1 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->intersect_time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_intersect_stop_time, __pyx_cur_scope->__pyx_v_intersect_start_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_18); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_cur_scope->__pyx_v_self->intersect_time = __pyx_t_4;
- goto __pyx_L34;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1083
- * else:
- * # Suffix array search
- * phrase_location = node.phrase_location # <<<<<<<<<<<<<<
- * sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)
- * if sa_range is not None:
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_18);
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1084
- * # Suffix array search
- * phrase_location = node.phrase_location
- * sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high) # <<<<<<<<<<<<<<
- * if sa_range is not None:
- * phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1])
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->fsa), __pyx_n_s__lookup); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_phrase, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_21)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromSsize_t((__pyx_t_6 - 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_phrase_location->sa_low); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_phrase_location->sa_high); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_10 = PyTuple_New(4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_17);
- __Pyx_GIVEREF(__pyx_t_17);
- PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_3 = 0;
- __pyx_t_1 = 0;
- __pyx_t_17 = 0;
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sa_range);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_sa_range);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_sa_range = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1085
- * phrase_location = node.phrase_location
- * sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)
- * if sa_range is not None: # <<<<<<<<<<<<<<
- * phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1])
- * else:
- */
- __pyx_t_9 = (__pyx_cur_scope->__pyx_v_sa_range != Py_None);
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1086
- * sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)
- * if sa_range is not None:
- * phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1]) # <<<<<<<<<<<<<<
- * else:
- * phrase_location = None
- */
- __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- __pyx_t_10 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sa_range, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__sa_low), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sa_range, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__sa_high), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_cur_scope->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_10);
- __pyx_t_10 = 0;
- goto __pyx_L35;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1088
- * phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1])
- * else:
- * phrase_location = None # <<<<<<<<<<<<<<
- *
- * if phrase_location is None:
- */
- __Pyx_INCREF(Py_None);
- __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));
- __Pyx_GIVEREF(Py_None);
- __pyx_cur_scope->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)Py_None);
- }
- __pyx_L35:;
- }
- __pyx_L34:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1090
- * phrase_location = None
- *
- * if phrase_location is None: # <<<<<<<<<<<<<<
- * node.children[word_id] = None
- * # Search failed
- */
- __pyx_t_14 = (((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location) == Py_None);
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1091
- *
- * if phrase_location is None:
- * node.children[word_id] = None # <<<<<<<<<<<<<<
- * # Search failed
- * continue
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- if (PyObject_SetItem(__pyx_t_10, __pyx_cur_scope->__pyx_v_word_id, Py_None) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1093
- * node.children[word_id] = None
- * # Search failed
- * continue # <<<<<<<<<<<<<<
- * # Search succeeded
- * suffix_link = self.rules.root
- */
- goto __pyx_L19_continue;
- goto __pyx_L36;
- }
- __pyx_L36:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1095
- * continue
- * # Search succeeded
- * suffix_link = self.rules.root # <<<<<<<<<<<<<<
- * if node.suffix_link is not None:
- * suffix_link = node.suffix_link.children[word_id]
- */
- __pyx_t_10 = __pyx_cur_scope->__pyx_v_self->rules->root;
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_suffix_link);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_suffix_link);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_cur_scope->__pyx_v_suffix_link = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1096
- * # Search succeeded
- * suffix_link = self.rules.root
- * if node.suffix_link is not None: # <<<<<<<<<<<<<<
- * suffix_link = node.suffix_link.children[word_id]
- * new_node = ExtendedTrieNode(phrase_location=phrase_location,
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = (__pyx_t_10 != Py_None);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1097
- * suffix_link = self.rules.root
- * if node.suffix_link is not None:
- * suffix_link = node.suffix_link.children[word_id] # <<<<<<<<<<<<<<
- * new_node = ExtendedTrieNode(phrase_location=phrase_location,
- * suffix_link=suffix_link,
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_GetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_suffix_link);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_suffix_link);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_cur_scope->__pyx_v_suffix_link = __pyx_t_10;
- __pyx_t_10 = 0;
- goto __pyx_L37;
- }
- __pyx_L37:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1098
- * if node.suffix_link is not None:
- * suffix_link = node.suffix_link.children[word_id]
- * new_node = ExtendedTrieNode(phrase_location=phrase_location, # <<<<<<<<<<<<<<
- * suffix_link=suffix_link,
- * phrase=hiero_phrase)
- */
- __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_10));
- if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__phrase_location), ((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1099
- * suffix_link = node.suffix_link.children[word_id]
- * new_node = ExtendedTrieNode(phrase_location=phrase_location,
- * suffix_link=suffix_link, # <<<<<<<<<<<<<<
- * phrase=hiero_phrase)
- * node.children[word_id] = new_node
- */
- if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__suffix_link), __pyx_cur_scope->__pyx_v_suffix_link) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1100
- * new_node = ExtendedTrieNode(phrase_location=phrase_location,
- * suffix_link=suffix_link,
- * phrase=hiero_phrase) # <<<<<<<<<<<<<<
- * node.children[word_id] = new_node
- * node = new_node
- */
- if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__phrase), ((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_new_node);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_new_node);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_new_node = __pyx_t_12;
- __pyx_t_12 = 0;
- }
- __pyx_L33:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1101
- * suffix_link=suffix_link,
- * phrase=hiero_phrase)
- * node.children[word_id] = new_node # <<<<<<<<<<<<<<
- * node = new_node
- *
- */
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- if (PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_word_id, __pyx_cur_scope->__pyx_v_new_node) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1102
- * phrase=hiero_phrase)
- * node.children[word_id] = new_node
- * node = new_node # <<<<<<<<<<<<<<
- *
- * '''Automatically add a trailing X node, if allowed --
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_new_node);
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_new_node);
- __pyx_cur_scope->__pyx_v_node = __pyx_cur_scope->__pyx_v_new_node;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1107
- * This should happen before we get to extraction (so that
- * the node will exist if needed)'''
- * if arity < self.max_nonterminals: # <<<<<<<<<<<<<<
- * xcat_index = arity+1
- * xcat = sym_setindex(self.category, xcat_index)
- */
- __pyx_t_14 = ((__pyx_cur_scope->__pyx_v_arity < __pyx_cur_scope->__pyx_v_self->max_nonterminals) != 0);
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1108
- * the node will exist if needed)'''
- * if arity < self.max_nonterminals:
- * xcat_index = arity+1 # <<<<<<<<<<<<<<
- * xcat = sym_setindex(self.category, xcat_index)
- * suffix_link_xcat_index = xcat_index
- */
- __pyx_t_12 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_arity + 1)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_xcat_index);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_xcat_index);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_xcat_index = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1109
- * if arity < self.max_nonterminals:
- * xcat_index = arity+1
- * xcat = sym_setindex(self.category, xcat_index) # <<<<<<<<<<<<<<
- * suffix_link_xcat_index = xcat_index
- * if is_shadow_path:
- */
- __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_xcat_index); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_cur_scope->__pyx_v_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_21);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1110
- * xcat_index = arity+1
- * xcat = sym_setindex(self.category, xcat_index)
- * suffix_link_xcat_index = xcat_index # <<<<<<<<<<<<<<
- * if is_shadow_path:
- * suffix_link_xcat_index = xcat_index-1
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_xcat_index);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_suffix_link_xcat_index);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_suffix_link_xcat_index);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_xcat_index);
- __pyx_cur_scope->__pyx_v_suffix_link_xcat_index = __pyx_cur_scope->__pyx_v_xcat_index;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1111
- * xcat = sym_setindex(self.category, xcat_index)
- * suffix_link_xcat_index = xcat_index
- * if is_shadow_path: # <<<<<<<<<<<<<<
- * suffix_link_xcat_index = xcat_index-1
- * suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)
- */
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1112
- * suffix_link_xcat_index = xcat_index
- * if is_shadow_path:
- * suffix_link_xcat_index = xcat_index-1 # <<<<<<<<<<<<<<
- * suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)
- * node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,
- */
- __pyx_t_12 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_xcat_index, __pyx_int_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_suffix_link_xcat_index);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_suffix_link_xcat_index);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_suffix_link_xcat_index = __pyx_t_12;
- __pyx_t_12 = 0;
- goto __pyx_L39;
- }
- __pyx_L39:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1113
- * if is_shadow_path:
- * suffix_link_xcat_index = xcat_index-1
- * suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index) # <<<<<<<<<<<<<<
- * node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,
- * suffix_link=node.suffix_link.children[suffix_link_xcat],
- */
- __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_suffix_link_xcat_index); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_cur_scope->__pyx_v_suffix_link_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_21);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1114
- * suffix_link_xcat_index = xcat_index-1
- * suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)
- * node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location, # <<<<<<<<<<<<<<
- * suffix_link=node.suffix_link.children[suffix_link_xcat],
- * phrase= Phrase(phrase + (xcat,)))
- */
- __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__phrase_location), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1115
- * suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)
- * node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,
- * suffix_link=node.suffix_link.children[suffix_link_xcat], # <<<<<<<<<<<<<<
- * phrase= Phrase(phrase + (xcat,)))
- *
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_18, __pyx_cur_scope->__pyx_v_suffix_link_xcat, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__suffix_link), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1116
- * node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,
- * suffix_link=node.suffix_link.children[suffix_link_xcat],
- * phrase= Phrase(phrase + (xcat,))) # <<<<<<<<<<<<<<
- *
- * # sample from range
- */
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_xcat); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyNumber_Add(__pyx_cur_scope->__pyx_v_phrase, ((PyObject *)__pyx_t_18)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__phrase), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1114
- * suffix_link_xcat_index = xcat_index-1
- * suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)
- * node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location, # <<<<<<<<<<<<<<
- * suffix_link=node.suffix_link.children[suffix_link_xcat],
- * phrase= Phrase(phrase + (xcat,)))
- */
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- if (__Pyx_SetItemInt(__pyx_t_12, __pyx_cur_scope->__pyx_v_xcat, __pyx_t_10, sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L38;
- }
- __pyx_L38:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1119
- *
- * # sample from range
- * if not is_shadow_path: # <<<<<<<<<<<<<<
- * sample = self.sampler.sample(node.phrase_location)
- * num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns
- */
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = ((!__pyx_t_14) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1120
- * # sample from range
- * if not is_shadow_path:
- * sample = self.sampler.sample(node.phrase_location) # <<<<<<<<<<<<<<
- * num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns
- * chunklen = IntList(initial_len=num_subpatterns)
- */
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->sampler), __pyx_n_s__sample); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_sample));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_sample));
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_sample = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1121
- * if not is_shadow_path:
- * sample = self.sampler.sample(node.phrase_location)
- * num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns # <<<<<<<<<<<<<<
- * chunklen = IntList(initial_len=num_subpatterns)
- * for j from 0 <= j < num_subpatterns:
- */
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_21 = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_12)->num_subpatterns;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_cur_scope->__pyx_v_num_subpatterns = __pyx_t_21;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1122
- * sample = self.sampler.sample(node.phrase_location)
- * num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns
- * chunklen = IntList(initial_len=num_subpatterns) # <<<<<<<<<<<<<<
- * for j from 0 <= j < num_subpatterns:
- * chunklen.arr[j] = hiero_phrase.chunklen(j)
- */
- __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_12));
- __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_num_subpatterns); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_18) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_18 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_chunklen));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_chunklen));
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_chunklen = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_18);
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1123
- * num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns
- * chunklen = IntList(initial_len=num_subpatterns)
- * for j from 0 <= j < num_subpatterns: # <<<<<<<<<<<<<<
- * chunklen.arr[j] = hiero_phrase.chunklen(j)
- * extracts = []
- */
- __pyx_t_21 = __pyx_cur_scope->__pyx_v_num_subpatterns;
- for (__pyx_cur_scope->__pyx_v_j = 0; __pyx_cur_scope->__pyx_v_j < __pyx_t_21; __pyx_cur_scope->__pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1124
- * chunklen = IntList(initial_len=num_subpatterns)
- * for j from 0 <= j < num_subpatterns:
- * chunklen.arr[j] = hiero_phrase.chunklen(j) # <<<<<<<<<<<<<<
- * extracts = []
- * j = 0
- */
- (__pyx_cur_scope->__pyx_v_chunklen->arr[__pyx_cur_scope->__pyx_v_j]) = ((struct __pyx_vtabstruct_3_sa_Phrase *)__pyx_cur_scope->__pyx_v_hiero_phrase->__pyx_vtab)->chunklen(__pyx_cur_scope->__pyx_v_hiero_phrase, __pyx_cur_scope->__pyx_v_j);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1125
- * for j from 0 <= j < num_subpatterns:
- * chunklen.arr[j] = hiero_phrase.chunklen(j)
- * extracts = [] # <<<<<<<<<<<<<<
- * j = 0
- * extract_start = monitor_cpu()
- */
- __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_extracts));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_extracts));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_18));
- __pyx_cur_scope->__pyx_v_extracts = ((PyObject*)__pyx_t_18);
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1126
- * chunklen.arr[j] = hiero_phrase.chunklen(j)
- * extracts = []
- * j = 0 # <<<<<<<<<<<<<<
- * extract_start = monitor_cpu()
- * while j < sample.len:
- */
- __pyx_cur_scope->__pyx_v_j = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1127
- * extracts = []
- * j = 0
- * extract_start = monitor_cpu() # <<<<<<<<<<<<<<
- * while j < sample.len:
- * extract = []
- */
- __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_12 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_extract_start);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_extract_start);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_extract_start = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1128
- * j = 0
- * extract_start = monitor_cpu()
- * while j < sample.len: # <<<<<<<<<<<<<<
- * extract = []
- *
- */
- while (1) {
- __pyx_t_9 = ((__pyx_cur_scope->__pyx_v_j < __pyx_cur_scope->__pyx_v_sample->len) != 0);
- if (!__pyx_t_9) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1129
- * extract_start = monitor_cpu()
- * while j < sample.len:
- * extract = [] # <<<<<<<<<<<<<<
- *
- * assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr)
- */
- __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_extract);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_extract);
- __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
- __pyx_cur_scope->__pyx_v_extract = ((PyObject *)__pyx_t_12);
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1131
- * extract = []
- *
- * assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr) # <<<<<<<<<<<<<<
- * loc = tuple(sample[j:j+num_subpatterns])
- * extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)
- */
- __pyx_f_3_sa_assign_matching((&__pyx_cur_scope->__pyx_v_matching), __pyx_cur_scope->__pyx_v_sample->arr, __pyx_cur_scope->__pyx_v_j, __pyx_cur_scope->__pyx_v_num_subpatterns, __pyx_cur_scope->__pyx_v_self->fda->sent_id->arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1132
- *
- * assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr)
- * loc = tuple(sample[j:j+num_subpatterns]) # <<<<<<<<<<<<<<
- * extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)
- * extracts.extend([(e, loc) for e in extract])
- */
- __pyx_t_12 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_cur_scope->__pyx_v_sample), __pyx_cur_scope->__pyx_v_j, (__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_num_subpatterns), NULL, NULL, NULL, 1, 1, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_loc);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_loc);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_loc = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1133
- * assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr)
- * loc = tuple(sample[j:j+num_subpatterns])
- * extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns) # <<<<<<<<<<<<<<
- * extracts.extend([(e, loc) for e in extract])
- * j = j + num_subpatterns
- */
- __pyx_t_12 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->extract(__pyx_cur_scope->__pyx_v_self, __pyx_cur_scope->__pyx_v_hiero_phrase, (&__pyx_cur_scope->__pyx_v_matching), __pyx_cur_scope->__pyx_v_chunklen->arr, __pyx_cur_scope->__pyx_v_num_subpatterns); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_extract);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_extract);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_extract = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1134
- * loc = tuple(sample[j:j+num_subpatterns])
- * extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)
- * extracts.extend([(e, loc) for e in extract]) # <<<<<<<<<<<<<<
- * j = j + num_subpatterns
- *
- */
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_extracts), __pyx_n_s__extend); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_extract) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_extract)) {
- __pyx_t_10 = __pyx_cur_scope->__pyx_v_extract; __Pyx_INCREF(__pyx_t_10); __pyx_t_6 = 0;
- __pyx_t_22 = NULL;
- } else {
- __pyx_t_6 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_extract); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_22 = Py_TYPE(__pyx_t_10)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_10)) {
- if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_10)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_17 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_17); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_17 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_10)) {
- if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_17 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_17); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_17 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_17 = __pyx_t_22(__pyx_t_10);
- if (unlikely(!__pyx_t_17)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_17);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_t_17);
- __pyx_cur_scope->__pyx_v_e = __pyx_t_17;
- __pyx_t_17 = 0;
- __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loc);
- PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_cur_scope->__pyx_v_loc);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loc);
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_18, (PyObject*)__pyx_t_17))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0;
- }
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_18));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_18));
- __pyx_t_18 = 0;
- __pyx_t_18 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1135
- * extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)
- * extracts.extend([(e, loc) for e in extract])
- * j = j + num_subpatterns # <<<<<<<<<<<<<<
- *
- * num_samples = sample.len/num_subpatterns
- */
- __pyx_cur_scope->__pyx_v_j = (__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_num_subpatterns);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1137
- * j = j + num_subpatterns
- *
- * num_samples = sample.len/num_subpatterns # <<<<<<<<<<<<<<
- * extract_stop = monitor_cpu()
- * self.extract_time = self.extract_time + extract_stop - extract_start
- */
- if (unlikely(__pyx_cur_scope->__pyx_v_num_subpatterns == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- else if (sizeof(int) == sizeof(long) && unlikely(__pyx_cur_scope->__pyx_v_num_subpatterns == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_cur_scope->__pyx_v_sample->len))) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_OverflowError, "value too large to perform division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_cur_scope->__pyx_v_num_samples = __Pyx_div_int(__pyx_cur_scope->__pyx_v_sample->len, __pyx_cur_scope->__pyx_v_num_subpatterns);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1138
- *
- * num_samples = sample.len/num_subpatterns
- * extract_stop = monitor_cpu() # <<<<<<<<<<<<<<
- * self.extract_time = self.extract_time + extract_stop - extract_start
- * if len(extracts) > 0:
- */
- __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_10 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_extract_stop);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_extract_stop);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_cur_scope->__pyx_v_extract_stop = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1139
- * num_samples = sample.len/num_subpatterns
- * extract_stop = monitor_cpu()
- * self.extract_time = self.extract_time + extract_stop - extract_start # <<<<<<<<<<<<<<
- * if len(extracts) > 0:
- * fcount = Counter()
- */
- __pyx_t_10 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->extract_time); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_18 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_extract_stop); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyNumber_Subtract(__pyx_t_18, __pyx_cur_scope->__pyx_v_extract_start); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_10); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_cur_scope->__pyx_v_self->extract_time = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1140
- * extract_stop = monitor_cpu()
- * self.extract_time = self.extract_time + extract_stop - extract_start
- * if len(extracts) > 0: # <<<<<<<<<<<<<<
- * fcount = Counter()
- * fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
- */
- __pyx_t_6 = PyList_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_extracts)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = ((__pyx_t_6 > 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1141
- * self.extract_time = self.extract_time + extract_stop - extract_start
- * if len(extracts) > 0:
- * fcount = Counter() # <<<<<<<<<<<<<<
- * fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
- * for (f, e, count, als), loc in extracts:
- */
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__Counter); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_18 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_fcount);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_fcount);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_fcount = __pyx_t_18;
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1142
- * if len(extracts) > 0:
- * fcount = Counter()
- * fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list))) # <<<<<<<<<<<<<<
- * for (f, e, count, als), loc in extracts:
- * fcount[f] += count
- */
- __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_10 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_lambda4, 0, __pyx_n_s_127, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_fphrases);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_fphrases);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_cur_scope->__pyx_v_fphrases = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1143
- * fcount = Counter()
- * fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
- * for (f, e, count, als), loc in extracts: # <<<<<<<<<<<<<<
- * fcount[f] += count
- * fphrases[f][e][als].append(loc)
- */
- __pyx_t_10 = ((PyObject *)__pyx_cur_scope->__pyx_v_extracts); __Pyx_INCREF(__pyx_t_10); __pyx_t_6 = 0;
- for (;;) {
- if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_10)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_12 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_12); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {
- PyObject* sequence = __pyx_t_12;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_17 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_18 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_17 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_18);
- __Pyx_INCREF(__pyx_t_17);
- #else
- __pyx_t_18 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- #endif
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_1 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_20 = Py_TYPE(__pyx_t_1)->tp_iternext;
- index = 0; __pyx_t_18 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_18)) goto __pyx_L50_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_18);
- index = 1; __pyx_t_17 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_17)) goto __pyx_L50_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_17);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = NULL;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L51_unpacking_done;
- __pyx_L50_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_20 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L51_unpacking_done:;
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_18))) || (PyList_CheckExact(__pyx_t_18))) {
- PyObject* sequence = __pyx_t_18;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 4)) {
- if (size > 4) __Pyx_RaiseTooManyValuesError(4);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);
- __pyx_t_8 = PyTuple_GET_ITEM(sequence, 3);
- } else {
- __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_11 = PyList_GET_ITEM(sequence, 2);
- __pyx_t_8 = PyList_GET_ITEM(sequence, 3);
- }
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_8);
- #else
- Py_ssize_t i;
- PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_11,&__pyx_t_8};
- for (i=0; i < 4; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(item);
- *(temps[i]) = item;
- }
- #endif
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- } else
- {
- Py_ssize_t index = -1;
- PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_11,&__pyx_t_8};
- __pyx_t_16 = PyObject_GetIter(__pyx_t_18); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_20 = Py_TYPE(__pyx_t_16)->tp_iternext;
- for (index=0; index < 4; index++) {
- PyObject* item = __pyx_t_20(__pyx_t_16); if (unlikely(!item)) goto __pyx_L52_unpacking_failed;
- __Pyx_GOTREF(item);
- *(temps[index]) = item;
- }
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_16), 4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = NULL;
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- goto __pyx_L53_unpacking_done;
- __pyx_L52_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- __pyx_t_20 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L53_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_f = __pyx_t_1;
- __pyx_t_1 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_cur_scope->__pyx_v_e = __pyx_t_3;
- __pyx_t_3 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_count);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_count);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_cur_scope->__pyx_v_count = __pyx_t_11;
- __pyx_t_11 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_als);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_als);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_cur_scope->__pyx_v_als = __pyx_t_8;
- __pyx_t_8 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_loc);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_loc);
- __Pyx_GIVEREF(__pyx_t_17);
- __pyx_cur_scope->__pyx_v_loc = __pyx_t_17;
- __pyx_t_17 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1144
- * fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
- * for (f, e, count, als), loc in extracts:
- * fcount[f] += count # <<<<<<<<<<<<<<
- * fphrases[f][e][als].append(loc)
- * for f, elist in fphrases.iteritems():
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- __pyx_t_12 = __pyx_cur_scope->__pyx_v_f;
- __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_t_12); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_t_17, __pyx_cur_scope->__pyx_v_count); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_t_12, __pyx_t_18) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1145
- * for (f, e, count, als), loc in extracts:
- * fcount[f] += count
- * fphrases[f][e][als].append(loc) # <<<<<<<<<<<<<<
- * for f, elist in fphrases.iteritems():
- * for e, alslist in elist.iteritems():
- */
- __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fphrases, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_18 = PyObject_GetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_e); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_als); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_18 = __Pyx_PyObject_Append(__pyx_t_12, __pyx_cur_scope->__pyx_v_loc); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- }
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1146
- * fcount[f] += count
- * fphrases[f][e][als].append(loc)
- * for f, elist in fphrases.iteritems(): # <<<<<<<<<<<<<<
- * for e, alslist in elist.iteritems():
- * alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))
- */
- __pyx_t_6 = 0;
- if (unlikely(__pyx_cur_scope->__pyx_v_fphrases == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_18 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_v_fphrases, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_23), (&__pyx_t_21)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_XDECREF(__pyx_t_10);
- __pyx_t_10 = __pyx_t_18;
- __pyx_t_18 = 0;
- while (1) {
- __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_10, __pyx_t_23, &__pyx_t_6, &__pyx_t_18, &__pyx_t_12, NULL, __pyx_t_21);
- if (unlikely(__pyx_t_7 == 0)) break;
- if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_f = __pyx_t_18;
- __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_elist);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_elist);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_elist = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1147
- * fphrases[f][e][als].append(loc)
- * for f, elist in fphrases.iteritems():
- * for e, alslist in elist.iteritems(): # <<<<<<<<<<<<<<
- * alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))
- * locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))
- */
- __pyx_t_24 = 0;
- if (unlikely(__pyx_cur_scope->__pyx_v_elist == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_18 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_v_elist, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_25), (&__pyx_t_7)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_XDECREF(__pyx_t_12);
- __pyx_t_12 = __pyx_t_18;
- __pyx_t_18 = 0;
- while (1) {
- __pyx_t_5 = __Pyx_dict_iter_next(__pyx_t_12, __pyx_t_25, &__pyx_t_24, &__pyx_t_18, &__pyx_t_17, NULL, __pyx_t_7);
- if (unlikely(__pyx_t_5 == 0)) break;
- if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_e = __pyx_t_18;
- __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_alslist);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_alslist);
- __Pyx_GIVEREF(__pyx_t_17);
- __pyx_cur_scope->__pyx_v_alslist = __pyx_t_17;
- __pyx_t_17 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1148
- * for f, elist in fphrases.iteritems():
- * for e, alslist in elist.iteritems():
- * alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1])) # <<<<<<<<<<<<<<
- * locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))
- * count = len(locs)
- */
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_alslist, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_18 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_t_18 = 0;
- __pyx_t_18 = PyDict_New(); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_18));
- __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_1lambda6, 0, __pyx_n_s_127, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- if (PyDict_SetItem(__pyx_t_18, ((PyObject *)__pyx_n_s__key), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_17), ((PyObject *)__pyx_t_18)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
- PyObject* sequence = __pyx_t_8;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_17 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_18 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_17 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_18);
- __Pyx_INCREF(__pyx_t_17);
- #else
- __pyx_t_18 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- #endif
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_20 = Py_TYPE(__pyx_t_11)->tp_iternext;
- index = 0; __pyx_t_18 = __pyx_t_20(__pyx_t_11); if (unlikely(!__pyx_t_18)) goto __pyx_L58_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_18);
- index = 1; __pyx_t_17 = __pyx_t_20(__pyx_t_11); if (unlikely(!__pyx_t_17)) goto __pyx_L58_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_17);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = NULL;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- goto __pyx_L59_unpacking_done;
- __pyx_L58_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_20 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L59_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_alignment);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_alignment);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_alignment = __pyx_t_18;
- __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_max_locs);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_max_locs);
- __Pyx_GIVEREF(__pyx_t_17);
- __pyx_cur_scope->__pyx_v_max_locs = __pyx_t_17;
- __pyx_t_17 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1149
- * for e, alslist in elist.iteritems():
- * alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))
- * locs = tuple(itertools.chain.from_iterable(alslist.itervalues())) # <<<<<<<<<<<<<<
- * count = len(locs)
- * scores = self.scorer.score(FeatureContext(
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__itertools); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__chain); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s__from_iterable); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_alslist, __pyx_n_s__itervalues); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_18 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
- __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_t_18 = 0;
- __pyx_t_18 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0;
- __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_t_18 = 0;
- __pyx_t_18 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_locs));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_locs));
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_locs = ((PyObject*)__pyx_t_18);
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1150
- * alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))
- * locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))
- * count = len(locs) # <<<<<<<<<<<<<<
- * scores = self.scorer.score(FeatureContext(
- * f, e, count, fcount[f], num_samples,
- */
- __pyx_t_26 = PyTuple_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_locs)); if (unlikely(__pyx_t_26 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_18 = PyInt_FromSsize_t(__pyx_t_26); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_count);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_count);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_count = __pyx_t_18;
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1151
- * locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))
- * count = len(locs)
- * scores = self.scorer.score(FeatureContext( # <<<<<<<<<<<<<<
- * f, e, count, fcount[f], num_samples,
- * (k,i+spanlen), locs, input_match,
- */
- __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__FeatureContext); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1152
- * count = len(locs)
- * scores = self.scorer.score(FeatureContext(
- * f, e, count, fcount[f], num_samples, # <<<<<<<<<<<<<<
- * (k,i+spanlen), locs, input_match,
- * fwords, self.fda, self.eda,
- */
- __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_17);
- __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_num_samples); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1153
- * scores = self.scorer.score(FeatureContext(
- * f, e, count, fcount[f], num_samples,
- * (k,i+spanlen), locs, input_match, # <<<<<<<<<<<<<<
- * fwords, self.fda, self.eda,
- * meta,
- */
- __pyx_t_11 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_11 = 0;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1157
- * meta,
- * # Include online stats. None if none.
- * self.online_ctx_lookup(f, e))) # <<<<<<<<<<<<<<
- * # Phrase pair processed
- * if self.online:
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__online_ctx_lookup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __pyx_t_16 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __pyx_t_11 = PyTuple_New(13); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_count);
- PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_cur_scope->__pyx_v_count);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_count);
- PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_17);
- __Pyx_GIVEREF(__pyx_t_17);
- PyTuple_SET_ITEM(__pyx_t_11, 4, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_11, 5, ((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_locs));
- PyTuple_SET_ITEM(__pyx_t_11, 6, ((PyObject *)__pyx_cur_scope->__pyx_v_locs));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_locs));
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_input_match);
- PyTuple_SET_ITEM(__pyx_t_11, 7, __pyx_cur_scope->__pyx_v_input_match);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_input_match);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_11, 8, __pyx_cur_scope->__pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fwords);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));
- PyTuple_SET_ITEM(__pyx_t_11, 9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));
- PyTuple_SET_ITEM(__pyx_t_11, 10, ((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_meta);
- PyTuple_SET_ITEM(__pyx_t_11, 11, __pyx_cur_scope->__pyx_v_meta);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_meta);
- PyTuple_SET_ITEM(__pyx_t_11, 12, __pyx_t_16);
- __Pyx_GIVEREF(__pyx_t_16);
- __pyx_t_17 = 0;
- __pyx_t_8 = 0;
- __pyx_t_3 = 0;
- __pyx_t_16 = 0;
- __pyx_t_16 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __pyx_t_11 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_Scorer *)__pyx_cur_scope->__pyx_v_self->scorer->__pyx_vtab)->score(__pyx_cur_scope->__pyx_v_self->scorer, __pyx_t_16)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_cur_scope->__pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_t_11);
- __pyx_t_11 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1159
- * self.online_ctx_lookup(f, e)))
- * # Phrase pair processed
- * if self.online: # <<<<<<<<<<<<<<
- * seen_phrases.add((f, e))
- * yield Rule(self.category, f, e, scores, alignment)
- */
- __pyx_t_9 = (__pyx_cur_scope->__pyx_v_self->online != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1160
- * # Phrase pair processed
- * if self.online:
- * seen_phrases.add((f, e)) # <<<<<<<<<<<<<<
- * yield Rule(self.category, f, e, scores, alignment)
- *
- */
- __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_seen_phrases, ((PyObject *)__pyx_t_11)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- goto __pyx_L60;
- }
- __pyx_L60:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1161
- * if self.online:
- * seen_phrases.add((f, e))
- * yield Rule(self.category, f, e, scores, alignment) # <<<<<<<<<<<<<<
- *
- * if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size:
- */
- __pyx_t_11 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->category); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_16 = PyTuple_New(5); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_16, 2, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- PyTuple_SET_ITEM(__pyx_t_16, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_alignment);
- PyTuple_SET_ITEM(__pyx_t_16, 4, __pyx_cur_scope->__pyx_v_alignment);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_alignment);
- __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Rule)), ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;
- __pyx_r = __pyx_t_11;
- __pyx_t_11 = 0;
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
- __Pyx_XGIVEREF(__pyx_t_10);
- __pyx_cur_scope->__pyx_t_3 = __pyx_t_10;
- __Pyx_XGIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_t_4 = __pyx_t_12;
- __Pyx_XGIVEREF(__pyx_t_15);
- __pyx_cur_scope->__pyx_t_5 = __pyx_t_15;
- __pyx_cur_scope->__pyx_t_6 = __pyx_t_21;
- __pyx_cur_scope->__pyx_t_7 = __pyx_t_23;
- __pyx_cur_scope->__pyx_t_8 = __pyx_t_24;
- __pyx_cur_scope->__pyx_t_9 = __pyx_t_25;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L61_resume_from_yield:;
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
- __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_7 = __pyx_cur_scope->__pyx_t_2;
- __pyx_t_10 = __pyx_cur_scope->__pyx_t_3;
- __pyx_cur_scope->__pyx_t_3 = 0;
- __Pyx_XGOTREF(__pyx_t_10);
- __pyx_t_12 = __pyx_cur_scope->__pyx_t_4;
- __pyx_cur_scope->__pyx_t_4 = 0;
- __Pyx_XGOTREF(__pyx_t_12);
- __pyx_t_15 = __pyx_cur_scope->__pyx_t_5;
- __pyx_cur_scope->__pyx_t_5 = 0;
- __Pyx_XGOTREF(__pyx_t_15);
- __pyx_t_21 = __pyx_cur_scope->__pyx_t_6;
- __pyx_t_23 = __pyx_cur_scope->__pyx_t_7;
- __pyx_t_24 = __pyx_cur_scope->__pyx_t_8;
- __pyx_t_25 = __pyx_cur_scope->__pyx_t_9;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L47;
- }
- __pyx_L47:;
- goto __pyx_L40;
- }
- __pyx_L40:;
- goto __pyx_L32;
- }
- __pyx_L32:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1163
- * yield Rule(self.category, f, e, scores, alignment)
- *
- * if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size: # <<<<<<<<<<<<<<
- * for alt_id in range(len(fwords[i+spanlen])):
- * new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))
- */
- __pyx_t_23 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = (__pyx_t_23 < __pyx_cur_scope->__pyx_v_self->max_length);
- if (__pyx_t_9) {
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __pyx_cur_scope->__pyx_v_fwords;
- __Pyx_INCREF(__pyx_t_10);
- __pyx_t_23 = PyObject_Length(__pyx_t_10); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_23); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = PyObject_RichCompare(__pyx_t_12, __pyx_t_10, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (__pyx_t_14) {
- __pyx_t_11 = PyNumber_Add(__pyx_cur_scope->__pyx_v_pathlen, __pyx_int_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = PyObject_RichCompare(__pyx_t_11, __pyx_t_10, Py_LE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_27 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_27 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_28 = __pyx_t_27;
- } else {
- __pyx_t_28 = __pyx_t_14;
- }
- __pyx_t_14 = __pyx_t_28;
- } else {
- __pyx_t_14 = __pyx_t_9;
- }
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1164
- *
- * if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size:
- * for alt_id in range(len(fwords[i+spanlen])): # <<<<<<<<<<<<<<
- * new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))
- * num_subpatterns = arity
- */
- __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_10 = PyNumber_Add(__pyx_t_12, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fwords, __pyx_t_10); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_23 = PyObject_Length(__pyx_t_12); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_23; __pyx_t_21+=1) {
- __pyx_cur_scope->__pyx_v_alt_id = __pyx_t_21;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1165
- * if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size:
- * for alt_id in range(len(fwords[i+spanlen])):
- * new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path)) # <<<<<<<<<<<<<<
- * num_subpatterns = arity
- * if not is_shadow_path:
- */
- __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_alt_id); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_16 = PyNumber_Add(__pyx_cur_scope->__pyx_v_pathlen, __pyx_int_1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __pyx_t_18 = PyTuple_New(8); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_input_match);
- PyTuple_SET_ITEM(__pyx_t_18, 2, __pyx_cur_scope->__pyx_v_input_match);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_input_match);
- PyTuple_SET_ITEM(__pyx_t_18, 3, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_18, 4, __pyx_t_16);
- __Pyx_GIVEREF(__pyx_t_16);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_node);
- PyTuple_SET_ITEM(__pyx_t_18, 5, __pyx_cur_scope->__pyx_v_node);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_node);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_phrase);
- PyTuple_SET_ITEM(__pyx_t_18, 6, __pyx_cur_scope->__pyx_v_phrase);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_phrase);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- PyTuple_SET_ITEM(__pyx_t_18, 7, __pyx_cur_scope->__pyx_v_is_shadow_path);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- __pyx_t_12 = 0;
- __pyx_t_11 = 0;
- __pyx_t_10 = 0;
- __pyx_t_16 = 0;
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_new_frontier, ((PyObject *)__pyx_t_18)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1166
- * for alt_id in range(len(fwords[i+spanlen])):
- * new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))
- * num_subpatterns = arity # <<<<<<<<<<<<<<
- * if not is_shadow_path:
- * num_subpatterns = num_subpatterns + 1
- */
- __pyx_cur_scope->__pyx_v_num_subpatterns = __pyx_cur_scope->__pyx_v_arity;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1167
- * new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))
- * num_subpatterns = arity
- * if not is_shadow_path: # <<<<<<<<<<<<<<
- * num_subpatterns = num_subpatterns + 1
- * if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:
- */
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = ((!__pyx_t_14) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1168
- * num_subpatterns = arity
- * if not is_shadow_path:
- * num_subpatterns = num_subpatterns + 1 # <<<<<<<<<<<<<<
- * if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:
- * xcat = sym_setindex(self.category, arity+1)
- */
- __pyx_cur_scope->__pyx_v_num_subpatterns = (__pyx_cur_scope->__pyx_v_num_subpatterns + 1);
- goto __pyx_L65;
- }
- __pyx_L65:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1169
- * if not is_shadow_path:
- * num_subpatterns = num_subpatterns + 1
- * if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks: # <<<<<<<<<<<<<<
- * xcat = sym_setindex(self.category, arity+1)
- * xnode = node.children[xcat]
- */
- __pyx_t_23 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = (((__pyx_t_23 + 1) < __pyx_cur_scope->__pyx_v_self->max_length) != 0);
- if (__pyx_t_9) {
- __pyx_t_14 = ((__pyx_cur_scope->__pyx_v_arity < __pyx_cur_scope->__pyx_v_self->max_nonterminals) != 0);
- if (__pyx_t_14) {
- __pyx_t_28 = ((__pyx_cur_scope->__pyx_v_num_subpatterns < __pyx_cur_scope->__pyx_v_self->max_chunks) != 0);
- __pyx_t_27 = __pyx_t_28;
- } else {
- __pyx_t_27 = __pyx_t_14;
- }
- __pyx_t_14 = __pyx_t_27;
- } else {
- __pyx_t_14 = __pyx_t_9;
- }
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1170
- * num_subpatterns = num_subpatterns + 1
- * if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:
- * xcat = sym_setindex(self.category, arity+1) # <<<<<<<<<<<<<<
- * xnode = node.children[xcat]
- * # I put spanlen=1 below
- */
- __pyx_cur_scope->__pyx_v_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, (__pyx_cur_scope->__pyx_v_arity + 1));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1171
- * if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:
- * xcat = sym_setindex(self.category, arity+1)
- * xnode = node.children[xcat] # <<<<<<<<<<<<<<
- * # I put spanlen=1 below
- * key = tuple([self.min_gap_size, i, 1, pathlen])
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_16 = __Pyx_GetItemInt(__pyx_t_18, __pyx_cur_scope->__pyx_v_xcat, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_16) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_xnode);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_xnode);
- __Pyx_GIVEREF(__pyx_t_16);
- __pyx_cur_scope->__pyx_v_xnode = __pyx_t_16;
- __pyx_t_16 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1173
- * xnode = node.children[xcat]
- * # I put spanlen=1 below
- * key = tuple([self.min_gap_size, i, 1, pathlen]) # <<<<<<<<<<<<<<
- * frontier_nodes = []
- * if key in nodes_isteps_away_buffer:
- */
- __pyx_t_16 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_16);
- __Pyx_GIVEREF(__pyx_t_16);
- PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_18);
- __Pyx_GIVEREF(__pyx_t_18);
- __Pyx_INCREF(__pyx_int_1);
- PyList_SET_ITEM(__pyx_t_10, 2, __pyx_int_1);
- __Pyx_GIVEREF(__pyx_int_1);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pathlen);
- PyList_SET_ITEM(__pyx_t_10, 3, __pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pathlen);
- __pyx_t_16 = 0;
- __pyx_t_18 = 0;
- __pyx_t_18 = ((PyObject *)PyList_AsTuple(((PyObject*)__pyx_t_10))); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_18));
- __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_key));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_key));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_18));
- __pyx_cur_scope->__pyx_v_key = ((PyObject*)__pyx_t_18);
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1174
- * # I put spanlen=1 below
- * key = tuple([self.min_gap_size, i, 1, pathlen])
- * frontier_nodes = [] # <<<<<<<<<<<<<<
- * if key in nodes_isteps_away_buffer:
- * frontier_nodes = nodes_isteps_away_buffer[key]
- */
- __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_frontier_nodes);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_frontier_nodes);
- __Pyx_GIVEREF(((PyObject *)__pyx_t_18));
- __pyx_cur_scope->__pyx_v_frontier_nodes = ((PyObject *)__pyx_t_18);
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1175
- * key = tuple([self.min_gap_size, i, 1, pathlen])
- * frontier_nodes = []
- * if key in nodes_isteps_away_buffer: # <<<<<<<<<<<<<<
- * frontier_nodes = nodes_isteps_away_buffer[key]
- * else:
- */
- __pyx_t_14 = (__Pyx_PyDict_Contains(((PyObject *)__pyx_cur_scope->__pyx_v_key), ((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = (__pyx_t_14 != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1176
- * frontier_nodes = []
- * if key in nodes_isteps_away_buffer:
- * frontier_nodes = nodes_isteps_away_buffer[key] # <<<<<<<<<<<<<<
- * else:
- * frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer)
- */
- __pyx_t_18 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), ((PyObject *)__pyx_cur_scope->__pyx_v_key)); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_frontier_nodes);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_frontier_nodes);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_frontier_nodes = __pyx_t_18;
- __pyx_t_18 = 0;
- goto __pyx_L67;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1178
- * frontier_nodes = nodes_isteps_away_buffer[key]
- * else:
- * frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer) # <<<<<<<<<<<<<<
- * nodes_isteps_away_buffer[key] = frontier_nodes
- *
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_128); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_16 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __pyx_t_11 = PyTuple_New(7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_16);
- __Pyx_GIVEREF(__pyx_t_16);
- __Pyx_INCREF(__pyx_int_1);
- PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_int_1);
- __Pyx_GIVEREF(__pyx_int_1);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pathlen);
- PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_11, 4, __pyx_cur_scope->__pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fwords);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_next_states));
- PyTuple_SET_ITEM(__pyx_t_11, 5, ((PyObject *)__pyx_cur_scope->__pyx_v_next_states));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_next_states));
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_reachable_buffer));
- PyTuple_SET_ITEM(__pyx_t_11, 6, ((PyObject *)__pyx_cur_scope->__pyx_v_reachable_buffer));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_reachable_buffer));
- __pyx_t_10 = 0;
- __pyx_t_16 = 0;
- __pyx_t_16 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_frontier_nodes);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_frontier_nodes);
- __Pyx_GIVEREF(__pyx_t_16);
- __pyx_cur_scope->__pyx_v_frontier_nodes = __pyx_t_16;
- __pyx_t_16 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1179
- * else:
- * frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer)
- * nodes_isteps_away_buffer[key] = frontier_nodes # <<<<<<<<<<<<<<
- *
- * for i, alt, pathlen in frontier_nodes:
- */
- if (PyDict_SetItem(((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), ((PyObject *)__pyx_cur_scope->__pyx_v_key), __pyx_cur_scope->__pyx_v_frontier_nodes) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_L67:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1181
- * nodes_isteps_away_buffer[key] = frontier_nodes
- *
- * for i, alt, pathlen in frontier_nodes: # <<<<<<<<<<<<<<
- * new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path))
- * frontier = new_frontier
- */
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_frontier_nodes) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_frontier_nodes)) {
- __pyx_t_16 = __pyx_cur_scope->__pyx_v_frontier_nodes; __Pyx_INCREF(__pyx_t_16); __pyx_t_23 = 0;
- __pyx_t_22 = NULL;
- } else {
- __pyx_t_23 = -1; __pyx_t_16 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_frontier_nodes); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __pyx_t_22 = Py_TYPE(__pyx_t_16)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_16)) {
- if (__pyx_t_23 >= PyList_GET_SIZE(__pyx_t_16)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_11 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_23); __Pyx_INCREF(__pyx_t_11); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_11 = PySequence_ITEM(__pyx_t_16, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_16)) {
- if (__pyx_t_23 >= PyTuple_GET_SIZE(__pyx_t_16)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_16, __pyx_t_23); __Pyx_INCREF(__pyx_t_11); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_11 = PySequence_ITEM(__pyx_t_16, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_11 = __pyx_t_22(__pyx_t_16);
- if (unlikely(!__pyx_t_11)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_11);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_11))) || (PyList_CheckExact(__pyx_t_11))) {
- PyObject* sequence = __pyx_t_11;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_12 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_18 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_10 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_12 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_18);
- __Pyx_INCREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_12);
- #else
- __pyx_t_18 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- #endif
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_3 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_20 = Py_TYPE(__pyx_t_3)->tp_iternext;
- index = 0; __pyx_t_18 = __pyx_t_20(__pyx_t_3); if (unlikely(!__pyx_t_18)) goto __pyx_L70_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_18);
- index = 1; __pyx_t_10 = __pyx_t_20(__pyx_t_3); if (unlikely(!__pyx_t_10)) goto __pyx_L70_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_10);
- index = 2; __pyx_t_12 = __pyx_t_20(__pyx_t_3); if (unlikely(!__pyx_t_12)) goto __pyx_L70_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_12);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = NULL;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L71_unpacking_done;
- __pyx_L70_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_20 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L71_unpacking_done:;
- }
- __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_cur_scope->__pyx_v_i = __pyx_t_21;
- __pyx_cur_scope->__pyx_v_alt = __pyx_t_7;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_cur_scope->__pyx_v_pathlen = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1182
- *
- * for i, alt, pathlen in frontier_nodes:
- * new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path)) # <<<<<<<<<<<<<<
- * frontier = new_frontier
- *
- */
- __pyx_t_11 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyNumber_Add(__pyx_cur_scope->__pyx_v_input_match, ((PyObject *)__pyx_t_18)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;
- __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_alt); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_xcat); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_phrase, ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_18);
- __Pyx_GIVEREF(__pyx_t_18);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pathlen);
- PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pathlen);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_xnode);
- PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_cur_scope->__pyx_v_xnode);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_xnode);
- PyTuple_SET_ITEM(__pyx_t_8, 6, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- PyTuple_SET_ITEM(__pyx_t_8, 7, __pyx_cur_scope->__pyx_v_is_shadow_path);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_shadow_path);
- __pyx_t_11 = 0;
- __pyx_t_12 = 0;
- __pyx_t_10 = 0;
- __pyx_t_18 = 0;
- __pyx_t_3 = 0;
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_new_frontier, ((PyObject *)__pyx_t_8)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- goto __pyx_L66;
- }
- __pyx_L66:;
- goto __pyx_L62;
- }
- __pyx_L62:;
- __pyx_L19_continue:;
- }
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1183
- * for i, alt, pathlen in frontier_nodes:
- * new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path))
- * frontier = new_frontier # <<<<<<<<<<<<<<
- *
- * # Online rule extraction and scoring
- */
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_new_frontier));
- __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_frontier));
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_frontier));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_new_frontier));
- __pyx_cur_scope->__pyx_v_frontier = __pyx_cur_scope->__pyx_v_new_frontier;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1186
- *
- * # Online rule extraction and scoring
- * if self.online: # <<<<<<<<<<<<<<
- * f_syms = tuple(word[0][0] for word in fwords)
- * for f, lex_i, lex_j in self.get_f_phrases(f_syms):
- */
- __pyx_t_9 = (__pyx_cur_scope->__pyx_v_self->online != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1187
- * # Online rule extraction and scoring
- * if self.online:
- * f_syms = tuple(word[0][0] for word in fwords) # <<<<<<<<<<<<<<
- * for f, lex_i, lex_j in self.get_f_phrases(f_syms):
- * spanlen = (lex_j - lex_i) + 1
- */
- __pyx_t_15 = __pyx_pf_3_sa_23HieroCachingRuleFactory_5input_2genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_15);
- __pyx_t_15 = 0;
- __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;
- __Pyx_GIVEREF(__pyx_t_15);
- __pyx_cur_scope->__pyx_v_f_syms = ((PyObject*)__pyx_t_15);
- __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1188
- * if self.online:
- * f_syms = tuple(word[0][0] for word in fwords)
- * for f, lex_i, lex_j in self.get_f_phrases(f_syms): # <<<<<<<<<<<<<<
- * spanlen = (lex_j - lex_i) + 1
- * if not sym_isvar(f[0]):
- */
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_f_phrases); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_f_syms));
- PyTuple_SET_ITEM(__pyx_t_16, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_f_syms));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_f_syms));
- __pyx_t_8 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;
- if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) {
- __pyx_t_16 = __pyx_t_8; __Pyx_INCREF(__pyx_t_16); __pyx_t_2 = 0;
- __pyx_t_22 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_16 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __pyx_t_22 = Py_TYPE(__pyx_t_16)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- for (;;) {
- if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_16)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_16)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_16, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_16)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_16)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_16, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_16, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_8 = __pyx_t_22(__pyx_t_16);
- if (unlikely(!__pyx_t_8)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
- PyObject* sequence = __pyx_t_8;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_15 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_18 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_15 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_18 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_15);
- __Pyx_INCREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_18);
- #else
- __pyx_t_15 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_18 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- #endif
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_20 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_15 = __pyx_t_20(__pyx_t_10); if (unlikely(!__pyx_t_15)) goto __pyx_L75_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_15);
- index = 1; __pyx_t_3 = __pyx_t_20(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L75_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- index = 2; __pyx_t_18 = __pyx_t_20(__pyx_t_10); if (unlikely(!__pyx_t_18)) goto __pyx_L75_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_18);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_10), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_20 = NULL;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L76_unpacking_done;
- __pyx_L75_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_20 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L76_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_t_15);
- __pyx_cur_scope->__pyx_v_f = __pyx_t_15;
- __pyx_t_15 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lex_i);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_lex_i);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_cur_scope->__pyx_v_lex_i = __pyx_t_3;
- __pyx_t_3 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lex_j);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_lex_j);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_lex_j = __pyx_t_18;
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1189
- * f_syms = tuple(word[0][0] for word in fwords)
- * for f, lex_i, lex_j in self.get_f_phrases(f_syms):
- * spanlen = (lex_j - lex_i) + 1 # <<<<<<<<<<<<<<
- * if not sym_isvar(f[0]):
- * spanlen += 1
- */
- __pyx_t_8 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_lex_j, __pyx_cur_scope->__pyx_v_lex_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_18 = PyNumber_Add(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_18;
- __pyx_t_18 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1190
- * for f, lex_i, lex_j in self.get_f_phrases(f_syms):
- * spanlen = (lex_j - lex_i) + 1
- * if not sym_isvar(f[0]): # <<<<<<<<<<<<<<
- * spanlen += 1
- * if not sym_isvar(f[1]):
- */
- __pyx_t_18 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_f, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_9 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_t_7) != 0)) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1191
- * spanlen = (lex_j - lex_i) + 1
- * if not sym_isvar(f[0]):
- * spanlen += 1 # <<<<<<<<<<<<<<
- * if not sym_isvar(f[1]):
- * spanlen += 1
- */
- __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_spanlen, __pyx_int_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_18;
- __pyx_t_18 = 0;
- goto __pyx_L77;
- }
- __pyx_L77:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1192
- * if not sym_isvar(f[0]):
- * spanlen += 1
- * if not sym_isvar(f[1]): # <<<<<<<<<<<<<<
- * spanlen += 1
- * for e in self.phrases_fe.get(f, ()):
- */
- __pyx_t_18 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_f, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __pyx_t_9 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_t_7) != 0)) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1193
- * spanlen += 1
- * if not sym_isvar(f[1]):
- * spanlen += 1 # <<<<<<<<<<<<<<
- * for e in self.phrases_fe.get(f, ()):
- * if (f, e) not in seen_phrases:
- */
- __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_spanlen, __pyx_int_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_GIVEREF(__pyx_t_18);
- __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_18;
- __pyx_t_18 = 0;
- goto __pyx_L78;
- }
- __pyx_L78:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1194
- * if not sym_isvar(f[1]):
- * spanlen += 1
- * for e in self.phrases_fe.get(f, ()): # <<<<<<<<<<<<<<
- * if (f, e) not in seen_phrases:
- * # Don't add multiple instances of the same phrase here
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_n_s__get); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
- PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)__pyx_empty_tuple));
- __Pyx_GIVEREF(((PyObject *)__pyx_empty_tuple));
- __pyx_t_3 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_23 = 0;
- __pyx_t_29 = NULL;
- } else {
- __pyx_t_23 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_29 = Py_TYPE(__pyx_t_8)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- for (;;) {
- if (!__pyx_t_29 && PyList_CheckExact(__pyx_t_8)) {
- if (__pyx_t_23 >= PyList_GET_SIZE(__pyx_t_8)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_23); __Pyx_INCREF(__pyx_t_3); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_29 && PyTuple_CheckExact(__pyx_t_8)) {
- if (__pyx_t_23 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_23); __Pyx_INCREF(__pyx_t_3); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_3 = __pyx_t_29(__pyx_t_8);
- if (unlikely(!__pyx_t_3)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_3);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_cur_scope->__pyx_v_e = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1195
- * spanlen += 1
- * for e in self.phrases_fe.get(f, ()):
- * if (f, e) not in seen_phrases: # <<<<<<<<<<<<<<
- * # Don't add multiple instances of the same phrase here
- * seen_phrases.add((f, e))
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __pyx_t_9 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_t_3), ((PyObject *)__pyx_cur_scope->__pyx_v_seen_phrases), Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_14 = (__pyx_t_9 != 0);
- if (__pyx_t_14) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1197
- * if (f, e) not in seen_phrases:
- * # Don't add multiple instances of the same phrase here
- * seen_phrases.add((f, e)) # <<<<<<<<<<<<<<
- * scores = self.scorer.score(FeatureContext(
- * f, e, 0, 0, 0,
- */
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_seen_phrases, ((PyObject *)__pyx_t_3)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1198
- * # Don't add multiple instances of the same phrase here
- * seen_phrases.add((f, e))
- * scores = self.scorer.score(FeatureContext( # <<<<<<<<<<<<<<
- * f, e, 0, 0, 0,
- * spanlen, None, None,
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__FeatureContext); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1203
- * fwords, self.fda, self.eda,
- * meta,
- * self.online_ctx_lookup(f, e))) # <<<<<<<<<<<<<<
- * alignment = self.phrases_al[f][e]
- * yield Rule(self.category, f, e, scores, alignment)
- */
- __pyx_t_18 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__online_ctx_lookup); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_18);
- __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __pyx_t_10 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __pyx_t_15 = PyTuple_New(13); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_spanlen);
- PyTuple_SET_ITEM(__pyx_t_15, 5, __pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_spanlen);
- __Pyx_INCREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_15, 6, Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_INCREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_15, 7, Py_None);
- __Pyx_GIVEREF(Py_None);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fwords);
- PyTuple_SET_ITEM(__pyx_t_15, 8, __pyx_cur_scope->__pyx_v_fwords);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fwords);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));
- PyTuple_SET_ITEM(__pyx_t_15, 9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));
- PyTuple_SET_ITEM(__pyx_t_15, 10, ((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_meta);
- PyTuple_SET_ITEM(__pyx_t_15, 11, __pyx_cur_scope->__pyx_v_meta);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_meta);
- PyTuple_SET_ITEM(__pyx_t_15, 12, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __pyx_t_15 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_Scorer *)__pyx_cur_scope->__pyx_v_self->scorer->__pyx_vtab)->score(__pyx_cur_scope->__pyx_v_self->scorer, __pyx_t_10)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_GIVEREF(__pyx_t_15);
- __pyx_cur_scope->__pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_t_15);
- __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1204
- * meta,
- * self.online_ctx_lookup(f, e)))
- * alignment = self.phrases_al[f][e] # <<<<<<<<<<<<<<
- * yield Rule(self.category, f, e, scores, alignment)
- *
- */
- __pyx_t_15 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_10 = PyObject_GetItem(__pyx_t_15, __pyx_cur_scope->__pyx_v_e); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_alignment);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_alignment);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_cur_scope->__pyx_v_alignment = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1205
- * self.online_ctx_lookup(f, e)))
- * alignment = self.phrases_al[f][e]
- * yield Rule(self.category, f, e, scores, alignment) # <<<<<<<<<<<<<<
- *
- * stop_time = monitor_cpu()
- */
- __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->category); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_15 = PyTuple_New(5); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_f);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_cur_scope->__pyx_v_e);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- PyTuple_SET_ITEM(__pyx_t_15, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_alignment);
- PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_cur_scope->__pyx_v_alignment);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_alignment);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Rule)), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __pyx_r = __pyx_t_10;
- __pyx_t_10 = 0;
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
- __Pyx_XGIVEREF(__pyx_t_8);
- __pyx_cur_scope->__pyx_t_3 = __pyx_t_8;
- __Pyx_XGIVEREF(__pyx_t_16);
- __pyx_cur_scope->__pyx_t_4 = __pyx_t_16;
- __pyx_cur_scope->__pyx_t_10 = __pyx_t_22;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_23;
- __pyx_cur_scope->__pyx_t_11 = __pyx_t_29;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 2;
- return __pyx_r;
- __pyx_L82_resume_from_yield:;
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
- __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;
- __pyx_cur_scope->__pyx_t_3 = 0;
- __Pyx_XGOTREF(__pyx_t_8);
- __pyx_t_16 = __pyx_cur_scope->__pyx_t_4;
- __pyx_cur_scope->__pyx_t_4 = 0;
- __Pyx_XGOTREF(__pyx_t_16);
- __pyx_t_22 = __pyx_cur_scope->__pyx_t_10;
- __pyx_t_23 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_29 = __pyx_cur_scope->__pyx_t_11;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- goto __pyx_L81;
- }
- __pyx_L81:;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- goto __pyx_L72;
- }
- __pyx_L72:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1207
- * yield Rule(self.category, f, e, scores, alignment)
- *
- * stop_time = monitor_cpu() # <<<<<<<<<<<<<<
- * logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))
- * gc.collect()
- */
- __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __pyx_t_8 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_cur_scope->__pyx_v_stop_time = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1208
- *
- * stop_time = monitor_cpu()
- * logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time)) # <<<<<<<<<<<<<<
- * gc.collect()
- * logger.info(" Extract time = %f seconds", self.extract_time)
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_start_time); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_10 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_stop_time, __pyx_t_8); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_129));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_kp_s_129));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_129));
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1209
- * stop_time = monitor_cpu()
- * logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))
- * gc.collect() # <<<<<<<<<<<<<<
- * logger.info(" Extract time = %f seconds", self.extract_time)
- * logger.info(" Intersect time = %f seconds", self.intersect_time)
- */
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__gc); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__collect); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1210
- * logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))
- * gc.collect()
- * logger.info(" Extract time = %f seconds", self.extract_time) # <<<<<<<<<<<<<<
- * logger.info(" Intersect time = %f seconds", self.intersect_time)
- *
- */
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->extract_time); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_130));
- PyTuple_SET_ITEM(__pyx_t_16, 0, ((PyObject *)__pyx_kp_s_130));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_130));
- PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1211
- * gc.collect()
- * logger.info(" Extract time = %f seconds", self.extract_time)
- * logger.info(" Intersect time = %f seconds", self.intersect_time) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__info); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->intersect_time); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_131));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_kp_s_131));
- __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_131));
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_15);
- __Pyx_XDECREF(__pyx_t_16);
- __Pyx_XDECREF(__pyx_t_17);
- __Pyx_XDECREF(__pyx_t_18);
- __Pyx_XDECREF(__pyx_t_19);
- __Pyx_AddTraceback("input", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1214
- *
- *
- * cdef int find_fixpoint(self, # <<<<<<<<<<<<<<
- * int f_low, f_high,
- * int* f_links_low, int* f_links_high,
- */
-
-static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int __pyx_v_f_low, PyObject *__pyx_v_f_high, int *__pyx_v_f_links_low, int *__pyx_v_f_links_high, int *__pyx_v_e_links_low, int *__pyx_v_e_links_high, int __pyx_v_e_in_low, int __pyx_v_e_in_high, int *__pyx_v_e_low, int *__pyx_v_e_high, int *__pyx_v_f_back_low, int *__pyx_v_f_back_high, int __pyx_v_f_sent_len, int __pyx_v_e_sent_len, int __pyx_v_max_f_len, int __pyx_v_max_e_len, int __pyx_v_min_fx_size, int __pyx_v_min_ex_size, int __pyx_v_max_new_x, int __pyx_v_allow_low_x, int __pyx_v_allow_high_x, int __pyx_v_allow_arbitrary_x, CYTHON_UNUSED int __pyx_v_write_log) {
- int __pyx_v_e_low_prev;
- int __pyx_v_e_high_prev;
- int __pyx_v_f_low_prev;
- int __pyx_v_f_high_prev;
- int __pyx_v_new_x;
- int __pyx_v_new_low_x;
- int __pyx_v_new_high_x;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("find_fixpoint", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1229
- * cdef int e_low_prev, e_high_prev, f_low_prev, f_high_prev, new_x, new_low_x, new_high_x
- *
- * e_low[0] = e_in_low # <<<<<<<<<<<<<<
- * e_high[0] = e_in_high
- * self.find_projection(f_low, f_high, f_links_low, f_links_high, e_low, e_high)
- */
- (__pyx_v_e_low[0]) = __pyx_v_e_in_low;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1230
- *
- * e_low[0] = e_in_low
- * e_high[0] = e_in_high # <<<<<<<<<<<<<<
- * self.find_projection(f_low, f_high, f_links_low, f_links_high, e_low, e_high)
- * if e_low[0] == -1:
- */
- (__pyx_v_e_high[0]) = __pyx_v_e_in_high;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1231
- * e_low[0] = e_in_low
- * e_high[0] = e_in_high
- * self.find_projection(f_low, f_high, f_links_low, f_links_high, e_low, e_high) # <<<<<<<<<<<<<<
- * if e_low[0] == -1:
- * # low-priority corner case: if phrase w is unaligned,
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_f_high); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_projection(__pyx_v_self, __pyx_v_f_low, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_low, __pyx_v_e_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1232
- * e_high[0] = e_in_high
- * self.find_projection(f_low, f_high, f_links_low, f_links_high, e_low, e_high)
- * if e_low[0] == -1: # <<<<<<<<<<<<<<
- * # low-priority corner case: if phrase w is unaligned,
- * # but we don't require aligned terminals, then returning
- */
- __pyx_t_3 = (((__pyx_v_e_low[0]) == -1) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1238
- * # rule X -> X_1 w X_2 / X_1 X_2. This is probably
- * # not worth the bother, though.
- * return 0 # <<<<<<<<<<<<<<
- * elif e_in_low != -1 and e_low[0] != e_in_low:
- * if e_in_low - e_low[0] < min_ex_size:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1239
- * # not worth the bother, though.
- * return 0
- * elif e_in_low != -1 and e_low[0] != e_in_low: # <<<<<<<<<<<<<<
- * if e_in_low - e_low[0] < min_ex_size:
- * e_low[0] = e_in_low - min_ex_size
- */
- __pyx_t_3 = ((__pyx_v_e_in_low != -1) != 0);
- if (__pyx_t_3) {
- __pyx_t_4 = (((__pyx_v_e_low[0]) != __pyx_v_e_in_low) != 0);
- __pyx_t_5 = __pyx_t_4;
- } else {
- __pyx_t_5 = __pyx_t_3;
- }
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1240
- * return 0
- * elif e_in_low != -1 and e_low[0] != e_in_low:
- * if e_in_low - e_low[0] < min_ex_size: # <<<<<<<<<<<<<<
- * e_low[0] = e_in_low - min_ex_size
- * if e_low[0] < 0:
- */
- __pyx_t_5 = (((__pyx_v_e_in_low - (__pyx_v_e_low[0])) < __pyx_v_min_ex_size) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1241
- * elif e_in_low != -1 and e_low[0] != e_in_low:
- * if e_in_low - e_low[0] < min_ex_size:
- * e_low[0] = e_in_low - min_ex_size # <<<<<<<<<<<<<<
- * if e_low[0] < 0:
- * return 0
- */
- (__pyx_v_e_low[0]) = (__pyx_v_e_in_low - __pyx_v_min_ex_size);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1242
- * if e_in_low - e_low[0] < min_ex_size:
- * e_low[0] = e_in_low - min_ex_size
- * if e_low[0] < 0: # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __pyx_t_5 = (((__pyx_v_e_low[0]) < 0) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1243
- * e_low[0] = e_in_low - min_ex_size
- * if e_low[0] < 0:
- * return 0 # <<<<<<<<<<<<<<
- *
- * if e_high[0] - e_low[0] > max_e_len:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
- goto __pyx_L4;
- }
- __pyx_L4:;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1245
- * return 0
- *
- * if e_high[0] - e_low[0] > max_e_len: # <<<<<<<<<<<<<<
- * return 0
- * elif e_in_high != -1 and e_high[0] != e_in_high:
- */
- __pyx_t_5 = ((((__pyx_v_e_high[0]) - (__pyx_v_e_low[0])) > __pyx_v_max_e_len) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1246
- *
- * if e_high[0] - e_low[0] > max_e_len:
- * return 0 # <<<<<<<<<<<<<<
- * elif e_in_high != -1 and e_high[0] != e_in_high:
- * if e_high[0] - e_in_high < min_ex_size:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L6;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1247
- * if e_high[0] - e_low[0] > max_e_len:
- * return 0
- * elif e_in_high != -1 and e_high[0] != e_in_high: # <<<<<<<<<<<<<<
- * if e_high[0] - e_in_high < min_ex_size:
- * e_high[0] = e_in_high + min_ex_size
- */
- __pyx_t_5 = ((__pyx_v_e_in_high != -1) != 0);
- if (__pyx_t_5) {
- __pyx_t_3 = (((__pyx_v_e_high[0]) != __pyx_v_e_in_high) != 0);
- __pyx_t_4 = __pyx_t_3;
- } else {
- __pyx_t_4 = __pyx_t_5;
- }
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1248
- * return 0
- * elif e_in_high != -1 and e_high[0] != e_in_high:
- * if e_high[0] - e_in_high < min_ex_size: # <<<<<<<<<<<<<<
- * e_high[0] = e_in_high + min_ex_size
- * if e_high[0] > e_sent_len:
- */
- __pyx_t_4 = ((((__pyx_v_e_high[0]) - __pyx_v_e_in_high) < __pyx_v_min_ex_size) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1249
- * elif e_in_high != -1 and e_high[0] != e_in_high:
- * if e_high[0] - e_in_high < min_ex_size:
- * e_high[0] = e_in_high + min_ex_size # <<<<<<<<<<<<<<
- * if e_high[0] > e_sent_len:
- * return 0
- */
- (__pyx_v_e_high[0]) = (__pyx_v_e_in_high + __pyx_v_min_ex_size);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1250
- * if e_high[0] - e_in_high < min_ex_size:
- * e_high[0] = e_in_high + min_ex_size
- * if e_high[0] > e_sent_len: # <<<<<<<<<<<<<<
- * return 0
- *
- */
- __pyx_t_4 = (((__pyx_v_e_high[0]) > __pyx_v_e_sent_len) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1251
- * e_high[0] = e_in_high + min_ex_size
- * if e_high[0] > e_sent_len:
- * return 0 # <<<<<<<<<<<<<<
- *
- * f_back_low[0] = -1
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L8;
- }
- __pyx_L8:;
- goto __pyx_L7;
- }
- __pyx_L7:;
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1253
- * return 0
- *
- * f_back_low[0] = -1 # <<<<<<<<<<<<<<
- * f_back_high[0] = -1
- * f_low_prev = f_low
- */
- (__pyx_v_f_back_low[0]) = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1254
- *
- * f_back_low[0] = -1
- * f_back_high[0] = -1 # <<<<<<<<<<<<<<
- * f_low_prev = f_low
- * f_high_prev = f_high
- */
- (__pyx_v_f_back_high[0]) = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1255
- * f_back_low[0] = -1
- * f_back_high[0] = -1
- * f_low_prev = f_low # <<<<<<<<<<<<<<
- * f_high_prev = f_high
- * new_x = 0
- */
- __pyx_v_f_low_prev = __pyx_v_f_low;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1256
- * f_back_high[0] = -1
- * f_low_prev = f_low
- * f_high_prev = f_high # <<<<<<<<<<<<<<
- * new_x = 0
- * new_low_x = 0
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_f_high); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_v_f_high_prev = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1257
- * f_low_prev = f_low
- * f_high_prev = f_high
- * new_x = 0 # <<<<<<<<<<<<<<
- * new_low_x = 0
- * new_high_x = 0
- */
- __pyx_v_new_x = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1258
- * f_high_prev = f_high
- * new_x = 0
- * new_low_x = 0 # <<<<<<<<<<<<<<
- * new_high_x = 0
- *
- */
- __pyx_v_new_low_x = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1259
- * new_x = 0
- * new_low_x = 0
- * new_high_x = 0 # <<<<<<<<<<<<<<
- *
- * while True:
- */
- __pyx_v_new_high_x = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1261
- * new_high_x = 0
- *
- * while True: # <<<<<<<<<<<<<<
- *
- * if f_back_low[0] == -1:
- */
- while (1) {
- if (!1) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1263
- * while True:
- *
- * if f_back_low[0] == -1: # <<<<<<<<<<<<<<
- * self.find_projection(e_low[0], e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)
- * else:
- */
- __pyx_t_4 = (((__pyx_v_f_back_low[0]) == -1) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1264
- *
- * if f_back_low[0] == -1:
- * self.find_projection(e_low[0], e_high[0], e_links_low, e_links_high, f_back_low, f_back_high) # <<<<<<<<<<<<<<
- * else:
- * self.find_projection(e_low[0], e_low_prev, e_links_low, e_links_high, f_back_low, f_back_high)
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_projection(__pyx_v_self, (__pyx_v_e_low[0]), (__pyx_v_e_high[0]), __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_f_back_low, __pyx_v_f_back_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L11;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1266
- * self.find_projection(e_low[0], e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)
- * else:
- * self.find_projection(e_low[0], e_low_prev, e_links_low, e_links_high, f_back_low, f_back_high) # <<<<<<<<<<<<<<
- * self.find_projection(e_high_prev, e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)
- *
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_projection(__pyx_v_self, (__pyx_v_e_low[0]), __pyx_v_e_low_prev, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_f_back_low, __pyx_v_f_back_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1267
- * else:
- * self.find_projection(e_low[0], e_low_prev, e_links_low, e_links_high, f_back_low, f_back_high)
- * self.find_projection(e_high_prev, e_high[0], e_links_low, e_links_high, f_back_low, f_back_high) # <<<<<<<<<<<<<<
- *
- * if f_back_low[0] > f_low:
- */
- __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_projection(__pyx_v_self, __pyx_v_e_high_prev, (__pyx_v_e_high[0]), __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_f_back_low, __pyx_v_f_back_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __pyx_L11:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1269
- * self.find_projection(e_high_prev, e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)
- *
- * if f_back_low[0] > f_low: # <<<<<<<<<<<<<<
- * f_back_low[0] = f_low
- *
- */
- __pyx_t_4 = (((__pyx_v_f_back_low[0]) > __pyx_v_f_low) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1270
- *
- * if f_back_low[0] > f_low:
- * f_back_low[0] = f_low # <<<<<<<<<<<<<<
- *
- * if f_back_high[0] < f_high:
- */
- (__pyx_v_f_back_low[0]) = __pyx_v_f_low;
- goto __pyx_L12;
- }
- __pyx_L12:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1272
- * f_back_low[0] = f_low
- *
- * if f_back_high[0] < f_high: # <<<<<<<<<<<<<<
- * f_back_high[0] = f_high
- *
- */
- __pyx_t_2 = PyInt_FromLong((__pyx_v_f_back_high[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_high, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1273
- *
- * if f_back_high[0] < f_high:
- * f_back_high[0] = f_high # <<<<<<<<<<<<<<
- *
- * if f_back_low[0] == f_low_prev and f_back_high[0] == f_high_prev:
- */
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_f_high); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- (__pyx_v_f_back_high[0]) = __pyx_t_1;
- goto __pyx_L13;
- }
- __pyx_L13:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1275
- * f_back_high[0] = f_high
- *
- * if f_back_low[0] == f_low_prev and f_back_high[0] == f_high_prev: # <<<<<<<<<<<<<<
- * return 1
- *
- */
- __pyx_t_4 = (((__pyx_v_f_back_low[0]) == __pyx_v_f_low_prev) != 0);
- if (__pyx_t_4) {
- __pyx_t_5 = (((__pyx_v_f_back_high[0]) == __pyx_v_f_high_prev) != 0);
- __pyx_t_3 = __pyx_t_5;
- } else {
- __pyx_t_3 = __pyx_t_4;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1276
- *
- * if f_back_low[0] == f_low_prev and f_back_high[0] == f_high_prev:
- * return 1 # <<<<<<<<<<<<<<
- *
- * if allow_low_x == 0 and f_back_low[0] < f_low:
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L14;
- }
- __pyx_L14:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1278
- * return 1
- *
- * if allow_low_x == 0 and f_back_low[0] < f_low: # <<<<<<<<<<<<<<
- * # FAIL: f phrase is not tight
- * return 0
- */
- __pyx_t_3 = ((__pyx_v_allow_low_x == 0) != 0);
- if (__pyx_t_3) {
- __pyx_t_4 = (((__pyx_v_f_back_low[0]) < __pyx_v_f_low) != 0);
- __pyx_t_5 = __pyx_t_4;
- } else {
- __pyx_t_5 = __pyx_t_3;
- }
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1280
- * if allow_low_x == 0 and f_back_low[0] < f_low:
- * # FAIL: f phrase is not tight
- * return 0 # <<<<<<<<<<<<<<
- *
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L15;
- }
- __pyx_L15:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1282
- * return 0
- *
- * if f_back_high[0] - f_back_low[0] > max_f_len: # <<<<<<<<<<<<<<
- * # FAIL: f back projection is too wide
- * return 0
- */
- __pyx_t_5 = ((((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len) != 0);
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1284
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- * # FAIL: f back projection is too wide
- * return 0 # <<<<<<<<<<<<<<
- *
- * if allow_high_x == 0 and f_back_high[0] > f_high:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L16;
- }
- __pyx_L16:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1286
- * return 0
- *
- * if allow_high_x == 0 and f_back_high[0] > f_high: # <<<<<<<<<<<<<<
- * # FAIL: extension on high side not allowed
- * return 0
- */
- __pyx_t_5 = (__pyx_v_allow_high_x == 0);
- if (__pyx_t_5) {
- __pyx_t_6 = PyInt_FromLong((__pyx_v_f_back_high[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_v_f_high, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = __pyx_t_3;
- } else {
- __pyx_t_4 = __pyx_t_5;
- }
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1288
- * if allow_high_x == 0 and f_back_high[0] > f_high:
- * # FAIL: extension on high side not allowed
- * return 0 # <<<<<<<<<<<<<<
- *
- * if f_low != f_back_low[0]:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L17;
- }
- __pyx_L17:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1290
- * return 0
- *
- * if f_low != f_back_low[0]: # <<<<<<<<<<<<<<
- * if new_low_x == 0:
- * if new_x >= max_new_x:
- */
- __pyx_t_4 = ((__pyx_v_f_low != (__pyx_v_f_back_low[0])) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1291
- *
- * if f_low != f_back_low[0]:
- * if new_low_x == 0: # <<<<<<<<<<<<<<
- * if new_x >= max_new_x:
- * # FAIL: extension required on low side violates max # of gaps
- */
- __pyx_t_4 = ((__pyx_v_new_low_x == 0) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1292
- * if f_low != f_back_low[0]:
- * if new_low_x == 0:
- * if new_x >= max_new_x: # <<<<<<<<<<<<<<
- * # FAIL: extension required on low side violates max # of gaps
- * return 0
- */
- __pyx_t_4 = ((__pyx_v_new_x >= __pyx_v_max_new_x) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1294
- * if new_x >= max_new_x:
- * # FAIL: extension required on low side violates max # of gaps
- * return 0 # <<<<<<<<<<<<<<
- * else:
- * new_x = new_x + 1
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L20;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1296
- * return 0
- * else:
- * new_x = new_x + 1 # <<<<<<<<<<<<<<
- * new_low_x = 1
- * if f_low - f_back_low[0] < min_fx_size:
- */
- __pyx_v_new_x = (__pyx_v_new_x + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1297
- * else:
- * new_x = new_x + 1
- * new_low_x = 1 # <<<<<<<<<<<<<<
- * if f_low - f_back_low[0] < min_fx_size:
- * f_back_low[0] = f_low - min_fx_size
- */
- __pyx_v_new_low_x = 1;
- }
- __pyx_L20:;
- goto __pyx_L19;
- }
- __pyx_L19:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1298
- * new_x = new_x + 1
- * new_low_x = 1
- * if f_low - f_back_low[0] < min_fx_size: # <<<<<<<<<<<<<<
- * f_back_low[0] = f_low - min_fx_size
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- */
- __pyx_t_4 = (((__pyx_v_f_low - (__pyx_v_f_back_low[0])) < __pyx_v_min_fx_size) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1299
- * new_low_x = 1
- * if f_low - f_back_low[0] < min_fx_size:
- * f_back_low[0] = f_low - min_fx_size # <<<<<<<<<<<<<<
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- * # FAIL: extension required on low side violates max initial length
- */
- (__pyx_v_f_back_low[0]) = (__pyx_v_f_low - __pyx_v_min_fx_size);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1300
- * if f_low - f_back_low[0] < min_fx_size:
- * f_back_low[0] = f_low - min_fx_size
- * if f_back_high[0] - f_back_low[0] > max_f_len: # <<<<<<<<<<<<<<
- * # FAIL: extension required on low side violates max initial length
- * return 0
- */
- __pyx_t_4 = ((((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1302
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- * # FAIL: extension required on low side violates max initial length
- * return 0 # <<<<<<<<<<<<<<
- * if f_back_low[0] < 0:
- * # FAIL: extension required on low side violates sentence boundary
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L22;
- }
- __pyx_L22:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1303
- * # FAIL: extension required on low side violates max initial length
- * return 0
- * if f_back_low[0] < 0: # <<<<<<<<<<<<<<
- * # FAIL: extension required on low side violates sentence boundary
- * return 0
- */
- __pyx_t_4 = (((__pyx_v_f_back_low[0]) < 0) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1305
- * if f_back_low[0] < 0:
- * # FAIL: extension required on low side violates sentence boundary
- * return 0 # <<<<<<<<<<<<<<
- *
- * if f_high != f_back_high[0]:
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L23;
- }
- __pyx_L23:;
- goto __pyx_L21;
- }
- __pyx_L21:;
- goto __pyx_L18;
- }
- __pyx_L18:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1307
- * return 0
- *
- * if f_high != f_back_high[0]: # <<<<<<<<<<<<<<
- * if new_high_x == 0:
- * if new_x >= max_new_x:
- */
- __pyx_t_2 = PyInt_FromLong((__pyx_v_f_back_high[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyObject_RichCompare(__pyx_v_f_high, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1308
- *
- * if f_high != f_back_high[0]:
- * if new_high_x == 0: # <<<<<<<<<<<<<<
- * if new_x >= max_new_x:
- * # FAIL: extension required on high side violates max # of gaps
- */
- __pyx_t_4 = ((__pyx_v_new_high_x == 0) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1309
- * if f_high != f_back_high[0]:
- * if new_high_x == 0:
- * if new_x >= max_new_x: # <<<<<<<<<<<<<<
- * # FAIL: extension required on high side violates max # of gaps
- * return 0
- */
- __pyx_t_4 = ((__pyx_v_new_x >= __pyx_v_max_new_x) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1311
- * if new_x >= max_new_x:
- * # FAIL: extension required on high side violates max # of gaps
- * return 0 # <<<<<<<<<<<<<<
- * else:
- * new_x = new_x + 1
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L26;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1313
- * return 0
- * else:
- * new_x = new_x + 1 # <<<<<<<<<<<<<<
- * new_high_x = 1
- * if f_back_high[0] - f_high < min_fx_size:
- */
- __pyx_v_new_x = (__pyx_v_new_x + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1314
- * else:
- * new_x = new_x + 1
- * new_high_x = 1 # <<<<<<<<<<<<<<
- * if f_back_high[0] - f_high < min_fx_size:
- * f_back_high[0] = f_high + min_fx_size
- */
- __pyx_v_new_high_x = 1;
- }
- __pyx_L26:;
- goto __pyx_L25;
- }
- __pyx_L25:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1315
- * new_x = new_x + 1
- * new_high_x = 1
- * if f_back_high[0] - f_high < min_fx_size: # <<<<<<<<<<<<<<
- * f_back_high[0] = f_high + min_fx_size
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- */
- __pyx_t_6 = PyInt_FromLong((__pyx_v_f_back_high[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = PyNumber_Subtract(__pyx_t_6, __pyx_v_f_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyInt_FromLong(__pyx_v_min_fx_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1316
- * new_high_x = 1
- * if f_back_high[0] - f_high < min_fx_size:
- * f_back_high[0] = f_high + min_fx_size # <<<<<<<<<<<<<<
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- * # FAIL: extension required on high side violates max initial length
- */
- __pyx_t_7 = PyInt_FromLong(__pyx_v_min_fx_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = PyNumber_Add(__pyx_v_f_high, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- (__pyx_v_f_back_high[0]) = __pyx_t_1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1317
- * if f_back_high[0] - f_high < min_fx_size:
- * f_back_high[0] = f_high + min_fx_size
- * if f_back_high[0] - f_back_low[0] > max_f_len: # <<<<<<<<<<<<<<
- * # FAIL: extension required on high side violates max initial length
- * return 0
- */
- __pyx_t_4 = ((((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1319
- * if f_back_high[0] - f_back_low[0] > max_f_len:
- * # FAIL: extension required on high side violates max initial length
- * return 0 # <<<<<<<<<<<<<<
- * if f_back_high[0] > f_sent_len:
- * # FAIL: extension required on high side violates sentence boundary
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L28;
- }
- __pyx_L28:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1320
- * # FAIL: extension required on high side violates max initial length
- * return 0
- * if f_back_high[0] > f_sent_len: # <<<<<<<<<<<<<<
- * # FAIL: extension required on high side violates sentence boundary
- * return 0
- */
- __pyx_t_4 = (((__pyx_v_f_back_high[0]) > __pyx_v_f_sent_len) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1322
- * if f_back_high[0] > f_sent_len:
- * # FAIL: extension required on high side violates sentence boundary
- * return 0 # <<<<<<<<<<<<<<
- *
- * e_low_prev = e_low[0]
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L29;
- }
- __pyx_L29:;
- goto __pyx_L27;
- }
- __pyx_L27:;
- goto __pyx_L24;
- }
- __pyx_L24:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1324
- * return 0
- *
- * e_low_prev = e_low[0] # <<<<<<<<<<<<<<
- * e_high_prev = e_high[0]
- *
- */
- __pyx_v_e_low_prev = (__pyx_v_e_low[0]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1325
- *
- * e_low_prev = e_low[0]
- * e_high_prev = e_high[0] # <<<<<<<<<<<<<<
- *
- * self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high)
- */
- __pyx_v_e_high_prev = (__pyx_v_e_high[0]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1327
- * e_high_prev = e_high[0]
- *
- * self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high) # <<<<<<<<<<<<<<
- * self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high)
- * if e_low[0] == e_low_prev and e_high[0] == e_high_prev:
- */
- __pyx_t_6 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_projection(__pyx_v_self, (__pyx_v_f_back_low[0]), __pyx_v_f_low_prev, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_low, __pyx_v_e_high); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1328
- *
- * self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high)
- * self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high) # <<<<<<<<<<<<<<
- * if e_low[0] == e_low_prev and e_high[0] == e_high_prev:
- * return 1
- */
- __pyx_t_6 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_projection(__pyx_v_self, __pyx_v_f_high_prev, (__pyx_v_f_back_high[0]), __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_low, __pyx_v_e_high); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1329
- * self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high)
- * self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high)
- * if e_low[0] == e_low_prev and e_high[0] == e_high_prev: # <<<<<<<<<<<<<<
- * return 1
- * if allow_arbitrary_x == 0:
- */
- __pyx_t_4 = (((__pyx_v_e_low[0]) == __pyx_v_e_low_prev) != 0);
- if (__pyx_t_4) {
- __pyx_t_5 = (((__pyx_v_e_high[0]) == __pyx_v_e_high_prev) != 0);
- __pyx_t_3 = __pyx_t_5;
- } else {
- __pyx_t_3 = __pyx_t_4;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1330
- * self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high)
- * if e_low[0] == e_low_prev and e_high[0] == e_high_prev:
- * return 1 # <<<<<<<<<<<<<<
- * if allow_arbitrary_x == 0:
- * # FAIL: arbitrary expansion not permitted
- */
- __pyx_r = 1;
- goto __pyx_L0;
- goto __pyx_L30;
- }
- __pyx_L30:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1331
- * if e_low[0] == e_low_prev and e_high[0] == e_high_prev:
- * return 1
- * if allow_arbitrary_x == 0: # <<<<<<<<<<<<<<
- * # FAIL: arbitrary expansion not permitted
- * return 0
- */
- __pyx_t_3 = ((__pyx_v_allow_arbitrary_x == 0) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1333
- * if allow_arbitrary_x == 0:
- * # FAIL: arbitrary expansion not permitted
- * return 0 # <<<<<<<<<<<<<<
- * if e_high[0] - e_low[0] > max_e_len:
- * # FAIL: re-projection violates sentence max phrase length
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L31;
- }
- __pyx_L31:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1334
- * # FAIL: arbitrary expansion not permitted
- * return 0
- * if e_high[0] - e_low[0] > max_e_len: # <<<<<<<<<<<<<<
- * # FAIL: re-projection violates sentence max phrase length
- * return 0
- */
- __pyx_t_3 = ((((__pyx_v_e_high[0]) - (__pyx_v_e_low[0])) > __pyx_v_max_e_len) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1336
- * if e_high[0] - e_low[0] > max_e_len:
- * # FAIL: re-projection violates sentence max phrase length
- * return 0 # <<<<<<<<<<<<<<
- * f_low_prev = f_back_low[0]
- * f_high_prev = f_back_high[0]
- */
- __pyx_r = 0;
- goto __pyx_L0;
- goto __pyx_L32;
- }
- __pyx_L32:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1337
- * # FAIL: re-projection violates sentence max phrase length
- * return 0
- * f_low_prev = f_back_low[0] # <<<<<<<<<<<<<<
- * f_high_prev = f_back_high[0]
- *
- */
- __pyx_v_f_low_prev = (__pyx_v_f_back_low[0]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1338
- * return 0
- * f_low_prev = f_back_low[0]
- * f_high_prev = f_back_high[0] # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_v_f_high_prev = (__pyx_v_f_back_high[0]);
- }
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_WriteUnraisable("_sa.HieroCachingRuleFactory.find_fixpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1341
- *
- *
- * cdef find_projection(self, int in_low, int in_high, int* in_links_low, int* in_links_high, # <<<<<<<<<<<<<<
- * int* out_low, int* out_high):
- * cdef int i
- */
-
-static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection(CYTHON_UNUSED struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int __pyx_v_in_low, int __pyx_v_in_high, int *__pyx_v_in_links_low, int *__pyx_v_in_links_high, int *__pyx_v_out_low, int *__pyx_v_out_high) {
- int __pyx_v_i;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- __Pyx_RefNannySetupContext("find_projection", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1344
- * int* out_low, int* out_high):
- * cdef int i
- * for i from in_low <= i < in_high: # <<<<<<<<<<<<<<
- * if in_links_low[i] != -1:
- * if out_low[0] == -1 or in_links_low[i] < out_low[0]:
- */
- __pyx_t_1 = __pyx_v_in_high;
- for (__pyx_v_i = __pyx_v_in_low; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1345
- * cdef int i
- * for i from in_low <= i < in_high:
- * if in_links_low[i] != -1: # <<<<<<<<<<<<<<
- * if out_low[0] == -1 or in_links_low[i] < out_low[0]:
- * out_low[0] = in_links_low[i]
- */
- __pyx_t_2 = (((__pyx_v_in_links_low[__pyx_v_i]) != -1) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1346
- * for i from in_low <= i < in_high:
- * if in_links_low[i] != -1:
- * if out_low[0] == -1 or in_links_low[i] < out_low[0]: # <<<<<<<<<<<<<<
- * out_low[0] = in_links_low[i]
- * if out_high[0] == -1 or in_links_high[i] > out_high[0]:
- */
- __pyx_t_2 = (((__pyx_v_out_low[0]) == -1) != 0);
- if (!__pyx_t_2) {
- __pyx_t_3 = (((__pyx_v_in_links_low[__pyx_v_i]) < (__pyx_v_out_low[0])) != 0);
- __pyx_t_4 = __pyx_t_3;
- } else {
- __pyx_t_4 = __pyx_t_2;
- }
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1347
- * if in_links_low[i] != -1:
- * if out_low[0] == -1 or in_links_low[i] < out_low[0]:
- * out_low[0] = in_links_low[i] # <<<<<<<<<<<<<<
- * if out_high[0] == -1 or in_links_high[i] > out_high[0]:
- * out_high[0] = in_links_high[i]
- */
- (__pyx_v_out_low[0]) = (__pyx_v_in_links_low[__pyx_v_i]);
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1348
- * if out_low[0] == -1 or in_links_low[i] < out_low[0]:
- * out_low[0] = in_links_low[i]
- * if out_high[0] == -1 or in_links_high[i] > out_high[0]: # <<<<<<<<<<<<<<
- * out_high[0] = in_links_high[i]
- *
- */
- __pyx_t_4 = (((__pyx_v_out_high[0]) == -1) != 0);
- if (!__pyx_t_4) {
- __pyx_t_2 = (((__pyx_v_in_links_high[__pyx_v_i]) > (__pyx_v_out_high[0])) != 0);
- __pyx_t_3 = __pyx_t_2;
- } else {
- __pyx_t_3 = __pyx_t_4;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1349
- * out_low[0] = in_links_low[i]
- * if out_high[0] == -1 or in_links_high[i] > out_high[0]:
- * out_high[0] = in_links_high[i] # <<<<<<<<<<<<<<
- *
- *
- */
- (__pyx_v_out_high[0]) = (__pyx_v_in_links_high[__pyx_v_i]);
- goto __pyx_L7;
- }
- __pyx_L7:;
- goto __pyx_L5;
- }
- __pyx_L5:;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1352
- *
- *
- * cdef int* int_arr_extend(self, int* arr, int* arr_len, int* data, int data_len): # <<<<<<<<<<<<<<
- * cdef int new_len
- * new_len = arr_len[0] + data_len
- */
-
-static int *__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend(CYTHON_UNUSED struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int *__pyx_v_arr, int *__pyx_v_arr_len, int *__pyx_v_data, int __pyx_v_data_len) {
- int __pyx_v_new_len;
- int *__pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("int_arr_extend", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1354
- * cdef int* int_arr_extend(self, int* arr, int* arr_len, int* data, int data_len):
- * cdef int new_len
- * new_len = arr_len[0] + data_len # <<<<<<<<<<<<<<
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- * memcpy(arr+arr_len[0], data, data_len*sizeof(int))
- */
- __pyx_v_new_len = ((__pyx_v_arr_len[0]) + __pyx_v_data_len);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1355
- * cdef int new_len
- * new_len = arr_len[0] + data_len
- * arr = <int*> realloc(arr, new_len*sizeof(int)) # <<<<<<<<<<<<<<
- * memcpy(arr+arr_len[0], data, data_len*sizeof(int))
- * arr_len[0] = new_len
- */
- __pyx_v_arr = ((int *)realloc(__pyx_v_arr, (__pyx_v_new_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1356
- * new_len = arr_len[0] + data_len
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- * memcpy(arr+arr_len[0], data, data_len*sizeof(int)) # <<<<<<<<<<<<<<
- * arr_len[0] = new_len
- * return arr
- */
- memcpy((__pyx_v_arr + (__pyx_v_arr_len[0])), __pyx_v_data, (__pyx_v_data_len * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1357
- * arr = <int*> realloc(arr, new_len*sizeof(int))
- * memcpy(arr+arr_len[0], data, data_len*sizeof(int))
- * arr_len[0] = new_len # <<<<<<<<<<<<<<
- * return arr
- *
- */
- (__pyx_v_arr_len[0]) = __pyx_v_new_len;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1358
- * memcpy(arr+arr_len[0], data, data_len*sizeof(int))
- * arr_len[0] = new_len
- * return arr # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_r = __pyx_v_arr;
- goto __pyx_L0;
-
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1361
- *
- *
- * cdef extract_phrases(self, int e_low, int e_high, int* e_gap_low, int* e_gap_high, int* e_links_low, int num_gaps, # <<<<<<<<<<<<<<
- * int f_low, int f_high, int* f_gap_low, int* f_gap_high, int* f_links_low,
- * int sent_id, int e_sent_len, int e_sent_start):
- */
-
-static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int __pyx_v_e_low, int __pyx_v_e_high, int *__pyx_v_e_gap_low, int *__pyx_v_e_gap_high, int *__pyx_v_e_links_low, int __pyx_v_num_gaps, CYTHON_UNUSED int __pyx_v_f_low, CYTHON_UNUSED int __pyx_v_f_high, CYTHON_UNUSED int *__pyx_v_f_gap_low, CYTHON_UNUSED int *__pyx_v_f_gap_high, CYTHON_UNUSED int *__pyx_v_f_links_low, CYTHON_UNUSED int __pyx_v_sent_id, int __pyx_v_e_sent_len, int __pyx_v_e_sent_start) {
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_k;
- int __pyx_v_m;
- int __pyx_v_n;
- int *__pyx_v_e_gap_order;
- int __pyx_v_e_x_low;
- int __pyx_v_e_x_high;
- int __pyx_v_e_x_gap_low;
- int __pyx_v_e_x_gap_high;
- int *__pyx_v_e_gaps1;
- int *__pyx_v_e_gaps2;
- int __pyx_v_len1;
- int __pyx_v_len2;
- int __pyx_v_step;
- int __pyx_v_num_chunks;
- struct __pyx_obj_3_sa_IntList *__pyx_v_ephr_arr = 0;
- PyObject *__pyx_v_result = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_indexes = 0;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_t_8;
- long __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("extract_phrases", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1369
- * cdef result
- *
- * result = [] # <<<<<<<<<<<<<<
- * len1 = 0
- * e_gaps1 = <int*> malloc(0)
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_result = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1370
- *
- * result = []
- * len1 = 0 # <<<<<<<<<<<<<<
- * e_gaps1 = <int*> malloc(0)
- * ephr_arr = IntList()
- */
- __pyx_v_len1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1371
- * result = []
- * len1 = 0
- * e_gaps1 = <int*> malloc(0) # <<<<<<<<<<<<<<
- * ephr_arr = IntList()
- *
- */
- __pyx_v_e_gaps1 = ((int *)malloc(0));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1372
- * len1 = 0
- * e_gaps1 = <int*> malloc(0)
- * ephr_arr = IntList() # <<<<<<<<<<<<<<
- *
- * e_gap_order = <int*> malloc(num_gaps*sizeof(int))
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_ephr_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1374
- * ephr_arr = IntList()
- *
- * e_gap_order = <int*> malloc(num_gaps*sizeof(int)) # <<<<<<<<<<<<<<
- * if num_gaps > 0:
- * e_gap_order[0] = 0
- */
- __pyx_v_e_gap_order = ((int *)malloc((__pyx_v_num_gaps * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1375
- *
- * e_gap_order = <int*> malloc(num_gaps*sizeof(int))
- * if num_gaps > 0: # <<<<<<<<<<<<<<
- * e_gap_order[0] = 0
- * for i from 1 <= i < num_gaps:
- */
- __pyx_t_2 = ((__pyx_v_num_gaps > 0) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1376
- * e_gap_order = <int*> malloc(num_gaps*sizeof(int))
- * if num_gaps > 0:
- * e_gap_order[0] = 0 # <<<<<<<<<<<<<<
- * for i from 1 <= i < num_gaps:
- * for j from 0 <= j < i:
- */
- (__pyx_v_e_gap_order[0]) = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1377
- * if num_gaps > 0:
- * e_gap_order[0] = 0
- * for i from 1 <= i < num_gaps: # <<<<<<<<<<<<<<
- * for j from 0 <= j < i:
- * if e_gap_low[i] < e_gap_low[j]:
- */
- __pyx_t_3 = __pyx_v_num_gaps;
- for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1378
- * e_gap_order[0] = 0
- * for i from 1 <= i < num_gaps:
- * for j from 0 <= j < i: # <<<<<<<<<<<<<<
- * if e_gap_low[i] < e_gap_low[j]:
- * for k from j <= k < i:
- */
- __pyx_t_4 = __pyx_v_i;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_4; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1379
- * for i from 1 <= i < num_gaps:
- * for j from 0 <= j < i:
- * if e_gap_low[i] < e_gap_low[j]: # <<<<<<<<<<<<<<
- * for k from j <= k < i:
- * e_gap_order[k+1] = e_gap_order[k]
- */
- __pyx_t_2 = (((__pyx_v_e_gap_low[__pyx_v_i]) < (__pyx_v_e_gap_low[__pyx_v_j])) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1380
- * for j from 0 <= j < i:
- * if e_gap_low[i] < e_gap_low[j]:
- * for k from j <= k < i: # <<<<<<<<<<<<<<
- * e_gap_order[k+1] = e_gap_order[k]
- * e_gap_order[j] = i
- */
- __pyx_t_5 = __pyx_v_i;
- for (__pyx_v_k = __pyx_v_j; __pyx_v_k < __pyx_t_5; __pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1381
- * if e_gap_low[i] < e_gap_low[j]:
- * for k from j <= k < i:
- * e_gap_order[k+1] = e_gap_order[k] # <<<<<<<<<<<<<<
- * e_gap_order[j] = i
- * break
- */
- (__pyx_v_e_gap_order[(__pyx_v_k + 1)]) = (__pyx_v_e_gap_order[__pyx_v_k]);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1382
- * for k from j <= k < i:
- * e_gap_order[k+1] = e_gap_order[k]
- * e_gap_order[j] = i # <<<<<<<<<<<<<<
- * break
- * else:
- */
- (__pyx_v_e_gap_order[__pyx_v_j]) = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1383
- * e_gap_order[k+1] = e_gap_order[k]
- * e_gap_order[j] = i
- * break # <<<<<<<<<<<<<<
- * else:
- * e_gap_order[i] = i
- */
- goto __pyx_L7_break;
- goto __pyx_L8;
- }
- __pyx_L8:;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1385
- * break
- * else:
- * e_gap_order[i] = i # <<<<<<<<<<<<<<
- *
- * e_x_low = e_low
- */
- (__pyx_v_e_gap_order[__pyx_v_i]) = __pyx_v_i;
- }
- __pyx_L7_break:;
- }
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1387
- * e_gap_order[i] = i
- *
- * e_x_low = e_low # <<<<<<<<<<<<<<
- * e_x_high = e_high
- * if not self.tight_phrases:
- */
- __pyx_v_e_x_low = __pyx_v_e_low;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1388
- *
- * e_x_low = e_low
- * e_x_high = e_high # <<<<<<<<<<<<<<
- * if not self.tight_phrases:
- * while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:
- */
- __pyx_v_e_x_high = __pyx_v_e_high;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1389
- * e_x_low = e_low
- * e_x_high = e_high
- * if not self.tight_phrases: # <<<<<<<<<<<<<<
- * while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:
- * e_x_low = e_x_low - 1
- */
- __pyx_t_2 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1390
- * e_x_high = e_high
- * if not self.tight_phrases:
- * while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1: # <<<<<<<<<<<<<<
- * e_x_low = e_x_low - 1
- * while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1:
- */
- while (1) {
- __pyx_t_2 = ((__pyx_v_e_x_low > 0) != 0);
- if (__pyx_t_2) {
- __pyx_t_6 = (((__pyx_v_e_high - __pyx_v_e_x_low) < __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_6) {
- __pyx_t_7 = (((__pyx_v_e_links_low[(__pyx_v_e_x_low - 1)]) == -1) != 0);
- __pyx_t_8 = __pyx_t_7;
- } else {
- __pyx_t_8 = __pyx_t_6;
- }
- __pyx_t_6 = __pyx_t_8;
- } else {
- __pyx_t_6 = __pyx_t_2;
- }
- if (!__pyx_t_6) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1391
- * if not self.tight_phrases:
- * while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:
- * e_x_low = e_x_low - 1 # <<<<<<<<<<<<<<
- * while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1:
- * e_x_high = e_x_high + 1
- */
- __pyx_v_e_x_low = (__pyx_v_e_x_low - 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1392
- * while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:
- * e_x_low = e_x_low - 1
- * while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1: # <<<<<<<<<<<<<<
- * e_x_high = e_x_high + 1
- *
- */
- while (1) {
- __pyx_t_6 = ((__pyx_v_e_x_high < __pyx_v_e_sent_len) != 0);
- if (__pyx_t_6) {
- __pyx_t_2 = (((__pyx_v_e_x_high - __pyx_v_e_low) < __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_2) {
- __pyx_t_8 = (((__pyx_v_e_links_low[__pyx_v_e_x_high]) == -1) != 0);
- __pyx_t_7 = __pyx_t_8;
- } else {
- __pyx_t_7 = __pyx_t_2;
- }
- __pyx_t_2 = __pyx_t_7;
- } else {
- __pyx_t_2 = __pyx_t_6;
- }
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1393
- * e_x_low = e_x_low - 1
- * while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1:
- * e_x_high = e_x_high + 1 # <<<<<<<<<<<<<<
- *
- * for i from e_x_low <= i <= e_low:
- */
- __pyx_v_e_x_high = (__pyx_v_e_x_high + 1);
- }
- goto __pyx_L11;
- }
- __pyx_L11:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1395
- * e_x_high = e_x_high + 1
- *
- * for i from e_x_low <= i <= e_low: # <<<<<<<<<<<<<<
- * e_gaps1 = self.int_arr_extend(e_gaps1, &len1, &i, 1)
- *
- */
- __pyx_t_3 = __pyx_v_e_low;
- for (__pyx_v_i = __pyx_v_e_x_low; __pyx_v_i <= __pyx_t_3; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1396
- *
- * for i from e_x_low <= i <= e_low:
- * e_gaps1 = self.int_arr_extend(e_gaps1, &len1, &i, 1) # <<<<<<<<<<<<<<
- *
- * for i from 0 <= i < num_gaps:
- */
- __pyx_v_e_gaps1 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps1, (&__pyx_v_len1), (&__pyx_v_i), 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1398
- * e_gaps1 = self.int_arr_extend(e_gaps1, &len1, &i, 1)
- *
- * for i from 0 <= i < num_gaps: # <<<<<<<<<<<<<<
- * e_gaps2 = <int*> malloc(0)
- * len2 = 0
- */
- __pyx_t_3 = __pyx_v_num_gaps;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1399
- *
- * for i from 0 <= i < num_gaps:
- * e_gaps2 = <int*> malloc(0) # <<<<<<<<<<<<<<
- * len2 = 0
- *
- */
- __pyx_v_e_gaps2 = ((int *)malloc(0));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1400
- * for i from 0 <= i < num_gaps:
- * e_gaps2 = <int*> malloc(0)
- * len2 = 0 # <<<<<<<<<<<<<<
- *
- * j = e_gap_order[i]
- */
- __pyx_v_len2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1402
- * len2 = 0
- *
- * j = e_gap_order[i] # <<<<<<<<<<<<<<
- * e_x_gap_low = e_gap_low[j]
- * e_x_gap_high = e_gap_high[j]
- */
- __pyx_v_j = (__pyx_v_e_gap_order[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1403
- *
- * j = e_gap_order[i]
- * e_x_gap_low = e_gap_low[j] # <<<<<<<<<<<<<<
- * e_x_gap_high = e_gap_high[j]
- * if not self.tight_phrases:
- */
- __pyx_v_e_x_gap_low = (__pyx_v_e_gap_low[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1404
- * j = e_gap_order[i]
- * e_x_gap_low = e_gap_low[j]
- * e_x_gap_high = e_gap_high[j] # <<<<<<<<<<<<<<
- * if not self.tight_phrases:
- * while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:
- */
- __pyx_v_e_x_gap_high = (__pyx_v_e_gap_high[__pyx_v_j]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1405
- * e_x_gap_low = e_gap_low[j]
- * e_x_gap_high = e_gap_high[j]
- * if not self.tight_phrases: # <<<<<<<<<<<<<<
- * while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:
- * e_x_gap_low = e_x_gap_low - 1
- */
- __pyx_t_2 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1406
- * e_x_gap_high = e_gap_high[j]
- * if not self.tight_phrases:
- * while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1: # <<<<<<<<<<<<<<
- * e_x_gap_low = e_x_gap_low - 1
- * while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1:
- */
- while (1) {
- __pyx_t_2 = ((__pyx_v_e_x_gap_low > __pyx_v_e_x_low) != 0);
- if (__pyx_t_2) {
- __pyx_t_6 = (((__pyx_v_e_links_low[(__pyx_v_e_x_gap_low - 1)]) == -1) != 0);
- __pyx_t_7 = __pyx_t_6;
- } else {
- __pyx_t_7 = __pyx_t_2;
- }
- if (!__pyx_t_7) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1407
- * if not self.tight_phrases:
- * while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:
- * e_x_gap_low = e_x_gap_low - 1 # <<<<<<<<<<<<<<
- * while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1:
- * e_x_gap_high = e_x_gap_high + 1
- */
- __pyx_v_e_x_gap_low = (__pyx_v_e_x_gap_low - 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1408
- * while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:
- * e_x_gap_low = e_x_gap_low - 1
- * while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1: # <<<<<<<<<<<<<<
- * e_x_gap_high = e_x_gap_high + 1
- *
- */
- while (1) {
- __pyx_t_7 = ((__pyx_v_e_x_gap_high < __pyx_v_e_x_high) != 0);
- if (__pyx_t_7) {
- __pyx_t_2 = (((__pyx_v_e_links_low[__pyx_v_e_x_gap_high]) == -1) != 0);
- __pyx_t_6 = __pyx_t_2;
- } else {
- __pyx_t_6 = __pyx_t_7;
- }
- if (!__pyx_t_6) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1409
- * e_x_gap_low = e_x_gap_low - 1
- * while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1:
- * e_x_gap_high = e_x_gap_high + 1 # <<<<<<<<<<<<<<
- *
- * k = 0
- */
- __pyx_v_e_x_gap_high = (__pyx_v_e_x_gap_high + 1);
- }
- goto __pyx_L20;
- }
- __pyx_L20:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1411
- * e_x_gap_high = e_x_gap_high + 1
- *
- * k = 0 # <<<<<<<<<<<<<<
- * step = 1+(i*2)
- * while k < len1:
- */
- __pyx_v_k = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1412
- *
- * k = 0
- * step = 1+(i*2) # <<<<<<<<<<<<<<
- * while k < len1:
- * for m from e_x_gap_low <= m <= e_gap_low[j]:
- */
- __pyx_v_step = (1 + (__pyx_v_i * 2));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1413
- * k = 0
- * step = 1+(i*2)
- * while k < len1: # <<<<<<<<<<<<<<
- * for m from e_x_gap_low <= m <= e_gap_low[j]:
- * if m >= e_gaps1[k+step-1]:
- */
- while (1) {
- __pyx_t_6 = ((__pyx_v_k < __pyx_v_len1) != 0);
- if (!__pyx_t_6) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1414
- * step = 1+(i*2)
- * while k < len1:
- * for m from e_x_gap_low <= m <= e_gap_low[j]: # <<<<<<<<<<<<<<
- * if m >= e_gaps1[k+step-1]:
- * for n from e_gap_high[j] <= n <= e_x_gap_high:
- */
- __pyx_t_4 = (__pyx_v_e_gap_low[__pyx_v_j]);
- for (__pyx_v_m = __pyx_v_e_x_gap_low; __pyx_v_m <= __pyx_t_4; __pyx_v_m++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1415
- * while k < len1:
- * for m from e_x_gap_low <= m <= e_gap_low[j]:
- * if m >= e_gaps1[k+step-1]: # <<<<<<<<<<<<<<
- * for n from e_gap_high[j] <= n <= e_x_gap_high:
- * if n-m >= 1: # extractor.py doesn't restrict target-side gap length
- */
- __pyx_t_6 = ((__pyx_v_m >= (__pyx_v_e_gaps1[((__pyx_v_k + __pyx_v_step) - 1)])) != 0);
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1416
- * for m from e_x_gap_low <= m <= e_gap_low[j]:
- * if m >= e_gaps1[k+step-1]:
- * for n from e_gap_high[j] <= n <= e_x_gap_high: # <<<<<<<<<<<<<<
- * if n-m >= 1: # extractor.py doesn't restrict target-side gap length
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)
- */
- __pyx_t_5 = __pyx_v_e_x_gap_high;
- for (__pyx_v_n = (__pyx_v_e_gap_high[__pyx_v_j]); __pyx_v_n <= __pyx_t_5; __pyx_v_n++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1417
- * if m >= e_gaps1[k+step-1]:
- * for n from e_gap_high[j] <= n <= e_x_gap_high:
- * if n-m >= 1: # extractor.py doesn't restrict target-side gap length # <<<<<<<<<<<<<<
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)
- */
- __pyx_t_6 = (((__pyx_v_n - __pyx_v_m) >= 1) != 0);
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1418
- * for n from e_gap_high[j] <= n <= e_x_gap_high:
- * if n-m >= 1: # extractor.py doesn't restrict target-side gap length
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step) # <<<<<<<<<<<<<<
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)
- */
- __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (__pyx_v_e_gaps1 + __pyx_v_k), __pyx_v_step);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1419
- * if n-m >= 1: # extractor.py doesn't restrict target-side gap length
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1) # <<<<<<<<<<<<<<
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)
- * k = k + step
- */
- __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (&__pyx_v_m), 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1420
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1) # <<<<<<<<<<<<<<
- * k = k + step
- * free(e_gaps1)
- */
- __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (&__pyx_v_n), 1);
- goto __pyx_L32;
- }
- __pyx_L32:;
- }
- goto __pyx_L29;
- }
- __pyx_L29:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1421
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)
- * k = k + step # <<<<<<<<<<<<<<
- * free(e_gaps1)
- * e_gaps1 = e_gaps2
- */
- __pyx_v_k = (__pyx_v_k + __pyx_v_step);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1422
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)
- * k = k + step
- * free(e_gaps1) # <<<<<<<<<<<<<<
- * e_gaps1 = e_gaps2
- * len1 = len2
- */
- free(__pyx_v_e_gaps1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1423
- * k = k + step
- * free(e_gaps1)
- * e_gaps1 = e_gaps2 # <<<<<<<<<<<<<<
- * len1 = len2
- *
- */
- __pyx_v_e_gaps1 = __pyx_v_e_gaps2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1424
- * free(e_gaps1)
- * e_gaps1 = e_gaps2
- * len1 = len2 # <<<<<<<<<<<<<<
- *
- * step = 1+(num_gaps*2)
- */
- __pyx_v_len1 = __pyx_v_len2;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1426
- * len1 = len2
- *
- * step = 1+(num_gaps*2) # <<<<<<<<<<<<<<
- * e_gaps2 = <int*> malloc(0)
- * len2 = 0
- */
- __pyx_v_step = (1 + (__pyx_v_num_gaps * 2));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1427
- *
- * step = 1+(num_gaps*2)
- * e_gaps2 = <int*> malloc(0) # <<<<<<<<<<<<<<
- * len2 = 0
- * for i from e_high <= i <= e_x_high:
- */
- __pyx_v_e_gaps2 = ((int *)malloc(0));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1428
- * step = 1+(num_gaps*2)
- * e_gaps2 = <int*> malloc(0)
- * len2 = 0 # <<<<<<<<<<<<<<
- * for i from e_high <= i <= e_x_high:
- * j = 0
- */
- __pyx_v_len2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1429
- * e_gaps2 = <int*> malloc(0)
- * len2 = 0
- * for i from e_high <= i <= e_x_high: # <<<<<<<<<<<<<<
- * j = 0
- * while j < len1:
- */
- __pyx_t_3 = __pyx_v_e_x_high;
- for (__pyx_v_i = __pyx_v_e_high; __pyx_v_i <= __pyx_t_3; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1430
- * len2 = 0
- * for i from e_high <= i <= e_x_high:
- * j = 0 # <<<<<<<<<<<<<<
- * while j < len1:
- * if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:
- */
- __pyx_v_j = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1431
- * for i from e_high <= i <= e_x_high:
- * j = 0
- * while j < len1: # <<<<<<<<<<<<<<
- * if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)
- */
- while (1) {
- __pyx_t_6 = ((__pyx_v_j < __pyx_v_len1) != 0);
- if (!__pyx_t_6) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1432
- * j = 0
- * while j < len1:
- * if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]: # <<<<<<<<<<<<<<
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)
- */
- __pyx_t_6 = (((__pyx_v_i - (__pyx_v_e_gaps1[__pyx_v_j])) <= __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_6) {
- __pyx_t_7 = ((__pyx_v_i >= (__pyx_v_e_gaps1[((__pyx_v_j + __pyx_v_step) - 1)])) != 0);
- __pyx_t_2 = __pyx_t_7;
- } else {
- __pyx_t_2 = __pyx_t_6;
- }
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1433
- * while j < len1:
- * if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step) # <<<<<<<<<<<<<<
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)
- * j = j + step
- */
- __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (__pyx_v_e_gaps1 + __pyx_v_j), __pyx_v_step);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1434
- * if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1) # <<<<<<<<<<<<<<
- * j = j + step
- * free(e_gaps1)
- */
- __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (&__pyx_v_i), 1);
- goto __pyx_L37;
- }
- __pyx_L37:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1435
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)
- * j = j + step # <<<<<<<<<<<<<<
- * free(e_gaps1)
- * e_gaps1 = e_gaps2
- */
- __pyx_v_j = (__pyx_v_j + __pyx_v_step);
- }
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1436
- * e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)
- * j = j + step
- * free(e_gaps1) # <<<<<<<<<<<<<<
- * e_gaps1 = e_gaps2
- * len1 = len2
- */
- free(__pyx_v_e_gaps1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1437
- * j = j + step
- * free(e_gaps1)
- * e_gaps1 = e_gaps2 # <<<<<<<<<<<<<<
- * len1 = len2
- *
- */
- __pyx_v_e_gaps1 = __pyx_v_e_gaps2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1438
- * free(e_gaps1)
- * e_gaps1 = e_gaps2
- * len1 = len2 # <<<<<<<<<<<<<<
- *
- * step = (num_gaps+1)*2
- */
- __pyx_v_len1 = __pyx_v_len2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1440
- * len1 = len2
- *
- * step = (num_gaps+1)*2 # <<<<<<<<<<<<<<
- * i = 0
- *
- */
- __pyx_v_step = ((__pyx_v_num_gaps + 1) * 2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1441
- *
- * step = (num_gaps+1)*2
- * i = 0 # <<<<<<<<<<<<<<
- *
- * cdef IntList indexes
- */
- __pyx_v_i = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1444
- *
- * cdef IntList indexes
- * while i < len1: # <<<<<<<<<<<<<<
- * ephr_arr._clear()
- * num_chunks = 0
- */
- while (1) {
- __pyx_t_2 = ((__pyx_v_i < __pyx_v_len1) != 0);
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1445
- * cdef IntList indexes
- * while i < len1:
- * ephr_arr._clear() # <<<<<<<<<<<<<<
- * num_chunks = 0
- * indexes = IntList()
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_ephr_arr->__pyx_vtab)->_clear(__pyx_v_ephr_arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1446
- * while i < len1:
- * ephr_arr._clear()
- * num_chunks = 0 # <<<<<<<<<<<<<<
- * indexes = IntList()
- * for j from 0 <= j < num_gaps+1:
- */
- __pyx_v_num_chunks = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1447
- * ephr_arr._clear()
- * num_chunks = 0
- * indexes = IntList() # <<<<<<<<<<<<<<
- * for j from 0 <= j < num_gaps+1:
- * if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(((PyObject *)__pyx_v_indexes));
- __pyx_v_indexes = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1448
- * num_chunks = 0
- * indexes = IntList()
- * for j from 0 <= j < num_gaps+1: # <<<<<<<<<<<<<<
- * if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:
- * num_chunks = num_chunks + 1
- */
- __pyx_t_9 = (__pyx_v_num_gaps + 1);
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_9; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1449
- * indexes = IntList()
- * for j from 0 <= j < num_gaps+1:
- * if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]: # <<<<<<<<<<<<<<
- * num_chunks = num_chunks + 1
- * for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:
- */
- __pyx_t_2 = (((__pyx_v_e_gaps1[(__pyx_v_i + (2 * __pyx_v_j))]) < (__pyx_v_e_gaps1[((__pyx_v_i + (2 * __pyx_v_j)) + 1)])) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1450
- * for j from 0 <= j < num_gaps+1:
- * if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:
- * num_chunks = num_chunks + 1 # <<<<<<<<<<<<<<
- * for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:
- * indexes.append(k)
- */
- __pyx_v_num_chunks = (__pyx_v_num_chunks + 1);
- goto __pyx_L42;
- }
- __pyx_L42:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1451
- * if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:
- * num_chunks = num_chunks + 1
- * for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]: # <<<<<<<<<<<<<<
- * indexes.append(k)
- * ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])
- */
- __pyx_t_3 = (__pyx_v_e_gaps1[((__pyx_v_i + (2 * __pyx_v_j)) + 1)]);
- for (__pyx_v_k = (__pyx_v_e_gaps1[(__pyx_v_i + (2 * __pyx_v_j))]); __pyx_v_k < __pyx_t_3; __pyx_v_k++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1452
- * num_chunks = num_chunks + 1
- * for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:
- * indexes.append(k) # <<<<<<<<<<<<<<
- * ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])
- * if j < num_gaps:
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_indexes), __pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1453
- * for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:
- * indexes.append(k)
- * ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]]) # <<<<<<<<<<<<<<
- * if j < num_gaps:
- * indexes.append(sym_setindex(self.category, e_gap_order[j]+1))
- */
- __pyx_t_4 = (__pyx_v_self->eda->data->arr[(__pyx_v_e_sent_start + __pyx_v_k)]);
- __pyx_t_10 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->eid2symid), __pyx_t_4, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_ephr_arr->__pyx_vtab)->_append(__pyx_v_ephr_arr, __pyx_t_4);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1454
- * indexes.append(k)
- * ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])
- * if j < num_gaps: # <<<<<<<<<<<<<<
- * indexes.append(sym_setindex(self.category, e_gap_order[j]+1))
- * ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))
- */
- __pyx_t_2 = ((__pyx_v_j < __pyx_v_num_gaps) != 0);
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1455
- * ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])
- * if j < num_gaps:
- * indexes.append(sym_setindex(self.category, e_gap_order[j]+1)) # <<<<<<<<<<<<<<
- * ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))
- * i = i + step
- */
- __pyx_t_10 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, ((__pyx_v_e_gap_order[__pyx_v_j]) + 1))); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_indexes), __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1456
- * if j < num_gaps:
- * indexes.append(sym_setindex(self.category, e_gap_order[j]+1))
- * ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1)) # <<<<<<<<<<<<<<
- * i = i + step
- * if ephr_arr.len <= self.max_target_length and num_chunks <= self.max_target_chunks:
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_ephr_arr->__pyx_vtab)->_append(__pyx_v_ephr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, ((__pyx_v_e_gap_order[__pyx_v_j]) + 1)));
- goto __pyx_L45;
- }
- __pyx_L45:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1457
- * indexes.append(sym_setindex(self.category, e_gap_order[j]+1))
- * ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))
- * i = i + step # <<<<<<<<<<<<<<
- * if ephr_arr.len <= self.max_target_length and num_chunks <= self.max_target_chunks:
- * result.append((Phrase(ephr_arr),indexes))
- */
- __pyx_v_i = (__pyx_v_i + __pyx_v_step);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1458
- * ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))
- * i = i + step
- * if ephr_arr.len <= self.max_target_length and num_chunks <= self.max_target_chunks: # <<<<<<<<<<<<<<
- * result.append((Phrase(ephr_arr),indexes))
- *
- */
- __pyx_t_2 = ((__pyx_v_ephr_arr->len <= __pyx_v_self->max_target_length) != 0);
- if (__pyx_t_2) {
- __pyx_t_6 = ((__pyx_v_num_chunks <= __pyx_v_self->max_target_chunks) != 0);
- __pyx_t_7 = __pyx_t_6;
- } else {
- __pyx_t_7 = __pyx_t_2;
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1459
- * i = i + step
- * if ephr_arr.len <= self.max_target_length and num_chunks <= self.max_target_chunks:
- * result.append((Phrase(ephr_arr),indexes)) # <<<<<<<<<<<<<<
- *
- * free(e_gaps1)
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_ephr_arr));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_ephr_arr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_ephr_arr));
- __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- __Pyx_INCREF(((PyObject *)__pyx_v_indexes));
- PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_indexes));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_indexes));
- __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_result, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L46;
- }
- __pyx_L46:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1461
- * result.append((Phrase(ephr_arr),indexes))
- *
- * free(e_gaps1) # <<<<<<<<<<<<<<
- * free(e_gap_order)
- * return result
- */
- free(__pyx_v_e_gaps1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1462
- *
- * free(e_gaps1)
- * free(e_gap_order) # <<<<<<<<<<<<<<
- * return result
- *
- */
- free(__pyx_v_e_gap_order);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1463
- * free(e_gaps1)
- * free(e_gap_order)
- * return result # <<<<<<<<<<<<<<
- *
- * cdef IntList create_alignments(self, int* sent_links, int num_links,
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_result);
- __pyx_r = __pyx_v_result;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.extract_phrases", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_ephr_arr);
- __Pyx_XDECREF(__pyx_v_result);
- __Pyx_XDECREF((PyObject *)__pyx_v_indexes);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1465
- * return result
- *
- * cdef IntList create_alignments(self, int* sent_links, int num_links, # <<<<<<<<<<<<<<
- * IntList findexes, IntList eindexes):
- * cdef unsigned i
- */
-
-static struct __pyx_obj_3_sa_IntList *__pyx_f_3_sa_23HieroCachingRuleFactory_create_alignments(CYTHON_UNUSED struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int *__pyx_v_sent_links, int __pyx_v_num_links, struct __pyx_obj_3_sa_IntList *__pyx_v_findexes, struct __pyx_obj_3_sa_IntList *__pyx_v_eindexes) {
- unsigned int __pyx_v_i;
- struct __pyx_obj_3_sa_IntList *__pyx_v_ret = 0;
- int __pyx_v_s;
- PyObject *__pyx_v_idx = NULL;
- PyObject *__pyx_v_j = NULL;
- struct __pyx_obj_3_sa_IntList *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- unsigned int __pyx_t_3;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- Py_ssize_t __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("create_alignments", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1468
- * IntList findexes, IntList eindexes):
- * cdef unsigned i
- * cdef IntList ret = IntList() # <<<<<<<<<<<<<<
- * for i in range(findexes.len):
- * s = findexes.arr[i]
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_ret = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1469
- * cdef unsigned i
- * cdef IntList ret = IntList()
- * for i in range(findexes.len): # <<<<<<<<<<<<<<
- * s = findexes.arr[i]
- * if s < 0: continue
- */
- __pyx_t_2 = __pyx_v_findexes->len;
- for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
- __pyx_v_i = __pyx_t_3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1470
- * cdef IntList ret = IntList()
- * for i in range(findexes.len):
- * s = findexes.arr[i] # <<<<<<<<<<<<<<
- * if s < 0: continue
- * idx = 0
- */
- __pyx_v_s = (__pyx_v_findexes->arr[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1471
- * for i in range(findexes.len):
- * s = findexes.arr[i]
- * if s < 0: continue # <<<<<<<<<<<<<<
- * idx = 0
- * while idx < num_links * 2:
- */
- __pyx_t_4 = ((__pyx_v_s < 0) != 0);
- if (__pyx_t_4) {
- goto __pyx_L3_continue;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1472
- * s = findexes.arr[i]
- * if s < 0: continue
- * idx = 0 # <<<<<<<<<<<<<<
- * while idx < num_links * 2:
- * if sent_links[idx] == s:
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_XDECREF(__pyx_v_idx);
- __pyx_v_idx = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1473
- * if s < 0: continue
- * idx = 0
- * while idx < num_links * 2: # <<<<<<<<<<<<<<
- * if sent_links[idx] == s:
- * j = eindexes.index(sent_links[idx+1])
- */
- while (1) {
- __pyx_t_1 = PyInt_FromLong((__pyx_v_num_links * 2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_idx, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (!__pyx_t_4) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1474
- * idx = 0
- * while idx < num_links * 2:
- * if sent_links[idx] == s: # <<<<<<<<<<<<<<
- * j = eindexes.index(sent_links[idx+1])
- * ret.append(i * ALIGNMENT_CODE + j)
- */
- __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_4 = (((__pyx_v_sent_links[__pyx_t_6]) == __pyx_v_s) != 0);
- if (__pyx_t_4) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1475
- * while idx < num_links * 2:
- * if sent_links[idx] == s:
- * j = eindexes.index(sent_links[idx+1]) # <<<<<<<<<<<<<<
- * ret.append(i * ALIGNMENT_CODE + j)
- * idx += 2
- */
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_eindexes), __pyx_n_s__index); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyNumber_Add(__pyx_v_idx, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong((__pyx_v_sent_links[__pyx_t_6])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_v_j);
- __pyx_v_j = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1476
- * if sent_links[idx] == s:
- * j = eindexes.index(sent_links[idx+1])
- * ret.append(i * ALIGNMENT_CODE + j) # <<<<<<<<<<<<<<
- * idx += 2
- * return ret
- */
- __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_i * __pyx_v_3_sa_ALIGNMENT_CODE)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PyNumber_Add(__pyx_t_1, __pyx_v_j); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_ret), __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1477
- * j = eindexes.index(sent_links[idx+1])
- * ret.append(i * ALIGNMENT_CODE + j)
- * idx += 2 # <<<<<<<<<<<<<<
- * return ret
- *
- */
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_idx, __pyx_int_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_idx);
- __pyx_v_idx = __pyx_t_1;
- __pyx_t_1 = 0;
- }
- __pyx_L3_continue:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1478
- * ret.append(i * ALIGNMENT_CODE + j)
- * idx += 2
- * return ret # <<<<<<<<<<<<<<
- *
- * cdef extract(self, Phrase phrase, Matching* matching, int* chunklen, int num_chunks):
- */
- __Pyx_XDECREF(((PyObject *)__pyx_r));
- __Pyx_INCREF(((PyObject *)__pyx_v_ret));
- __pyx_r = __pyx_v_ret;
- goto __pyx_L0;
-
- __pyx_r = ((struct __pyx_obj_3_sa_IntList *)Py_None); __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.create_alignments", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_ret);
- __Pyx_XDECREF(__pyx_v_idx);
- __Pyx_XDECREF(__pyx_v_j);
- __Pyx_XGIVEREF((PyObject *)__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1480
- * return ret
- *
- * cdef extract(self, Phrase phrase, Matching* matching, int* chunklen, int num_chunks): # <<<<<<<<<<<<<<
- * cdef int* sent_links, *e_links_low, *e_links_high, *f_links_low, *f_links_high
- * cdef int *f_gap_low, *f_gap_high, *e_gap_low, *e_gap_high, num_gaps, gap_start
- */
-
-static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, struct __pyx_obj_3_sa_Phrase *__pyx_v_phrase, struct __pyx_t_3_sa_Matching *__pyx_v_matching, int *__pyx_v_chunklen, int __pyx_v_num_chunks) {
- int *__pyx_v_sent_links;
- int *__pyx_v_e_links_low;
- int *__pyx_v_e_links_high;
- int *__pyx_v_f_links_low;
- int *__pyx_v_f_links_high;
- int *__pyx_v_f_gap_low;
- int *__pyx_v_f_gap_high;
- int *__pyx_v_e_gap_low;
- int *__pyx_v_e_gap_high;
- int __pyx_v_num_gaps;
- int __pyx_v_gap_start;
- int __pyx_v_i;
- int __pyx_v_j;
- int __pyx_v_e_i;
- int __pyx_v_f_i;
- int __pyx_v_num_links;
- int __pyx_v_num_aligned_chunks;
- int __pyx_v_met_constraints;
- int __pyx_v_x;
- int __pyx_v_f_low;
- int __pyx_v_f_high;
- int __pyx_v_e_low;
- int __pyx_v_e_high;
- int __pyx_v_f_back_low;
- int __pyx_v_f_back_high;
- int __pyx_v_e_sent_start;
- int __pyx_v_e_sent_end;
- int __pyx_v_f_sent_start;
- int __pyx_v_f_sent_end;
- int __pyx_v_e_sent_len;
- int __pyx_v_f_sent_len;
- CYTHON_UNUSED int __pyx_v_e_word_count;
- int __pyx_v_f_x_low;
- int __pyx_v_f_x_high;
- int __pyx_v_e_x_low;
- int __pyx_v_e_x_high;
- int __pyx_v_phrase_len;
- float __pyx_v_pair_count;
- PyObject *__pyx_v_extracts = 0;
- PyObject *__pyx_v_phrase_list = 0;
- struct __pyx_obj_3_sa_IntList *__pyx_v_fphr_arr = 0;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_fphr = 0;
- CYTHON_UNUSED PyObject *__pyx_v_reason_for_failure = 0;
- PyObject *__pyx_v_sofar = NULL;
- PyObject *__pyx_v_als = NULL;
- PyObject *__pyx_v_al = NULL;
- long __pyx_v_gap_error;
- PyObject *__pyx_v_phrase2 = NULL;
- PyObject *__pyx_v_eindexes = NULL;
- struct __pyx_obj_3_sa_IntList *__pyx_v_als1 = NULL;
- struct __pyx_obj_3_sa_IntList *__pyx_v_als2 = NULL;
- struct __pyx_obj_3_sa_IntList *__pyx_v_als3 = NULL;
- struct __pyx_obj_3_sa_IntList *__pyx_v_als4 = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- int __pyx_t_5;
- int __pyx_t_6;
- int __pyx_t_7;
- int __pyx_t_8;
- int __pyx_t_9;
- PyObject *__pyx_t_10 = NULL;
- int __pyx_t_11;
- long __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- PyObject *__pyx_t_14 = NULL;
- PyObject *__pyx_t_15 = NULL;
- PyObject *(*__pyx_t_16)(PyObject *);
- PyObject *(*__pyx_t_17)(PyObject *);
- int __pyx_t_18;
- int __pyx_t_19;
- int __pyx_t_20;
- int __pyx_t_21;
- int __pyx_t_22;
- int __pyx_t_23;
- int __pyx_t_24;
- int __pyx_t_25;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("extract", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1493
- * cdef reason_for_failure
- *
- * fphr_arr = IntList() # <<<<<<<<<<<<<<
- * phrase_len = phrase.n
- * extracts = []
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_fphr_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1494
- *
- * fphr_arr = IntList()
- * phrase_len = phrase.n # <<<<<<<<<<<<<<
- * extracts = []
- * sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)
- */
- __pyx_t_2 = __pyx_v_phrase->n;
- __pyx_v_phrase_len = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1495
- * fphr_arr = IntList()
- * phrase_len = phrase.n
- * extracts = [] # <<<<<<<<<<<<<<
- * sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)
- *
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_extracts = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1496
- * phrase_len = phrase.n
- * extracts = []
- * sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links) # <<<<<<<<<<<<<<
- *
- * e_sent_start = self.eda.sent_index.arr[matching.sent_id]
- */
- __pyx_v_sent_links = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->alignment->__pyx_vtab)->_get_sent_links(__pyx_v_self->alignment, __pyx_v_matching->sent_id, (&__pyx_v_num_links));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1498
- * sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)
- *
- * e_sent_start = self.eda.sent_index.arr[matching.sent_id] # <<<<<<<<<<<<<<
- * e_sent_end = self.eda.sent_index.arr[matching.sent_id+1]
- * e_sent_len = e_sent_end - e_sent_start - 1
- */
- __pyx_v_e_sent_start = (__pyx_v_self->eda->sent_index->arr[__pyx_v_matching->sent_id]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1499
- *
- * e_sent_start = self.eda.sent_index.arr[matching.sent_id]
- * e_sent_end = self.eda.sent_index.arr[matching.sent_id+1] # <<<<<<<<<<<<<<
- * e_sent_len = e_sent_end - e_sent_start - 1
- * f_sent_start = self.fda.sent_index.arr[matching.sent_id]
- */
- __pyx_v_e_sent_end = (__pyx_v_self->eda->sent_index->arr[(__pyx_v_matching->sent_id + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1500
- * e_sent_start = self.eda.sent_index.arr[matching.sent_id]
- * e_sent_end = self.eda.sent_index.arr[matching.sent_id+1]
- * e_sent_len = e_sent_end - e_sent_start - 1 # <<<<<<<<<<<<<<
- * f_sent_start = self.fda.sent_index.arr[matching.sent_id]
- * f_sent_end = self.fda.sent_index.arr[matching.sent_id+1]
- */
- __pyx_v_e_sent_len = ((__pyx_v_e_sent_end - __pyx_v_e_sent_start) - 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1501
- * e_sent_end = self.eda.sent_index.arr[matching.sent_id+1]
- * e_sent_len = e_sent_end - e_sent_start - 1
- * f_sent_start = self.fda.sent_index.arr[matching.sent_id] # <<<<<<<<<<<<<<
- * f_sent_end = self.fda.sent_index.arr[matching.sent_id+1]
- * f_sent_len = f_sent_end - f_sent_start - 1
- */
- __pyx_v_f_sent_start = (__pyx_v_self->fda->sent_index->arr[__pyx_v_matching->sent_id]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1502
- * e_sent_len = e_sent_end - e_sent_start - 1
- * f_sent_start = self.fda.sent_index.arr[matching.sent_id]
- * f_sent_end = self.fda.sent_index.arr[matching.sent_id+1] # <<<<<<<<<<<<<<
- * f_sent_len = f_sent_end - f_sent_start - 1
- *
- */
- __pyx_v_f_sent_end = (__pyx_v_self->fda->sent_index->arr[(__pyx_v_matching->sent_id + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1503
- * f_sent_start = self.fda.sent_index.arr[matching.sent_id]
- * f_sent_end = self.fda.sent_index.arr[matching.sent_id+1]
- * f_sent_len = f_sent_end - f_sent_start - 1 # <<<<<<<<<<<<<<
- *
- * self.findexes1.reset()
- */
- __pyx_v_f_sent_len = ((__pyx_v_f_sent_end - __pyx_v_f_sent_start) - 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1505
- * f_sent_len = f_sent_end - f_sent_start - 1
- *
- * self.findexes1.reset() # <<<<<<<<<<<<<<
- * sofar = 0
- * for i in range(num_chunks):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes1), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1506
- *
- * self.findexes1.reset()
- * sofar = 0 # <<<<<<<<<<<<<<
- * for i in range(num_chunks):
- * for j in range(chunklen[i]):
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_sofar = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1507
- * self.findexes1.reset()
- * sofar = 0
- * for i in range(num_chunks): # <<<<<<<<<<<<<<
- * for j in range(chunklen[i]):
- * self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);
- */
- __pyx_t_2 = __pyx_v_num_chunks;
- for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_2; __pyx_t_4+=1) {
- __pyx_v_i = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1508
- * sofar = 0
- * for i in range(num_chunks):
- * for j in range(chunklen[i]): # <<<<<<<<<<<<<<
- * self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);
- * sofar += 1
- */
- __pyx_t_5 = (__pyx_v_chunklen[__pyx_v_i]);
- for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
- __pyx_v_j = __pyx_t_6;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1509
- * for i in range(num_chunks):
- * for j in range(chunklen[i]):
- * self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start); # <<<<<<<<<<<<<<
- * sofar += 1
- * if i+1 < num_chunks:
- */
- __pyx_t_3 = PyInt_FromLong((((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + __pyx_v_j) - __pyx_v_f_sent_start)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes1), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1510
- * for j in range(chunklen[i]):
- * self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);
- * sofar += 1 # <<<<<<<<<<<<<<
- * if i+1 < num_chunks:
- * self.findexes1.append(phrase[sofar])
- */
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_sofar, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_sofar);
- __pyx_v_sofar = __pyx_t_1;
- __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1511
- * self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);
- * sofar += 1
- * if i+1 < num_chunks: # <<<<<<<<<<<<<<
- * self.findexes1.append(phrase[sofar])
- * sofar += 1
- */
- __pyx_t_7 = (((__pyx_v_i + 1) < __pyx_v_num_chunks) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1512
- * sofar += 1
- * if i+1 < num_chunks:
- * self.findexes1.append(phrase[sofar]) # <<<<<<<<<<<<<<
- * sofar += 1
- *
- */
- __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_phrase), __pyx_v_sofar); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes1), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1513
- * if i+1 < num_chunks:
- * self.findexes1.append(phrase[sofar])
- * sofar += 1 # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_sofar, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_v_sofar);
- __pyx_v_sofar = __pyx_t_3;
- __pyx_t_3 = 0;
- goto __pyx_L7;
- }
- __pyx_L7:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1516
- *
- *
- * e_links_low = <int*> malloc(e_sent_len*sizeof(int)) # <<<<<<<<<<<<<<
- * e_links_high = <int*> malloc(e_sent_len*sizeof(int))
- * f_links_low = <int*> malloc(f_sent_len*sizeof(int))
- */
- __pyx_v_e_links_low = ((int *)malloc((__pyx_v_e_sent_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1517
- *
- * e_links_low = <int*> malloc(e_sent_len*sizeof(int))
- * e_links_high = <int*> malloc(e_sent_len*sizeof(int)) # <<<<<<<<<<<<<<
- * f_links_low = <int*> malloc(f_sent_len*sizeof(int))
- * f_links_high = <int*> malloc(f_sent_len*sizeof(int))
- */
- __pyx_v_e_links_high = ((int *)malloc((__pyx_v_e_sent_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1518
- * e_links_low = <int*> malloc(e_sent_len*sizeof(int))
- * e_links_high = <int*> malloc(e_sent_len*sizeof(int))
- * f_links_low = <int*> malloc(f_sent_len*sizeof(int)) # <<<<<<<<<<<<<<
- * f_links_high = <int*> malloc(f_sent_len*sizeof(int))
- * f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- */
- __pyx_v_f_links_low = ((int *)malloc((__pyx_v_f_sent_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1519
- * e_links_high = <int*> malloc(e_sent_len*sizeof(int))
- * f_links_low = <int*> malloc(f_sent_len*sizeof(int))
- * f_links_high = <int*> malloc(f_sent_len*sizeof(int)) # <<<<<<<<<<<<<<
- * f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- * f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- */
- __pyx_v_f_links_high = ((int *)malloc((__pyx_v_f_sent_len * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1520
- * f_links_low = <int*> malloc(f_sent_len*sizeof(int))
- * f_links_high = <int*> malloc(f_sent_len*sizeof(int))
- * f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- * f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- * e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- */
- __pyx_v_f_gap_low = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1521
- * f_links_high = <int*> malloc(f_sent_len*sizeof(int))
- * f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- * f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- * e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- * e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- */
- __pyx_v_f_gap_high = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1522
- * f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- * f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- * e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- * e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- * memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))
- */
- __pyx_v_e_gap_low = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1523
- * f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- * e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- * e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))
- * memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))
- */
- __pyx_v_e_gap_high = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int)))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1524
- * e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- * e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- * memset(f_gap_low, 0, (num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))
- * memset(e_gap_low, 0, (num_chunks+1)*sizeof(int))
- */
- memset(__pyx_v_f_gap_low, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1525
- * e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- * memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))
- * memset(f_gap_high, 0, (num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(e_gap_low, 0, (num_chunks+1)*sizeof(int))
- * memset(e_gap_high, 0, (num_chunks+1)*sizeof(int))
- */
- memset(__pyx_v_f_gap_high, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1526
- * memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))
- * memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))
- * memset(e_gap_low, 0, (num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- * memset(e_gap_high, 0, (num_chunks+1)*sizeof(int))
- *
- */
- memset(__pyx_v_e_gap_low, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1527
- * memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))
- * memset(e_gap_low, 0, (num_chunks+1)*sizeof(int))
- * memset(e_gap_high, 0, (num_chunks+1)*sizeof(int)) # <<<<<<<<<<<<<<
- *
- * reason_for_failure = ""
- */
- memset(__pyx_v_e_gap_high, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int))));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1529
- * memset(e_gap_high, 0, (num_chunks+1)*sizeof(int))
- *
- * reason_for_failure = "" # <<<<<<<<<<<<<<
- *
- * for i from 0 <= i < e_sent_len:
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_47));
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_47);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1531
- * reason_for_failure = ""
- *
- * for i from 0 <= i < e_sent_len: # <<<<<<<<<<<<<<
- * e_links_low[i] = -1
- * e_links_high[i] = -1
- */
- __pyx_t_2 = __pyx_v_e_sent_len;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1532
- *
- * for i from 0 <= i < e_sent_len:
- * e_links_low[i] = -1 # <<<<<<<<<<<<<<
- * e_links_high[i] = -1
- * for i from 0 <= i < f_sent_len:
- */
- (__pyx_v_e_links_low[__pyx_v_i]) = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1533
- * for i from 0 <= i < e_sent_len:
- * e_links_low[i] = -1
- * e_links_high[i] = -1 # <<<<<<<<<<<<<<
- * for i from 0 <= i < f_sent_len:
- * f_links_low[i] = -1
- */
- (__pyx_v_e_links_high[__pyx_v_i]) = -1;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1534
- * e_links_low[i] = -1
- * e_links_high[i] = -1
- * for i from 0 <= i < f_sent_len: # <<<<<<<<<<<<<<
- * f_links_low[i] = -1
- * f_links_high[i] = -1
- */
- __pyx_t_2 = __pyx_v_f_sent_len;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1535
- * e_links_high[i] = -1
- * for i from 0 <= i < f_sent_len:
- * f_links_low[i] = -1 # <<<<<<<<<<<<<<
- * f_links_high[i] = -1
- *
- */
- (__pyx_v_f_links_low[__pyx_v_i]) = -1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1536
- * for i from 0 <= i < f_sent_len:
- * f_links_low[i] = -1
- * f_links_high[i] = -1 # <<<<<<<<<<<<<<
- *
- * # this is really inefficient -- might be good to
- */
- (__pyx_v_f_links_high[__pyx_v_i]) = -1;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1542
- * # links that we care about (but then how to look up
- * # when we want to check something on the e side?)
- * i = 0 # <<<<<<<<<<<<<<
- * while i < num_links*2:
- * f_i = sent_links[i]
- */
- __pyx_v_i = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1543
- * # when we want to check something on the e side?)
- * i = 0
- * while i < num_links*2: # <<<<<<<<<<<<<<
- * f_i = sent_links[i]
- * e_i = sent_links[i+1]
- */
- while (1) {
- __pyx_t_7 = ((__pyx_v_i < (__pyx_v_num_links * 2)) != 0);
- if (!__pyx_t_7) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1544
- * i = 0
- * while i < num_links*2:
- * f_i = sent_links[i] # <<<<<<<<<<<<<<
- * e_i = sent_links[i+1]
- * if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:
- */
- __pyx_v_f_i = (__pyx_v_sent_links[__pyx_v_i]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1545
- * while i < num_links*2:
- * f_i = sent_links[i]
- * e_i = sent_links[i+1] # <<<<<<<<<<<<<<
- * if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:
- * f_links_low[f_i] = e_i
- */
- __pyx_v_e_i = (__pyx_v_sent_links[(__pyx_v_i + 1)]);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1546
- * f_i = sent_links[i]
- * e_i = sent_links[i+1]
- * if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i: # <<<<<<<<<<<<<<
- * f_links_low[f_i] = e_i
- * if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:
- */
- __pyx_t_7 = (((__pyx_v_f_links_low[__pyx_v_f_i]) == -1) != 0);
- if (!__pyx_t_7) {
- __pyx_t_8 = (((__pyx_v_f_links_low[__pyx_v_f_i]) > __pyx_v_e_i) != 0);
- __pyx_t_9 = __pyx_t_8;
- } else {
- __pyx_t_9 = __pyx_t_7;
- }
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1547
- * e_i = sent_links[i+1]
- * if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:
- * f_links_low[f_i] = e_i # <<<<<<<<<<<<<<
- * if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:
- * f_links_high[f_i] = e_i + 1
- */
- (__pyx_v_f_links_low[__pyx_v_f_i]) = __pyx_v_e_i;
- goto __pyx_L14;
- }
- __pyx_L14:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1548
- * if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:
- * f_links_low[f_i] = e_i
- * if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1: # <<<<<<<<<<<<<<
- * f_links_high[f_i] = e_i + 1
- * if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:
- */
- __pyx_t_9 = (((__pyx_v_f_links_high[__pyx_v_f_i]) == -1) != 0);
- if (!__pyx_t_9) {
- __pyx_t_7 = (((__pyx_v_f_links_high[__pyx_v_f_i]) < (__pyx_v_e_i + 1)) != 0);
- __pyx_t_8 = __pyx_t_7;
- } else {
- __pyx_t_8 = __pyx_t_9;
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1549
- * f_links_low[f_i] = e_i
- * if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:
- * f_links_high[f_i] = e_i + 1 # <<<<<<<<<<<<<<
- * if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:
- * e_links_low[e_i] = f_i
- */
- (__pyx_v_f_links_high[__pyx_v_f_i]) = (__pyx_v_e_i + 1);
- goto __pyx_L15;
- }
- __pyx_L15:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1550
- * if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:
- * f_links_high[f_i] = e_i + 1
- * if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i: # <<<<<<<<<<<<<<
- * e_links_low[e_i] = f_i
- * if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:
- */
- __pyx_t_8 = (((__pyx_v_e_links_low[__pyx_v_e_i]) == -1) != 0);
- if (!__pyx_t_8) {
- __pyx_t_9 = (((__pyx_v_e_links_low[__pyx_v_e_i]) > __pyx_v_f_i) != 0);
- __pyx_t_7 = __pyx_t_9;
- } else {
- __pyx_t_7 = __pyx_t_8;
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1551
- * f_links_high[f_i] = e_i + 1
- * if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:
- * e_links_low[e_i] = f_i # <<<<<<<<<<<<<<
- * if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:
- * e_links_high[e_i] = f_i + 1
- */
- (__pyx_v_e_links_low[__pyx_v_e_i]) = __pyx_v_f_i;
- goto __pyx_L16;
- }
- __pyx_L16:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1552
- * if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:
- * e_links_low[e_i] = f_i
- * if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1: # <<<<<<<<<<<<<<
- * e_links_high[e_i] = f_i + 1
- * i = i + 2
- */
- __pyx_t_7 = (((__pyx_v_e_links_high[__pyx_v_e_i]) == -1) != 0);
- if (!__pyx_t_7) {
- __pyx_t_8 = (((__pyx_v_e_links_high[__pyx_v_e_i]) < (__pyx_v_f_i + 1)) != 0);
- __pyx_t_9 = __pyx_t_8;
- } else {
- __pyx_t_9 = __pyx_t_7;
- }
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1553
- * e_links_low[e_i] = f_i
- * if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:
- * e_links_high[e_i] = f_i + 1 # <<<<<<<<<<<<<<
- * i = i + 2
- *
- */
- (__pyx_v_e_links_high[__pyx_v_e_i]) = (__pyx_v_f_i + 1);
- goto __pyx_L17;
- }
- __pyx_L17:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1554
- * if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:
- * e_links_high[e_i] = f_i + 1
- * i = i + 2 # <<<<<<<<<<<<<<
- *
- * als = []
- */
- __pyx_v_i = (__pyx_v_i + 2);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1556
- * i = i + 2
- *
- * als = [] # <<<<<<<<<<<<<<
- * for x in range(matching.start,matching.end):
- * al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])
- */
- __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_als = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1557
- *
- * als = []
- * for x in range(matching.start,matching.end): # <<<<<<<<<<<<<<
- * al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])
- * als.append(al)
- */
- __pyx_t_2 = __pyx_v_matching->end;
- for (__pyx_t_4 = __pyx_v_matching->start; __pyx_t_4 < __pyx_t_2; __pyx_t_4+=1) {
- __pyx_v_x = __pyx_t_4;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1558
- * als = []
- * for x in range(matching.start,matching.end):
- * al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start]) # <<<<<<<<<<<<<<
- * als.append(al)
- * # check all source-side alignment constraints
- */
- __pyx_t_3 = PyInt_FromLong(((__pyx_v_matching->arr[__pyx_v_x]) - __pyx_v_f_sent_start)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyInt_FromLong((__pyx_v_f_links_low[((__pyx_v_matching->arr[__pyx_v_x]) - __pyx_v_f_sent_start)])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_3 = 0;
- __pyx_t_1 = 0;
- __Pyx_XDECREF(((PyObject *)__pyx_v_al));
- __pyx_v_al = ((PyObject*)__pyx_t_10);
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1559
- * for x in range(matching.start,matching.end):
- * al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])
- * als.append(al) # <<<<<<<<<<<<<<
- * # check all source-side alignment constraints
- * met_constraints = 1
- */
- __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_als, ((PyObject *)__pyx_v_al)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1561
- * als.append(al)
- * # check all source-side alignment constraints
- * met_constraints = 1 # <<<<<<<<<<<<<<
- * if self.require_aligned_terminal:
- * num_aligned_chunks = 0
- */
- __pyx_v_met_constraints = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1562
- * # check all source-side alignment constraints
- * met_constraints = 1
- * if self.require_aligned_terminal: # <<<<<<<<<<<<<<
- * num_aligned_chunks = 0
- * for i from 0 <= i < num_chunks:
- */
- __pyx_t_9 = (__pyx_v_self->require_aligned_terminal != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1563
- * met_constraints = 1
- * if self.require_aligned_terminal:
- * num_aligned_chunks = 0 # <<<<<<<<<<<<<<
- * for i from 0 <= i < num_chunks:
- * for j from 0 <= j < chunklen[i]:
- */
- __pyx_v_num_aligned_chunks = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1564
- * if self.require_aligned_terminal:
- * num_aligned_chunks = 0
- * for i from 0 <= i < num_chunks: # <<<<<<<<<<<<<<
- * for j from 0 <= j < chunklen[i]:
- * if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:
- */
- __pyx_t_2 = __pyx_v_num_chunks;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1565
- * num_aligned_chunks = 0
- * for i from 0 <= i < num_chunks:
- * for j from 0 <= j < chunklen[i]: # <<<<<<<<<<<<<<
- * if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:
- * num_aligned_chunks = num_aligned_chunks + 1
- */
- __pyx_t_4 = (__pyx_v_chunklen[__pyx_v_i]);
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_4; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1566
- * for i from 0 <= i < num_chunks:
- * for j from 0 <= j < chunklen[i]:
- * if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1: # <<<<<<<<<<<<<<
- * num_aligned_chunks = num_aligned_chunks + 1
- * break
- */
- __pyx_t_9 = (((__pyx_v_f_links_low[(((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + __pyx_v_j) - __pyx_v_f_sent_start)]) > -1) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1567
- * for j from 0 <= j < chunklen[i]:
- * if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:
- * num_aligned_chunks = num_aligned_chunks + 1 # <<<<<<<<<<<<<<
- * break
- * if num_aligned_chunks == 0:
- */
- __pyx_v_num_aligned_chunks = (__pyx_v_num_aligned_chunks + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1568
- * if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:
- * num_aligned_chunks = num_aligned_chunks + 1
- * break # <<<<<<<<<<<<<<
- * if num_aligned_chunks == 0:
- * reason_for_failure = "No aligned terminals"
- */
- goto __pyx_L24_break;
- goto __pyx_L25;
- }
- __pyx_L25:;
- }
- __pyx_L24_break:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1569
- * num_aligned_chunks = num_aligned_chunks + 1
- * break
- * if num_aligned_chunks == 0: # <<<<<<<<<<<<<<
- * reason_for_failure = "No aligned terminals"
- * met_constraints = 0
- */
- __pyx_t_9 = ((__pyx_v_num_aligned_chunks == 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1570
- * break
- * if num_aligned_chunks == 0:
- * reason_for_failure = "No aligned terminals" # <<<<<<<<<<<<<<
- * met_constraints = 0
- * if self.require_aligned_chunks and num_aligned_chunks < num_chunks:
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_132));
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_132);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1571
- * if num_aligned_chunks == 0:
- * reason_for_failure = "No aligned terminals"
- * met_constraints = 0 # <<<<<<<<<<<<<<
- * if self.require_aligned_chunks and num_aligned_chunks < num_chunks:
- * reason_for_failure = "Unaligned chunk"
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L26;
- }
- __pyx_L26:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1572
- * reason_for_failure = "No aligned terminals"
- * met_constraints = 0
- * if self.require_aligned_chunks and num_aligned_chunks < num_chunks: # <<<<<<<<<<<<<<
- * reason_for_failure = "Unaligned chunk"
- * met_constraints = 0
- */
- if ((__pyx_v_self->require_aligned_chunks != 0)) {
- __pyx_t_9 = ((__pyx_v_num_aligned_chunks < __pyx_v_num_chunks) != 0);
- __pyx_t_7 = __pyx_t_9;
- } else {
- __pyx_t_7 = (__pyx_v_self->require_aligned_chunks != 0);
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1573
- * met_constraints = 0
- * if self.require_aligned_chunks and num_aligned_chunks < num_chunks:
- * reason_for_failure = "Unaligned chunk" # <<<<<<<<<<<<<<
- * met_constraints = 0
- *
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_133));
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_133);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1574
- * if self.require_aligned_chunks and num_aligned_chunks < num_chunks:
- * reason_for_failure = "Unaligned chunk"
- * met_constraints = 0 # <<<<<<<<<<<<<<
- *
- * if met_constraints and self.tight_phrases:
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L27;
- }
- __pyx_L27:;
- goto __pyx_L20;
- }
- __pyx_L20:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1576
- * met_constraints = 0
- *
- * if met_constraints and self.tight_phrases: # <<<<<<<<<<<<<<
- * # outside edge constraints are checked later
- * for i from 0 <= i < num_chunks-1:
- */
- if ((__pyx_v_met_constraints != 0)) {
- __pyx_t_7 = __pyx_v_self->tight_phrases;
- __pyx_t_9 = __pyx_t_7;
- } else {
- __pyx_t_9 = (__pyx_v_met_constraints != 0);
- }
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1578
- * if met_constraints and self.tight_phrases:
- * # outside edge constraints are checked later
- * for i from 0 <= i < num_chunks-1: # <<<<<<<<<<<<<<
- * if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1:
- * reason_for_failure = "Gaps are not tight phrases"
- */
- __pyx_t_12 = (__pyx_v_num_chunks - 1);
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_12; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1579
- * # outside edge constraints are checked later
- * for i from 0 <= i < num_chunks-1:
- * if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1: # <<<<<<<<<<<<<<
- * reason_for_failure = "Gaps are not tight phrases"
- * met_constraints = 0
- */
- __pyx_t_9 = (((__pyx_v_f_links_low[(((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + (__pyx_v_chunklen[__pyx_v_i])) - __pyx_v_f_sent_start)]) == -1) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1580
- * for i from 0 <= i < num_chunks-1:
- * if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1:
- * reason_for_failure = "Gaps are not tight phrases" # <<<<<<<<<<<<<<
- * met_constraints = 0
- * break
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_134));
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_134);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1581
- * if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1:
- * reason_for_failure = "Gaps are not tight phrases"
- * met_constraints = 0 # <<<<<<<<<<<<<<
- * break
- * if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:
- */
- __pyx_v_met_constraints = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1582
- * reason_for_failure = "Gaps are not tight phrases"
- * met_constraints = 0
- * break # <<<<<<<<<<<<<<
- * if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:
- * reason_for_failure = "Gaps are not tight phrases"
- */
- goto __pyx_L30_break;
- goto __pyx_L31;
- }
- __pyx_L31:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1583
- * met_constraints = 0
- * break
- * if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1: # <<<<<<<<<<<<<<
- * reason_for_failure = "Gaps are not tight phrases"
- * met_constraints = 0
- */
- __pyx_t_9 = (((__pyx_v_f_links_low[(((__pyx_v_matching->arr[((__pyx_v_matching->start + __pyx_v_i) + 1)]) - 1) - __pyx_v_f_sent_start)]) == -1) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1584
- * break
- * if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:
- * reason_for_failure = "Gaps are not tight phrases" # <<<<<<<<<<<<<<
- * met_constraints = 0
- * break
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_134));
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_134);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1585
- * if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:
- * reason_for_failure = "Gaps are not tight phrases"
- * met_constraints = 0 # <<<<<<<<<<<<<<
- * break
- *
- */
- __pyx_v_met_constraints = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1586
- * reason_for_failure = "Gaps are not tight phrases"
- * met_constraints = 0
- * break # <<<<<<<<<<<<<<
- *
- * f_low = matching.arr[matching.start] - f_sent_start
- */
- goto __pyx_L30_break;
- goto __pyx_L32;
- }
- __pyx_L32:;
- }
- __pyx_L30_break:;
- goto __pyx_L28;
- }
- __pyx_L28:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1588
- * break
- *
- * f_low = matching.arr[matching.start] - f_sent_start # <<<<<<<<<<<<<<
- * f_high = matching.arr[matching.start + matching.size - 1] + chunklen[num_chunks-1] - f_sent_start
- * if met_constraints:
- */
- __pyx_v_f_low = ((__pyx_v_matching->arr[__pyx_v_matching->start]) - __pyx_v_f_sent_start);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1589
- *
- * f_low = matching.arr[matching.start] - f_sent_start
- * f_high = matching.arr[matching.start + matching.size - 1] + chunklen[num_chunks-1] - f_sent_start # <<<<<<<<<<<<<<
- * if met_constraints:
- *
- */
- __pyx_v_f_high = (((__pyx_v_matching->arr[((__pyx_v_matching->start + __pyx_v_matching->size) - 1)]) + (__pyx_v_chunklen[(__pyx_v_num_chunks - 1)])) - __pyx_v_f_sent_start);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1590
- * f_low = matching.arr[matching.start] - f_sent_start
- * f_high = matching.arr[matching.start + matching.size - 1] + chunklen[num_chunks-1] - f_sent_start
- * if met_constraints: # <<<<<<<<<<<<<<
- *
- * if self.find_fixpoint(f_low, f_high, f_links_low, f_links_high, e_links_low, e_links_high,
- */
- __pyx_t_9 = (__pyx_v_met_constraints != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1592
- * if met_constraints:
- *
- * if self.find_fixpoint(f_low, f_high, f_links_low, f_links_high, e_links_low, e_links_high, # <<<<<<<<<<<<<<
- * -1, -1, &e_low, &e_high, &f_back_low, &f_back_high, f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size,
- */
- __pyx_t_10 = PyInt_FromLong(__pyx_v_f_high); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1596
- * self.train_max_initial_size, self.train_max_initial_size,
- * self.train_min_gap_size, 0,
- * self.max_nonterminals - num_chunks + 1, 1, 1, 0, 0): # <<<<<<<<<<<<<<
- * gap_error = 0
- * num_gaps = 0
- */
- __pyx_t_9 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_low, __pyx_t_10, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, (&__pyx_v_e_low), (&__pyx_v_e_high), (&__pyx_v_f_back_low), (&__pyx_v_f_back_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_min_gap_size, 0, ((__pyx_v_self->max_nonterminals - __pyx_v_num_chunks) + 1), 1, 1, 0, 0) != 0);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1597
- * self.train_min_gap_size, 0,
- * self.max_nonterminals - num_chunks + 1, 1, 1, 0, 0):
- * gap_error = 0 # <<<<<<<<<<<<<<
- * num_gaps = 0
- *
- */
- __pyx_v_gap_error = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1598
- * self.max_nonterminals - num_chunks + 1, 1, 1, 0, 0):
- * gap_error = 0
- * num_gaps = 0 # <<<<<<<<<<<<<<
- *
- * if f_back_low < f_low:
- */
- __pyx_v_num_gaps = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1600
- * num_gaps = 0
- *
- * if f_back_low < f_low: # <<<<<<<<<<<<<<
- * f_gap_low[0] = f_back_low
- * f_gap_high[0] = f_low
- */
- __pyx_t_9 = ((__pyx_v_f_back_low < __pyx_v_f_low) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1601
- *
- * if f_back_low < f_low:
- * f_gap_low[0] = f_back_low # <<<<<<<<<<<<<<
- * f_gap_high[0] = f_low
- * num_gaps = 1
- */
- (__pyx_v_f_gap_low[0]) = __pyx_v_f_back_low;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1602
- * if f_back_low < f_low:
- * f_gap_low[0] = f_back_low
- * f_gap_high[0] = f_low # <<<<<<<<<<<<<<
- * num_gaps = 1
- * gap_start = 0
- */
- (__pyx_v_f_gap_high[0]) = __pyx_v_f_low;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1603
- * f_gap_low[0] = f_back_low
- * f_gap_high[0] = f_low
- * num_gaps = 1 # <<<<<<<<<<<<<<
- * gap_start = 0
- * phrase_len = phrase_len+1
- */
- __pyx_v_num_gaps = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1604
- * f_gap_high[0] = f_low
- * num_gaps = 1
- * gap_start = 0 # <<<<<<<<<<<<<<
- * phrase_len = phrase_len+1
- * if phrase_len > self.max_length:
- */
- __pyx_v_gap_start = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1605
- * num_gaps = 1
- * gap_start = 0
- * phrase_len = phrase_len+1 # <<<<<<<<<<<<<<
- * if phrase_len > self.max_length:
- * gap_error = 1
- */
- __pyx_v_phrase_len = (__pyx_v_phrase_len + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1606
- * gap_start = 0
- * phrase_len = phrase_len+1
- * if phrase_len > self.max_length: # <<<<<<<<<<<<<<
- * gap_error = 1
- * if self.tight_phrases:
- */
- __pyx_t_9 = ((__pyx_v_phrase_len > __pyx_v_self->max_length) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1607
- * phrase_len = phrase_len+1
- * if phrase_len > self.max_length:
- * gap_error = 1 # <<<<<<<<<<<<<<
- * if self.tight_phrases:
- * if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:
- */
- __pyx_v_gap_error = 1;
- goto __pyx_L36;
- }
- __pyx_L36:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1608
- * if phrase_len > self.max_length:
- * gap_error = 1
- * if self.tight_phrases: # <<<<<<<<<<<<<<
- * if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:
- * gap_error = 1
- */
- __pyx_t_9 = (__pyx_v_self->tight_phrases != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1609
- * gap_error = 1
- * if self.tight_phrases:
- * if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1: # <<<<<<<<<<<<<<
- * gap_error = 1
- * reason_for_failure = "Inside edges of preceding subphrase are not tight"
- */
- __pyx_t_9 = (((__pyx_v_f_links_low[__pyx_v_f_back_low]) == -1) != 0);
- if (!__pyx_t_9) {
- __pyx_t_7 = (((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) == -1) != 0);
- __pyx_t_8 = __pyx_t_7;
- } else {
- __pyx_t_8 = __pyx_t_9;
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1610
- * if self.tight_phrases:
- * if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:
- * gap_error = 1 # <<<<<<<<<<<<<<
- * reason_for_failure = "Inside edges of preceding subphrase are not tight"
- * else:
- */
- __pyx_v_gap_error = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1611
- * if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:
- * gap_error = 1
- * reason_for_failure = "Inside edges of preceding subphrase are not tight" # <<<<<<<<<<<<<<
- * else:
- * gap_start = 1
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_135));
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_135);
- goto __pyx_L38;
- }
- __pyx_L38:;
- goto __pyx_L37;
- }
- __pyx_L37:;
- goto __pyx_L35;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1613
- * reason_for_failure = "Inside edges of preceding subphrase are not tight"
- * else:
- * gap_start = 1 # <<<<<<<<<<<<<<
- * if self.tight_phrases and f_links_low[f_low] == -1:
- * # this is not a hard error. we can't extract this phrase
- */
- __pyx_v_gap_start = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1614
- * else:
- * gap_start = 1
- * if self.tight_phrases and f_links_low[f_low] == -1: # <<<<<<<<<<<<<<
- * # this is not a hard error. we can't extract this phrase
- * # but we still might be able to extract a superphrase
- */
- if ((__pyx_v_self->tight_phrases != 0)) {
- __pyx_t_8 = (((__pyx_v_f_links_low[__pyx_v_f_low]) == -1) != 0);
- __pyx_t_9 = __pyx_t_8;
- } else {
- __pyx_t_9 = (__pyx_v_self->tight_phrases != 0);
- }
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1617
- * # this is not a hard error. we can't extract this phrase
- * # but we still might be able to extract a superphrase
- * met_constraints = 0 # <<<<<<<<<<<<<<
- *
- * for i from 0 <= i < matching.size - 1:
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L39;
- }
- __pyx_L39:;
- }
- __pyx_L35:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1619
- * met_constraints = 0
- *
- * for i from 0 <= i < matching.size - 1: # <<<<<<<<<<<<<<
- * f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start
- * f_gap_high[1+i] = matching.arr[matching.start+i+1] - f_sent_start
- */
- __pyx_t_12 = (__pyx_v_matching->size - 1);
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_12; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1620
- *
- * for i from 0 <= i < matching.size - 1:
- * f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start # <<<<<<<<<<<<<<
- * f_gap_high[1+i] = matching.arr[matching.start+i+1] - f_sent_start
- * num_gaps = num_gaps + 1
- */
- (__pyx_v_f_gap_low[(1 + __pyx_v_i)]) = (((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + (__pyx_v_chunklen[__pyx_v_i])) - __pyx_v_f_sent_start);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1621
- * for i from 0 <= i < matching.size - 1:
- * f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start
- * f_gap_high[1+i] = matching.arr[matching.start+i+1] - f_sent_start # <<<<<<<<<<<<<<
- * num_gaps = num_gaps + 1
- *
- */
- (__pyx_v_f_gap_high[(1 + __pyx_v_i)]) = ((__pyx_v_matching->arr[((__pyx_v_matching->start + __pyx_v_i) + 1)]) - __pyx_v_f_sent_start);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1622
- * f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start
- * f_gap_high[1+i] = matching.arr[matching.start+i+1] - f_sent_start
- * num_gaps = num_gaps + 1 # <<<<<<<<<<<<<<
- *
- * if f_high < f_back_high:
- */
- __pyx_v_num_gaps = (__pyx_v_num_gaps + 1);
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1624
- * num_gaps = num_gaps + 1
- *
- * if f_high < f_back_high: # <<<<<<<<<<<<<<
- * f_gap_low[gap_start+num_gaps] = f_high
- * f_gap_high[gap_start+num_gaps] = f_back_high
- */
- __pyx_t_9 = ((__pyx_v_f_high < __pyx_v_f_back_high) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1625
- *
- * if f_high < f_back_high:
- * f_gap_low[gap_start+num_gaps] = f_high # <<<<<<<<<<<<<<
- * f_gap_high[gap_start+num_gaps] = f_back_high
- * num_gaps = num_gaps + 1
- */
- (__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_num_gaps)]) = __pyx_v_f_high;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1626
- * if f_high < f_back_high:
- * f_gap_low[gap_start+num_gaps] = f_high
- * f_gap_high[gap_start+num_gaps] = f_back_high # <<<<<<<<<<<<<<
- * num_gaps = num_gaps + 1
- * phrase_len = phrase_len+1
- */
- (__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_num_gaps)]) = __pyx_v_f_back_high;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1627
- * f_gap_low[gap_start+num_gaps] = f_high
- * f_gap_high[gap_start+num_gaps] = f_back_high
- * num_gaps = num_gaps + 1 # <<<<<<<<<<<<<<
- * phrase_len = phrase_len+1
- * if phrase_len > self.max_length:
- */
- __pyx_v_num_gaps = (__pyx_v_num_gaps + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1628
- * f_gap_high[gap_start+num_gaps] = f_back_high
- * num_gaps = num_gaps + 1
- * phrase_len = phrase_len+1 # <<<<<<<<<<<<<<
- * if phrase_len > self.max_length:
- * gap_error = 1
- */
- __pyx_v_phrase_len = (__pyx_v_phrase_len + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1629
- * num_gaps = num_gaps + 1
- * phrase_len = phrase_len+1
- * if phrase_len > self.max_length: # <<<<<<<<<<<<<<
- * gap_error = 1
- * if self.tight_phrases:
- */
- __pyx_t_9 = ((__pyx_v_phrase_len > __pyx_v_self->max_length) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1630
- * phrase_len = phrase_len+1
- * if phrase_len > self.max_length:
- * gap_error = 1 # <<<<<<<<<<<<<<
- * if self.tight_phrases:
- * if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:
- */
- __pyx_v_gap_error = 1;
- goto __pyx_L43;
- }
- __pyx_L43:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1631
- * if phrase_len > self.max_length:
- * gap_error = 1
- * if self.tight_phrases: # <<<<<<<<<<<<<<
- * if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:
- * gap_error = 1
- */
- __pyx_t_9 = (__pyx_v_self->tight_phrases != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1632
- * gap_error = 1
- * if self.tight_phrases:
- * if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1: # <<<<<<<<<<<<<<
- * gap_error = 1
- * reason_for_failure = "Inside edges of following subphrase are not tight"
- */
- __pyx_t_9 = (((__pyx_v_f_links_low[(__pyx_v_f_back_high - 1)]) == -1) != 0);
- if (!__pyx_t_9) {
- __pyx_t_8 = (((__pyx_v_f_links_low[__pyx_v_f_high]) == -1) != 0);
- __pyx_t_7 = __pyx_t_8;
- } else {
- __pyx_t_7 = __pyx_t_9;
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1633
- * if self.tight_phrases:
- * if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:
- * gap_error = 1 # <<<<<<<<<<<<<<
- * reason_for_failure = "Inside edges of following subphrase are not tight"
- * else:
- */
- __pyx_v_gap_error = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1634
- * if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:
- * gap_error = 1
- * reason_for_failure = "Inside edges of following subphrase are not tight" # <<<<<<<<<<<<<<
- * else:
- * if self.tight_phrases and f_links_low[f_high-1] == -1:
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_136));
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_136);
- goto __pyx_L45;
- }
- __pyx_L45:;
- goto __pyx_L44;
- }
- __pyx_L44:;
- goto __pyx_L42;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1636
- * reason_for_failure = "Inside edges of following subphrase are not tight"
- * else:
- * if self.tight_phrases and f_links_low[f_high-1] == -1: # <<<<<<<<<<<<<<
- * met_constraints = 0
- *
- */
- if ((__pyx_v_self->tight_phrases != 0)) {
- __pyx_t_7 = (((__pyx_v_f_links_low[(__pyx_v_f_high - 1)]) == -1) != 0);
- __pyx_t_9 = __pyx_t_7;
- } else {
- __pyx_t_9 = (__pyx_v_self->tight_phrases != 0);
- }
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1637
- * else:
- * if self.tight_phrases and f_links_low[f_high-1] == -1:
- * met_constraints = 0 # <<<<<<<<<<<<<<
- *
- * if gap_error == 0:
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L46;
- }
- __pyx_L46:;
- }
- __pyx_L42:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1639
- * met_constraints = 0
- *
- * if gap_error == 0: # <<<<<<<<<<<<<<
- * e_word_count = e_high - e_low
- * for i from 0 <= i < num_gaps: # check integrity of subphrases
- */
- __pyx_t_9 = ((__pyx_v_gap_error == 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1640
- *
- * if gap_error == 0:
- * e_word_count = e_high - e_low # <<<<<<<<<<<<<<
- * for i from 0 <= i < num_gaps: # check integrity of subphrases
- * if self.find_fixpoint(f_gap_low[gap_start+i], f_gap_high[gap_start+i],
- */
- __pyx_v_e_word_count = (__pyx_v_e_high - __pyx_v_e_low);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1641
- * if gap_error == 0:
- * e_word_count = e_high - e_low
- * for i from 0 <= i < num_gaps: # check integrity of subphrases # <<<<<<<<<<<<<<
- * if self.find_fixpoint(f_gap_low[gap_start+i], f_gap_high[gap_start+i],
- * f_links_low, f_links_high, e_links_low, e_links_high,
- */
- __pyx_t_2 = __pyx_v_num_gaps;
- for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1642
- * e_word_count = e_high - e_low
- * for i from 0 <= i < num_gaps: # check integrity of subphrases
- * if self.find_fixpoint(f_gap_low[gap_start+i], f_gap_high[gap_start+i], # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * -1, -1, e_gap_low+gap_start+i, e_gap_high+gap_start+i,
- */
- __pyx_t_10 = PyInt_FromLong((__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1647
- * f_gap_low+gap_start+i, f_gap_high+gap_start+i,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 0, 0, 0, 0, 0, 0, 0) == 0:
- * gap_error = 1
- */
- __pyx_t_9 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, (__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_i)]), __pyx_t_10, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_e_gap_high + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_f_gap_low + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_f_gap_high + __pyx_v_gap_start) + __pyx_v_i), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) == 0) != 0);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1649
- * self.train_max_initial_size, self.train_max_initial_size,
- * 0, 0, 0, 0, 0, 0, 0) == 0:
- * gap_error = 1 # <<<<<<<<<<<<<<
- * reason_for_failure = "Subphrase [%d, %d] failed integrity check" % (f_gap_low[gap_start+i], f_gap_high[gap_start+i])
- * break
- */
- __pyx_v_gap_error = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1650
- * 0, 0, 0, 0, 0, 0, 0) == 0:
- * gap_error = 1
- * reason_for_failure = "Subphrase [%d, %d] failed integrity check" % (f_gap_low[gap_start+i], f_gap_high[gap_start+i]) # <<<<<<<<<<<<<<
- * break
- *
- */
- __pyx_t_10 = PyInt_FromLong((__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_1 = PyInt_FromLong((__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_10 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_137), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1651
- * gap_error = 1
- * reason_for_failure = "Subphrase [%d, %d] failed integrity check" % (f_gap_low[gap_start+i], f_gap_high[gap_start+i])
- * break # <<<<<<<<<<<<<<
- *
- * if gap_error == 0:
- */
- goto __pyx_L49_break;
- goto __pyx_L50;
- }
- __pyx_L50:;
- }
- __pyx_L49_break:;
- goto __pyx_L47;
- }
- __pyx_L47:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1653
- * break
- *
- * if gap_error == 0: # <<<<<<<<<<<<<<
- * i = 1
- * self.findexes.reset()
- */
- __pyx_t_9 = ((__pyx_v_gap_error == 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1654
- *
- * if gap_error == 0:
- * i = 1 # <<<<<<<<<<<<<<
- * self.findexes.reset()
- * if f_back_low < f_low:
- */
- __pyx_v_i = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1655
- * if gap_error == 0:
- * i = 1
- * self.findexes.reset() # <<<<<<<<<<<<<<
- * if f_back_low < f_low:
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1656
- * i = 1
- * self.findexes.reset()
- * if f_back_low < f_low: # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- */
- __pyx_t_9 = ((__pyx_v_f_back_low < __pyx_v_f_low) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1657
- * self.findexes.reset()
- * if f_back_low < f_low:
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i+1
- * self.findexes.append(sym_setindex(self.category, i))
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1658
- * if f_back_low < f_low:
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1 # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- * self.findexes.extend(self.findexes1)
- */
- __pyx_v_i = (__pyx_v_i + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1659
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- */
- __pyx_t_3 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L52;
- }
- __pyx_L52:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1660
- * i = i+1
- * self.findexes.append(sym_setindex(self.category, i))
- * self.findexes.extend(self.findexes1) # <<<<<<<<<<<<<<
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->findexes1));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1));
- __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1661
- * self.findexes.append(sym_setindex(self.category, i))
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n: # <<<<<<<<<<<<<<
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_2 = __pyx_v_phrase->n;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1662
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]): # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1
- */
- __pyx_t_9 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1663
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i + 1
- * else:
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1664
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1 # <<<<<<<<<<<<<<
- * else:
- * fphr_arr._append(phrase.syms[j])
- */
- __pyx_v_i = (__pyx_v_i + 1);
- goto __pyx_L55;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1666
- * i = i + 1
- * else:
- * fphr_arr._append(phrase.syms[j]) # <<<<<<<<<<<<<<
- * if f_back_high > f_high:
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, (__pyx_v_phrase->syms[__pyx_v_j]));
- }
- __pyx_L55:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1667
- * else:
- * fphr_arr._append(phrase.syms[j])
- * if f_back_high > f_high: # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i))
- */
- __pyx_t_9 = ((__pyx_v_f_back_high > __pyx_v_f_high) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1668
- * fphr_arr._append(phrase.syms[j])
- * if f_back_high > f_high:
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- *
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1669
- * if f_back_high > f_high:
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- *
- * fphr = Phrase(fphr_arr)
- */
- __pyx_t_10 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_3 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_10); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L56;
- }
- __pyx_L56:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1671
- * self.findexes.append(sym_setindex(self.category, i))
- *
- * fphr = Phrase(fphr_arr) # <<<<<<<<<<<<<<
- * if met_constraints:
- * phrase_list = self.extract_phrases(e_low, e_high, e_gap_low + gap_start, e_gap_high + gap_start, e_links_low, num_gaps,
- */
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_fphr_arr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr));
- __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_10);
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1672
- *
- * fphr = Phrase(fphr_arr)
- * if met_constraints: # <<<<<<<<<<<<<<
- * phrase_list = self.extract_phrases(e_low, e_high, e_gap_low + gap_start, e_gap_high + gap_start, e_links_low, num_gaps,
- * f_back_low, f_back_high, f_gap_low + gap_start, f_gap_high + gap_start, f_links_low,
- */
- __pyx_t_9 = (__pyx_v_met_constraints != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1675
- * phrase_list = self.extract_phrases(e_low, e_high, e_gap_low + gap_start, e_gap_high + gap_start, e_links_low, num_gaps,
- * f_back_low, f_back_high, f_gap_low + gap_start, f_gap_high + gap_start, f_links_low,
- * matching.sent_id, e_sent_len, e_sent_start) # <<<<<<<<<<<<<<
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list)
- */
- __pyx_t_10 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_low, __pyx_v_e_high, (__pyx_v_e_gap_low + __pyx_v_gap_start), (__pyx_v_e_gap_high + __pyx_v_gap_start), __pyx_v_e_links_low, __pyx_v_num_gaps, __pyx_v_f_back_low, __pyx_v_f_back_high, (__pyx_v_f_gap_low + __pyx_v_gap_start), (__pyx_v_f_gap_high + __pyx_v_gap_start), __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_v_phrase_list = __pyx_t_10;
- __pyx_t_10 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1676
- * f_back_low, f_back_high, f_gap_low + gap_start, f_gap_high + gap_start, f_links_low,
- * matching.sent_id, e_sent_len, e_sent_start)
- * if len(phrase_list) > 0: # <<<<<<<<<<<<<<
- * pair_count = 1.0 / len(phrase_list)
- * else:
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = ((__pyx_t_13 > 0) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1677
- * matching.sent_id, e_sent_len, e_sent_start)
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list) # <<<<<<<<<<<<<<
- * else:
- * pair_count = 0
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(__pyx_t_13 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_pair_count = (1.0 / __pyx_t_13);
- goto __pyx_L58;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1679
- * pair_count = 1.0 / len(phrase_list)
- * else:
- * pair_count = 0 # <<<<<<<<<<<<<<
- * reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high)
- * for phrase2, eindexes in phrase_list:
- */
- __pyx_v_pair_count = 0.0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1680
- * else:
- * pair_count = 0
- * reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high) # <<<<<<<<<<<<<<
- * for phrase2, eindexes in phrase_list:
- * als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- */
- __pyx_t_10 = PyInt_FromLong(__pyx_v_f_back_low); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_3 = PyInt_FromLong(__pyx_v_f_back_high); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_e_low); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_14 = PyInt_FromLong(__pyx_v_e_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_14);
- __pyx_t_10 = 0;
- __pyx_t_3 = 0;
- __pyx_t_1 = 0;
- __pyx_t_14 = 0;
- __pyx_t_14 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_138), ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_14));
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_t_14);
- __pyx_t_14 = 0;
- }
- __pyx_L58:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1681
- * pair_count = 0
- * reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high)
- * for phrase2, eindexes in phrase_list: # <<<<<<<<<<<<<<
- * als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als1)))
- */
- if (PyList_CheckExact(__pyx_v_phrase_list) || PyTuple_CheckExact(__pyx_v_phrase_list)) {
- __pyx_t_14 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_14); __pyx_t_13 = 0;
- __pyx_t_16 = NULL;
- } else {
- __pyx_t_13 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_16 = Py_TYPE(__pyx_t_14)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_14)) {
- if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_14)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_15 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_14)) {
- if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_14)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_15 = __pyx_t_16(__pyx_t_14);
- if (unlikely(!__pyx_t_15)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_15);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_15))) || (PyList_CheckExact(__pyx_t_15))) {
- PyObject* sequence = __pyx_t_15;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
- #else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- #endif
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_15); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_1 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L61_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_1);
- index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L61_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_17 = NULL;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L62_unpacking_done;
- __pyx_L61_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_17 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L62_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_phrase2);
- __pyx_v_phrase2 = __pyx_t_1;
- __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_v_eindexes);
- __pyx_v_eindexes = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1682
- * reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high)
- * for phrase2, eindexes in phrase_list:
- * als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes) # <<<<<<<<<<<<<<
- * extracts.append((fphr, phrase2, pair_count, tuple(als1)))
- * if (num_gaps < self.max_nonterminals and
- */
- __pyx_t_15 = ((PyObject *)__pyx_v_self->findexes);
- __Pyx_INCREF(__pyx_t_15);
- if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_15), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XDECREF(((PyObject *)__pyx_v_als1));
- __pyx_v_als1 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1683
- * for phrase2, eindexes in phrase_list:
- * als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als1))) # <<<<<<<<<<<<<<
- * if (num_gaps < self.max_nonterminals and
- * phrase_len < self.max_length and
- */
- __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(((PyObject *)__pyx_v_als1));
- PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_als1));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_als1));
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr));
- PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_fphr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr));
- __Pyx_INCREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_phrase2);
- __Pyx_GIVEREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_3 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- goto __pyx_L57;
- }
- __pyx_L57:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1684
- * als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als1)))
- * if (num_gaps < self.max_nonterminals and # <<<<<<<<<<<<<<
- * phrase_len < self.max_length and
- * f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):
- */
- __pyx_t_9 = ((__pyx_v_num_gaps < __pyx_v_self->max_nonterminals) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1685
- * extracts.append((fphr, phrase2, pair_count, tuple(als1)))
- * if (num_gaps < self.max_nonterminals and
- * phrase_len < self.max_length and # <<<<<<<<<<<<<<
- * f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):
- * if (f_back_low == f_low and
- */
- __pyx_t_7 = ((__pyx_v_phrase_len < __pyx_v_self->max_length) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1686
- * if (num_gaps < self.max_nonterminals and
- * phrase_len < self.max_length and
- * f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size): # <<<<<<<<<<<<<<
- * if (f_back_low == f_low and
- * f_low >= self.train_min_gap_size and
- */
- __pyx_t_8 = ((((__pyx_v_f_back_high - __pyx_v_f_back_low) + __pyx_v_self->train_min_gap_size) <= __pyx_v_self->train_max_initial_size) != 0);
- __pyx_t_18 = __pyx_t_8;
- } else {
- __pyx_t_18 = __pyx_t_7;
- }
- __pyx_t_7 = __pyx_t_18;
- } else {
- __pyx_t_7 = __pyx_t_9;
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1687
- * phrase_len < self.max_length and
- * f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):
- * if (f_back_low == f_low and # <<<<<<<<<<<<<<
- * f_low >= self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):
- */
- __pyx_t_7 = ((__pyx_v_f_back_low == __pyx_v_f_low) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1688
- * f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):
- * if (f_back_low == f_low and
- * f_low >= self.train_min_gap_size and # <<<<<<<<<<<<<<
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):
- * f_x_low = f_low-self.train_min_gap_size
- */
- __pyx_t_9 = ((__pyx_v_f_low >= __pyx_v_self->train_min_gap_size) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1689
- * if (f_back_low == f_low and
- * f_low >= self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))): # <<<<<<<<<<<<<<
- * f_x_low = f_low-self.train_min_gap_size
- * met_constraints = 1
- */
- __pyx_t_18 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);
- if (!__pyx_t_18) {
- __pyx_t_8 = (((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) != -1) != 0);
- if (__pyx_t_8) {
- __pyx_t_19 = (((__pyx_v_f_links_low[(__pyx_v_f_back_high - 1)]) != -1) != 0);
- __pyx_t_20 = __pyx_t_19;
- } else {
- __pyx_t_20 = __pyx_t_8;
- }
- __pyx_t_8 = __pyx_t_20;
- } else {
- __pyx_t_8 = __pyx_t_18;
- }
- __pyx_t_18 = __pyx_t_8;
- } else {
- __pyx_t_18 = __pyx_t_9;
- }
- __pyx_t_9 = __pyx_t_18;
- } else {
- __pyx_t_9 = __pyx_t_7;
- }
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1690
- * f_low >= self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):
- * f_x_low = f_low-self.train_min_gap_size # <<<<<<<<<<<<<<
- * met_constraints = 1
- * if self.tight_phrases:
- */
- __pyx_v_f_x_low = (__pyx_v_f_low - __pyx_v_self->train_min_gap_size);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1691
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):
- * f_x_low = f_low-self.train_min_gap_size
- * met_constraints = 1 # <<<<<<<<<<<<<<
- * if self.tight_phrases:
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- */
- __pyx_v_met_constraints = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1692
- * f_x_low = f_low-self.train_min_gap_size
- * met_constraints = 1
- * if self.tight_phrases: # <<<<<<<<<<<<<<
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- * f_x_low = f_x_low - 1
- */
- __pyx_t_9 = (__pyx_v_self->tight_phrases != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1693
- * met_constraints = 1
- * if self.tight_phrases:
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1: # <<<<<<<<<<<<<<
- * f_x_low = f_x_low - 1
- * if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size:
- */
- while (1) {
- __pyx_t_9 = ((__pyx_v_f_x_low >= 0) != 0);
- if (__pyx_t_9) {
- __pyx_t_7 = (((__pyx_v_f_links_low[__pyx_v_f_x_low]) == -1) != 0);
- __pyx_t_18 = __pyx_t_7;
- } else {
- __pyx_t_18 = __pyx_t_9;
- }
- if (!__pyx_t_18) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1694
- * if self.tight_phrases:
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- * f_x_low = f_x_low - 1 # <<<<<<<<<<<<<<
- * if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size:
- * met_constraints = 0
- */
- __pyx_v_f_x_low = (__pyx_v_f_x_low - 1);
- }
- goto __pyx_L65;
- }
- __pyx_L65:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1695
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- * f_x_low = f_x_low - 1
- * if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size: # <<<<<<<<<<<<<<
- * met_constraints = 0
- *
- */
- __pyx_t_18 = ((__pyx_v_f_x_low < 0) != 0);
- if (!__pyx_t_18) {
- __pyx_t_9 = (((__pyx_v_f_back_high - __pyx_v_f_x_low) > __pyx_v_self->train_max_initial_size) != 0);
- __pyx_t_7 = __pyx_t_9;
- } else {
- __pyx_t_7 = __pyx_t_18;
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1696
- * f_x_low = f_x_low - 1
- * if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size:
- * met_constraints = 0 # <<<<<<<<<<<<<<
- *
- * if (met_constraints and
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L68;
- }
- __pyx_L68:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1698
- * met_constraints = 0
- *
- * if (met_constraints and # <<<<<<<<<<<<<<
- * (self.find_fixpoint(f_x_low, f_back_high,
- * f_links_low, f_links_high, e_links_low, e_links_high,
- */
- if ((__pyx_v_met_constraints != 0)) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1699
- *
- * if (met_constraints and
- * (self.find_fixpoint(f_x_low, f_back_high, # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- */
- __pyx_t_14 = PyInt_FromLong(__pyx_v_f_back_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1703
- * e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 1, 1, 1, 1, 0, 1, 0) == 1) and
- * ((not self.tight_phrases) or f_links_low[f_x_low] != -1) and
- */
- __pyx_t_7 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_14, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 1, 1, 0, 1, 0) == 1);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1705
- * self.train_max_initial_size, self.train_max_initial_size,
- * 1, 1, 1, 1, 0, 1, 0) == 1) and
- * ((not self.tight_phrases) or f_links_low[f_x_low] != -1) and # <<<<<<<<<<<<<<
- * self.find_fixpoint(f_x_low, f_low, # check integrity of new subphrase
- * f_links_low, f_links_high, e_links_low, e_links_high,
- */
- __pyx_t_18 = (!(__pyx_v_self->tight_phrases != 0));
- if (!__pyx_t_18) {
- __pyx_t_9 = ((__pyx_v_f_links_low[__pyx_v_f_x_low]) != -1);
- __pyx_t_8 = __pyx_t_9;
- } else {
- __pyx_t_8 = __pyx_t_18;
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1706
- * 1, 1, 1, 1, 0, 1, 0) == 1) and
- * ((not self.tight_phrases) or f_links_low[f_x_low] != -1) and
- * self.find_fixpoint(f_x_low, f_low, # check integrity of new subphrase # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,
- */
- __pyx_t_14 = PyInt_FromLong(__pyx_v_f_low); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1710
- * -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear()
- */
- __pyx_t_18 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_14, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else {
- __pyx_t_18 = __pyx_t_8;
- }
- __pyx_t_8 = __pyx_t_18;
- } else {
- __pyx_t_8 = __pyx_t_7;
- }
- __pyx_t_7 = __pyx_t_8;
- } else {
- __pyx_t_7 = (__pyx_v_met_constraints != 0);
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1712
- * self.train_max_initial_size, self.train_max_initial_size,
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear() # <<<<<<<<<<<<<<
- * i = 1
- * self.findexes.reset()
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_clear(__pyx_v_fphr_arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1713
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear()
- * i = 1 # <<<<<<<<<<<<<<
- * self.findexes.reset()
- * self.findexes.append(sym_setindex(self.category, i))
- */
- __pyx_v_i = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1714
- * fphr_arr._clear()
- * i = 1
- * self.findexes.reset() # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_1 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1715
- * i = 1
- * self.findexes.reset()
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_14 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1716
- * self.findexes.reset()
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i+1
- * self.findexes.extend(self.findexes1)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1717
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1 # <<<<<<<<<<<<<<
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- */
- __pyx_v_i = (__pyx_v_i + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1718
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- * self.findexes.extend(self.findexes1) # <<<<<<<<<<<<<<
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- */
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->findexes1));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1));
- __pyx_t_15 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1719
- * i = i+1
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n: # <<<<<<<<<<<<<<
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_2 = __pyx_v_phrase->n;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1720
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]): # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1
- */
- __pyx_t_7 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1721
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i + 1
- * else:
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1722
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1 # <<<<<<<<<<<<<<
- * else:
- * fphr_arr._append(phrase.syms[j])
- */
- __pyx_v_i = (__pyx_v_i + 1);
- goto __pyx_L72;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1724
- * i = i + 1
- * else:
- * fphr_arr._append(phrase.syms[j]) # <<<<<<<<<<<<<<
- * if f_back_high > f_high:
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, (__pyx_v_phrase->syms[__pyx_v_j]));
- }
- __pyx_L72:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1725
- * else:
- * fphr_arr._append(phrase.syms[j])
- * if f_back_high > f_high: # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i))
- */
- __pyx_t_7 = ((__pyx_v_f_back_high > __pyx_v_f_high) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1726
- * fphr_arr._append(phrase.syms[j])
- * if f_back_high > f_high:
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr = Phrase(fphr_arr)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1727
- * if f_back_high > f_high:
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * fphr = Phrase(fphr_arr)
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+1,
- */
- __pyx_t_15 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L73;
- }
- __pyx_L73:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1728
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr = Phrase(fphr_arr) # <<<<<<<<<<<<<<
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+1,
- * f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low, matching.sent_id,
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_fphr_arr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr));
- __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_fphr));
- __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_15);
- __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1731
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+1,
- * f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low, matching.sent_id,
- * e_sent_len, e_sent_start) # <<<<<<<<<<<<<<
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list)
- */
- __pyx_t_15 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_e_links_low, (__pyx_v_num_gaps + 1), __pyx_v_f_x_low, __pyx_v_f_x_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_XDECREF(__pyx_v_phrase_list);
- __pyx_v_phrase_list = __pyx_t_15;
- __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1732
- * f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low, matching.sent_id,
- * e_sent_len, e_sent_start)
- * if len(phrase_list) > 0: # <<<<<<<<<<<<<<
- * pair_count = 1.0 / len(phrase_list)
- * else:
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = ((__pyx_t_13 > 0) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1733
- * e_sent_len, e_sent_start)
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list) # <<<<<<<<<<<<<<
- * else:
- * pair_count = 0
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(__pyx_t_13 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_pair_count = (1.0 / __pyx_t_13);
- goto __pyx_L74;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1735
- * pair_count = 1.0 / len(phrase_list)
- * else:
- * pair_count = 0 # <<<<<<<<<<<<<<
- * for phrase2, eindexes in phrase_list:
- * als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- */
- __pyx_v_pair_count = 0.0;
- }
- __pyx_L74:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1736
- * else:
- * pair_count = 0
- * for phrase2, eindexes in phrase_list: # <<<<<<<<<<<<<<
- * als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als2)))
- */
- if (PyList_CheckExact(__pyx_v_phrase_list) || PyTuple_CheckExact(__pyx_v_phrase_list)) {
- __pyx_t_15 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_15); __pyx_t_13 = 0;
- __pyx_t_16 = NULL;
- } else {
- __pyx_t_13 = -1; __pyx_t_15 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_16 = Py_TYPE(__pyx_t_15)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_15)) {
- if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_15)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_15, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_15, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_15)) {
- if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_15)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_15, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_15, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_16(__pyx_t_15);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
- PyObject* sequence = __pyx_t_1;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_14 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_14);
- __Pyx_INCREF(__pyx_t_3);
- #else
- __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- #endif
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_14 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_14)) goto __pyx_L77_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_14);
- index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L77_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_17 = NULL;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L78_unpacking_done;
- __pyx_L77_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_17 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L78_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_phrase2);
- __pyx_v_phrase2 = __pyx_t_14;
- __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_v_eindexes);
- __pyx_v_eindexes = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1737
- * pair_count = 0
- * for phrase2, eindexes in phrase_list:
- * als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes) # <<<<<<<<<<<<<<
- * extracts.append((fphr, phrase2, pair_count, tuple(als2)))
- *
- */
- __pyx_t_1 = ((PyObject *)__pyx_v_self->findexes);
- __Pyx_INCREF(__pyx_t_1);
- if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(((PyObject *)__pyx_v_als2));
- __pyx_v_als2 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1738
- * for phrase2, eindexes in phrase_list:
- * als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als2))) # <<<<<<<<<<<<<<
- *
- * if (f_back_high == f_high and
- */
- __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_als2));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_als2));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_als2));
- __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_fphr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr));
- __Pyx_INCREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_phrase2);
- __Pyx_GIVEREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_14);
- __pyx_t_3 = 0;
- __pyx_t_14 = 0;
- __pyx_t_14 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- goto __pyx_L69;
- }
- __pyx_L69:;
- goto __pyx_L64;
- }
- __pyx_L64:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1740
- * extracts.append((fphr, phrase2, pair_count, tuple(als2)))
- *
- * if (f_back_high == f_high and # <<<<<<<<<<<<<<
- * f_sent_len - f_high >= self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):
- */
- __pyx_t_7 = ((__pyx_v_f_back_high == __pyx_v_f_high) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1741
- *
- * if (f_back_high == f_high and
- * f_sent_len - f_high >= self.train_min_gap_size and # <<<<<<<<<<<<<<
- * ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):
- * f_x_high = f_high+self.train_min_gap_size
- */
- __pyx_t_8 = (((__pyx_v_f_sent_len - __pyx_v_f_high) >= __pyx_v_self->train_min_gap_size) != 0);
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1742
- * if (f_back_high == f_high and
- * f_sent_len - f_high >= self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))): # <<<<<<<<<<<<<<
- * f_x_high = f_high+self.train_min_gap_size
- * met_constraints = 1
- */
- __pyx_t_18 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);
- if (!__pyx_t_18) {
- __pyx_t_9 = (((__pyx_v_f_links_low[__pyx_v_f_high]) != -1) != 0);
- if (__pyx_t_9) {
- __pyx_t_20 = (((__pyx_v_f_links_low[__pyx_v_f_back_low]) != -1) != 0);
- __pyx_t_19 = __pyx_t_20;
- } else {
- __pyx_t_19 = __pyx_t_9;
- }
- __pyx_t_9 = __pyx_t_19;
- } else {
- __pyx_t_9 = __pyx_t_18;
- }
- __pyx_t_18 = __pyx_t_9;
- } else {
- __pyx_t_18 = __pyx_t_8;
- }
- __pyx_t_8 = __pyx_t_18;
- } else {
- __pyx_t_8 = __pyx_t_7;
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1743
- * f_sent_len - f_high >= self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):
- * f_x_high = f_high+self.train_min_gap_size # <<<<<<<<<<<<<<
- * met_constraints = 1
- * if self.tight_phrases:
- */
- __pyx_v_f_x_high = (__pyx_v_f_high + __pyx_v_self->train_min_gap_size);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1744
- * ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):
- * f_x_high = f_high+self.train_min_gap_size
- * met_constraints = 1 # <<<<<<<<<<<<<<
- * if self.tight_phrases:
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- */
- __pyx_v_met_constraints = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1745
- * f_x_high = f_high+self.train_min_gap_size
- * met_constraints = 1
- * if self.tight_phrases: # <<<<<<<<<<<<<<
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- * f_x_high = f_x_high + 1
- */
- __pyx_t_8 = (__pyx_v_self->tight_phrases != 0);
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1746
- * met_constraints = 1
- * if self.tight_phrases:
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1: # <<<<<<<<<<<<<<
- * f_x_high = f_x_high + 1
- * if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size:
- */
- while (1) {
- __pyx_t_8 = ((__pyx_v_f_x_high <= __pyx_v_f_sent_len) != 0);
- if (__pyx_t_8) {
- __pyx_t_7 = (((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) == -1) != 0);
- __pyx_t_18 = __pyx_t_7;
- } else {
- __pyx_t_18 = __pyx_t_8;
- }
- if (!__pyx_t_18) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1747
- * if self.tight_phrases:
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- * f_x_high = f_x_high + 1 # <<<<<<<<<<<<<<
- * if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size:
- * met_constraints = 0
- */
- __pyx_v_f_x_high = (__pyx_v_f_x_high + 1);
- }
- goto __pyx_L80;
- }
- __pyx_L80:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1748
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- * f_x_high = f_x_high + 1
- * if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size: # <<<<<<<<<<<<<<
- * met_constraints = 0
- *
- */
- __pyx_t_18 = ((__pyx_v_f_x_high > __pyx_v_f_sent_len) != 0);
- if (!__pyx_t_18) {
- __pyx_t_8 = (((__pyx_v_f_x_high - __pyx_v_f_back_low) > __pyx_v_self->train_max_initial_size) != 0);
- __pyx_t_7 = __pyx_t_8;
- } else {
- __pyx_t_7 = __pyx_t_18;
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1749
- * f_x_high = f_x_high + 1
- * if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size:
- * met_constraints = 0 # <<<<<<<<<<<<<<
- *
- * if (met_constraints and
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L83;
- }
- __pyx_L83:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1751
- * met_constraints = 0
- *
- * if (met_constraints and # <<<<<<<<<<<<<<
- * self.find_fixpoint(f_back_low, f_x_high,
- * f_links_low, f_links_high, e_links_low, e_links_high,
- */
- if ((__pyx_v_met_constraints != 0)) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1752
- *
- * if (met_constraints and
- * self.find_fixpoint(f_back_low, f_x_high, # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- */
- __pyx_t_15 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1756
- * e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 1, 1, 1, 0, 1, 1, 0) and
- * ((not self.tight_phrases) or f_links_low[f_x_high-1] != -1) and
- */
- if ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_back_low, __pyx_t_15, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 1, 0, 1, 1, 0) != 0)) {
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1758
- * self.train_max_initial_size, self.train_max_initial_size,
- * 1, 1, 1, 0, 1, 1, 0) and
- * ((not self.tight_phrases) or f_links_low[f_x_high-1] != -1) and # <<<<<<<<<<<<<<
- * self.find_fixpoint(f_high, f_x_high,
- * f_links_low, f_links_high, e_links_low, e_links_high,
- */
- __pyx_t_7 = (!(__pyx_v_self->tight_phrases != 0));
- if (!__pyx_t_7) {
- __pyx_t_18 = ((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) != -1);
- __pyx_t_8 = __pyx_t_18;
- } else {
- __pyx_t_8 = __pyx_t_7;
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1759
- * 1, 1, 1, 0, 1, 1, 0) and
- * ((not self.tight_phrases) or f_links_low[f_x_high-1] != -1) and
- * self.find_fixpoint(f_high, f_x_high, # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * -1, -1, e_gap_low+gap_start+num_gaps, e_gap_high+gap_start+num_gaps,
- */
- __pyx_t_14 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1764
- * f_gap_low+gap_start+num_gaps, f_gap_high+gap_start+num_gaps,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear()
- */
- __pyx_t_7 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_high, __pyx_t_14, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_e_gap_high + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_f_gap_low + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_f_gap_high + __pyx_v_gap_start) + __pyx_v_num_gaps), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else {
- __pyx_t_7 = __pyx_t_8;
- }
- __pyx_t_8 = __pyx_t_7;
- } else {
- __pyx_t_8 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_back_low, __pyx_t_15, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 1, 0, 1, 1, 0) != 0);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
- __pyx_t_7 = __pyx_t_8;
- } else {
- __pyx_t_7 = (__pyx_v_met_constraints != 0);
- }
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1766
- * self.train_max_initial_size, self.train_max_initial_size,
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear() # <<<<<<<<<<<<<<
- * i = 1
- * self.findexes.reset()
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_clear(__pyx_v_fphr_arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1767
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear()
- * i = 1 # <<<<<<<<<<<<<<
- * self.findexes.reset()
- * if f_back_low < f_low:
- */
- __pyx_v_i = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1768
- * fphr_arr._clear()
- * i = 1
- * self.findexes.reset() # <<<<<<<<<<<<<<
- * if f_back_low < f_low:
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_14 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1769
- * i = 1
- * self.findexes.reset()
- * if f_back_low < f_low: # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- */
- __pyx_t_7 = ((__pyx_v_f_back_low < __pyx_v_f_low) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1770
- * self.findexes.reset()
- * if f_back_low < f_low:
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i+1
- * self.findexes.append(sym_setindex(self.category, i))
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1771
- * if f_back_low < f_low:
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1 # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- * self.findexes.extend(self.findexes1)
- */
- __pyx_v_i = (__pyx_v_i + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1772
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- */
- __pyx_t_14 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_15 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_14); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- goto __pyx_L85;
- }
- __pyx_L85:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1773
- * i = i+1
- * self.findexes.append(sym_setindex(self.category, i))
- * self.findexes.extend(self.findexes1) # <<<<<<<<<<<<<<
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- */
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1));
- PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_self->findexes1));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1));
- __pyx_t_1 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1774
- * self.findexes.append(sym_setindex(self.category, i))
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n: # <<<<<<<<<<<<<<
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_2 = __pyx_v_phrase->n;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1775
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]): # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1
- */
- __pyx_t_7 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1776
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i + 1
- * else:
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1777
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1 # <<<<<<<<<<<<<<
- * else:
- * fphr_arr._append(phrase.syms[j])
- */
- __pyx_v_i = (__pyx_v_i + 1);
- goto __pyx_L88;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1779
- * i = i + 1
- * else:
- * fphr_arr._append(phrase.syms[j]) # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i))
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, (__pyx_v_phrase->syms[__pyx_v_j]));
- }
- __pyx_L88:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1780
- * else:
- * fphr_arr._append(phrase.syms[j])
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr = Phrase(fphr_arr)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1781
- * fphr_arr._append(phrase.syms[j])
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * fphr = Phrase(fphr_arr)
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low+gap_start, e_gap_high+gap_start, e_links_low, num_gaps+1,
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_14 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1782
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr = Phrase(fphr_arr) # <<<<<<<<<<<<<<
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low+gap_start, e_gap_high+gap_start, e_links_low, num_gaps+1,
- * f_x_low, f_x_high, f_gap_low+gap_start, f_gap_high+gap_start, f_links_low,
- */
- __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr));
- PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_fphr_arr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr));
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_fphr));
- __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1785
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low+gap_start, e_gap_high+gap_start, e_links_low, num_gaps+1,
- * f_x_low, f_x_high, f_gap_low+gap_start, f_gap_high+gap_start, f_links_low,
- * matching.sent_id, e_sent_len, e_sent_start) # <<<<<<<<<<<<<<
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list)
- */
- __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, (__pyx_v_e_gap_low + __pyx_v_gap_start), (__pyx_v_e_gap_high + __pyx_v_gap_start), __pyx_v_e_links_low, (__pyx_v_num_gaps + 1), __pyx_v_f_x_low, __pyx_v_f_x_high, (__pyx_v_f_gap_low + __pyx_v_gap_start), (__pyx_v_f_gap_high + __pyx_v_gap_start), __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_phrase_list);
- __pyx_v_phrase_list = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1786
- * f_x_low, f_x_high, f_gap_low+gap_start, f_gap_high+gap_start, f_links_low,
- * matching.sent_id, e_sent_len, e_sent_start)
- * if len(phrase_list) > 0: # <<<<<<<<<<<<<<
- * pair_count = 1.0 / len(phrase_list)
- * else:
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = ((__pyx_t_13 > 0) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1787
- * matching.sent_id, e_sent_len, e_sent_start)
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list) # <<<<<<<<<<<<<<
- * else:
- * pair_count = 0
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(__pyx_t_13 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_pair_count = (1.0 / __pyx_t_13);
- goto __pyx_L89;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1789
- * pair_count = 1.0 / len(phrase_list)
- * else:
- * pair_count = 0 # <<<<<<<<<<<<<<
- * for phrase2, eindexes in phrase_list:
- * als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- */
- __pyx_v_pair_count = 0.0;
- }
- __pyx_L89:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1790
- * else:
- * pair_count = 0
- * for phrase2, eindexes in phrase_list: # <<<<<<<<<<<<<<
- * als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als3)))
- */
- if (PyList_CheckExact(__pyx_v_phrase_list) || PyTuple_CheckExact(__pyx_v_phrase_list)) {
- __pyx_t_1 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_1); __pyx_t_13 = 0;
- __pyx_t_16 = NULL;
- } else {
- __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_16 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_14 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_14); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_14 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_14 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_14); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_14 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_14 = __pyx_t_16(__pyx_t_1);
- if (unlikely(!__pyx_t_14)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_14);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_14))) || (PyList_CheckExact(__pyx_t_14))) {
- PyObject* sequence = __pyx_t_14;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_15 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_15 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_15);
- __Pyx_INCREF(__pyx_t_3);
- #else
- __pyx_t_15 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- #endif
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_14); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_15 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_15)) goto __pyx_L92_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_15);
- index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L92_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_17 = NULL;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L93_unpacking_done;
- __pyx_L92_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_17 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L93_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_phrase2);
- __pyx_v_phrase2 = __pyx_t_15;
- __pyx_t_15 = 0;
- __Pyx_XDECREF(__pyx_v_eindexes);
- __pyx_v_eindexes = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1791
- * pair_count = 0
- * for phrase2, eindexes in phrase_list:
- * als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes) # <<<<<<<<<<<<<<
- * extracts.append((fphr, phrase2, pair_count, tuple(als3)))
- * if (num_gaps < self.max_nonterminals - 1 and
- */
- __pyx_t_14 = ((PyObject *)__pyx_v_self->findexes);
- __Pyx_INCREF(__pyx_t_14);
- if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_14), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_XDECREF(((PyObject *)__pyx_v_als3));
- __pyx_v_als3 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1792
- * for phrase2, eindexes in phrase_list:
- * als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als3))) # <<<<<<<<<<<<<<
- * if (num_gaps < self.max_nonterminals - 1 and
- * phrase_len+1 < self.max_length and
- */
- __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_INCREF(((PyObject *)__pyx_v_als3));
- PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_als3));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_als3));
- __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
- __pyx_t_14 = PyTuple_New(4); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr));
- PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_fphr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr));
- __Pyx_INCREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_phrase2);
- __Pyx_GIVEREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_15);
- __pyx_t_3 = 0;
- __pyx_t_15 = 0;
- __pyx_t_15 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L84;
- }
- __pyx_L84:;
- goto __pyx_L79;
- }
- __pyx_L79:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1793
- * als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als3)))
- * if (num_gaps < self.max_nonterminals - 1 and # <<<<<<<<<<<<<<
- * phrase_len+1 < self.max_length and
- * f_back_high == f_high and
- */
- __pyx_t_7 = ((__pyx_v_num_gaps < (__pyx_v_self->max_nonterminals - 1)) != 0);
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1794
- * extracts.append((fphr, phrase2, pair_count, tuple(als3)))
- * if (num_gaps < self.max_nonterminals - 1 and
- * phrase_len+1 < self.max_length and # <<<<<<<<<<<<<<
- * f_back_high == f_high and
- * f_back_low == f_low and
- */
- __pyx_t_8 = (((__pyx_v_phrase_len + 1) < __pyx_v_self->max_length) != 0);
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1795
- * if (num_gaps < self.max_nonterminals - 1 and
- * phrase_len+1 < self.max_length and
- * f_back_high == f_high and # <<<<<<<<<<<<<<
- * f_back_low == f_low and
- * f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and
- */
- __pyx_t_18 = ((__pyx_v_f_back_high == __pyx_v_f_high) != 0);
- if (__pyx_t_18) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1796
- * phrase_len+1 < self.max_length and
- * f_back_high == f_high and
- * f_back_low == f_low and # <<<<<<<<<<<<<<
- * f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and
- * f_low >= self.train_min_gap_size and
- */
- __pyx_t_9 = ((__pyx_v_f_back_low == __pyx_v_f_low) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1797
- * f_back_high == f_high and
- * f_back_low == f_low and
- * f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and # <<<<<<<<<<<<<<
- * f_low >= self.train_min_gap_size and
- * f_high <= f_sent_len - self.train_min_gap_size and
- */
- __pyx_t_19 = ((((__pyx_v_f_back_high - __pyx_v_f_back_low) + (2 * __pyx_v_self->train_min_gap_size)) <= __pyx_v_self->train_max_initial_size) != 0);
- if (__pyx_t_19) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1798
- * f_back_low == f_low and
- * f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and
- * f_low >= self.train_min_gap_size and # <<<<<<<<<<<<<<
- * f_high <= f_sent_len - self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):
- */
- __pyx_t_20 = ((__pyx_v_f_low >= __pyx_v_self->train_min_gap_size) != 0);
- if (__pyx_t_20) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1799
- * f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and
- * f_low >= self.train_min_gap_size and
- * f_high <= f_sent_len - self.train_min_gap_size and # <<<<<<<<<<<<<<
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):
- *
- */
- __pyx_t_21 = ((__pyx_v_f_high <= (__pyx_v_f_sent_len - __pyx_v_self->train_min_gap_size)) != 0);
- if (__pyx_t_21) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1800
- * f_low >= self.train_min_gap_size and
- * f_high <= f_sent_len - self.train_min_gap_size and
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))): # <<<<<<<<<<<<<<
- *
- * met_constraints = 1
- */
- __pyx_t_22 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);
- if (!__pyx_t_22) {
- __pyx_t_23 = (((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) != -1) != 0);
- if (__pyx_t_23) {
- __pyx_t_24 = (((__pyx_v_f_links_low[__pyx_v_f_high]) != -1) != 0);
- __pyx_t_25 = __pyx_t_24;
- } else {
- __pyx_t_25 = __pyx_t_23;
- }
- __pyx_t_23 = __pyx_t_25;
- } else {
- __pyx_t_23 = __pyx_t_22;
- }
- __pyx_t_22 = __pyx_t_23;
- } else {
- __pyx_t_22 = __pyx_t_21;
- }
- __pyx_t_21 = __pyx_t_22;
- } else {
- __pyx_t_21 = __pyx_t_20;
- }
- __pyx_t_20 = __pyx_t_21;
- } else {
- __pyx_t_20 = __pyx_t_19;
- }
- __pyx_t_19 = __pyx_t_20;
- } else {
- __pyx_t_19 = __pyx_t_9;
- }
- __pyx_t_9 = __pyx_t_19;
- } else {
- __pyx_t_9 = __pyx_t_18;
- }
- __pyx_t_18 = __pyx_t_9;
- } else {
- __pyx_t_18 = __pyx_t_8;
- }
- __pyx_t_8 = __pyx_t_18;
- } else {
- __pyx_t_8 = __pyx_t_7;
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1802
- * ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):
- *
- * met_constraints = 1 # <<<<<<<<<<<<<<
- * f_x_low = f_low-self.train_min_gap_size
- * if self.tight_phrases:
- */
- __pyx_v_met_constraints = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1803
- *
- * met_constraints = 1
- * f_x_low = f_low-self.train_min_gap_size # <<<<<<<<<<<<<<
- * if self.tight_phrases:
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- */
- __pyx_v_f_x_low = (__pyx_v_f_low - __pyx_v_self->train_min_gap_size);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1804
- * met_constraints = 1
- * f_x_low = f_low-self.train_min_gap_size
- * if self.tight_phrases: # <<<<<<<<<<<<<<
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- * f_x_low = f_x_low - 1
- */
- __pyx_t_8 = (__pyx_v_self->tight_phrases != 0);
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1805
- * f_x_low = f_low-self.train_min_gap_size
- * if self.tight_phrases:
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1: # <<<<<<<<<<<<<<
- * f_x_low = f_x_low - 1
- * if f_x_low < 0:
- */
- while (1) {
- __pyx_t_8 = ((__pyx_v_f_x_low >= 0) != 0);
- if (__pyx_t_8) {
- __pyx_t_7 = (((__pyx_v_f_links_low[__pyx_v_f_x_low]) == -1) != 0);
- __pyx_t_18 = __pyx_t_7;
- } else {
- __pyx_t_18 = __pyx_t_8;
- }
- if (!__pyx_t_18) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1806
- * if self.tight_phrases:
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- * f_x_low = f_x_low - 1 # <<<<<<<<<<<<<<
- * if f_x_low < 0:
- * met_constraints = 0
- */
- __pyx_v_f_x_low = (__pyx_v_f_x_low - 1);
- }
- goto __pyx_L95;
- }
- __pyx_L95:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1807
- * while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- * f_x_low = f_x_low - 1
- * if f_x_low < 0: # <<<<<<<<<<<<<<
- * met_constraints = 0
- *
- */
- __pyx_t_18 = ((__pyx_v_f_x_low < 0) != 0);
- if (__pyx_t_18) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1808
- * f_x_low = f_x_low - 1
- * if f_x_low < 0:
- * met_constraints = 0 # <<<<<<<<<<<<<<
- *
- * f_x_high = f_high+self.train_min_gap_size
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L98;
- }
- __pyx_L98:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1810
- * met_constraints = 0
- *
- * f_x_high = f_high+self.train_min_gap_size # <<<<<<<<<<<<<<
- * if self.tight_phrases:
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- */
- __pyx_v_f_x_high = (__pyx_v_f_high + __pyx_v_self->train_min_gap_size);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1811
- *
- * f_x_high = f_high+self.train_min_gap_size
- * if self.tight_phrases: # <<<<<<<<<<<<<<
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- * f_x_high = f_x_high + 1
- */
- __pyx_t_18 = (__pyx_v_self->tight_phrases != 0);
- if (__pyx_t_18) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1812
- * f_x_high = f_high+self.train_min_gap_size
- * if self.tight_phrases:
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1: # <<<<<<<<<<<<<<
- * f_x_high = f_x_high + 1
- * if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size:
- */
- while (1) {
- __pyx_t_18 = ((__pyx_v_f_x_high <= __pyx_v_f_sent_len) != 0);
- if (__pyx_t_18) {
- __pyx_t_8 = (((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) == -1) != 0);
- __pyx_t_7 = __pyx_t_8;
- } else {
- __pyx_t_7 = __pyx_t_18;
- }
- if (!__pyx_t_7) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1813
- * if self.tight_phrases:
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- * f_x_high = f_x_high + 1 # <<<<<<<<<<<<<<
- * if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size:
- * met_constraints = 0
- */
- __pyx_v_f_x_high = (__pyx_v_f_x_high + 1);
- }
- goto __pyx_L99;
- }
- __pyx_L99:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1814
- * while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- * f_x_high = f_x_high + 1
- * if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size: # <<<<<<<<<<<<<<
- * met_constraints = 0
- *
- */
- __pyx_t_7 = ((__pyx_v_f_x_high > __pyx_v_f_sent_len) != 0);
- if (!__pyx_t_7) {
- __pyx_t_18 = (((__pyx_v_f_x_high - __pyx_v_f_x_low) > __pyx_v_self->train_max_initial_size) != 0);
- __pyx_t_8 = __pyx_t_18;
- } else {
- __pyx_t_8 = __pyx_t_7;
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1815
- * f_x_high = f_x_high + 1
- * if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size:
- * met_constraints = 0 # <<<<<<<<<<<<<<
- *
- * if (met_constraints and
- */
- __pyx_v_met_constraints = 0;
- goto __pyx_L102;
- }
- __pyx_L102:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1817
- * met_constraints = 0
- *
- * if (met_constraints and # <<<<<<<<<<<<<<
- * (self.find_fixpoint(f_x_low, f_x_high,
- * f_links_low, f_links_high, e_links_low, e_links_high,
- */
- if ((__pyx_v_met_constraints != 0)) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1818
- *
- * if (met_constraints and
- * (self.find_fixpoint(f_x_low, f_x_high, # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1822
- * e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 1, 1, 2, 1, 1, 1, 1) == 1) and
- * ((not self.tight_phrases) or (f_links_low[f_x_low] != -1 and f_links_low[f_x_high-1] != -1)) and
- */
- __pyx_t_8 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 2, 1, 1, 1, 1) == 1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1824
- * self.train_max_initial_size, self.train_max_initial_size,
- * 1, 1, 2, 1, 1, 1, 1) == 1) and
- * ((not self.tight_phrases) or (f_links_low[f_x_low] != -1 and f_links_low[f_x_high-1] != -1)) and # <<<<<<<<<<<<<<
- * self.find_fixpoint(f_x_low, f_low,
- * f_links_low, f_links_high, e_links_low, e_links_high,
- */
- __pyx_t_7 = (!(__pyx_v_self->tight_phrases != 0));
- if (!__pyx_t_7) {
- __pyx_t_18 = ((__pyx_v_f_links_low[__pyx_v_f_x_low]) != -1);
- if (__pyx_t_18) {
- __pyx_t_9 = ((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) != -1);
- __pyx_t_19 = __pyx_t_9;
- } else {
- __pyx_t_19 = __pyx_t_18;
- }
- __pyx_t_18 = __pyx_t_19;
- } else {
- __pyx_t_18 = __pyx_t_7;
- }
- if (__pyx_t_18) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1825
- * 1, 1, 2, 1, 1, 1, 1) == 1) and
- * ((not self.tight_phrases) or (f_links_low[f_x_low] != -1 and f_links_low[f_x_high-1] != -1)) and
- * self.find_fixpoint(f_x_low, f_low, # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_f_low); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1829
- * -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 0, 0, 0, 0, 0, 0, 0) and
- * self.find_fixpoint(f_high, f_x_high,
- */
- __pyx_t_7 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_7) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1831
- * self.train_max_initial_size, self.train_max_initial_size,
- * 0, 0, 0, 0, 0, 0, 0) and
- * self.find_fixpoint(f_high, f_x_high, # <<<<<<<<<<<<<<
- * f_links_low, f_links_high, e_links_low, e_links_high,
- * -1, -1, e_gap_low+1+num_gaps, e_gap_high+1+num_gaps,
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1836
- * f_gap_low+1+num_gaps, f_gap_high+1+num_gaps,
- * f_sent_len, e_sent_len,
- * self.train_max_initial_size, self.train_max_initial_size, # <<<<<<<<<<<<<<
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear()
- */
- __pyx_t_19 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_high, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + 1) + __pyx_v_num_gaps), ((__pyx_v_e_gap_high + 1) + __pyx_v_num_gaps), ((__pyx_v_f_gap_low + 1) + __pyx_v_num_gaps), ((__pyx_v_f_gap_high + 1) + __pyx_v_num_gaps), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_9 = __pyx_t_19;
- } else {
- __pyx_t_9 = __pyx_t_7;
- }
- __pyx_t_7 = __pyx_t_9;
- } else {
- __pyx_t_7 = __pyx_t_18;
- }
- __pyx_t_18 = __pyx_t_7;
- } else {
- __pyx_t_18 = __pyx_t_8;
- }
- __pyx_t_8 = __pyx_t_18;
- } else {
- __pyx_t_8 = (__pyx_v_met_constraints != 0);
- }
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1838
- * self.train_max_initial_size, self.train_max_initial_size,
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear() # <<<<<<<<<<<<<<
- * i = 1
- * self.findexes.reset()
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_clear(__pyx_v_fphr_arr);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1839
- * 0, 0, 0, 0, 0, 0, 0)):
- * fphr_arr._clear()
- * i = 1 # <<<<<<<<<<<<<<
- * self.findexes.reset()
- * self.findexes.append(sym_setindex(self.category, i))
- */
- __pyx_v_i = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1840
- * fphr_arr._clear()
- * i = 1
- * self.findexes.reset() # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_15 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1841
- * i = 1
- * self.findexes.reset()
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- */
- __pyx_t_15 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1842
- * self.findexes.reset()
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i+1
- * self.findexes.extend(self.findexes1)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1843
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1 # <<<<<<<<<<<<<<
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- */
- __pyx_v_i = (__pyx_v_i + 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1844
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i+1
- * self.findexes.extend(self.findexes1) # <<<<<<<<<<<<<<
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1));
- PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_self->findexes1));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1));
- __pyx_t_14 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1845
- * i = i+1
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n: # <<<<<<<<<<<<<<
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- */
- __pyx_t_2 = __pyx_v_phrase->n;
- for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1846
- * self.findexes.extend(self.findexes1)
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]): # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1
- */
- __pyx_t_8 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0);
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1847
- * for j from 0 <= j < phrase.n:
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * i = i + 1
- * else:
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1848
- * if sym_isvar(phrase.syms[j]):
- * fphr_arr._append(sym_setindex(self.category, i))
- * i = i + 1 # <<<<<<<<<<<<<<
- * else:
- * fphr_arr._append(phrase.syms[j])
- */
- __pyx_v_i = (__pyx_v_i + 1);
- goto __pyx_L106;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1850
- * i = i + 1
- * else:
- * fphr_arr._append(phrase.syms[j]) # <<<<<<<<<<<<<<
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i))
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, (__pyx_v_phrase->syms[__pyx_v_j]));
- }
- __pyx_L106:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1851
- * else:
- * fphr_arr._append(phrase.syms[j])
- * fphr_arr._append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr = Phrase(fphr_arr)
- */
- ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1852
- * fphr_arr._append(phrase.syms[j])
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i)) # <<<<<<<<<<<<<<
- * fphr = Phrase(fphr_arr)
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+2,
- */
- __pyx_t_14 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_15 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_14); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1853
- * fphr_arr._append(sym_setindex(self.category, i))
- * self.findexes.append(sym_setindex(self.category, i))
- * fphr = Phrase(fphr_arr) # <<<<<<<<<<<<<<
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+2,
- * f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low,
- */
- __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr));
- PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_fphr_arr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr));
- __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_v_fphr));
- __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_14);
- __pyx_t_14 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1856
- * phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+2,
- * f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low,
- * matching.sent_id, e_sent_len, e_sent_start) # <<<<<<<<<<<<<<
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list)
- */
- __pyx_t_14 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_e_links_low, (__pyx_v_num_gaps + 2), __pyx_v_f_x_low, __pyx_v_f_x_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_XDECREF(__pyx_v_phrase_list);
- __pyx_v_phrase_list = __pyx_t_14;
- __pyx_t_14 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1857
- * f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low,
- * matching.sent_id, e_sent_len, e_sent_start)
- * if len(phrase_list) > 0: # <<<<<<<<<<<<<<
- * pair_count = 1.0 / len(phrase_list)
- * else:
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = ((__pyx_t_13 > 0) != 0);
- if (__pyx_t_8) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1858
- * matching.sent_id, e_sent_len, e_sent_start)
- * if len(phrase_list) > 0:
- * pair_count = 1.0 / len(phrase_list) # <<<<<<<<<<<<<<
- * else:
- * pair_count = 0
- */
- __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(__pyx_t_13 == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
- #endif
- PyErr_Format(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- PyGILState_Release(__pyx_gilstate_save);
- #endif
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_v_pair_count = (1.0 / __pyx_t_13);
- goto __pyx_L107;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1860
- * pair_count = 1.0 / len(phrase_list)
- * else:
- * pair_count = 0 # <<<<<<<<<<<<<<
- * for phrase2, eindexes in phrase_list:
- * als4 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- */
- __pyx_v_pair_count = 0.0;
- }
- __pyx_L107:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1861
- * else:
- * pair_count = 0
- * for phrase2, eindexes in phrase_list: # <<<<<<<<<<<<<<
- * als4 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als4)))
- */
- if (PyList_CheckExact(__pyx_v_phrase_list) || PyTuple_CheckExact(__pyx_v_phrase_list)) {
- __pyx_t_14 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_14); __pyx_t_13 = 0;
- __pyx_t_16 = NULL;
- } else {
- __pyx_t_13 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_16 = Py_TYPE(__pyx_t_14)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_14)) {
- if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_14)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_15 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_14)) {
- if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_14)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_15 = __pyx_t_16(__pyx_t_14);
- if (unlikely(!__pyx_t_15)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_15);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_15))) || (PyList_CheckExact(__pyx_t_15))) {
- PyObject* sequence = __pyx_t_15;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
- #else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- #endif
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_15); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_1 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L110_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_1);
- index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L110_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_17 = NULL;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- goto __pyx_L111_unpacking_done;
- __pyx_L110_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_17 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L111_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_phrase2);
- __pyx_v_phrase2 = __pyx_t_1;
- __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_v_eindexes);
- __pyx_v_eindexes = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1862
- * pair_count = 0
- * for phrase2, eindexes in phrase_list:
- * als4 = self.create_alignments(sent_links,num_links,self.findexes,eindexes) # <<<<<<<<<<<<<<
- * extracts.append((fphr, phrase2, pair_count, tuple(als4)))
- * else:
- */
- __pyx_t_15 = ((PyObject *)__pyx_v_self->findexes);
- __Pyx_INCREF(__pyx_t_15);
- if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_15), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XDECREF(((PyObject *)__pyx_v_als4));
- __pyx_v_als4 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1863
- * for phrase2, eindexes in phrase_list:
- * als4 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- * extracts.append((fphr, phrase2, pair_count, tuple(als4))) # <<<<<<<<<<<<<<
- * else:
- * reason_for_failure = "Unable to extract basic phrase"
- */
- __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(((PyObject *)__pyx_v_als4));
- PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_als4));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_als4));
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_INCREF(((PyObject *)__pyx_v_fphr));
- PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_fphr));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr));
- __Pyx_INCREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_phrase2);
- __Pyx_GIVEREF(__pyx_v_phrase2);
- PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_3 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- goto __pyx_L103;
- }
- __pyx_L103:;
- goto __pyx_L94;
- }
- __pyx_L94:;
- goto __pyx_L63;
- }
- __pyx_L63:;
- goto __pyx_L51;
- }
- __pyx_L51:;
- goto __pyx_L34;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1865
- * extracts.append((fphr, phrase2, pair_count, tuple(als4)))
- * else:
- * reason_for_failure = "Unable to extract basic phrase" # <<<<<<<<<<<<<<
- *
- * free(sent_links)
- */
- __Pyx_INCREF(((PyObject *)__pyx_kp_s_139));
- __Pyx_DECREF(__pyx_v_reason_for_failure);
- __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_139);
- }
- __pyx_L34:;
- goto __pyx_L33;
- }
- __pyx_L33:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1867
- * reason_for_failure = "Unable to extract basic phrase"
- *
- * free(sent_links) # <<<<<<<<<<<<<<
- * free(f_links_low)
- * free(f_links_high)
- */
- free(__pyx_v_sent_links);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1868
- *
- * free(sent_links)
- * free(f_links_low) # <<<<<<<<<<<<<<
- * free(f_links_high)
- * free(e_links_low)
- */
- free(__pyx_v_f_links_low);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1869
- * free(sent_links)
- * free(f_links_low)
- * free(f_links_high) # <<<<<<<<<<<<<<
- * free(e_links_low)
- * free(e_links_high)
- */
- free(__pyx_v_f_links_high);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1870
- * free(f_links_low)
- * free(f_links_high)
- * free(e_links_low) # <<<<<<<<<<<<<<
- * free(e_links_high)
- * free(f_gap_low)
- */
- free(__pyx_v_e_links_low);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1871
- * free(f_links_high)
- * free(e_links_low)
- * free(e_links_high) # <<<<<<<<<<<<<<
- * free(f_gap_low)
- * free(f_gap_high)
- */
- free(__pyx_v_e_links_high);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1872
- * free(e_links_low)
- * free(e_links_high)
- * free(f_gap_low) # <<<<<<<<<<<<<<
- * free(f_gap_high)
- * free(e_gap_low)
- */
- free(__pyx_v_f_gap_low);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1873
- * free(e_links_high)
- * free(f_gap_low)
- * free(f_gap_high) # <<<<<<<<<<<<<<
- * free(e_gap_low)
- * free(e_gap_high)
- */
- free(__pyx_v_f_gap_high);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1874
- * free(f_gap_low)
- * free(f_gap_high)
- * free(e_gap_low) # <<<<<<<<<<<<<<
- * free(e_gap_high)
- *
- */
- free(__pyx_v_e_gap_low);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1875
- * free(f_gap_high)
- * free(e_gap_low)
- * free(e_gap_high) # <<<<<<<<<<<<<<
- *
- * return extracts
- */
- free(__pyx_v_e_gap_high);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1877
- * free(e_gap_high)
- *
- * return extracts # <<<<<<<<<<<<<<
- *
- * #
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_extracts);
- __pyx_r = __pyx_v_extracts;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_14);
- __Pyx_XDECREF(__pyx_t_15);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_extracts);
- __Pyx_XDECREF(__pyx_v_phrase_list);
- __Pyx_XDECREF((PyObject *)__pyx_v_fphr_arr);
- __Pyx_XDECREF((PyObject *)__pyx_v_fphr);
- __Pyx_XDECREF(__pyx_v_reason_for_failure);
- __Pyx_XDECREF(__pyx_v_sofar);
- __Pyx_XDECREF(__pyx_v_als);
- __Pyx_XDECREF(__pyx_v_al);
- __Pyx_XDECREF(__pyx_v_phrase2);
- __Pyx_XDECREF(__pyx_v_eindexes);
- __Pyx_XDECREF((PyObject *)__pyx_v_als1);
- __Pyx_XDECREF((PyObject *)__pyx_v_als2);
- __Pyx_XDECREF((PyObject *)__pyx_v_als3);
- __Pyx_XDECREF((PyObject *)__pyx_v_als4);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_f_words = 0;
- PyObject *__pyx_v_e_words = 0;
- PyObject *__pyx_v_alignment = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("add_instance (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_words,&__pyx_n_s__e_words,&__pyx_n_s__alignment,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_words)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_words)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alignment)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_instance") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_f_words = values[0];
- __pyx_v_e_words = values[1];
- __pyx_v_alignment = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.add_instance", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_f_words, __pyx_v_e_words, __pyx_v_alignment);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_12add_instance_1extract(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_12add_instance_1extract = {__Pyx_NAMESTR("extract"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_12add_instance_1extract, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_12add_instance_1extract(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_f_i = 0;
- PyObject *__pyx_v_f_j = 0;
- PyObject *__pyx_v_e_i = 0;
- PyObject *__pyx_v_e_j = 0;
- PyObject *__pyx_v_min_bound = 0;
- PyObject *__pyx_v_wc = 0;
- PyObject *__pyx_v_links = 0;
- PyObject *__pyx_v_nt = 0;
- PyObject *__pyx_v_nt_open = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("extract (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__f_j,&__pyx_n_s__e_i,&__pyx_n_s__e_j,&__pyx_n_s__min_bound,&__pyx_n_s__wc,&__pyx_n_s__links,&__pyx_n_s__nt,&__pyx_n_s__nt_open,0};
- PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_i)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 4:
- if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__min_bound)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 5:
- if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wc)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 6:
- if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__links)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 7:
- if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 7); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 8:
- if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt_open)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 8); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
- values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
- }
- __pyx_v_f_i = values[0];
- __pyx_v_f_j = values[1];
- __pyx_v_e_i = values[2];
- __pyx_v_e_j = values[3];
- __pyx_v_min_bound = values[4];
- __pyx_v_wc = values[5];
- __pyx_v_links = values[6];
- __pyx_v_nt = values[7];
- __pyx_v_nt_open = values[8];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.add_instance.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_self, __pyx_v_f_i, __pyx_v_f_j, __pyx_v_e_i, __pyx_v_e_j, __pyx_v_min_bound, __pyx_v_wc, __pyx_v_links, __pyx_v_nt, __pyx_v_nt_open);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1919
- * # f_ i and j are current, e_ i and j are previous
- * # We care _considering_ f_j, so it is not yet in counts
- * def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open): # <<<<<<<<<<<<<<
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(PyObject *__pyx_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_f_j, PyObject *__pyx_v_e_i, PyObject *__pyx_v_e_j, PyObject *__pyx_v_min_bound, PyObject *__pyx_v_wc, PyObject *__pyx_v_links, PyObject *__pyx_v_nt, PyObject *__pyx_v_nt_open) {
- struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *__pyx_cur_scope;
- struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *__pyx_outer_scope;
- PyObject *__pyx_v_link_i = NULL;
- PyObject *__pyx_v_link_j = NULL;
- PyObject *__pyx_v_new_e_i = NULL;
- PyObject *__pyx_v_new_e_j = NULL;
- PyObject *__pyx_v_new_min_bound = NULL;
- PyObject *__pyx_v_i = NULL;
- int __pyx_v_nt_collision;
- PyObject *__pyx_v_link = NULL;
- PyObject *__pyx_v_plus_links = NULL;
- PyObject *__pyx_v_old_last_nt = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_t_6;
- Py_ssize_t __pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
- int __pyx_t_10;
- int __pyx_t_11;
- PyObject *(*__pyx_t_12)(PyObject *);
- int __pyx_t_13;
- PyObject *__pyx_t_14 = NULL;
- int __pyx_t_15;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("extract", 0);
- __pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *) __Pyx_CyFunction_GetClosure(__pyx_self);
- __pyx_cur_scope = __pyx_outer_scope;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1921
- * def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open):
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size: # <<<<<<<<<<<<<<
- * return
- * # Unaligned word
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_f_len)) { __Pyx_RaiseClosureNameError("f_len"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_1 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_3) {
- __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_v_f_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __pyx_t_5;
- } else {
- __pyx_t_6 = __pyx_t_3;
- }
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1922
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- * return # <<<<<<<<<<<<<<
- * # Unaligned word
- * if not al[f_j]:
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1924
- * return
- * # Unaligned word
- * if not al[f_j]: # <<<<<<<<<<<<<<
- * # Adjacent to non-terminal: extend (non-terminal now open)
- * if nt and nt[-1][2] == f_j - 1:
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_al)) { __Pyx_RaiseClosureNameError("al"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = ((!__pyx_t_6) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1926
- * if not al[f_j]:
- * # Adjacent to non-terminal: extend (non-terminal now open)
- * if nt and nt[-1][2] == f_j - 1: # <<<<<<<<<<<<<<
- * nt[-1][2] += 1
- * extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)
- */
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_3) {
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_5 = __pyx_t_6;
- } else {
- __pyx_t_5 = __pyx_t_3;
- }
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1927
- * # Adjacent to non-terminal: extend (non-terminal now open)
- * if nt and nt[-1][2] == f_j - 1:
- * nt[-1][2] += 1 # <<<<<<<<<<<<<<
- * extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)
- * nt[-1][2] -= 1
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = 2;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__Pyx_SetItemInt(__pyx_t_1, __pyx_t_7, __pyx_t_2, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1928
- * if nt and nt[-1][2] == f_j - 1:
- * nt[-1][2] += 1
- * extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True) # <<<<<<<<<<<<<<
- * nt[-1][2] -= 1
- * # Unless non-terminal already open, always extend with word
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_e_i, __pyx_v_e_j, __pyx_v_min_bound, __pyx_v_wc, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1929
- * nt[-1][2] += 1
- * extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)
- * nt[-1][2] -= 1 # <<<<<<<<<<<<<<
- * # Unless non-terminal already open, always extend with word
- * # Make sure adding a word doesn't exceed length
- */
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = 2;
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__Pyx_SetItemInt(__pyx_t_4, __pyx_t_7, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1932
- * # Unless non-terminal already open, always extend with word
- * # Make sure adding a word doesn't exceed length
- * if not nt_open and wc < self.max_length: # <<<<<<<<<<<<<<
- * extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)
- * return
- */
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = (!__pyx_t_5);
- if (__pyx_t_3) {
- __pyx_t_4 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = __pyx_t_5;
- } else {
- __pyx_t_6 = __pyx_t_3;
- }
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1933
- * # Make sure adding a word doesn't exceed length
- * if not nt_open and wc < self.max_length:
- * extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False) # <<<<<<<<<<<<<<
- * return
- * # Aligned word
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_e_i, __pyx_v_e_j, __pyx_v_min_bound, __pyx_t_4, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1934
- * if not nt_open and wc < self.max_length:
- * extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)
- * return # <<<<<<<<<<<<<<
- * # Aligned word
- * link_i = fe_span[f_j][0]
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1936
- * return
- * # Aligned word
- * link_i = fe_span[f_j][0] # <<<<<<<<<<<<<<
- * link_j = fe_span[f_j][1]
- * new_e_i = min(link_i, e_i)
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_fe_span)) { __Pyx_RaiseClosureNameError("fe_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f_j); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_link_i = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1937
- * # Aligned word
- * link_i = fe_span[f_j][0]
- * link_j = fe_span[f_j][1] # <<<<<<<<<<<<<<
- * new_e_i = min(link_i, e_i)
- * new_e_j = max(link_j, e_j)
- */
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f_j); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_link_j = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1938
- * link_i = fe_span[f_j][0]
- * link_j = fe_span[f_j][1]
- * new_e_i = min(link_i, e_i) # <<<<<<<<<<<<<<
- * new_e_j = max(link_j, e_j)
- * # Check reverse links of newly covered words to see if they violate left
- */
- __Pyx_INCREF(__pyx_v_e_i);
- __pyx_t_8 = __pyx_v_e_i;
- __Pyx_INCREF(__pyx_v_link_i);
- __pyx_t_2 = __pyx_v_link_i;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
- __Pyx_INCREF(__pyx_t_8);
- __pyx_t_4 = __pyx_t_8;
- } else {
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_4 = __pyx_t_2;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_t_4;
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_new_e_i = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1939
- * link_j = fe_span[f_j][1]
- * new_e_i = min(link_i, e_i)
- * new_e_j = max(link_j, e_j) # <<<<<<<<<<<<<<
- * # Check reverse links of newly covered words to see if they violate left
- * # bound (return) or extend minimum right bound for chunk
- */
- __Pyx_INCREF(__pyx_v_e_j);
- __pyx_t_8 = __pyx_v_e_j;
- __Pyx_INCREF(__pyx_v_link_j);
- __pyx_t_4 = __pyx_v_link_j;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
- __Pyx_INCREF(__pyx_t_8);
- __pyx_t_2 = __pyx_t_8;
- } else {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_2 = __pyx_t_4;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_t_2;
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_new_e_j = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1942
- * # Check reverse links of newly covered words to see if they violate left
- * # bound (return) or extend minimum right bound for chunk
- * new_min_bound = min_bound # <<<<<<<<<<<<<<
- * # First aligned word creates span
- * if e_j == -1:
- */
- __Pyx_INCREF(__pyx_v_min_bound);
- __pyx_v_new_min_bound = __pyx_v_min_bound;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1944
- * new_min_bound = min_bound
- * # First aligned word creates span
- * if e_j == -1: # <<<<<<<<<<<<<<
- * for i from new_e_i <= i <= new_e_j:
- * if ef_span[i][0] < f_i:
- */
- __pyx_t_8 = PyObject_RichCompare(__pyx_v_e_j, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1945
- * # First aligned word creates span
- * if e_j == -1:
- * for i from new_e_i <= i <= new_e_j: # <<<<<<<<<<<<<<
- * if ef_span[i][0] < f_i:
- * return
- */
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_new_e_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_new_e_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- for (__pyx_t_11 = __pyx_t_9; __pyx_t_11 <= __pyx_t_10; __pyx_t_11++) {
- __pyx_t_8 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1946
- * if e_j == -1:
- * for i from new_e_i <= i <= new_e_j:
- * if ef_span[i][0] < f_i: # <<<<<<<<<<<<<<
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1947
- * for i from new_e_i <= i <= new_e_j:
- * if ef_span[i][0] < f_i:
- * return # <<<<<<<<<<<<<<
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- * # Other aligned words extend span
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L10;
- }
- __pyx_L10:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1948
- * if ef_span[i][0] < f_i:
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1]) # <<<<<<<<<<<<<<
- * # Other aligned words extend span
- * else:
- */
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_INCREF(__pyx_v_new_min_bound);
- __pyx_t_8 = __pyx_v_new_min_bound;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_8, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_4 = __pyx_t_2;
- } else {
- __Pyx_INCREF(__pyx_t_8);
- __pyx_t_4 = __pyx_t_8;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_t_4;
- __Pyx_INCREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_v_new_min_bound);
- __pyx_v_new_min_bound = __pyx_t_2;
- __pyx_t_2 = 0;
- __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1945
- * # First aligned word creates span
- * if e_j == -1:
- * for i from new_e_i <= i <= new_e_j: # <<<<<<<<<<<<<<
- * if ef_span[i][0] < f_i:
- * return
- */
- __pyx_t_2 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L7;
- }
- /*else*/ {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1951
- * # Other aligned words extend span
- * else:
- * for i from new_e_i <= i < e_i: # <<<<<<<<<<<<<<
- * if ef_span[i][0] < f_i:
- * return
- */
- __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_new_e_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_e_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- for (__pyx_t_9 = __pyx_t_11; __pyx_t_9 < __pyx_t_10; __pyx_t_9++) {
- __pyx_t_2 = PyInt_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1952
- * else:
- * for i from new_e_i <= i < e_i:
- * if ef_span[i][0] < f_i: # <<<<<<<<<<<<<<
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1953
- * for i from new_e_i <= i < e_i:
- * if ef_span[i][0] < f_i:
- * return # <<<<<<<<<<<<<<
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- * for i from e_j < i <= new_e_j:
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L13;
- }
- __pyx_L13:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1954
- * if ef_span[i][0] < f_i:
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1]) # <<<<<<<<<<<<<<
- * for i from e_j < i <= new_e_j:
- * if ef_span[i][0] < f_i:
- */
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_INCREF(__pyx_v_new_min_bound);
- __pyx_t_2 = __pyx_v_new_min_bound;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_8 = __pyx_t_4;
- } else {
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_8 = __pyx_t_2;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_t_8;
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_v_new_min_bound);
- __pyx_v_new_min_bound = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1951
- * # Other aligned words extend span
- * else:
- * for i from new_e_i <= i < e_i: # <<<<<<<<<<<<<<
- * if ef_span[i][0] < f_i:
- * return
- */
- __pyx_t_4 = PyInt_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1955
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- * for i from e_j < i <= new_e_j: # <<<<<<<<<<<<<<
- * if ef_span[i][0] < f_i:
- * return
- */
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_e_j); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_new_e_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- for (__pyx_t_11 = __pyx_t_9+1; __pyx_t_11 <= __pyx_t_10; __pyx_t_11++) {
- __pyx_t_4 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1956
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- * for i from e_j < i <= new_e_j:
- * if ef_span[i][0] < f_i: # <<<<<<<<<<<<<<
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1957
- * for i from e_j < i <= new_e_j:
- * if ef_span[i][0] < f_i:
- * return # <<<<<<<<<<<<<<
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- * # Extract, extend with word (unless non-terminal open)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L16;
- }
- __pyx_L16:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1958
- * if ef_span[i][0] < f_i:
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1]) # <<<<<<<<<<<<<<
- * # Extract, extend with word (unless non-terminal open)
- * if not nt_open:
- */
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_INCREF(__pyx_v_new_min_bound);
- __pyx_t_4 = __pyx_v_new_min_bound;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
- __Pyx_INCREF(__pyx_t_8);
- __pyx_t_2 = __pyx_t_8;
- } else {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_2 = __pyx_t_4;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_t_2;
- __Pyx_INCREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_v_new_min_bound);
- __pyx_v_new_min_bound = __pyx_t_8;
- __pyx_t_8 = 0;
- __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1955
- * return
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- * for i from e_j < i <= new_e_j: # <<<<<<<<<<<<<<
- * if ef_span[i][0] < f_i:
- * return
- */
- __pyx_t_8 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_8;
- __pyx_t_8 = 0;
- }
- __pyx_L7:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1960
- * new_min_bound = max(new_min_bound, ef_span[i][1])
- * # Extract, extend with word (unless non-terminal open)
- * if not nt_open: # <<<<<<<<<<<<<<
- * nt_collision = False
- * for link in al[f_j]:
- */
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = ((!__pyx_t_6) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1961
- * # Extract, extend with word (unless non-terminal open)
- * if not nt_open:
- * nt_collision = False # <<<<<<<<<<<<<<
- * for link in al[f_j]:
- * if e_nt_cover[link]:
- */
- __pyx_v_nt_collision = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1962
- * if not nt_open:
- * nt_collision = False
- * for link in al[f_j]: # <<<<<<<<<<<<<<
- * if e_nt_cover[link]:
- * nt_collision = True
- */
- __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) {
- __pyx_t_2 = __pyx_t_8; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;
- __pyx_t_12 = NULL;
- } else {
- __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- for (;;) {
- if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_8 = __pyx_t_12(__pyx_t_2);
- if (unlikely(!__pyx_t_8)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- __Pyx_XDECREF(__pyx_v_link);
- __pyx_v_link = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1963
- * nt_collision = False
- * for link in al[f_j]:
- * if e_nt_cover[link]: # <<<<<<<<<<<<<<
- * nt_collision = True
- * # Non-terminal collisions block word extraction and extension, but
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover), __pyx_v_link); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1964
- * for link in al[f_j]:
- * if e_nt_cover[link]:
- * nt_collision = True # <<<<<<<<<<<<<<
- * # Non-terminal collisions block word extraction and extension, but
- * # may be okay for continuing non-terminals
- */
- __pyx_v_nt_collision = 1;
- goto __pyx_L20;
- }
- __pyx_L20:;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1967
- * # Non-terminal collisions block word extraction and extension, but
- * # may be okay for continuing non-terminals
- * if not nt_collision and wc < self.max_length: # <<<<<<<<<<<<<<
- * plus_links = []
- * for link in al[f_j]:
- */
- __pyx_t_3 = (!(__pyx_v_nt_collision != 0));
- if (__pyx_t_3) {
- __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_8 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_5 = __pyx_t_6;
- } else {
- __pyx_t_5 = __pyx_t_3;
- }
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1968
- * # may be okay for continuing non-terminals
- * if not nt_collision and wc < self.max_length:
- * plus_links = [] # <<<<<<<<<<<<<<
- * for link in al[f_j]:
- * plus_links.append((f_j, link))
- */
- __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_v_plus_links = ((PyObject*)__pyx_t_8);
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1969
- * if not nt_collision and wc < self.max_length:
- * plus_links = []
- * for link in al[f_j]: # <<<<<<<<<<<<<<
- * plus_links.append((f_j, link))
- * cover[link] += 1
- */
- __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) {
- __pyx_t_2 = __pyx_t_8; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;
- __pyx_t_12 = NULL;
- } else {
- __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- for (;;) {
- if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_8 = __pyx_t_12(__pyx_t_2);
- if (unlikely(!__pyx_t_8)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- __Pyx_XDECREF(__pyx_v_link);
- __pyx_v_link = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1970
- * plus_links = []
- * for link in al[f_j]:
- * plus_links.append((f_j, link)) # <<<<<<<<<<<<<<
- * cover[link] += 1
- * links.append(plus_links)
- */
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_f_j);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_f_j);
- __Pyx_GIVEREF(__pyx_v_f_j);
- __Pyx_INCREF(__pyx_v_link);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link);
- __Pyx_GIVEREF(__pyx_v_link);
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_plus_links, ((PyObject *)__pyx_t_8)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1971
- * for link in al[f_j]:
- * plus_links.append((f_j, link))
- * cover[link] += 1 # <<<<<<<<<<<<<<
- * links.append(plus_links)
- * if links and f_j >= new_min_bound:
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_cover) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __pyx_t_14 = __pyx_cur_scope->__pyx_v_cover;
- __Pyx_INCREF(__pyx_v_link);
- __pyx_t_8 = __pyx_v_link;
- if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_t_14), __pyx_t_8); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- if (PyObject_SetItem(((PyObject *)__pyx_t_14), __pyx_t_8, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1972
- * plus_links.append((f_j, link))
- * cover[link] += 1
- * links.append(plus_links) # <<<<<<<<<<<<<<
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- */
- __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_links, ((PyObject *)__pyx_v_plus_links)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1973
- * cover[link] += 1
- * links.append(plus_links)
- * if links and f_j >= new_min_bound: # <<<<<<<<<<<<<<
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- */
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_5) {
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __pyx_t_3;
- } else {
- __pyx_t_6 = __pyx_t_5;
- }
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1974
- * links.append(plus_links)
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links)) # <<<<<<<<<<<<<<
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- * links.pop()
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_rules) == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_f_words, 0, 0, &__pyx_v_f_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_e_words, 0, 0, &__pyx_v_new_e_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_f_i);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_f_i);
- __Pyx_GIVEREF(__pyx_v_f_i);
- __Pyx_INCREF(__pyx_v_new_e_i);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_new_e_i);
- __Pyx_GIVEREF(__pyx_v_new_e_i);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_nt);
- PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_nt);
- __Pyx_GIVEREF(__pyx_v_nt);
- __Pyx_INCREF(__pyx_v_links);
- PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_v_links);
- __Pyx_GIVEREF(__pyx_v_links);
- __pyx_t_1 = 0;
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_rules, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L24;
- }
- __pyx_L24:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1975
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False) # <<<<<<<<<<<<<<
- * links.pop()
- * for link in al[f_j]:
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_1 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_4, __pyx_v_new_e_i, __pyx_v_new_e_j, __pyx_v_new_min_bound, __pyx_t_8, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1976
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- * links.pop() # <<<<<<<<<<<<<<
- * for link in al[f_j]:
- * cover[link] -= 1
- */
- __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_v_links); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1977
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- * links.pop()
- * for link in al[f_j]: # <<<<<<<<<<<<<<
- * cover[link] -= 1
- * # Try to add a word to current non-terminal (if any), extract, extend
- */
- __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {
- __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;
- __pyx_t_12 = NULL;
- } else {
- __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (;;) {
- if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_12(__pyx_t_2);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_link);
- __pyx_v_link = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1978
- * links.pop()
- * for link in al[f_j]:
- * cover[link] -= 1 # <<<<<<<<<<<<<<
- * # Try to add a word to current non-terminal (if any), extract, extend
- * if nt and nt[-1][2] == f_j - 1:
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_cover) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __pyx_t_14 = __pyx_cur_scope->__pyx_v_cover;
- __Pyx_INCREF(__pyx_v_link);
- __pyx_t_1 = __pyx_v_link;
- if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_t_14), __pyx_t_1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- if (PyObject_SetItem(((PyObject *)__pyx_t_14), __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L21;
- }
- __pyx_L21:;
- goto __pyx_L17;
- }
- __pyx_L17:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1980
- * cover[link] -= 1
- * # Try to add a word to current non-terminal (if any), extract, extend
- * if nt and nt[-1][2] == f_j - 1: # <<<<<<<<<<<<<<
- * # Add to non-terminal, checking for collisions
- * old_last_nt = nt[-1][:]
- */
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_6) {
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = __pyx_t_5;
- } else {
- __pyx_t_3 = __pyx_t_6;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1982
- * if nt and nt[-1][2] == f_j - 1:
- * # Add to non-terminal, checking for collisions
- * old_last_nt = nt[-1][:] # <<<<<<<<<<<<<<
- * nt[-1][2] = f_j
- * if link_i < nt[-1][3]:
- */
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 0, NULL, NULL, &__pyx_k_slice_140, 0, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_old_last_nt = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1983
- * # Add to non-terminal, checking for collisions
- * old_last_nt = nt[-1][:]
- * nt[-1][2] = f_j # <<<<<<<<<<<<<<
- * if link_i < nt[-1][3]:
- * if not span_check(cover, link_i, nt[-1][3] - 1):
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (__Pyx_SetItemInt(__pyx_t_2, 2, __pyx_v_f_j, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1984
- * old_last_nt = nt[-1][:]
- * nt[-1][2] = f_j
- * if link_i < nt[-1][3]: # <<<<<<<<<<<<<<
- * if not span_check(cover, link_i, nt[-1][3] - 1):
- * nt[-1] = old_last_nt
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1985
- * nt[-1][2] = f_j
- * if link_i < nt[-1][3]:
- * if not span_check(cover, link_i, nt[-1][3] - 1): # <<<<<<<<<<<<<<
- * nt[-1] = old_last_nt
- * return
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_check); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = ((!__pyx_t_3) != 0);
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1986
- * if link_i < nt[-1][3]:
- * if not span_check(cover, link_i, nt[-1][3] - 1):
- * nt[-1] = old_last_nt # <<<<<<<<<<<<<<
- * return
- * span_inc(cover, link_i, nt[-1][3] - 1)
- */
- if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1987
- * if not span_check(cover, link_i, nt[-1][3] - 1):
- * nt[-1] = old_last_nt
- * return # <<<<<<<<<<<<<<
- * span_inc(cover, link_i, nt[-1][3] - 1)
- * span_inc(e_nt_cover, link_i, nt[-1][3] - 1)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L29;
- }
- __pyx_L29:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1988
- * nt[-1] = old_last_nt
- * return
- * span_inc(cover, link_i, nt[-1][3] - 1) # <<<<<<<<<<<<<<
- * span_inc(e_nt_cover, link_i, nt[-1][3] - 1)
- * nt[-1][3] = link_i
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1989
- * return
- * span_inc(cover, link_i, nt[-1][3] - 1)
- * span_inc(e_nt_cover, link_i, nt[-1][3] - 1) # <<<<<<<<<<<<<<
- * nt[-1][3] = link_i
- * if link_j > nt[-1][4]:
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1990
- * span_inc(cover, link_i, nt[-1][3] - 1)
- * span_inc(e_nt_cover, link_i, nt[-1][3] - 1)
- * nt[-1][3] = link_i # <<<<<<<<<<<<<<
- * if link_j > nt[-1][4]:
- * if not span_check(cover, nt[-1][4] + 1, link_j):
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (__Pyx_SetItemInt(__pyx_t_2, 3, __pyx_v_link_i, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L28;
- }
- __pyx_L28:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1991
- * span_inc(e_nt_cover, link_i, nt[-1][3] - 1)
- * nt[-1][3] = link_i
- * if link_j > nt[-1][4]: # <<<<<<<<<<<<<<
- * if not span_check(cover, nt[-1][4] + 1, link_j):
- * nt[-1] = old_last_nt
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1992
- * nt[-1][3] = link_i
- * if link_j > nt[-1][4]:
- * if not span_check(cover, nt[-1][4] + 1, link_j): # <<<<<<<<<<<<<<
- * nt[-1] = old_last_nt
- * return
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_check); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = ((!__pyx_t_6) != 0);
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1993
- * if link_j > nt[-1][4]:
- * if not span_check(cover, nt[-1][4] + 1, link_j):
- * nt[-1] = old_last_nt # <<<<<<<<<<<<<<
- * return
- * span_inc(cover, nt[-1][4] + 1, link_j)
- */
- if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1994
- * if not span_check(cover, nt[-1][4] + 1, link_j):
- * nt[-1] = old_last_nt
- * return # <<<<<<<<<<<<<<
- * span_inc(cover, nt[-1][4] + 1, link_j)
- * span_inc(e_nt_cover, nt[-1][4] + 1, link_j)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L31;
- }
- __pyx_L31:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1995
- * nt[-1] = old_last_nt
- * return
- * span_inc(cover, nt[-1][4] + 1, link_j) # <<<<<<<<<<<<<<
- * span_inc(e_nt_cover, nt[-1][4] + 1, link_j)
- * nt[-1][4] = link_j
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1996
- * return
- * span_inc(cover, nt[-1][4] + 1, link_j)
- * span_inc(e_nt_cover, nt[-1][4] + 1, link_j) # <<<<<<<<<<<<<<
- * nt[-1][4] = link_j
- * if links and f_j >= new_min_bound:
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1997
- * span_inc(cover, nt[-1][4] + 1, link_j)
- * span_inc(e_nt_cover, nt[-1][4] + 1, link_j)
- * nt[-1][4] = link_j # <<<<<<<<<<<<<<
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (__Pyx_SetItemInt(__pyx_t_2, 4, __pyx_v_link_j, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L30;
- }
- __pyx_L30:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1998
- * span_inc(e_nt_cover, nt[-1][4] + 1, link_j)
- * nt[-1][4] = link_j
- * if links and f_j >= new_min_bound: # <<<<<<<<<<<<<<
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)
- */
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_3) {
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __pyx_t_6;
- } else {
- __pyx_t_5 = __pyx_t_3;
- }
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1999
- * nt[-1][4] = link_j
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links)) # <<<<<<<<<<<<<<
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)
- * nt[-1] = old_last_nt
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_rules) == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_f_words, 0, 0, &__pyx_v_f_i, &__pyx_t_4, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_e_words, 0, 0, &__pyx_v_new_e_i, &__pyx_t_4, NULL, 0, 0, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_f_i);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i);
- __Pyx_GIVEREF(__pyx_v_f_i);
- __Pyx_INCREF(__pyx_v_new_e_i);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_new_e_i);
- __Pyx_GIVEREF(__pyx_v_new_e_i);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_nt);
- PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_nt);
- __Pyx_GIVEREF(__pyx_v_nt);
- __Pyx_INCREF(__pyx_v_links);
- PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_links);
- __Pyx_GIVEREF(__pyx_v_links);
- __pyx_t_1 = 0;
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_rules, __pyx_t_8); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L32;
- }
- __pyx_L32:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2000
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False) # <<<<<<<<<<<<<<
- * nt[-1] = old_last_nt
- * if link_i < nt[-1][3]:
- */
- __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_8, __pyx_v_new_e_i, __pyx_v_new_e_j, __pyx_v_new_min_bound, __pyx_v_wc, __pyx_v_links, __pyx_v_nt, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2001
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)
- * nt[-1] = old_last_nt # <<<<<<<<<<<<<<
- * if link_i < nt[-1][3]:
- * span_dec(cover, link_i, nt[-1][3] - 1)
- */
- if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2002
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)
- * nt[-1] = old_last_nt
- * if link_i < nt[-1][3]: # <<<<<<<<<<<<<<
- * span_dec(cover, link_i, nt[-1][3] - 1)
- * span_dec(e_nt_cover, link_i, nt[-1][3] - 1)
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2003
- * nt[-1] = old_last_nt
- * if link_i < nt[-1][3]:
- * span_dec(cover, link_i, nt[-1][3] - 1) # <<<<<<<<<<<<<<
- * span_dec(e_nt_cover, link_i, nt[-1][3] - 1)
- * if link_j > nt[-1][4]:
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Subtract(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2004
- * if link_i < nt[-1][3]:
- * span_dec(cover, link_i, nt[-1][3] - 1)
- * span_dec(e_nt_cover, link_i, nt[-1][3] - 1) # <<<<<<<<<<<<<<
- * if link_j > nt[-1][4]:
- * span_dec(cover, nt[-1][4] + 1, link_j)
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- goto __pyx_L33;
- }
- __pyx_L33:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2005
- * span_dec(cover, link_i, nt[-1][3] - 1)
- * span_dec(e_nt_cover, link_i, nt[-1][3] - 1)
- * if link_j > nt[-1][4]: # <<<<<<<<<<<<<<
- * span_dec(cover, nt[-1][4] + 1, link_j)
- * span_dec(e_nt_cover, nt[-1][4] + 1, link_j)
- */
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (__pyx_t_5) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2006
- * span_dec(e_nt_cover, link_i, nt[-1][3] - 1)
- * if link_j > nt[-1][4]:
- * span_dec(cover, nt[-1][4] + 1, link_j) # <<<<<<<<<<<<<<
- * span_dec(e_nt_cover, nt[-1][4] + 1, link_j)
- * # Try to start a new non-terminal, extract, extend
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2007
- * if link_j > nt[-1][4]:
- * span_dec(cover, nt[-1][4] + 1, link_j)
- * span_dec(e_nt_cover, nt[-1][4] + 1, link_j) # <<<<<<<<<<<<<<
- * # Try to start a new non-terminal, extract, extend
- * if (not nt or f_j - nt[-1][2] > 1) and wc < self.max_length and len(nt) < self.max_nonterminals:
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L34;
- }
- __pyx_L34:;
- goto __pyx_L27;
- }
- __pyx_L27:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2009
- * span_dec(e_nt_cover, nt[-1][4] + 1, link_j)
- * # Try to start a new non-terminal, extract, extend
- * if (not nt or f_j - nt[-1][2] > 1) and wc < self.max_length and len(nt) < self.max_nonterminals: # <<<<<<<<<<<<<<
- * # Check for collisions
- * if not span_check(cover, link_i, link_j):
- */
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = (!__pyx_t_5);
- if (!__pyx_t_3) {
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Subtract(__pyx_v_f_j, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_6 = __pyx_t_5;
- } else {
- __pyx_t_6 = __pyx_t_3;
- }
- if (__pyx_t_6) {
- __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_3) {
- __pyx_t_7 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = (__pyx_t_7 < __pyx_cur_scope->__pyx_v_self->max_nonterminals);
- __pyx_t_15 = __pyx_t_5;
- } else {
- __pyx_t_15 = __pyx_t_3;
- }
- __pyx_t_3 = __pyx_t_15;
- } else {
- __pyx_t_3 = __pyx_t_6;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2011
- * if (not nt or f_j - nt[-1][2] > 1) and wc < self.max_length and len(nt) < self.max_nonterminals:
- * # Check for collisions
- * if not span_check(cover, link_i, link_j): # <<<<<<<<<<<<<<
- * return
- * span_inc(cover, link_i, link_j)
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = ((!__pyx_t_3) != 0);
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2012
- * # Check for collisions
- * if not span_check(cover, link_i, link_j):
- * return # <<<<<<<<<<<<<<
- * span_inc(cover, link_i, link_j)
- * span_inc(e_nt_cover, link_i, link_j)
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L36;
- }
- __pyx_L36:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2013
- * if not span_check(cover, link_i, link_j):
- * return
- * span_inc(cover, link_i, link_j) # <<<<<<<<<<<<<<
- * span_inc(e_nt_cover, link_i, link_j)
- * nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2014
- * return
- * span_inc(cover, link_i, link_j)
- * span_inc(e_nt_cover, link_i, link_j) # <<<<<<<<<<<<<<
- * nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])
- * # Require at least one word in phrase
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2015
- * span_inc(cover, link_i, link_j)
- * span_inc(e_nt_cover, link_i, link_j)
- * nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j]) # <<<<<<<<<<<<<<
- * # Require at least one word in phrase
- * if links and f_j >= new_min_bound:
- */
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_6) {
- __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = __pyx_t_8;
- __pyx_t_8 = 0;
- } else {
- __Pyx_INCREF(__pyx_int_1);
- __pyx_t_2 = __pyx_int_1;
- }
- __pyx_t_8 = PyList_New(5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_f_j);
- PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_f_j);
- __Pyx_GIVEREF(__pyx_v_f_j);
- __Pyx_INCREF(__pyx_v_f_j);
- PyList_SET_ITEM(__pyx_t_8, 2, __pyx_v_f_j);
- __Pyx_GIVEREF(__pyx_v_f_j);
- __Pyx_INCREF(__pyx_v_link_i);
- PyList_SET_ITEM(__pyx_t_8, 3, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- __Pyx_INCREF(__pyx_v_link_j);
- PyList_SET_ITEM(__pyx_t_8, 4, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_nt, ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2017
- * nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])
- * # Require at least one word in phrase
- * if links and f_j >= new_min_bound: # <<<<<<<<<<<<<<
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- */
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_6) {
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_15 = __pyx_t_3;
- } else {
- __pyx_t_15 = __pyx_t_6;
- }
- if (__pyx_t_15) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2018
- * # Require at least one word in phrase
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links)) # <<<<<<<<<<<<<<
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- * nt.pop()
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_rules) == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_f_words, 0, 0, &__pyx_v_f_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_e_words, 0, 0, &__pyx_v_new_e_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_f_i);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_f_i);
- __Pyx_GIVEREF(__pyx_v_f_i);
- __Pyx_INCREF(__pyx_v_new_e_i);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_new_e_i);
- __Pyx_GIVEREF(__pyx_v_new_e_i);
- PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_nt);
- PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_nt);
- __Pyx_GIVEREF(__pyx_v_nt);
- __Pyx_INCREF(__pyx_v_links);
- PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_v_links);
- __Pyx_GIVEREF(__pyx_v_links);
- __pyx_t_4 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_rules, __pyx_t_1); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L37;
- }
- __pyx_L37:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2019
- * if links and f_j >= new_min_bound:
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False) # <<<<<<<<<<<<<<
- * nt.pop()
- * span_dec(cover, link_i, link_j)
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_new_e_i, __pyx_v_new_e_j, __pyx_v_new_min_bound, __pyx_t_8, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2020
- * rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- * nt.pop() # <<<<<<<<<<<<<<
- * span_dec(cover, link_i, link_j)
- * span_dec(e_nt_cover, link_i, link_j)
- */
- __pyx_t_4 = __Pyx_PyObject_Pop(__pyx_v_nt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2021
- * extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- * nt.pop()
- * span_dec(cover, link_i, link_j) # <<<<<<<<<<<<<<
- * span_dec(e_nt_cover, link_i, link_j)
- *
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2022
- * nt.pop()
- * span_dec(cover, link_i, link_j)
- * span_dec(e_nt_cover, link_i, link_j) # <<<<<<<<<<<<<<
- *
- * # Try to extract phrases from every f index
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));
- __Pyx_INCREF(__pyx_v_link_i);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);
- __Pyx_GIVEREF(__pyx_v_link_i);
- __Pyx_INCREF(__pyx_v_link_j);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);
- __Pyx_GIVEREF(__pyx_v_link_j);
- __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L35;
- }
- __pyx_L35:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(((PyObject *)__pyx_t_14));
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.add_instance.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_link_i);
- __Pyx_XDECREF(__pyx_v_link_j);
- __Pyx_XDECREF(__pyx_v_new_e_i);
- __Pyx_XDECREF(__pyx_v_new_e_j);
- __Pyx_XDECREF(__pyx_v_new_min_bound);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_link);
- __Pyx_XDECREF(__pyx_v_plus_links);
- __Pyx_XDECREF(__pyx_v_old_last_nt);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1885
- * # Aggregate stats from a training instance
- * # (Extract rules, update counts)
- * def add_instance(self, f_words, e_words, alignment): # <<<<<<<<<<<<<<
- *
- * self.online = True
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_words, PyObject *__pyx_v_e_words, PyObject *__pyx_v_alignment) {
- struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *__pyx_cur_scope;
- PyObject *__pyx_v_e_len = NULL;
- PyObject *__pyx_v_f = NULL;
- PyObject *__pyx_v_e = NULL;
- CYTHON_UNUSED PyObject *__pyx_v_f_nt_cover = NULL;
- long __pyx_v_f_i;
- CYTHON_UNUSED PyObject *__pyx_v_lex_i = NULL;
- CYTHON_UNUSED PyObject *__pyx_v_lex_j = NULL;
- PyObject *__pyx_v_rule = NULL;
- PyObject *__pyx_v_f_ph = NULL;
- PyObject *__pyx_v_e_ph = NULL;
- PyObject *__pyx_v_e_w = NULL;
- PyObject *__pyx_v_f_w = NULL;
- CYTHON_UNUSED PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *(*__pyx_t_5)(PyObject *);
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *(*__pyx_t_8)(PyObject *);
- int __pyx_t_9;
- long __pyx_t_10;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
- PyObject *__pyx_t_13 = NULL;
- PyObject *__pyx_t_14 = NULL;
- Py_ssize_t __pyx_t_15;
- PyObject *(*__pyx_t_16)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("add_instance", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)__pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance(__pyx_ptype_3_sa___pyx_scope_struct_21_add_instance, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __pyx_cur_scope->__pyx_v_f_words = __pyx_v_f_words;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_words);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_words);
- __pyx_cur_scope->__pyx_v_e_words = __pyx_v_e_words;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_words);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_words);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1887
- * def add_instance(self, f_words, e_words, alignment):
- *
- * self.online = True # <<<<<<<<<<<<<<
- *
- * # Rules extracted from this instance
- */
- __pyx_cur_scope->__pyx_v_self->online = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1894
- * # span more than once.
- * # (f, e, al, lex_f_i, lex_f_j)
- * rules = set() # <<<<<<<<<<<<<<
- *
- * f_len = len(f_words)
- */
- __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_rules = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1896
- * rules = set()
- *
- * f_len = len(f_words) # <<<<<<<<<<<<<<
- * e_len = len(e_words)
- *
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_f_words;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_f_len = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1897
- *
- * f_len = len(f_words)
- * e_len = len(e_words) # <<<<<<<<<<<<<<
- *
- * # Pre-compute alignment info
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_e_words;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_e_len = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1900
- *
- * # Pre-compute alignment info
- * al = [[] for i in range(f_len)] # <<<<<<<<<<<<<<
- * fe_span = [[e_len + 1, -1] for i in range(f_len)]
- * ef_span = [[f_len + 1, -1] for i in range(e_len)]
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_len);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f_len);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_len);
- __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
- __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_al = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1901
- * # Pre-compute alignment info
- * al = [[] for i in range(f_len)]
- * fe_span = [[e_len + 1, -1] for i in range(f_len)] # <<<<<<<<<<<<<<
- * ef_span = [[f_len + 1, -1] for i in range(e_len)]
- * for f, e in alignment:
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_len);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f_len);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_len);
- __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
- __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Add(__pyx_v_e_len, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_int_neg_1);
- PyList_SET_ITEM(__pyx_t_6, 1, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_int_neg_1);
- __pyx_t_4 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_fe_span = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1902
- * al = [[] for i in range(f_len)]
- * fe_span = [[e_len + 1, -1] for i in range(f_len)]
- * ef_span = [[f_len + 1, -1] for i in range(e_len)] # <<<<<<<<<<<<<<
- * for f, e in alignment:
- * al[f].append(e)
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_e_len);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_e_len);
- __Pyx_GIVEREF(__pyx_v_e_len);
- __pyx_t_6 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
- __pyx_t_3 = __pyx_t_6; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_6 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_6)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_6);
- }
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_6;
- __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_int_neg_1);
- PyList_SET_ITEM(__pyx_t_4, 1, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_int_neg_1);
- __pyx_t_6 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_ef_span = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1903
- * fe_span = [[e_len + 1, -1] for i in range(f_len)]
- * ef_span = [[f_len + 1, -1] for i in range(e_len)]
- * for f, e in alignment: # <<<<<<<<<<<<<<
- * al[f].append(e)
- * fe_span[f][0] = min(fe_span[f][0], e)
- */
- if (PyList_CheckExact(__pyx_v_alignment) || PyTuple_CheckExact(__pyx_v_alignment)) {
- __pyx_t_1 = __pyx_v_alignment; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_alignment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_3 = __pyx_t_5(__pyx_t_1);
- if (unlikely(!__pyx_t_3)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_3);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_6);
- #else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = NULL;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L12_unpacking_done;
- __pyx_L11_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L12_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_f);
- __pyx_v_f = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_v_e);
- __pyx_v_e = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1904
- * ef_span = [[f_len + 1, -1] for i in range(e_len)]
- * for f, e in alignment:
- * al[f].append(e) # <<<<<<<<<<<<<<
- * fe_span[f][0] = min(fe_span[f][0], e)
- * fe_span[f][1] = max(fe_span[f][1], e)
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_v_e); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1905
- * for f, e in alignment:
- * al[f].append(e)
- * fe_span[f][0] = min(fe_span[f][0], e) # <<<<<<<<<<<<<<
- * fe_span[f][1] = max(fe_span[f][1], e)
- * ef_span[e][0] = min(ef_span[e][0], f)
- */
- __Pyx_INCREF(__pyx_v_e);
- __pyx_t_6 = __pyx_v_e;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_9) {
- __Pyx_INCREF(__pyx_t_6);
- __pyx_t_3 = __pyx_t_6;
- } else {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_3 = __pyx_t_4;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_t_3;
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_SetItemInt(__pyx_t_3, 0, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1906
- * al[f].append(e)
- * fe_span[f][0] = min(fe_span[f][0], e)
- * fe_span[f][1] = max(fe_span[f][1], e) # <<<<<<<<<<<<<<
- * ef_span[e][0] = min(ef_span[e][0], f)
- * ef_span[e][1] = max(ef_span[e][1], f)
- */
- __Pyx_INCREF(__pyx_v_e);
- __pyx_t_6 = __pyx_v_e;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_9) {
- __Pyx_INCREF(__pyx_t_6);
- __pyx_t_3 = __pyx_t_6;
- } else {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_3 = __pyx_t_4;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_t_3;
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_SetItemInt(__pyx_t_3, 1, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1907
- * fe_span[f][0] = min(fe_span[f][0], e)
- * fe_span[f][1] = max(fe_span[f][1], e)
- * ef_span[e][0] = min(ef_span[e][0], f) # <<<<<<<<<<<<<<
- * ef_span[e][1] = max(ef_span[e][1], f)
- *
- */
- __Pyx_INCREF(__pyx_v_f);
- __pyx_t_6 = __pyx_v_f;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_9) {
- __Pyx_INCREF(__pyx_t_6);
- __pyx_t_3 = __pyx_t_6;
- } else {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_3 = __pyx_t_4;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_t_3;
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_SetItemInt(__pyx_t_3, 0, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1908
- * fe_span[f][1] = max(fe_span[f][1], e)
- * ef_span[e][0] = min(ef_span[e][0], f)
- * ef_span[e][1] = max(ef_span[e][1], f) # <<<<<<<<<<<<<<
- *
- * # Target side word coverage
- */
- __Pyx_INCREF(__pyx_v_f);
- __pyx_t_6 = __pyx_v_f;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_9) {
- __Pyx_INCREF(__pyx_t_6);
- __pyx_t_3 = __pyx_t_6;
- } else {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_3 = __pyx_t_4;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_t_3;
- __Pyx_INCREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_SetItemInt(__pyx_t_3, 1, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1911
- *
- * # Target side word coverage
- * cover = [0] * e_len # <<<<<<<<<<<<<<
- * # Non-terminal coverage
- * f_nt_cover = [0] * f_len
- */
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_int_0);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_e_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_temp);
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_1 = __pyx_temp;
- }
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_cover = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1913
- * cover = [0] * e_len
- * # Non-terminal coverage
- * f_nt_cover = [0] * f_len # <<<<<<<<<<<<<<
- * e_nt_cover = [0] * e_len
- *
- */
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_int_0);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_cur_scope->__pyx_v_f_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_temp);
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_1 = __pyx_temp;
- }
- __pyx_v_f_nt_cover = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1914
- * # Non-terminal coverage
- * f_nt_cover = [0] * f_len
- * e_nt_cover = [0] * e_len # <<<<<<<<<<<<<<
- *
- * # Extract all possible hierarchical phrases starting at a source index
- */
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_int_0);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_e_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_temp);
- __Pyx_DECREF(__pyx_t_1);
- __pyx_t_1 = __pyx_temp;
- }
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_e_nt_cover = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1919
- * # f_ i and j are current, e_ i and j are previous
- * # We care _considering_ f_j, so it is not yet in counts
- * def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open): # <<<<<<<<<<<<<<
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- */
- __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_12add_instance_1extract, 0, __pyx_n_s_144, ((PyObject*)__pyx_cur_scope), __pyx_n_s___sa, ((PyObject *)__pyx_k_codeobj_142)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_extract = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2025
- *
- * # Try to extract phrases from every f index
- * for f_i from 0 <= f_i < f_len: # <<<<<<<<<<<<<<
- * # Skip if phrases won't be tight on left side
- * if not al[f_i]:
- */
- __pyx_t_10 = __Pyx_PyInt_AsLong(__pyx_cur_scope->__pyx_v_f_len); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- for (__pyx_v_f_i = 0; __pyx_v_f_i < __pyx_t_10; __pyx_v_f_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2027
- * for f_i from 0 <= f_i < f_len:
- * # Skip if phrases won't be tight on left side
- * if not al[f_i]: # <<<<<<<<<<<<<<
- * continue
- * extract(f_i, f_i, f_len + 1, -1, f_i, 0, [], [], False)
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_i, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_11 = ((!__pyx_t_9) != 0);
- if (__pyx_t_11) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2028
- * # Skip if phrases won't be tight on left side
- * if not al[f_i]:
- * continue # <<<<<<<<<<<<<<
- * extract(f_i, f_i, f_len + 1, -1, f_i, 0, [], [], False)
- *
- */
- goto __pyx_L13_continue;
- goto __pyx_L15;
- }
- __pyx_L15:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2029
- * if not al[f_i]:
- * continue
- * extract(f_i, f_i, f_len + 1, -1, f_i, 0, [], [], False) # <<<<<<<<<<<<<<
- *
- * # Update possible phrases (samples)
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_13 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_14 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_t_1, __pyx_t_6, __pyx_t_3, __pyx_int_neg_1, __pyx_t_4, __pyx_int_0, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_12), __pyx_t_13); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_L13_continue:;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2034
- * # This could be more efficiently integrated with extraction
- * # at the cost of readability
- * for f, lex_i, lex_j in self.get_f_phrases(f_words): # <<<<<<<<<<<<<<
- * self.samples_f[f] += 1
- *
- */
- __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_f_phrases); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_words);
- PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_cur_scope->__pyx_v_f_words);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_words);
- __pyx_t_12 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- if (PyList_CheckExact(__pyx_t_12) || PyTuple_CheckExact(__pyx_t_12)) {
- __pyx_t_13 = __pyx_t_12; __Pyx_INCREF(__pyx_t_13); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_13)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_13)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_12 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_12 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_13)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_13)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_12 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_12 = __pyx_t_5(__pyx_t_13);
- if (unlikely(!__pyx_t_12)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_12);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {
- PyObject* sequence = __pyx_t_12;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_14 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_4 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_14);
- __Pyx_INCREF(__pyx_t_7);
- __Pyx_INCREF(__pyx_t_4);
- #else
- __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- #endif
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext;
- index = 0; __pyx_t_14 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_14)) goto __pyx_L18_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_14);
- index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L18_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_7);
- index = 2; __pyx_t_4 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L18_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = NULL;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L19_unpacking_done;
- __pyx_L18_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_8 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L19_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_f);
- __pyx_v_f = __pyx_t_14;
- __pyx_t_14 = 0;
- __Pyx_XDECREF(__pyx_v_lex_i);
- __pyx_v_lex_i = __pyx_t_7;
- __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_v_lex_j);
- __pyx_v_lex_j = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2035
- * # at the cost of readability
- * for f, lex_i, lex_j in self.get_f_phrases(f_words):
- * self.samples_f[f] += 1 # <<<<<<<<<<<<<<
- *
- * # Update phrase counts
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->samples_f);
- __pyx_t_12 = __pyx_cur_scope->__pyx_v_self->samples_f;
- __Pyx_INCREF(__pyx_v_f);
- __pyx_t_4 = __pyx_v_f;
- __pyx_t_7 = PyObject_GetItem(__pyx_t_12, __pyx_t_4); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_int_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyObject_SetItem(__pyx_t_12, __pyx_t_4, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2038
- *
- * # Update phrase counts
- * for rule in rules: # <<<<<<<<<<<<<<
- * (f_ph, e_ph, al) = rule[:3]
- * self.phrases_f[f_ph] += 1
- */
- __pyx_t_13 = PyObject_GetIter(((PyObject *)__pyx_cur_scope->__pyx_v_rules)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;
- for (;;) {
- {
- __pyx_t_12 = __pyx_t_5(__pyx_t_13);
- if (unlikely(!__pyx_t_12)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_12);
- }
- __Pyx_XDECREF(__pyx_v_rule);
- __pyx_v_rule = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2039
- * # Update phrase counts
- * for rule in rules:
- * (f_ph, e_ph, al) = rule[:3] # <<<<<<<<<<<<<<
- * self.phrases_f[f_ph] += 1
- * self.phrases_e[e_ph] += 1
- */
- __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_v_rule, 0, 3, NULL, NULL, &__pyx_k_slice_145, 0, 1, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {
- PyObject* sequence = __pyx_t_12;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 3)) {
- if (size > 3) __Pyx_RaiseTooManyValuesError(3);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_14 = PyTuple_GET_ITEM(sequence, 1);
- __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_14 = PyList_GET_ITEM(sequence, 1);
- __pyx_t_7 = PyList_GET_ITEM(sequence, 2);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_14);
- __Pyx_INCREF(__pyx_t_7);
- #else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- #endif
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L22_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_14 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_14)) goto __pyx_L22_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_14);
- index = 2; __pyx_t_7 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L22_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = NULL;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- goto __pyx_L23_unpacking_done;
- __pyx_L22_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_8 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L23_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_f_ph);
- __pyx_v_f_ph = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_v_e_ph);
- __pyx_v_e_ph = __pyx_t_14;
- __pyx_t_14 = 0;
- __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_al);
- __Pyx_DECREF(__pyx_cur_scope->__pyx_v_al);
- __Pyx_GIVEREF(__pyx_t_7);
- __pyx_cur_scope->__pyx_v_al = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2040
- * for rule in rules:
- * (f_ph, e_ph, al) = rule[:3]
- * self.phrases_f[f_ph] += 1 # <<<<<<<<<<<<<<
- * self.phrases_e[e_ph] += 1
- * self.phrases_fe[f_ph][e_ph] += 1
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->phrases_f);
- __pyx_t_12 = __pyx_cur_scope->__pyx_v_self->phrases_f;
- __Pyx_INCREF(__pyx_v_f_ph);
- __pyx_t_7 = __pyx_v_f_ph;
- __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2041
- * (f_ph, e_ph, al) = rule[:3]
- * self.phrases_f[f_ph] += 1
- * self.phrases_e[e_ph] += 1 # <<<<<<<<<<<<<<
- * self.phrases_fe[f_ph][e_ph] += 1
- * if not self.phrases_al[f_ph][e_ph]:
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->phrases_e);
- __pyx_t_12 = __pyx_cur_scope->__pyx_v_self->phrases_e;
- __Pyx_INCREF(__pyx_v_e_ph);
- __pyx_t_7 = __pyx_v_e_ph;
- __pyx_t_4 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2042
- * self.phrases_f[f_ph] += 1
- * self.phrases_e[e_ph] += 1
- * self.phrases_fe[f_ph][e_ph] += 1 # <<<<<<<<<<<<<<
- * if not self.phrases_al[f_ph][e_ph]:
- * self.phrases_al[f_ph][e_ph] = al
- */
- __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_v_f_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_v_e_ph);
- __pyx_t_7 = __pyx_v_e_ph;
- __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2043
- * self.phrases_e[e_ph] += 1
- * self.phrases_fe[f_ph][e_ph] += 1
- * if not self.phrases_al[f_ph][e_ph]: # <<<<<<<<<<<<<<
- * self.phrases_al[f_ph][e_ph] = al
- *
- */
- __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_7 = PyObject_GetItem(__pyx_t_12, __pyx_v_e_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_9 = ((!__pyx_t_11) != 0);
- if (__pyx_t_9) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2044
- * self.phrases_fe[f_ph][e_ph] += 1
- * if not self.phrases_al[f_ph][e_ph]:
- * self.phrases_al[f_ph][e_ph] = al # <<<<<<<<<<<<<<
- *
- * # Update Bilexical counts
- */
- __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- if (PyObject_SetItem(__pyx_t_7, __pyx_v_e_ph, __pyx_cur_scope->__pyx_v_al) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L24;
- }
- __pyx_L24:;
- }
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2047
- *
- * # Update Bilexical counts
- * for e_w in e_words: # <<<<<<<<<<<<<<
- * self.bilex_e[e_w] += 1
- * for f_w in f_words:
- */
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_e_words) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_e_words)) {
- __pyx_t_13 = __pyx_cur_scope->__pyx_v_e_words; __Pyx_INCREF(__pyx_t_13); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_13)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_13)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_13)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_13)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_7 = __pyx_t_5(__pyx_t_13);
- if (unlikely(!__pyx_t_7)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_7);
- }
- __Pyx_XDECREF(__pyx_v_e_w);
- __pyx_v_e_w = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2048
- * # Update Bilexical counts
- * for e_w in e_words:
- * self.bilex_e[e_w] += 1 # <<<<<<<<<<<<<<
- * for f_w in f_words:
- * self.bilex_f[f_w] += 1
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->bilex_e);
- __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->bilex_e;
- __Pyx_INCREF(__pyx_v_e_w);
- __pyx_t_12 = __pyx_v_e_w;
- __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2049
- * for e_w in e_words:
- * self.bilex_e[e_w] += 1
- * for f_w in f_words: # <<<<<<<<<<<<<<
- * self.bilex_f[f_w] += 1
- * for e_w in e_words:
- */
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_f_words) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_f_words)) {
- __pyx_t_13 = __pyx_cur_scope->__pyx_v_f_words; __Pyx_INCREF(__pyx_t_13); __pyx_t_2 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_f_words); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_13);
- __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_13)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_13)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_13)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_13)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_7 = __pyx_t_5(__pyx_t_13);
- if (unlikely(!__pyx_t_7)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_7);
- }
- __Pyx_XDECREF(__pyx_v_f_w);
- __pyx_v_f_w = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2050
- * self.bilex_e[e_w] += 1
- * for f_w in f_words:
- * self.bilex_f[f_w] += 1 # <<<<<<<<<<<<<<
- * for e_w in e_words:
- * self.bilex_fe[f_w][e_w] += 1
- */
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->bilex_f);
- __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->bilex_f;
- __Pyx_INCREF(__pyx_v_f_w);
- __pyx_t_12 = __pyx_v_f_w;
- __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2051
- * for f_w in f_words:
- * self.bilex_f[f_w] += 1
- * for e_w in e_words: # <<<<<<<<<<<<<<
- * self.bilex_fe[f_w][e_w] += 1
- *
- */
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_e_words) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_e_words)) {
- __pyx_t_7 = __pyx_cur_scope->__pyx_v_e_words; __Pyx_INCREF(__pyx_t_7); __pyx_t_15 = 0;
- __pyx_t_16 = NULL;
- } else {
- __pyx_t_15 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_16 = Py_TYPE(__pyx_t_7)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_7)) {
- if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_7)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_12 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_12); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_7)) {
- if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_12); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_12 = __pyx_t_16(__pyx_t_7);
- if (unlikely(!__pyx_t_12)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_12);
- }
- __Pyx_XDECREF(__pyx_v_e_w);
- __pyx_v_e_w = __pyx_t_12;
- __pyx_t_12 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2052
- * self.bilex_f[f_w] += 1
- * for e_w in e_words:
- * self.bilex_fe[f_w][e_w] += 1 # <<<<<<<<<<<<<<
- *
- * # Create a rule from source, target, non-terminals, and alignments
- */
- __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->bilex_fe, __pyx_v_f_w); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_INCREF(__pyx_v_e_w);
- __pyx_t_4 = __pyx_v_e_w;
- __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_4); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_14);
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (PyObject_SetItem(__pyx_t_12, __pyx_t_4, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_XDECREF(__pyx_t_13);
- __Pyx_XDECREF(__pyx_t_14);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.add_instance", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_e_len);
- __Pyx_XDECREF(__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_e);
- __Pyx_XDECREF(__pyx_v_f_nt_cover);
- __Pyx_XDECREF(__pyx_v_lex_i);
- __Pyx_XDECREF(__pyx_v_lex_j);
- __Pyx_XDECREF(__pyx_v_rule);
- __Pyx_XDECREF(__pyx_v_f_ph);
- __Pyx_XDECREF(__pyx_v_e_ph);
- __Pyx_XDECREF(__pyx_v_e_w);
- __Pyx_XDECREF(__pyx_v_f_w);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_f_i = 0;
- PyObject *__pyx_v_e_i = 0;
- PyObject *__pyx_v_f_span = 0;
- PyObject *__pyx_v_e_span = 0;
- PyObject *__pyx_v_nt = 0;
- PyObject *__pyx_v_al = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("form_rule (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__e_i,&__pyx_n_s__f_span,&__pyx_n_s__e_span,&__pyx_n_s__nt,&__pyx_n_s__al,0};
- PyObject* values[6] = {0,0,0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_i)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_span)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_span)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 4:
- if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 5:
- if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__al)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "form_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- }
- __pyx_v_f_i = values[0];
- __pyx_v_e_i = values[1];
- __pyx_v_f_span = values[2];
- __pyx_v_e_span = values[3];
- __pyx_v_nt = values[4];
- __pyx_v_al = values[5];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_f_i, __pyx_v_e_i, __pyx_v_f_span, __pyx_v_e_span, __pyx_v_nt, __pyx_v_al);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7 = {__Pyx_NAMESTR("lambda7"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_x = 0;
- PyObject *__pyx_v_y = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda7 (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda7") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_x = values[0];
- __pyx_v_y = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule.lambda7", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_lambda_funcdef_lambda7(__pyx_self, __pyx_v_x, __pyx_v_y);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2058
- *
- * # Substitute in non-terminals
- * nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3])) # <<<<<<<<<<<<<<
- * f_sym = list(f_span[:])
- * off = f_i
- */
-
-static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda7", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule.lambda7", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8 = {__Pyx_NAMESTR("lambda8"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_x = 0;
- PyObject *__pyx_v_y = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("lambda8 (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda8") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_x = values[0];
- __pyx_v_y = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule.lambda8", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_lambda_funcdef_lambda8(__pyx_self, __pyx_v_x, __pyx_v_y);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2082
- * # Adjusting alignment links takes some doing
- * links = [list(link) for sub in al for link in sub]
- * links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1])) # <<<<<<<<<<<<<<
- * links_len = len(links)
- * nt_len = len(nt)
- */
-
-static PyObject *__pyx_lambda_funcdef_lambda8(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("lambda8", 0);
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule.lambda8", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2116
- * f = Phrase(f_sym)
- * e = Phrase(e_sym)
- * a = tuple(self.alignment.link(i, j) for i, j in links) # <<<<<<<<<<<<<<
- * return (f, e, a, lex_f_i, lex_f_j)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_9form_rule_2genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_23_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *(*__pyx_t_7)(PyObject *);
- int __pyx_t_8;
- int __pyx_t_9;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L8_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links)) { __Pyx_RaiseClosureNameError("links"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links) == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- for (;;) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
- PyObject* sequence = __pyx_t_3;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- #else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- #endif
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = NULL;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- goto __pyx_L7_unpacking_done;
- __pyx_L6_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L7_unpacking_done:;
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_i);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_i = __pyx_t_4;
- __pyx_t_4 = 0;
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_j);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_j);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_cur_scope->__pyx_v_j = __pyx_t_5;
- __pyx_t_5 = 0;
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_i); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_j); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment->__pyx_vtab)->link(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment, __pyx_t_8, __pyx_t_9)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L8_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2055
- *
- * # Create a rule from source, target, non-terminals, and alignments
- * def form_rule(self, f_i, e_i, f_span, e_span, nt, al): # <<<<<<<<<<<<<<
- *
- * # Substitute in non-terminals
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_e_i, PyObject *__pyx_v_f_span, PyObject *__pyx_v_e_span, PyObject *__pyx_v_nt, PyObject *__pyx_v_al) {
- struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *__pyx_cur_scope;
- PyObject *__pyx_v_nt_inv = NULL;
- PyObject *__pyx_v_f_sym = NULL;
- PyObject *__pyx_v_off = NULL;
- PyObject *__pyx_v_next_nt = NULL;
- PyObject *__pyx_v_nt_len = NULL;
- PyObject *__pyx_v_i = NULL;
- PyObject *__pyx_v_e_sym = NULL;
- PyObject *__pyx_v_links_inv = NULL;
- PyObject *__pyx_v_links_len = NULL;
- PyObject *__pyx_v_nt_i = NULL;
- PyObject *__pyx_v_lex_f_i = NULL;
- PyObject *__pyx_v_lex_f_j = NULL;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_f = NULL;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_e = NULL;
- PyObject *__pyx_v_a = NULL;
- PyObject *__pyx_v_sub = NULL;
- PyObject *__pyx_v_link = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- Py_ssize_t __pyx_t_4;
- PyObject *(*__pyx_t_5)(PyObject *);
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- int __pyx_t_9;
- int __pyx_t_10;
- PyObject *(*__pyx_t_11)(PyObject *);
- PyObject *__pyx_t_12 = NULL;
- int __pyx_t_13;
- int __pyx_t_14;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("form_rule", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)__pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule(__pyx_ptype_3_sa___pyx_scope_struct_22_form_rule, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2058
- *
- * # Substitute in non-terminals
- * nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3])) # <<<<<<<<<<<<<<
- * f_sym = list(f_span[:])
- * off = f_i
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_nt);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_nt);
- __Pyx_GIVEREF(__pyx_v_nt);
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7, 0, __pyx_n_s_146, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_v_nt_inv = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2059
- * # Substitute in non-terminals
- * nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))
- * f_sym = list(f_span[:]) # <<<<<<<<<<<<<<
- * off = f_i
- * for next_nt in nt:
- */
- __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_f_span, 0, 0, NULL, NULL, &__pyx_k_slice_147, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_v_f_sym = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2060
- * nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))
- * f_sym = list(f_span[:])
- * off = f_i # <<<<<<<<<<<<<<
- * for next_nt in nt:
- * nt_len = (next_nt[2] - next_nt[1]) + 1
- */
- __Pyx_INCREF(__pyx_v_f_i);
- __pyx_v_off = __pyx_v_f_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2061
- * f_sym = list(f_span[:])
- * off = f_i
- * for next_nt in nt: # <<<<<<<<<<<<<<
- * nt_len = (next_nt[2] - next_nt[1]) + 1
- * i = 0
- */
- if (PyList_CheckExact(__pyx_v_nt) || PyTuple_CheckExact(__pyx_v_nt)) {
- __pyx_t_3 = __pyx_v_nt; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {
- if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {
- if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_next_nt);
- __pyx_v_next_nt = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2062
- * off = f_i
- * for next_nt in nt:
- * nt_len = (next_nt[2] - next_nt[1]) + 1 # <<<<<<<<<<<<<<
- * i = 0
- * while i < nt_len:
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF(__pyx_v_nt_len);
- __pyx_v_nt_len = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2063
- * for next_nt in nt:
- * nt_len = (next_nt[2] - next_nt[1]) + 1
- * i = 0 # <<<<<<<<<<<<<<
- * while i < nt_len:
- * f_sym.pop(next_nt[1] - off)
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2064
- * nt_len = (next_nt[2] - next_nt[1]) + 1
- * i = 0
- * while i < nt_len: # <<<<<<<<<<<<<<
- * f_sym.pop(next_nt[1] - off)
- * i += 1
- */
- while (1) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_7) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2065
- * i = 0
- * while i < nt_len:
- * f_sym.pop(next_nt[1] - off) # <<<<<<<<<<<<<<
- * i += 1
- * f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_f_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = PyNumber_Subtract(__pyx_t_6, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2066
- * while i < nt_len:
- * f_sym.pop(next_nt[1] - off)
- * i += 1 # <<<<<<<<<<<<<<
- * f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))
- * off += (nt_len - 1)
- */
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_2;
- __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2067
- * f_sym.pop(next_nt[1] - off)
- * i += 1
- * f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0])) # <<<<<<<<<<<<<<
- * off += (nt_len - 1)
- * e_sym = list(e_span[:])
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_10 = PyList_Insert(__pyx_v_f_sym, __pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2068
- * i += 1
- * f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))
- * off += (nt_len - 1) # <<<<<<<<<<<<<<
- * e_sym = list(e_span[:])
- * off = e_i
- */
- __pyx_t_6 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_v_off);
- __pyx_v_off = __pyx_t_2;
- __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2069
- * f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))
- * off += (nt_len - 1)
- * e_sym = list(e_span[:]) # <<<<<<<<<<<<<<
- * off = e_i
- * for next_nt in nt_inv:
- */
- __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_e_span, 0, 0, NULL, NULL, &__pyx_k_slice_148, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_v_e_sym = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2070
- * off += (nt_len - 1)
- * e_sym = list(e_span[:])
- * off = e_i # <<<<<<<<<<<<<<
- * for next_nt in nt_inv:
- * nt_len = (next_nt[4] - next_nt[3]) + 1
- */
- __Pyx_INCREF(__pyx_v_e_i);
- __Pyx_DECREF(__pyx_v_off);
- __pyx_v_off = __pyx_v_e_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2071
- * e_sym = list(e_span[:])
- * off = e_i
- * for next_nt in nt_inv: # <<<<<<<<<<<<<<
- * nt_len = (next_nt[4] - next_nt[3]) + 1
- * i = 0
- */
- if (PyList_CheckExact(__pyx_v_nt_inv) || PyTuple_CheckExact(__pyx_v_nt_inv)) {
- __pyx_t_3 = __pyx_v_nt_inv; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt_inv); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {
- if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {
- if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_5(__pyx_t_3);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_next_nt);
- __pyx_v_next_nt = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2072
- * off = e_i
- * for next_nt in nt_inv:
- * nt_len = (next_nt[4] - next_nt[3]) + 1 # <<<<<<<<<<<<<<
- * i = 0
- * while i < nt_len:
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_v_nt_len);
- __pyx_v_nt_len = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2073
- * for next_nt in nt_inv:
- * nt_len = (next_nt[4] - next_nt[3]) + 1
- * i = 0 # <<<<<<<<<<<<<<
- * while i < nt_len:
- * e_sym.pop(next_nt[3] - off)
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2074
- * nt_len = (next_nt[4] - next_nt[3]) + 1
- * i = 0
- * while i < nt_len: # <<<<<<<<<<<<<<
- * e_sym.pop(next_nt[3] - off)
- * i += 1
- */
- while (1) {
- __pyx_t_6 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (!__pyx_t_7) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2075
- * i = 0
- * while i < nt_len:
- * e_sym.pop(next_nt[3] - off) # <<<<<<<<<<<<<<
- * i += 1
- * e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_e_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2076
- * while i < nt_len:
- * e_sym.pop(next_nt[3] - off)
- * i += 1 # <<<<<<<<<<<<<<
- * e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))
- * off += (nt_len - 1)
- */
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_2;
- __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2077
- * e_sym.pop(next_nt[3] - off)
- * i += 1
- * e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0])) # <<<<<<<<<<<<<<
- * off += (nt_len - 1)
- *
- */
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = PyList_Insert(__pyx_v_e_sym, __pyx_t_8, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2078
- * i += 1
- * e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))
- * off += (nt_len - 1) # <<<<<<<<<<<<<<
- *
- * # Adjusting alignment links takes some doing
- */
- __pyx_t_1 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_v_off);
- __pyx_v_off = __pyx_t_2;
- __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2081
- *
- * # Adjusting alignment links takes some doing
- * links = [list(link) for sub in al for link in sub] # <<<<<<<<<<<<<<
- * links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))
- * links_len = len(links)
- */
- __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyList_CheckExact(__pyx_v_al) || PyTuple_CheckExact(__pyx_v_al)) {
- __pyx_t_2 = __pyx_v_al; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
- __pyx_t_5 = NULL;
- } else {
- __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_al); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
- if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
- if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_1 = __pyx_t_5(__pyx_t_2);
- if (unlikely(!__pyx_t_1)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_XDECREF(__pyx_v_sub);
- __pyx_v_sub = __pyx_t_1;
- __pyx_t_1 = 0;
- if (PyList_CheckExact(__pyx_v_sub) || PyTuple_CheckExact(__pyx_v_sub)) {
- __pyx_t_1 = __pyx_v_sub; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
- __pyx_t_11 = NULL;
- } else {
- __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sub); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_6 = __pyx_t_11(__pyx_t_1);
- if (unlikely(!__pyx_t_6)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_6);
- }
- __Pyx_XDECREF(__pyx_v_link);
- __pyx_v_link = __pyx_t_6;
- __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_link);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_link);
- __Pyx_GIVEREF(__pyx_v_link);
- __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_cur_scope->__pyx_v_links = ((PyObject*)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2082
- * # Adjusting alignment links takes some doing
- * links = [list(link) for sub in al for link in sub]
- * links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1])) # <<<<<<<<<<<<<<
- * links_len = len(links)
- * nt_len = len(nt)
- */
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_links));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_links));
- __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_links));
- __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8, 0, __pyx_n_s_146, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_v_links_inv = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2083
- * links = [list(link) for sub in al for link in sub]
- * links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))
- * links_len = len(links) # <<<<<<<<<<<<<<
- * nt_len = len(nt)
- * nt_i = 0
- */
- __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_links);
- __Pyx_INCREF(__pyx_t_1);
- if (unlikely(__pyx_t_1 == Py_None)) {
- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_4 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_links_len = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2084
- * links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))
- * links_len = len(links)
- * nt_len = len(nt) # <<<<<<<<<<<<<<
- * nt_i = 0
- * off = f_i
- */
- __pyx_t_4 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_v_nt_len);
- __pyx_v_nt_len = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2085
- * links_len = len(links)
- * nt_len = len(nt)
- * nt_i = 0 # <<<<<<<<<<<<<<
- * off = f_i
- * i = 0
- */
- __Pyx_INCREF(__pyx_int_0);
- __pyx_v_nt_i = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2086
- * nt_len = len(nt)
- * nt_i = 0
- * off = f_i # <<<<<<<<<<<<<<
- * i = 0
- * while i < links_len:
- */
- __Pyx_INCREF(__pyx_v_f_i);
- __Pyx_DECREF(__pyx_v_off);
- __pyx_v_off = __pyx_v_f_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2087
- * nt_i = 0
- * off = f_i
- * i = 0 # <<<<<<<<<<<<<<
- * while i < links_len:
- * while nt_i < nt_len and links[i][0] > nt[nt_i][1]:
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_XDECREF(__pyx_v_i);
- __pyx_v_i = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2088
- * off = f_i
- * i = 0
- * while i < links_len: # <<<<<<<<<<<<<<
- * while nt_i < nt_len and links[i][0] > nt[nt_i][1]:
- * off += (nt[nt_i][2] - nt[nt_i][1])
- */
- while (1) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_7) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2089
- * i = 0
- * while i < links_len:
- * while nt_i < nt_len and links[i][0] > nt[nt_i][1]: # <<<<<<<<<<<<<<
- * off += (nt[nt_i][2] - nt[nt_i][1])
- * nt_i += 1
- */
- while (1) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_7) {
- __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_links), __pyx_v_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_14 = __pyx_t_13;
- } else {
- __pyx_t_14 = __pyx_t_7;
- }
- if (!__pyx_t_14) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2090
- * while i < links_len:
- * while nt_i < nt_len and links[i][0] > nt[nt_i][1]:
- * off += (nt[nt_i][2] - nt[nt_i][1]) # <<<<<<<<<<<<<<
- * nt_i += 1
- * links[i][0] -= off
- */
- __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_v_off);
- __pyx_v_off = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2091
- * while nt_i < nt_len and links[i][0] > nt[nt_i][1]:
- * off += (nt[nt_i][2] - nt[nt_i][1])
- * nt_i += 1 # <<<<<<<<<<<<<<
- * links[i][0] -= off
- * i += 1
- */
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_nt_i);
- __pyx_v_nt_i = __pyx_t_2;
- __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2092
- * off += (nt[nt_i][2] - nt[nt_i][1])
- * nt_i += 1
- * links[i][0] -= off # <<<<<<<<<<<<<<
- * i += 1
- * nt_i = 0
- */
- __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_links), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__Pyx_SetItemInt(__pyx_t_2, __pyx_t_4, __pyx_t_3, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2093
- * nt_i += 1
- * links[i][0] -= off
- * i += 1 # <<<<<<<<<<<<<<
- * nt_i = 0
- * off = e_i
- */
- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_2;
- __pyx_t_2 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2094
- * links[i][0] -= off
- * i += 1
- * nt_i = 0 # <<<<<<<<<<<<<<
- * off = e_i
- * i = 0
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_DECREF(__pyx_v_nt_i);
- __pyx_v_nt_i = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2095
- * i += 1
- * nt_i = 0
- * off = e_i # <<<<<<<<<<<<<<
- * i = 0
- * while i < links_len:
- */
- __Pyx_INCREF(__pyx_v_e_i);
- __Pyx_DECREF(__pyx_v_off);
- __pyx_v_off = __pyx_v_e_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2096
- * nt_i = 0
- * off = e_i
- * i = 0 # <<<<<<<<<<<<<<
- * while i < links_len:
- * while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:
- */
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_DECREF(__pyx_v_i);
- __pyx_v_i = __pyx_int_0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2097
- * off = e_i
- * i = 0
- * while i < links_len: # <<<<<<<<<<<<<<
- * while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:
- * off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])
- */
- while (1) {
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_14) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2098
- * i = 0
- * while i < links_len:
- * while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]: # <<<<<<<<<<<<<<
- * off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])
- * nt_i += 1
- */
- while (1) {
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_14) {
- __pyx_t_2 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_13 = __pyx_t_7;
- } else {
- __pyx_t_13 = __pyx_t_14;
- }
- if (!__pyx_t_13) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2099
- * while i < links_len:
- * while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:
- * off += (nt_inv[nt_i][4] - nt_inv[nt_i][3]) # <<<<<<<<<<<<<<
- * nt_i += 1
- * links_inv[i][1] -= off
- */
- __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_v_off);
- __pyx_v_off = __pyx_t_3;
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2100
- * while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:
- * off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])
- * nt_i += 1 # <<<<<<<<<<<<<<
- * links_inv[i][1] -= off
- * i += 1
- */
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_v_nt_i);
- __pyx_v_nt_i = __pyx_t_3;
- __pyx_t_3 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2101
- * off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])
- * nt_i += 1
- * links_inv[i][1] -= off # <<<<<<<<<<<<<<
- * i += 1
- *
- */
- __pyx_t_3 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = 1;
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__Pyx_SetItemInt(__pyx_t_3, __pyx_t_4, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2102
- * nt_i += 1
- * links_inv[i][1] -= off
- * i += 1 # <<<<<<<<<<<<<<
- *
- * # Find lexical span
- */
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_v_i);
- __pyx_v_i = __pyx_t_3;
- __pyx_t_3 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2105
- *
- * # Find lexical span
- * lex_f_i = f_i # <<<<<<<<<<<<<<
- * lex_f_j = f_i + (len(f_span) - 1)
- * if nt:
- */
- __Pyx_INCREF(__pyx_v_f_i);
- __pyx_v_lex_f_i = __pyx_v_f_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2106
- * # Find lexical span
- * lex_f_i = f_i
- * lex_f_j = f_i + (len(f_span) - 1) # <<<<<<<<<<<<<<
- * if nt:
- * if nt[0][1] == lex_f_i:
- */
- __pyx_t_4 = PyObject_Length(__pyx_v_f_span); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = PyInt_FromSsize_t((__pyx_t_4 - 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyNumber_Add(__pyx_v_f_i, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_lex_f_j = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2107
- * lex_f_i = f_i
- * lex_f_j = f_i + (len(f_span) - 1)
- * if nt: # <<<<<<<<<<<<<<
- * if nt[0][1] == lex_f_i:
- * lex_f_i += (nt[0][2] - nt[0][1]) + 1
- */
- __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_13) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2108
- * lex_f_j = f_i + (len(f_span) - 1)
- * if nt:
- * if nt[0][1] == lex_f_i: # <<<<<<<<<<<<<<
- * lex_f_i += (nt[0][2] - nt[0][1]) + 1
- * if nt[-1][2] == lex_f_j:
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_lex_f_i, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_13) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2109
- * if nt:
- * if nt[0][1] == lex_f_i:
- * lex_f_i += (nt[0][2] - nt[0][1]) + 1 # <<<<<<<<<<<<<<
- * if nt[-1][2] == lex_f_j:
- * lex_f_j -= (nt[-1][2] - nt[-1][1]) + 1
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_lex_f_i, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_v_lex_f_i);
- __pyx_v_lex_f_i = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L24;
- }
- __pyx_L24:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2110
- * if nt[0][1] == lex_f_i:
- * lex_f_i += (nt[0][2] - nt[0][1]) + 1
- * if nt[-1][2] == lex_f_j: # <<<<<<<<<<<<<<
- * lex_f_j -= (nt[-1][2] - nt[-1][1]) + 1
- *
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_v_lex_f_j, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_13) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2111
- * lex_f_i += (nt[0][2] - nt[0][1]) + 1
- * if nt[-1][2] == lex_f_j:
- * lex_f_j -= (nt[-1][2] - nt[-1][1]) + 1 # <<<<<<<<<<<<<<
- *
- * # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)
- */
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_lex_f_j, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_v_lex_f_j);
- __pyx_v_lex_f_j = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L25;
- }
- __pyx_L25:;
- goto __pyx_L23;
- }
- __pyx_L23:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2114
- *
- * # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)
- * f = Phrase(f_sym) # <<<<<<<<<<<<<<
- * e = Phrase(e_sym)
- * a = tuple(self.alignment.link(i, j) for i, j in links)
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_f_sym));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f_sym));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_f_sym));
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2115
- * # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)
- * f = Phrase(f_sym)
- * e = Phrase(e_sym) # <<<<<<<<<<<<<<
- * a = tuple(self.alignment.link(i, j) for i, j in links)
- * return (f, e, a, lex_f_i, lex_f_j)
- */
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(((PyObject *)__pyx_v_e_sym));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_e_sym));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_e_sym));
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_e = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2116
- * f = Phrase(f_sym)
- * e = Phrase(e_sym)
- * a = tuple(self.alignment.link(i, j) for i, j in links) # <<<<<<<<<<<<<<
- * return (f, e, a, lex_f_i, lex_f_j)
- *
- */
- __pyx_t_1 = __pyx_pf_3_sa_23HieroCachingRuleFactory_9form_rule_2genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_a = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2117
- * e = Phrase(e_sym)
- * a = tuple(self.alignment.link(i, j) for i, j in links)
- * return (f, e, a, lex_f_i, lex_f_j) # <<<<<<<<<<<<<<
- *
- * # Rule string from rule
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_f));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_f));
- __Pyx_INCREF(((PyObject *)__pyx_v_e));
- PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_e));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_e));
- __Pyx_INCREF(((PyObject *)__pyx_v_a));
- PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_a));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
- __Pyx_INCREF(__pyx_v_lex_f_i);
- PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_lex_f_i);
- __Pyx_GIVEREF(__pyx_v_lex_f_i);
- __Pyx_INCREF(__pyx_v_lex_f_j);
- PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_lex_f_j);
- __Pyx_GIVEREF(__pyx_v_lex_f_j);
- __pyx_r = ((PyObject *)__pyx_t_1);
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_nt_inv);
- __Pyx_XDECREF(__pyx_v_f_sym);
- __Pyx_XDECREF(__pyx_v_off);
- __Pyx_XDECREF(__pyx_v_next_nt);
- __Pyx_XDECREF(__pyx_v_nt_len);
- __Pyx_XDECREF(__pyx_v_i);
- __Pyx_XDECREF(__pyx_v_e_sym);
- __Pyx_XDECREF(__pyx_v_links_inv);
- __Pyx_XDECREF(__pyx_v_links_len);
- __Pyx_XDECREF(__pyx_v_nt_i);
- __Pyx_XDECREF(__pyx_v_lex_f_i);
- __Pyx_XDECREF(__pyx_v_lex_f_j);
- __Pyx_XDECREF((PyObject *)__pyx_v_f);
- __Pyx_XDECREF((PyObject *)__pyx_v_e);
- __Pyx_XDECREF(__pyx_v_a);
- __Pyx_XDECREF(__pyx_v_sub);
- __Pyx_XDECREF(__pyx_v_link);
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_f = 0;
- PyObject *__pyx_v_e = 0;
- PyObject *__pyx_v_a = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("fmt_rule (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f,&__pyx_n_s__e,&__pyx_n_s__a,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fmt_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_f = values[0];
- __pyx_v_e = values[1];
- __pyx_v_a = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.fmt_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_29fmt_rule(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_f, __pyx_v_e, __pyx_v_a);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2121
- * # Rule string from rule
- * def fmt_rule(self, f, e, a):
- * a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a) # <<<<<<<<<<<<<<
- * return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_25_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.fmt_rule.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) { __Pyx_RaiseClosureNameError("a"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) {
- __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_a; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_packed);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_packed);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_packed = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_149), __pyx_n_s__format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment), __pyx_n_s__unlink); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_packed);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_packed);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_packed);
- __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_6 = PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_r = __pyx_t_7;
- __pyx_t_7 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2120
- *
- * # Rule string from rule
- * def fmt_rule(self, f, e, a): # <<<<<<<<<<<<<<
- * a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)
- * return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29fmt_rule(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f, PyObject *__pyx_v_e, PyObject *__pyx_v_a) {
- struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *__pyx_cur_scope;
- PyObject *__pyx_v_a_str = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("fmt_rule", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)__pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule(__pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __pyx_cur_scope->__pyx_v_a = __pyx_v_a;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_a);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_a);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2121
- * # Rule string from rule
- * def fmt_rule(self, f, e, a):
- * a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a) # <<<<<<<<<<<<<<
- * return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)
- *
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_a_str = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2122
- * def fmt_rule(self, f, e, a):
- * a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)
- * return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str) # <<<<<<<<<<<<<<
- *
- * # Debugging
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_150), __pyx_n_s__format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __Pyx_INCREF(__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_e);
- __Pyx_GIVEREF(__pyx_v_e);
- __Pyx_INCREF(__pyx_v_a_str);
- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_a_str);
- __Pyx_GIVEREF(__pyx_v_a_str);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.fmt_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_a_str);
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_32dump_online_stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_32dump_online_stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("dump_online_stats (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2125
- *
- * # Debugging
- * def dump_online_stats(self): # <<<<<<<<<<<<<<
- * logger.info('------------------------------')
- * logger.info(' Online Stats ')
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self) {
- PyObject *__pyx_v_w = NULL;
- PyObject *__pyx_v_w2 = NULL;
- PyObject *__pyx_v_ph = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- PyObject *(*__pyx_t_4)(PyObject *);
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- Py_ssize_t __pyx_t_9;
- PyObject *(*__pyx_t_10)(PyObject *);
- PyObject *__pyx_t_11 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("dump_online_stats", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2126
- * # Debugging
- * def dump_online_stats(self):
- * logger.info('------------------------------') # <<<<<<<<<<<<<<
- * logger.info(' Online Stats ')
- * logger.info('------------------------------')
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_152), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2127
- * def dump_online_stats(self):
- * logger.info('------------------------------')
- * logger.info(' Online Stats ') # <<<<<<<<<<<<<<
- * logger.info('------------------------------')
- * logger.info('f')
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_154), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2128
- * logger.info('------------------------------')
- * logger.info(' Online Stats ')
- * logger.info('------------------------------') # <<<<<<<<<<<<<<
- * logger.info('f')
- * for w in self.bilex_f:
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_155), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2129
- * logger.info(' Online Stats ')
- * logger.info('------------------------------')
- * logger.info('f') # <<<<<<<<<<<<<<
- * for w in self.bilex_f:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_156), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2130
- * logger.info('------------------------------')
- * logger.info('f')
- * for w in self.bilex_f: # <<<<<<<<<<<<<<
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))
- * logger.info('e')
- */
- if (PyList_CheckExact(__pyx_v_self->bilex_f) || PyTuple_CheckExact(__pyx_v_self->bilex_f)) {
- __pyx_t_1 = __pyx_v_self->bilex_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_4(__pyx_t_1);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_w);
- __pyx_v_w = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2131
- * logger.info('f')
- * for w in self.bilex_f:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w])) # <<<<<<<<<<<<<<
- * logger.info('e')
- * for w in self.bilex_e:
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_GetItem(__pyx_v_self->bilex_f, __pyx_v_w); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2132
- * for w in self.bilex_f:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))
- * logger.info('e') # <<<<<<<<<<<<<<
- * for w in self.bilex_e:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_158), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2133
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))
- * logger.info('e')
- * for w in self.bilex_e: # <<<<<<<<<<<<<<
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))
- * logger.info('fe')
- */
- if (PyList_CheckExact(__pyx_v_self->bilex_e) || PyTuple_CheckExact(__pyx_v_self->bilex_e)) {
- __pyx_t_1 = __pyx_v_self->bilex_e; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_8 = __pyx_t_4(__pyx_t_1);
- if (unlikely(!__pyx_t_8)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- __Pyx_XDECREF(__pyx_v_w);
- __pyx_v_w = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2134
- * logger.info('e')
- * for w in self.bilex_e:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w])) # <<<<<<<<<<<<<<
- * logger.info('fe')
- * for w in self.bilex_fe:
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_8));
- __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_8), ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_GetItem(__pyx_v_self->bilex_e, __pyx_v_w); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2135
- * for w in self.bilex_e:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))
- * logger.info('fe') # <<<<<<<<<<<<<<
- * for w in self.bilex_fe:
- * for w2 in self.bilex_fe[w]:
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_k_tuple_159), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2136
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))
- * logger.info('fe')
- * for w in self.bilex_fe: # <<<<<<<<<<<<<<
- * for w2 in self.bilex_fe[w]:
- * logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))
- */
- if (PyList_CheckExact(__pyx_v_self->bilex_fe) || PyTuple_CheckExact(__pyx_v_self->bilex_fe)) {
- __pyx_t_1 = __pyx_v_self->bilex_fe; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_7 = __pyx_t_4(__pyx_t_1);
- if (unlikely(!__pyx_t_7)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_7);
- }
- __Pyx_XDECREF(__pyx_v_w);
- __pyx_v_w = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2137
- * logger.info('fe')
- * for w in self.bilex_fe:
- * for w2 in self.bilex_fe[w]: # <<<<<<<<<<<<<<
- * logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))
- * logger.info('F')
- */
- __pyx_t_7 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- if (PyList_CheckExact(__pyx_t_7) || PyTuple_CheckExact(__pyx_t_7)) {
- __pyx_t_8 = __pyx_t_7; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0;
- __pyx_t_10 = NULL;
- } else {
- __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- for (;;) {
- if (!__pyx_t_10 && PyList_CheckExact(__pyx_t_8)) {
- if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_10 && PyTuple_CheckExact(__pyx_t_8)) {
- if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_7 = __pyx_t_10(__pyx_t_8);
- if (unlikely(!__pyx_t_7)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_7);
- }
- __Pyx_XDECREF(__pyx_v_w2);
- __pyx_v_w2 = __pyx_t_7;
- __pyx_t_7 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2138
- * for w in self.bilex_fe:
- * for w2 in self.bilex_fe[w]:
- * logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2])) # <<<<<<<<<<<<<<
- * logger.info('F')
- * for ph in self.phrases_f:
- */
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_7));
- __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_7));
- __pyx_t_11 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- __pyx_t_7 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_5 = PyObject_GetItem(__pyx_t_11, __pyx_v_w2); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __pyx_t_11 = PyNumber_Add(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2139
- * for w2 in self.bilex_fe[w]:
- * logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))
- * logger.info('F') # <<<<<<<<<<<<<<
- * for ph in self.phrases_f:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_160), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2140
- * logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))
- * logger.info('F')
- * for ph in self.phrases_f: # <<<<<<<<<<<<<<
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))
- * logger.info('E')
- */
- if (PyList_CheckExact(__pyx_v_self->phrases_f) || PyTuple_CheckExact(__pyx_v_self->phrases_f)) {
- __pyx_t_1 = __pyx_v_self->phrases_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_8 = __pyx_t_4(__pyx_t_1);
- if (unlikely(!__pyx_t_8)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_8);
- }
- __Pyx_XDECREF(__pyx_v_ph);
- __pyx_v_ph = __pyx_t_8;
- __pyx_t_8 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2141
- * logger.info('F')
- * for ph in self.phrases_f:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph])) # <<<<<<<<<<<<<<
- * logger.info('E')
- * for ph in self.phrases_e:
- */
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_INCREF(__pyx_v_ph);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_ph);
- __Pyx_GIVEREF(__pyx_v_ph);
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_8 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_GetItem(__pyx_v_self->phrases_f, __pyx_v_ph); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2142
- * for ph in self.phrases_f:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))
- * logger.info('E') # <<<<<<<<<<<<<<
- * for ph in self.phrases_e:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_161), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2143
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))
- * logger.info('E')
- * for ph in self.phrases_e: # <<<<<<<<<<<<<<
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))
- * logger.info('FE')
- */
- if (PyList_CheckExact(__pyx_v_self->phrases_e) || PyTuple_CheckExact(__pyx_v_self->phrases_e)) {
- __pyx_t_1 = __pyx_v_self->phrases_e; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
- __pyx_t_4 = NULL;
- } else {
- __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_2 = __pyx_t_4(__pyx_t_1);
- if (unlikely(!__pyx_t_2)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_2);
- }
- __Pyx_XDECREF(__pyx_v_ph);
- __pyx_v_ph = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2144
- * logger.info('E')
- * for ph in self.phrases_e:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph])) # <<<<<<<<<<<<<<
- * logger.info('FE')
- * self.dump_online_rules()
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_ph);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ph);
- __Pyx_GIVEREF(__pyx_v_ph);
- __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_GetItem(__pyx_v_self->phrases_e, __pyx_v_ph); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
- __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2145
- * for ph in self.phrases_e:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))
- * logger.info('FE') # <<<<<<<<<<<<<<
- * self.dump_online_rules()
- *
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_162), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2146
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))
- * logger.info('FE')
- * self.dump_online_rules() # <<<<<<<<<<<<<<
- *
- * def dump_online_rules(self):
- */
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dump_online_rules); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.dump_online_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_w);
- __Pyx_XDECREF(__pyx_v_w2);
- __Pyx_XDECREF(__pyx_v_ph);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_34dump_online_rules(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_34dump_online_rules(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("dump_online_rules (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2148
- * self.dump_online_rules()
- *
- * def dump_online_rules(self): # <<<<<<<<<<<<<<
- * for ph in self.phrases_fe:
- * for ph2 in self.phrases_fe[ph]:
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self) {
- PyObject *__pyx_v_ph = NULL;
- PyObject *__pyx_v_ph2 = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- Py_ssize_t __pyx_t_6;
- PyObject *(*__pyx_t_7)(PyObject *);
- PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
- PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
- PyObject *__pyx_t_12 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("dump_online_rules", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2149
- *
- * def dump_online_rules(self):
- * for ph in self.phrases_fe: # <<<<<<<<<<<<<<
- * for ph2 in self.phrases_fe[ph]:
- * logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))
- */
- if (PyList_CheckExact(__pyx_v_self->phrases_fe) || PyTuple_CheckExact(__pyx_v_self->phrases_fe)) {
- __pyx_t_1 = __pyx_v_self->phrases_fe; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_ph);
- __pyx_v_ph = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2150
- * def dump_online_rules(self):
- * for ph in self.phrases_fe:
- * for ph2 in self.phrases_fe[ph]: # <<<<<<<<<<<<<<
- * logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))
- *
- */
- __pyx_t_4 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
- __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
- __pyx_t_7 = NULL;
- } else {
- __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- for (;;) {
- if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) {
- if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) {
- if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_7(__pyx_t_5);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XDECREF(__pyx_v_ph2);
- __pyx_v_ph2 = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2151
- * for ph in self.phrases_fe:
- * for ph2 in self.phrases_fe[ph]:
- * logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2])) # <<<<<<<<<<<<<<
- *
- * # Lookup online stats for phrase pair (f, e). Return None if no match.
- */
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__fmt_rule); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_INCREF(__pyx_v_ph);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_ph);
- __Pyx_GIVEREF(__pyx_v_ph);
- __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
- __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_INCREF(__pyx_v_ph2);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_ph2);
- __Pyx_GIVEREF(__pyx_v_ph2);
- __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
- __pyx_t_9 = PyObject_GetItem(__pyx_v_self->phrases_al, __pyx_v_ph); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_v_ph2); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_10 = 0;
- __pyx_t_11 = 0;
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
- __pyx_t_9 = PyNumber_Add(__pyx_t_12, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_4 = PyObject_GetItem(__pyx_t_12, __pyx_v_ph2); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
- __pyx_t_12 = PyNumber_Add(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_12 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
- __Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
- __Pyx_XDECREF(__pyx_t_12);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.dump_online_rules", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_ph);
- __Pyx_XDECREF(__pyx_v_ph2);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_f = 0;
- PyObject *__pyx_v_e = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("online_ctx_lookup (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f,&__pyx_n_s__e,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("online_ctx_lookup", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "online_ctx_lookup") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_f = values[0];
- __pyx_v_e = values[1];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("online_ctx_lookup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.online_ctx_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_35online_ctx_lookup(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), __pyx_v_f, __pyx_v_e);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2155
- * # Lookup online stats for phrase pair (f, e). Return None if no match.
- * # IMPORTANT: use get() to avoid adding items to defaultdict
- * def online_ctx_lookup(self, f, e): # <<<<<<<<<<<<<<
- * if self.online:
- * fcount = self.phrases_f.get(f, 0)
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_35online_ctx_lookup(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f, PyObject *__pyx_v_e) {
- PyObject *__pyx_v_fcount = NULL;
- PyObject *__pyx_v_fsample_count = NULL;
- PyObject *__pyx_v_d = NULL;
- PyObject *__pyx_v_paircount = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_t_1;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("online_ctx_lookup", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2156
- * # IMPORTANT: use get() to avoid adding items to defaultdict
- * def online_ctx_lookup(self, f, e):
- * if self.online: # <<<<<<<<<<<<<<
- * fcount = self.phrases_f.get(f, 0)
- * fsample_count = self.samples_f.get(f, 0)
- */
- __pyx_t_1 = (__pyx_v_self->online != 0);
- if (__pyx_t_1) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2157
- * def online_ctx_lookup(self, f, e):
- * if self.online:
- * fcount = self.phrases_f.get(f, 0) # <<<<<<<<<<<<<<
- * fsample_count = self.samples_f.get(f, 0)
- * d = self.phrases_fe.get(f, None)
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->phrases_f, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_fcount = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2158
- * if self.online:
- * fcount = self.phrases_f.get(f, 0)
- * fsample_count = self.samples_f.get(f, 0) # <<<<<<<<<<<<<<
- * d = self.phrases_fe.get(f, None)
- * paircount = d.get(e, 0) if d else 0
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->samples_f, __pyx_n_s__get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_fsample_count = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2159
- * fcount = self.phrases_f.get(f, 0)
- * fsample_count = self.samples_f.get(f, 0)
- * d = self.phrases_fe.get(f, None) # <<<<<<<<<<<<<<
- * paircount = d.get(e, 0) if d else 0
- * return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)
- */
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->phrases_fe, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_v_f);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);
- __Pyx_GIVEREF(__pyx_v_f);
- __Pyx_INCREF(Py_None);
- PyTuple_SET_ITEM(__pyx_t_3, 1, Py_None);
- __Pyx_GIVEREF(Py_None);
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_v_d = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2160
- * fsample_count = self.samples_f.get(f, 0)
- * d = self.phrases_fe.get(f, None)
- * paircount = d.get(e, 0) if d else 0 # <<<<<<<<<<<<<<
- * return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)
- * return None
- */
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_d); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_1) {
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_d, __pyx_n_s__get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_e);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_e);
- __Pyx_GIVEREF(__pyx_v_e);
- __Pyx_INCREF(__pyx_int_0);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0);
- __Pyx_GIVEREF(__pyx_int_0);
- __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_4 = __pyx_t_5;
- __pyx_t_5 = 0;
- } else {
- __Pyx_INCREF(__pyx_int_0);
- __pyx_t_4 = __pyx_int_0;
- }
- __pyx_v_paircount = __pyx_t_4;
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2161
- * d = self.phrases_fe.get(f, None)
- * paircount = d.get(e, 0) if d else 0
- * return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe) # <<<<<<<<<<<<<<
- * return None
- *
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_163); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_v_fcount);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_fcount);
- __Pyx_GIVEREF(__pyx_v_fcount);
- __Pyx_INCREF(__pyx_v_fsample_count);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_fsample_count);
- __Pyx_GIVEREF(__pyx_v_fsample_count);
- __Pyx_INCREF(__pyx_v_paircount);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_paircount);
- __Pyx_GIVEREF(__pyx_v_paircount);
- __Pyx_INCREF(__pyx_v_self->bilex_f);
- PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_self->bilex_f);
- __Pyx_GIVEREF(__pyx_v_self->bilex_f);
- __Pyx_INCREF(__pyx_v_self->bilex_e);
- PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_self->bilex_e);
- __Pyx_GIVEREF(__pyx_v_self->bilex_e);
- __Pyx_INCREF(__pyx_v_self->bilex_fe);
- PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_v_self->bilex_fe);
- __Pyx_GIVEREF(__pyx_v_self->bilex_fe);
- __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2162
- * paircount = d.get(e, 0) if d else 0
- * return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)
- * return None # <<<<<<<<<<<<<<
- *
- * # Find all phrases that we might try to extract
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(Py_None);
- __pyx_r = Py_None;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.online_ctx_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_fcount);
- __Pyx_XDECREF(__pyx_v_fsample_count);
- __Pyx_XDECREF(__pyx_v_d);
- __Pyx_XDECREF(__pyx_v_paircount);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_38get_f_phrases(PyObject *__pyx_v_self, PyObject *__pyx_v_f_words); /*proto*/
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_38get_f_phrases(PyObject *__pyx_v_self, PyObject *__pyx_v_f_words) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("get_f_phrases (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)__pyx_v_self), ((PyObject *)__pyx_v_f_words));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extract(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extract = {__Pyx_NAMESTR("extract"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extract, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extract(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_f_i = 0;
- PyObject *__pyx_v_f_j = 0;
- PyObject *__pyx_v_lex_i = 0;
- PyObject *__pyx_v_lex_j = 0;
- PyObject *__pyx_v_wc = 0;
- PyObject *__pyx_v_ntc = 0;
- PyObject *__pyx_v_syms = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("extract (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__f_j,&__pyx_n_s__lex_i,&__pyx_n_s__lex_j,&__pyx_n_s__wc,&__pyx_n_s__ntc,&__pyx_n_s__syms,0};
- PyObject* values[7] = {0,0,0,0,0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lex_i)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 3:
- if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lex_j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 4:
- if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wc)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 5:
- if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ntc)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 6:
- if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__syms)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
- values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
- values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
- values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
- }
- __pyx_v_f_i = values[0];
- __pyx_v_f_j = values[1];
- __pyx_v_lex_i = values[2];
- __pyx_v_lex_j = values[3];
- __pyx_v_wc = values[4];
- __pyx_v_ntc = values[5];
- __pyx_v_syms = values[6];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_f_phrases.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_self, __pyx_v_f_i, __pyx_v_f_j, __pyx_v_lex_i, __pyx_v_lex_j, __pyx_v_wc, __pyx_v_ntc, __pyx_v_syms);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2172
- * phrases = set() # (fphrase, lex_i, lex_j)
- *
- * def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms): # <<<<<<<<<<<<<<
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(PyObject *__pyx_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_f_j, PyObject *__pyx_v_lex_i, PyObject *__pyx_v_lex_j, PyObject *__pyx_v_wc, PyObject *__pyx_v_ntc, PyObject *__pyx_v_syms) {
- struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *__pyx_cur_scope;
- struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *__pyx_outer_scope;
- struct __pyx_obj_3_sa_Phrase *__pyx_v_f = NULL;
- PyObject *__pyx_v_new_lex_i = NULL;
- PyObject *__pyx_v_new_lex_j = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_t_8;
- int __pyx_t_9;
- int __pyx_t_10;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("extract", 0);
- __pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *) __Pyx_CyFunction_GetClosure(__pyx_self);
- __pyx_cur_scope = __pyx_outer_scope;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2174
- * def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size: # <<<<<<<<<<<<<<
- * return
- * # Extend with word
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_f_len)) { __Pyx_RaiseClosureNameError("f_len"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_1 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (!__pyx_t_3) {
- __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_v_f_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __pyx_t_5;
- } else {
- __pyx_t_6 = __pyx_t_3;
- }
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2175
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- * return # <<<<<<<<<<<<<<
- * # Extend with word
- * if wc + ntc < self.max_length:
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- goto __pyx_L3;
- }
- __pyx_L3:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2177
- * return
- * # Extend with word
- * if wc + ntc < self.max_length: # <<<<<<<<<<<<<<
- * syms.append(f_words[f_j])
- * f = Phrase(syms)
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_wc, __pyx_v_ntc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2178
- * # Extend with word
- * if wc + ntc < self.max_length:
- * syms.append(f_words[f_j]) # <<<<<<<<<<<<<<
- * f = Phrase(syms)
- * new_lex_i = min(lex_i, f_j)
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_f_words, __pyx_v_f_j); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_syms, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2179
- * if wc + ntc < self.max_length:
- * syms.append(f_words[f_j])
- * f = Phrase(syms) # <<<<<<<<<<<<<<
- * new_lex_i = min(lex_i, f_j)
- * new_lex_j = max(lex_j, f_j)
- */
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_v_syms);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_syms);
- __Pyx_GIVEREF(__pyx_v_syms);
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2180
- * syms.append(f_words[f_j])
- * f = Phrase(syms)
- * new_lex_i = min(lex_i, f_j) # <<<<<<<<<<<<<<
- * new_lex_j = max(lex_j, f_j)
- * phrases.add((f, new_lex_i, new_lex_j))
- */
- __Pyx_INCREF(__pyx_v_f_j);
- __pyx_t_1 = __pyx_v_f_j;
- __Pyx_INCREF(__pyx_v_lex_i);
- __pyx_t_2 = __pyx_v_lex_i;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_6) {
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_4 = __pyx_t_1;
- } else {
- __Pyx_INCREF(__pyx_t_2);
- __pyx_t_4 = __pyx_t_2;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __pyx_t_4;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_new_lex_i = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2181
- * f = Phrase(syms)
- * new_lex_i = min(lex_i, f_j)
- * new_lex_j = max(lex_j, f_j) # <<<<<<<<<<<<<<
- * phrases.add((f, new_lex_i, new_lex_j))
- * extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)
- */
- __Pyx_INCREF(__pyx_v_f_j);
- __pyx_t_1 = __pyx_v_f_j;
- __Pyx_INCREF(__pyx_v_lex_j);
- __pyx_t_4 = __pyx_v_lex_j;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (__pyx_t_6) {
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = __pyx_t_1;
- } else {
- __Pyx_INCREF(__pyx_t_4);
- __pyx_t_2 = __pyx_t_4;
- }
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __pyx_t_2;
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_new_lex_j = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2182
- * new_lex_i = min(lex_i, f_j)
- * new_lex_j = max(lex_j, f_j)
- * phrases.add((f, new_lex_i, new_lex_j)) # <<<<<<<<<<<<<<
- * extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)
- * syms.pop()
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_phrases)) { __Pyx_RaiseClosureNameError("phrases"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_phrases) == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_f));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_f));
- __Pyx_INCREF(__pyx_v_new_lex_i);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_new_lex_i);
- __Pyx_GIVEREF(__pyx_v_new_lex_i);
- __Pyx_INCREF(__pyx_v_new_lex_j);
- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_new_lex_j);
- __Pyx_GIVEREF(__pyx_v_new_lex_j);
- __pyx_t_8 = PySet_Add(__pyx_cur_scope->__pyx_v_phrases, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2183
- * new_lex_j = max(lex_j, f_j)
- * phrases.add((f, new_lex_i, new_lex_j))
- * extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms) # <<<<<<<<<<<<<<
- * syms.pop()
- * # Extend with existing non-terminal
- */
- __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_4 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_new_lex_i, __pyx_v_new_lex_j, __pyx_t_2, __pyx_v_ntc, __pyx_v_syms); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2184
- * phrases.add((f, new_lex_i, new_lex_j))
- * extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)
- * syms.pop() # <<<<<<<<<<<<<<
- * # Extend with existing non-terminal
- * if syms and sym_isvar(syms[-1]):
- */
- __pyx_t_4 = __Pyx_PyObject_Pop(__pyx_v_syms); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- goto __pyx_L4;
- }
- __pyx_L4:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2186
- * syms.pop()
- * # Extend with existing non-terminal
- * if syms and sym_isvar(syms[-1]): # <<<<<<<<<<<<<<
- * # Don't re-extract the same phrase
- * extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc, syms)
- */
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_syms); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__pyx_t_6) {
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_syms, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_t_9) != 0);
- } else {
- __pyx_t_3 = __pyx_t_6;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2188
- * if syms and sym_isvar(syms[-1]):
- * # Don't re-extract the same phrase
- * extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc, syms) # <<<<<<<<<<<<<<
- * # Extend with new non-terminal
- * if wc + ntc < self.max_length:
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_4, __pyx_v_lex_i, __pyx_v_lex_j, __pyx_v_wc, __pyx_v_ntc, __pyx_v_syms); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2190
- * extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc, syms)
- * # Extend with new non-terminal
- * if wc + ntc < self.max_length: # <<<<<<<<<<<<<<
- * if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):
- * syms.append(sym_setindex(self.category, ntc + 1))
- */
- __pyx_t_2 = PyNumber_Add(__pyx_v_wc, __pyx_v_ntc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2191
- * # Extend with new non-terminal
- * if wc + ntc < self.max_length:
- * if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])): # <<<<<<<<<<<<<<
- * syms.append(sym_setindex(self.category, ntc + 1))
- * f = Phrase(syms)
- */
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_syms); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = (!__pyx_t_3);
- if (!__pyx_t_6) {
- __pyx_t_1 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_nonterminals); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_ntc, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_3) {
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_syms, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = (!(__pyx_f_3_sa_sym_isvar(__pyx_t_9) != 0));
- __pyx_t_10 = __pyx_t_5;
- } else {
- __pyx_t_10 = __pyx_t_3;
- }
- __pyx_t_3 = __pyx_t_10;
- } else {
- __pyx_t_3 = __pyx_t_6;
- }
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2192
- * if wc + ntc < self.max_length:
- * if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):
- * syms.append(sym_setindex(self.category, ntc + 1)) # <<<<<<<<<<<<<<
- * f = Phrase(syms)
- * if wc > 0:
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_ntc, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_syms, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2193
- * if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):
- * syms.append(sym_setindex(self.category, ntc + 1))
- * f = Phrase(syms) # <<<<<<<<<<<<<<
- * if wc > 0:
- * phrases.add((f, lex_i, lex_j))
- */
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_syms);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_syms);
- __Pyx_GIVEREF(__pyx_v_syms);
- __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_XDECREF(((PyObject *)__pyx_v_f));
- __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_4);
- __pyx_t_4 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2194
- * syms.append(sym_setindex(self.category, ntc + 1))
- * f = Phrase(syms)
- * if wc > 0: # <<<<<<<<<<<<<<
- * phrases.add((f, lex_i, lex_j))
- * extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)
- */
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_wc, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_3) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2195
- * f = Phrase(syms)
- * if wc > 0:
- * phrases.add((f, lex_i, lex_j)) # <<<<<<<<<<<<<<
- * extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)
- * syms.pop()
- */
- if (unlikely(!__pyx_cur_scope->__pyx_v_phrases)) { __Pyx_RaiseClosureNameError("phrases"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_phrases) == Py_None)) {
- PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add");
- {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_INCREF(((PyObject *)__pyx_v_f));
- PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_f));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_f));
- __Pyx_INCREF(__pyx_v_lex_i);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_lex_i);
- __Pyx_GIVEREF(__pyx_v_lex_i);
- __Pyx_INCREF(__pyx_v_lex_j);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_lex_j);
- __Pyx_GIVEREF(__pyx_v_lex_j);
- __pyx_t_8 = PySet_Add(__pyx_cur_scope->__pyx_v_phrases, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2196
- * if wc > 0:
- * phrases.add((f, lex_i, lex_j))
- * extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms) # <<<<<<<<<<<<<<
- * syms.pop()
- *
- */
- __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyNumber_Add(__pyx_v_ntc, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_4, __pyx_v_lex_i, __pyx_v_lex_j, __pyx_v_wc, __pyx_t_1, __pyx_v_syms); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2197
- * phrases.add((f, lex_i, lex_j))
- * extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)
- * syms.pop() # <<<<<<<<<<<<<<
- *
- * # Try to extract phrases from every f index
- */
- __pyx_t_2 = __Pyx_PyObject_Pop(__pyx_v_syms); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- goto __pyx_L7;
- }
- __pyx_L7:;
- goto __pyx_L6;
- }
- __pyx_L6:;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_f_phrases.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_f);
- __Pyx_XDECREF(__pyx_v_new_lex_i);
- __Pyx_XDECREF(__pyx_v_new_lex_j);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2167
- * # (Used for EGivenFCoherent)
- * # Return set of (fphrase, lex_i, lex_j)
- * def get_f_phrases(self, f_words): # <<<<<<<<<<<<<<
- *
- * f_len = len(f_words)
- */
-
-static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_words) {
- struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *__pyx_cur_scope;
- long __pyx_v_f_i;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- long __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("get_f_phrases", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)__pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases(__pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __pyx_cur_scope->__pyx_v_f_words = __pyx_v_f_words;
- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_words);
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_words);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2169
- * def get_f_phrases(self, f_words):
- *
- * f_len = len(f_words) # <<<<<<<<<<<<<<
- * phrases = set() # (fphrase, lex_i, lex_j)
- *
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_f_words;
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_f_len = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2170
- *
- * f_len = len(f_words)
- * phrases = set() # (fphrase, lex_i, lex_j) # <<<<<<<<<<<<<<
- *
- * def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):
- */
- __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_cur_scope->__pyx_v_phrases = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2172
- * phrases = set() # (fphrase, lex_i, lex_j)
- *
- * def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms): # <<<<<<<<<<<<<<
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- */
- __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extract, 0, __pyx_n_s_166, ((PyObject*)__pyx_cur_scope), __pyx_n_s___sa, ((PyObject *)__pyx_k_codeobj_165)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_v_extract = __pyx_t_1;
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2200
- *
- * # Try to extract phrases from every f index
- * for f_i from 0 <= f_i < f_len: # <<<<<<<<<<<<<<
- * extract(f_i, f_i, f_len, -1, 0, 0, [])
- *
- */
- __pyx_t_3 = __Pyx_PyInt_AsLong(__pyx_cur_scope->__pyx_v_f_len); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- for (__pyx_v_f_i = 0; __pyx_v_f_i < __pyx_t_3; __pyx_v_f_i++) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2201
- * # Try to extract phrases from every f index
- * for f_i from 0 <= f_i < f_len:
- * extract(f_i, f_i, f_len, -1, 0, 0, []) # <<<<<<<<<<<<<<
- *
- * return phrases
- */
- __pyx_t_1 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __pyx_cur_scope->__pyx_v_f_len;
- __Pyx_INCREF(__pyx_t_5);
- __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_t_1, __pyx_t_4, __pyx_t_5, __pyx_int_neg_1, __pyx_int_0, __pyx_int_0, ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2203
- * extract(f_i, f_i, f_len, -1, 0, 0, [])
- *
- * return phrases # <<<<<<<<<<<<<<
- *
- * # Spans are _inclusive_ on both ends [i, j]
- */
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrases));
- __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_phrases);
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_f_phrases", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_17span_check(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_17span_check = {__Pyx_NAMESTR("span_check"), (PyCFunction)__pyx_pw_3_sa_17span_check, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_17span_check(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_vec = 0;
- PyObject *__pyx_v_i = 0;
- PyObject *__pyx_v_j = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("span_check (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_check") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_vec = values[0];
- __pyx_v_i = values[1];
- __pyx_v_j = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.span_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_16span_check(__pyx_self, __pyx_v_vec, __pyx_v_i, __pyx_v_j);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2206
- *
- * # Spans are _inclusive_ on both ends [i, j]
- * def span_check(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
-
-static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vec, PyObject *__pyx_v_i, PyObject *__pyx_v_j) {
- PyObject *__pyx_v_k = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("span_check", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2207
- * # Spans are _inclusive_ on both ends [i, j]
- * def span_check(vec, i, j):
- * k = i # <<<<<<<<<<<<<<
- * while k <= j:
- * if vec[k]:
- */
- __Pyx_INCREF(__pyx_v_i);
- __pyx_v_k = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2208
- * def span_check(vec, i, j):
- * k = i
- * while k <= j: # <<<<<<<<<<<<<<
- * if vec[k]:
- * return False
- */
- while (1) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2209
- * k = i
- * while k <= j:
- * if vec[k]: # <<<<<<<<<<<<<<
- * return False
- * k += 1
- */
- __pyx_t_1 = PyObject_GetItem(__pyx_v_vec, __pyx_v_k); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_2) {
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2210
- * while k <= j:
- * if vec[k]:
- * return False # <<<<<<<<<<<<<<
- * k += 1
- * return True
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2211
- * if vec[k]:
- * return False
- * k += 1 # <<<<<<<<<<<<<<
- * return True
- *
- */
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_k);
- __pyx_v_k = __pyx_t_1;
- __pyx_t_1 = 0;
- }
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2212
- * return False
- * k += 1
- * return True # <<<<<<<<<<<<<<
- *
- * def span_inc(vec, i, j):
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("_sa.span_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_k);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_19span_inc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_19span_inc = {__Pyx_NAMESTR("span_inc"), (PyCFunction)__pyx_pw_3_sa_19span_inc, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_19span_inc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_vec = 0;
- PyObject *__pyx_v_i = 0;
- PyObject *__pyx_v_j = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("span_inc (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_inc") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_vec = values[0];
- __pyx_v_i = values[1];
- __pyx_v_j = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.span_inc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_18span_inc(__pyx_self, __pyx_v_vec, __pyx_v_i, __pyx_v_j);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2214
- * return True
- *
- * def span_inc(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
-
-static PyObject *__pyx_pf_3_sa_18span_inc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vec, PyObject *__pyx_v_i, PyObject *__pyx_v_j) {
- PyObject *__pyx_v_k = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("span_inc", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2215
- *
- * def span_inc(vec, i, j):
- * k = i # <<<<<<<<<<<<<<
- * while k <= j:
- * vec[k] += 1
- */
- __Pyx_INCREF(__pyx_v_i);
- __pyx_v_k = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2216
- * def span_inc(vec, i, j):
- * k = i
- * while k <= j: # <<<<<<<<<<<<<<
- * vec[k] += 1
- * k += 1
- */
- while (1) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2217
- * k = i
- * while k <= j:
- * vec[k] += 1 # <<<<<<<<<<<<<<
- * k += 1
- *
- */
- __Pyx_INCREF(__pyx_v_k);
- __pyx_t_1 = __pyx_v_k;
- __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2218
- * while k <= j:
- * vec[k] += 1
- * k += 1 # <<<<<<<<<<<<<<
- *
- * def span_dec(vec, i, j):
- */
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_k);
- __pyx_v_k = __pyx_t_1;
- __pyx_t_1 = 0;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.span_inc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_k);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_21span_dec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_3_sa_21span_dec = {__Pyx_NAMESTR("span_dec"), (PyCFunction)__pyx_pw_3_sa_21span_dec, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
-static PyObject *__pyx_pw_3_sa_21span_dec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_vec = 0;
- PyObject *__pyx_v_i = 0;
- PyObject *__pyx_v_j = 0;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("span_dec (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0};
- PyObject* values[3] = {0,0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- case 2:
- if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_dec") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
- }
- __pyx_v_vec = values[0];
- __pyx_v_i = values[1];
- __pyx_v_j = values[2];
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.span_dec", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_20span_dec(__pyx_self, __pyx_v_vec, __pyx_v_i, __pyx_v_j);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2220
- * k += 1
- *
- * def span_dec(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
-
-static PyObject *__pyx_pf_3_sa_20span_dec(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vec, PyObject *__pyx_v_i, PyObject *__pyx_v_j) {
- PyObject *__pyx_v_k = NULL;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("span_dec", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2221
- *
- * def span_dec(vec, i, j):
- * k = i # <<<<<<<<<<<<<<
- * while k <= j:
- * vec[k] -= 1
- */
- __Pyx_INCREF(__pyx_v_i);
- __pyx_v_k = __pyx_v_i;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2222
- * def span_dec(vec, i, j):
- * k = i
- * while k <= j: # <<<<<<<<<<<<<<
- * vec[k] -= 1
- * k += 1
- */
- while (1) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!__pyx_t_2) break;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2223
- * k = i
- * while k <= j:
- * vec[k] -= 1 # <<<<<<<<<<<<<<
- * k += 1
- */
- __Pyx_INCREF(__pyx_v_k);
- __pyx_t_1 = __pyx_v_k;
- __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2224
- * while k <= j:
- * vec[k] -= 1
- * k += 1 # <<<<<<<<<<<<<<
- */
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_k);
- __pyx_v_k = __pyx_t_1;
- __pyx_t_1 = 0;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.span_dec", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_k);
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_13FeatureVector_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_13FeatureVector_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
- __pyx_r = __pyx_pf_3_sa_13FeatureVector___cinit__(((struct __pyx_obj_3_sa_FeatureVector *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":7
- *
- * cdef class FeatureVector:
- * def __cinit__(self): # <<<<<<<<<<<<<<
- * self.names = IntList(INITIAL_CAPACITY, INCREMENT)
- * self.values = FloatList(INITIAL_CAPACITY, INCREMENT)
- */
-
-static int __pyx_pf_3_sa_13FeatureVector___cinit__(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self) {
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__cinit__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":8
- * cdef class FeatureVector:
- * def __cinit__(self):
- * self.names = IntList(INITIAL_CAPACITY, INCREMENT) # <<<<<<<<<<<<<<
- * self.values = FloatList(INITIAL_CAPACITY, INCREMENT)
- *
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__INCREMENT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->names);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->names));
- __pyx_v_self->names = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);
- __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":9
- * def __cinit__(self):
- * self.names = IntList(INITIAL_CAPACITY, INCREMENT)
- * self.values = FloatList(INITIAL_CAPACITY, INCREMENT) # <<<<<<<<<<<<<<
- *
- * def set(self, unsigned name, float value):
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__INCREMENT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_2 = 0;
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FloatList)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_3);
- __Pyx_GOTREF(__pyx_v_self->values);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->values));
- __pyx_v_self->values = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.FeatureVector.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_13FeatureVector_3set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_3_sa_13FeatureVector_3set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- unsigned int __pyx_v_name;
- float __pyx_v_value;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("set (wrapper)", 0);
- {
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__value,0};
- PyObject* values[2] = {0,0};
- if (unlikely(__pyx_kwds)) {
- Py_ssize_t kw_args;
- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
- switch (pos_args) {
- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- case 0: break;
- default: goto __pyx_L5_argtuple_error;
- }
- kw_args = PyDict_Size(__pyx_kwds);
- switch (pos_args) {
- case 0:
- if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
- else goto __pyx_L5_argtuple_error;
- case 1:
- if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value)) != 0)) kw_args--;
- else {
- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- }
- if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
- goto __pyx_L5_argtuple_error;
- } else {
- values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
- values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
- }
- __pyx_v_name = __Pyx_PyInt_AsUnsignedInt(values[0]); if (unlikely((__pyx_v_name == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_value = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_value == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- }
- goto __pyx_L4_argument_unpacking_done;
- __pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_L3_error:;
- __Pyx_AddTraceback("_sa.FeatureVector.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __Pyx_RefNannyFinishContext();
- return NULL;
- __pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_3_sa_13FeatureVector_2set(((struct __pyx_obj_3_sa_FeatureVector *)__pyx_v_self), __pyx_v_name, __pyx_v_value);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":11
- * self.values = FloatList(INITIAL_CAPACITY, INCREMENT)
- *
- * def set(self, unsigned name, float value): # <<<<<<<<<<<<<<
- * self.names.append(name)
- * self.values.append(value)
- */
-
-static PyObject *__pyx_pf_3_sa_13FeatureVector_2set(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self, unsigned int __pyx_v_name, float __pyx_v_value) {
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("set", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":12
- *
- * def set(self, unsigned name, float value):
- * self.names.append(name) # <<<<<<<<<<<<<<
- * self.values.append(value)
- *
- */
- __pyx_t_1 = PyLong_FromUnsignedLong(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->names), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":13
- * def set(self, unsigned name, float value):
- * self.names.append(name)
- * self.values.append(value) # <<<<<<<<<<<<<<
- *
- * def __iter__(self):
- */
- __pyx_t_2 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->values), __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_AddTraceback("_sa.FeatureVector.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_13FeatureVector_6generator5(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_13FeatureVector_5__iter__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_13FeatureVector_5__iter__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_13FeatureVector_4__iter__(((struct __pyx_obj_3_sa_FeatureVector *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":15
- * self.values.append(value)
- *
- * def __iter__(self): # <<<<<<<<<<<<<<
- * cdef unsigned i
- * for i in range(self.names.len):
- */
-
-static PyObject *__pyx_pf_3_sa_13FeatureVector_4__iter__(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__iter__", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(__pyx_ptype_3_sa___pyx_scope_struct_27___iter__, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_13FeatureVector_6generator5, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.FeatureVector.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_13FeatureVector_6generator5(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- int __pyx_t_1;
- unsigned int __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":17
- * def __iter__(self):
- * cdef unsigned i
- * for i in range(self.names.len): # <<<<<<<<<<<<<<
- * yield (FD.word(self.names[i]), self.values[i])
- *
- */
- __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->names->len;
- for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
- __pyx_cur_scope->__pyx_v_i = __pyx_t_2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":18
- * cdef unsigned i
- * for i in range(self.names.len):
- * yield (FD.word(self.names[i]), self.values[i]) # <<<<<<<<<<<<<<
- *
- * def __str__(self):
- */
- __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->names), __pyx_cur_scope->__pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_3_sa_FD->__pyx_vtab)->word(__pyx_v_3_sa_FD, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->values), __pyx_cur_scope->__pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_3 = 0;
- __pyx_t_5 = 0;
- __pyx_r = ((PyObject *)__pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_3_sa_13FeatureVector_8__str__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_3_sa_13FeatureVector_8__str__(PyObject *__pyx_v_self) {
- PyObject *__pyx_r = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
- __pyx_r = __pyx_pf_3_sa_13FeatureVector_7__str__(((struct __pyx_obj_3_sa_FeatureVector *)__pyx_v_self));
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static PyObject *__pyx_gb_3_sa_13FeatureVector_7__str___2generator17(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":21
- *
- * def __str__(self):
- * return ' '.join('%s=%s' % feat for feat in self) # <<<<<<<<<<<<<<
- *
- * cdef class Scorer:
- */
-
-static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str___genexpr(PyObject *__pyx_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("genexpr", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_29_genexpr, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *) __pyx_self;
- __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
- {
- __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_13FeatureVector_7__str___2generator17, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_cur_scope);
- __Pyx_RefNannyFinishContext();
- return (PyObject *) gen;
- }
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_AddTraceback("_sa.FeatureVector.__str__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-static PyObject *__pyx_gb_3_sa_13FeatureVector_7__str___2generator17(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
- struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)__pyx_generator->closure);
- PyObject *__pyx_r = NULL;
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("None", 0);
- switch (__pyx_generator->resume_label) {
- case 0: goto __pyx_L3_first_run;
- case 1: goto __pyx_L6_resume_from_yield;
- default: /* CPython raises the right error here */
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
- if (PyList_CheckExact(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) || PyTuple_CheckExact(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self))) {
- __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_feat);
- __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_feat);
- __Pyx_GIVEREF(__pyx_t_4);
- __pyx_cur_scope->__pyx_v_feat = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_167), __pyx_cur_scope->__pyx_v_feat); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __pyx_r = ((PyObject *)__pyx_t_4);
- __pyx_t_4 = 0;
- __Pyx_XGIVEREF(__pyx_t_1);
- __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
- __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
- __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- /* return from generator, yielding value */
- __pyx_generator->resume_label = 1;
- return __pyx_r;
- __pyx_L6_resume_from_yield:;
- __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
- __pyx_cur_scope->__pyx_t_0 = 0;
- __Pyx_XGOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
- __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- PyErr_SetNone(PyExc_StopIteration);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_r);
- __pyx_generator->resume_label = -1;
- __Pyx_Generator_clear((PyObject*)__pyx_generator);
- __Pyx_RefNannyFinishContext();
- return NULL;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":20
- * yield (FD.word(self.names[i]), self.values[i])
- *
- * def __str__(self): # <<<<<<<<<<<<<<
- * return ' '.join('%s=%s' % feat for feat in self)
- *
- */
-
-static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str__(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self) {
- struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *__pyx_cur_scope;
- PyObject *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__str__", 0);
- __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)__pyx_tp_new_3_sa___pyx_scope_struct_28___str__(__pyx_ptype_3_sa___pyx_scope_struct_28___str__, __pyx_empty_tuple, NULL);
- if (unlikely(!__pyx_cur_scope)) {
- __Pyx_RefNannyFinishContext();
- return NULL;
- }
- __Pyx_GOTREF(__pyx_cur_scope);
- __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
- __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
- __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":21
- *
- * def __str__(self):
- * return ' '.join('%s=%s' % feat for feat in self) # <<<<<<<<<<<<<<
- *
- * cdef class Scorer:
- */
- __Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_pf_3_sa_13FeatureVector_7__str___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
- goto __pyx_L0;
-
- __pyx_r = Py_None; __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_AddTraceback("_sa.FeatureVector.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = NULL;
- __pyx_L0:;
- __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
- __Pyx_XGIVEREF(__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_3_sa_6Scorer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_3_sa_6Scorer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
- PyObject *__pyx_v_models = 0;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
- __Pyx_INCREF(__pyx_args);
- __pyx_v_models = __pyx_args;
- __pyx_r = __pyx_pf_3_sa_6Scorer___init__(((struct __pyx_obj_3_sa_Scorer *)__pyx_v_self), __pyx_v_models);
- __Pyx_XDECREF(__pyx_v_models);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":25
- * cdef class Scorer:
- * cdef models
- * def __init__(self, *models): # <<<<<<<<<<<<<<
- * names = [FD.index(<char *>model.__name__) for model in models]
- * self.models = zip(names, models)
- */
-
-static int __pyx_pf_3_sa_6Scorer___init__(struct __pyx_obj_3_sa_Scorer *__pyx_v_self, PyObject *__pyx_v_models) {
- PyObject *__pyx_v_names = NULL;
- PyObject *__pyx_v_model = NULL;
- int __pyx_r;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- Py_ssize_t __pyx_t_3;
- PyObject *__pyx_t_4 = NULL;
- char *__pyx_t_5;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__init__", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":26
- * cdef models
- * def __init__(self, *models):
- * names = [FD.index(<char *>model.__name__) for model in models] # <<<<<<<<<<<<<<
- * self.models = zip(names, models)
- *
- */
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = ((PyObject *)__pyx_v_models); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
- for (;;) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- __Pyx_XDECREF(__pyx_v_model);
- __pyx_v_model = __pyx_t_4;
- __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_model, __pyx_n_s____name__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_3_sa_FD->__pyx_vtab)->index(__pyx_v_3_sa_FD, ((char *)__pyx_t_5))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_names = ((PyObject*)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":27
- * def __init__(self, *models):
- * names = [FD.index(<char *>model.__name__) for model in models]
- * self.models = zip(names, models) # <<<<<<<<<<<<<<
- *
- * cdef FeatureVector score(self, ctx):
- */
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_v_names));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_names));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_names));
- __Pyx_INCREF(((PyObject *)__pyx_v_models));
- PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_models));
- __Pyx_GIVEREF(((PyObject *)__pyx_v_models));
- __pyx_t_2 = PyObject_Call(__pyx_builtin_zip, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_v_self->models);
- __Pyx_DECREF(__pyx_v_self->models);
- __pyx_v_self->models = __pyx_t_2;
- __pyx_t_2 = 0;
-
- __pyx_r = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_AddTraceback("_sa.Scorer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = -1;
- __pyx_L0:;
- __Pyx_XDECREF(__pyx_v_names);
- __Pyx_XDECREF(__pyx_v_model);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-
-/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":29
- * self.models = zip(names, models)
- *
- * cdef FeatureVector score(self, ctx): # <<<<<<<<<<<<<<
- * cdef FeatureVector scores = FeatureVector()
- * for name, model in self.models:
- */
-
-static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __pyx_obj_3_sa_Scorer *__pyx_v_self, PyObject *__pyx_v_ctx) {
- struct __pyx_obj_3_sa_FeatureVector *__pyx_v_scores = 0;
- PyObject *__pyx_v_name = NULL;
- PyObject *__pyx_v_model = NULL;
- struct __pyx_obj_3_sa_FeatureVector *__pyx_r = NULL;
- __Pyx_RefNannyDeclarations
- PyObject *__pyx_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *(*__pyx_t_3)(PyObject *);
- PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
- PyObject *(*__pyx_t_8)(PyObject *);
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("score", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":30
- *
- * cdef FeatureVector score(self, ctx):
- * cdef FeatureVector scores = FeatureVector() # <<<<<<<<<<<<<<
- * for name, model in self.models:
- * scores.set(name, model(ctx))
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_FeatureVector)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":31
- * cdef FeatureVector score(self, ctx):
- * cdef FeatureVector scores = FeatureVector()
- * for name, model in self.models: # <<<<<<<<<<<<<<
- * scores.set(name, model(ctx))
- * return scores
- */
- if (PyList_CheckExact(__pyx_v_self->models) || PyTuple_CheckExact(__pyx_v_self->models)) {
- __pyx_t_1 = __pyx_v_self->models; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
- __pyx_t_3 = NULL;
- } else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->models); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
- }
- for (;;) {
- if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- #if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- } else {
- __pyx_t_4 = __pyx_t_3(__pyx_t_1);
- if (unlikely(!__pyx_t_4)) {
- if (PyErr_Occurred()) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- break;
- }
- __Pyx_GOTREF(__pyx_t_4);
- }
- if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
- PyObject* sequence = __pyx_t_4;
- #if CYTHON_COMPILING_IN_CPYTHON
- Py_ssize_t size = Py_SIZE(sequence);
- #else
- Py_ssize_t size = PySequence_Size(sequence);
- #endif
- if (unlikely(size != 2)) {
- if (size > 2) __Pyx_RaiseTooManyValuesError(2);
- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- #if CYTHON_COMPILING_IN_CPYTHON
- if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
- } else {
- __pyx_t_5 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
- }
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_6);
- #else
- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- #endif
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- {
- Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
- index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
- index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_8 = NULL;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- goto __pyx_L6_unpacking_done;
- __pyx_L5_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_L6_unpacking_done:;
- }
- __Pyx_XDECREF(__pyx_v_name);
- __pyx_v_name = __pyx_t_5;
- __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_v_model);
- __pyx_v_model = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":32
- * cdef FeatureVector scores = FeatureVector()
- * for name, model in self.models:
- * scores.set(name, model(ctx)) # <<<<<<<<<<<<<<
- * return scores
- */
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_scores), __pyx_n_s__set); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_ctx);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ctx);
- __Pyx_GIVEREF(__pyx_v_ctx);
- __pyx_t_5 = PyObject_Call(__pyx_v_model, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_name);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_name);
- __Pyx_GIVEREF(__pyx_v_name);
- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":33
- * for name, model in self.models:
- * scores.set(name, model(ctx))
- * return scores # <<<<<<<<<<<<<<
- */
- __Pyx_XDECREF(((PyObject *)__pyx_r));
- __Pyx_INCREF(((PyObject *)__pyx_v_scores));
- __pyx_r = __pyx_v_scores;
- goto __pyx_L0;
-
- __pyx_r = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); __Pyx_INCREF(Py_None);
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
- __Pyx_AddTraceback("_sa.Scorer.score", __pyx_clineno, __pyx_lineno, __pyx_filename);
- __pyx_r = 0;
- __pyx_L0:;
- __Pyx_XDECREF((PyObject *)__pyx_v_scores);
- __Pyx_XDECREF(__pyx_v_name);
- __Pyx_XDECREF(__pyx_v_model);
- __Pyx_XGIVEREF((PyObject *)__pyx_r);
- __Pyx_RefNannyFinishContext();
- return __pyx_r;
-}
-static struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory __pyx_vtable_3_sa_HieroCachingRuleFactory;
-
-static PyObject *__pyx_tp_new_3_sa_HieroCachingRuleFactory(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_HieroCachingRuleFactory;
- p->rules = ((struct __pyx_obj_3_sa_TrieTable *)Py_None); Py_INCREF(Py_None);
- p->sampler = ((struct __pyx_obj_3_sa_Sampler *)Py_None); Py_INCREF(Py_None);
- p->scorer = ((struct __pyx_obj_3_sa_Scorer *)Py_None); Py_INCREF(Py_None);
- p->precomputed_index = Py_None; Py_INCREF(Py_None);
- p->precomputed_collocations = Py_None; Py_INCREF(Py_None);
- p->precompute_file = Py_None; Py_INCREF(Py_None);
- p->max_rank = Py_None; Py_INCREF(Py_None);
- p->prev_norm_prefix = Py_None; Py_INCREF(Py_None);
- p->fsa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None);
- p->fda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None);
- p->eda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None);
- p->alignment = ((struct __pyx_obj_3_sa_Alignment *)Py_None); Py_INCREF(Py_None);
- p->eid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->fid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->findexes = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->findexes1 = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->samples_f = Py_None; Py_INCREF(Py_None);
- p->phrases_f = Py_None; Py_INCREF(Py_None);
- p->phrases_e = Py_None; Py_INCREF(Py_None);
- p->phrases_fe = Py_None; Py_INCREF(Py_None);
- p->phrases_al = Py_None; Py_INCREF(Py_None);
- p->bilex_f = Py_None; Py_INCREF(Py_None);
- p->bilex_e = Py_None; Py_INCREF(Py_None);
- p->bilex_fe = Py_None; Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_HieroCachingRuleFactory(PyObject *o) {
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->rules);
- Py_CLEAR(p->sampler);
- Py_CLEAR(p->scorer);
- Py_CLEAR(p->precomputed_index);
- Py_CLEAR(p->precomputed_collocations);
- Py_CLEAR(p->precompute_file);
- Py_CLEAR(p->max_rank);
- Py_CLEAR(p->prev_norm_prefix);
- Py_CLEAR(p->fsa);
- Py_CLEAR(p->fda);
- Py_CLEAR(p->eda);
- Py_CLEAR(p->alignment);
- Py_CLEAR(p->eid2symid);
- Py_CLEAR(p->fid2symid);
- Py_CLEAR(p->findexes);
- Py_CLEAR(p->findexes1);
- Py_CLEAR(p->samples_f);
- Py_CLEAR(p->phrases_f);
- Py_CLEAR(p->phrases_e);
- Py_CLEAR(p->phrases_fe);
- Py_CLEAR(p->phrases_al);
- Py_CLEAR(p->bilex_f);
- Py_CLEAR(p->bilex_e);
- Py_CLEAR(p->bilex_fe);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_HieroCachingRuleFactory(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o;
- if (p->rules) {
- e = (*v)(((PyObject*)p->rules), a); if (e) return e;
- }
- if (p->sampler) {
- e = (*v)(((PyObject*)p->sampler), a); if (e) return e;
- }
- if (p->scorer) {
- e = (*v)(((PyObject*)p->scorer), a); if (e) return e;
- }
- if (p->precomputed_index) {
- e = (*v)(p->precomputed_index, a); if (e) return e;
- }
- if (p->precomputed_collocations) {
- e = (*v)(p->precomputed_collocations, a); if (e) return e;
- }
- if (p->precompute_file) {
- e = (*v)(p->precompute_file, a); if (e) return e;
- }
- if (p->max_rank) {
- e = (*v)(p->max_rank, a); if (e) return e;
- }
- if (p->prev_norm_prefix) {
- e = (*v)(p->prev_norm_prefix, a); if (e) return e;
- }
- if (p->fsa) {
- e = (*v)(((PyObject*)p->fsa), a); if (e) return e;
- }
- if (p->fda) {
- e = (*v)(((PyObject*)p->fda), a); if (e) return e;
- }
- if (p->eda) {
- e = (*v)(((PyObject*)p->eda), a); if (e) return e;
- }
- if (p->alignment) {
- e = (*v)(((PyObject*)p->alignment), a); if (e) return e;
- }
- if (p->eid2symid) {
- e = (*v)(((PyObject*)p->eid2symid), a); if (e) return e;
- }
- if (p->fid2symid) {
- e = (*v)(((PyObject*)p->fid2symid), a); if (e) return e;
- }
- if (p->findexes) {
- e = (*v)(((PyObject*)p->findexes), a); if (e) return e;
- }
- if (p->findexes1) {
- e = (*v)(((PyObject*)p->findexes1), a); if (e) return e;
- }
- if (p->samples_f) {
- e = (*v)(p->samples_f, a); if (e) return e;
- }
- if (p->phrases_f) {
- e = (*v)(p->phrases_f, a); if (e) return e;
- }
- if (p->phrases_e) {
- e = (*v)(p->phrases_e, a); if (e) return e;
- }
- if (p->phrases_fe) {
- e = (*v)(p->phrases_fe, a); if (e) return e;
- }
- if (p->phrases_al) {
- e = (*v)(p->phrases_al, a); if (e) return e;
- }
- if (p->bilex_f) {
- e = (*v)(p->bilex_f, a); if (e) return e;
- }
- if (p->bilex_e) {
- e = (*v)(p->bilex_e, a); if (e) return e;
- }
- if (p->bilex_fe) {
- e = (*v)(p->bilex_fe, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_HieroCachingRuleFactory(PyObject *o) {
- struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->rules);
- p->rules = ((struct __pyx_obj_3_sa_TrieTable *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->sampler);
- p->sampler = ((struct __pyx_obj_3_sa_Sampler *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->scorer);
- p->scorer = ((struct __pyx_obj_3_sa_Scorer *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->precomputed_index);
- p->precomputed_index = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->precomputed_collocations);
- p->precomputed_collocations = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->precompute_file);
- p->precompute_file = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->max_rank);
- p->max_rank = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->prev_norm_prefix);
- p->prev_norm_prefix = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->fsa);
- p->fsa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->fda);
- p->fda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->eda);
- p->eda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->alignment);
- p->alignment = ((struct __pyx_obj_3_sa_Alignment *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->eid2symid);
- p->eid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->fid2symid);
- p->fid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->findexes);
- p->findexes = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->findexes1);
- p->findexes1 = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->samples_f);
- p->samples_f = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->phrases_f);
- p->phrases_f = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->phrases_e);
- p->phrases_e = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->phrases_fe);
- p->phrases_fe = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->phrases_al);
- p->phrases_al = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->bilex_f);
- p->bilex_f = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->bilex_e);
- p->bilex_e = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->bilex_fe);
- p->bilex_fe = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_HieroCachingRuleFactory[] = {
- {__Pyx_NAMESTR("configure"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_23HieroCachingRuleFactory_2configure)},
- {__Pyx_NAMESTR("pattern2phrase"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_5pattern2phrase, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("pattern2phrase_plus"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_7pattern2phrase_plus, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("precompute"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9precompute, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_precomputed_collocation"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_11get_precomputed_collocation, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("advance"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_all_nodes_isteps_away"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_away, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("reachable"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("shortest"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_next_states"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("input"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_23input, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_23HieroCachingRuleFactory_22input)},
- {__Pyx_NAMESTR("add_instance"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("form_rule"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("fmt_rule"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("dump_online_stats"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_32dump_online_stats, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("dump_online_rules"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_34dump_online_rules, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("online_ctx_lookup"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_f_phrases"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_38get_f_phrases, METH_O, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_HieroCachingRuleFactory = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.HieroCachingRuleFactory"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_HieroCachingRuleFactory), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_HieroCachingRuleFactory, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- __Pyx_DOCSTR("This RuleFactory implements a caching \n method using TrieTable, which makes phrase\n generation somewhat speedier -- phrases only\n need to be extracted once (however, it is\n quite possible they need to be scored \n for each input sentence, for contextual models)"), /*tp_doc*/
- __pyx_tp_traverse_3_sa_HieroCachingRuleFactory, /*tp_traverse*/
- __pyx_tp_clear_3_sa_HieroCachingRuleFactory, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_HieroCachingRuleFactory, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_HieroCachingRuleFactory, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *__pyx_freelist_3_sa___pyx_scope_struct_9_decode_sentence[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_9_decode_sentence[--__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o);
- p->__pyx_v_lattice = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_lattice);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence))) {
- __pyx_freelist_3_sa___pyx_scope_struct_9_decode_sentence[__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o;
- if (p->__pyx_v_lattice) {
- e = (*v)(p->__pyx_v_lattice, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_lattice);
- p->__pyx_v_lattice = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_9_decode_sentence[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_9_decode_sentence = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_9_decode_sentence"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_17_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_17_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_17_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_a = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_17_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_a);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_17_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_17_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_a) {
- e = (*v)(p->__pyx_v_a, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_17_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_a);
- p->__pyx_v_a = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_17_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_17_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_17_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_17_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_17_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_17_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_17_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_20_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_20_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_20_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_word = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_20_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_word);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_20_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_20_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_word) {
- e = (*v)(p->__pyx_v_word, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_20_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_word);
- p->__pyx_v_word = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_20_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_20_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_20_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_20_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_20_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_20_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_20_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *__pyx_freelist_3_sa___pyx_scope_struct_3_compute_stats[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_3_compute_stats[--__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o);
- p->__pyx_v_ngram = 0;
- p->__pyx_v_ngram_start = 0;
- p->__pyx_v_ngram_starts = 0;
- p->__pyx_v_run_start = 0;
- p->__pyx_v_self = 0;
- p->__pyx_v_veb = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_ngram);
- Py_CLEAR(p->__pyx_v_ngram_start);
- Py_CLEAR(p->__pyx_v_ngram_starts);
- Py_CLEAR(p->__pyx_v_run_start);
- Py_CLEAR(p->__pyx_v_self);
- Py_CLEAR(p->__pyx_v_veb);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats))) {
- __pyx_freelist_3_sa___pyx_scope_struct_3_compute_stats[__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o;
- if (p->__pyx_v_ngram) {
- e = (*v)(p->__pyx_v_ngram, a); if (e) return e;
- }
- if (p->__pyx_v_ngram_start) {
- e = (*v)(((PyObject*)p->__pyx_v_ngram_start), a); if (e) return e;
- }
- if (p->__pyx_v_ngram_starts) {
- e = (*v)(p->__pyx_v_ngram_starts, a); if (e) return e;
- }
- if (p->__pyx_v_run_start) {
- e = (*v)(((PyObject*)p->__pyx_v_run_start), a); if (e) return e;
- }
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- if (p->__pyx_v_veb) {
- e = (*v)(((PyObject*)p->__pyx_v_veb), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_ngram);
- p->__pyx_v_ngram = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_ngram_start);
- p->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_ngram_starts);
- p->__pyx_v_ngram_starts = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_run_start);
- p->__pyx_v_run_start = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_LCP *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_veb);
- p->__pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_3_compute_stats[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_3_compute_stats = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_3_compute_stats"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_3_compute_stats, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_3_compute_stats, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_3_compute_stats, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_3_compute_stats, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_12_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_12_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_12_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_word = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_12_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_word);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_12_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_12_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_word) {
- e = (*v)(p->__pyx_v_word, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_12_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_word);
- p->__pyx_v_word = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_12_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_12_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_12_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_12_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_12_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_12_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_12_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_29_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_29_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_29_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_feat = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_29_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_feat);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_29_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_29_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_feat) {
- e = (*v)(p->__pyx_v_feat, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_29_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_feat);
- p->__pyx_v_feat = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_29_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_29_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_29_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_29_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_29_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_29_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_29_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_IntList __pyx_vtable_3_sa_IntList;
-
-static PyObject *__pyx_tp_new_3_sa_IntList(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_IntList *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_IntList *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_IntList;
- if (unlikely(__pyx_pw_3_sa_7IntList_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_IntList(PyObject *o) {
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_7IntList_15__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- (*Py_TYPE(o)->tp_free)(o);
-}
-static PyObject *__pyx_sq_item_3_sa_IntList(PyObject *o, Py_ssize_t i) {
- PyObject *r;
- PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
- r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
- Py_DECREF(x);
- return r;
-}
-
-static int __pyx_mp_ass_subscript_3_sa_IntList(PyObject *o, PyObject *i, PyObject *v) {
- if (v) {
- return __pyx_pw_3_sa_7IntList_22__setitem__(o, i, v);
- }
- else {
- PyErr_Format(PyExc_NotImplementedError,
- "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name);
- return -1;
- }
-}
-
-static PyMethodDef __pyx_methods_3_sa_IntList[] = {
- {__Pyx_NAMESTR("index"), (PyCFunction)__pyx_pw_3_sa_7IntList_5index, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("partition"), (PyCFunction)__pyx_pw_3_sa_7IntList_7partition, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("_doquicksort"), (PyCFunction)__pyx_pw_3_sa_7IntList_9_doquicksort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("sort"), (PyCFunction)__pyx_pw_3_sa_7IntList_11sort, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("reset"), (PyCFunction)__pyx_pw_3_sa_7IntList_13reset, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_size"), (PyCFunction)__pyx_pw_3_sa_7IntList_26get_size, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pw_3_sa_7IntList_28append, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("extend"), (PyCFunction)__pyx_pw_3_sa_7IntList_30extend, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_3_sa_7IntList_32write, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_3_sa_7IntList_34read, METH_O, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_IntList = {
- __pyx_pw_3_sa_7IntList_24__len__, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- __pyx_sq_item_3_sa_IntList, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- 0, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_IntList = {
- __pyx_pw_3_sa_7IntList_24__len__, /*mp_length*/
- __pyx_pw_3_sa_7IntList_20__getitem__, /*mp_subscript*/
- __pyx_mp_ass_subscript_3_sa_IntList, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_3_sa_IntList = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.IntList"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_IntList), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_IntList, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- &__pyx_tp_as_sequence_IntList, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_IntList, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- __pyx_pw_3_sa_7IntList_3__str__, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- __pyx_pw_3_sa_7IntList_17__iter__, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_IntList, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_IntList, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_VEBIterator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_VEBIterator(PyObject *o) {
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_VEBIterator[] = {
- {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_3_sa_11VEBIterator_1__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_VEBIterator = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.VEBIterator"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_VEBIterator), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_VEBIterator, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- __pyx_pw_3_sa_11VEBIterator_1__next__, /*tp_iternext*/
- __pyx_methods_3_sa_VEBIterator, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_VEBIterator, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_BiLex __pyx_vtable_3_sa_BiLex;
-
-static PyObject *__pyx_tp_new_3_sa_BiLex(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_BiLex *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_BiLex *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_BiLex;
- p->col1 = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None);
- p->col2 = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None);
- p->f_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->e_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->id2eword = Py_None; Py_INCREF(Py_None);
- p->id2fword = Py_None; Py_INCREF(Py_None);
- p->eword2id = Py_None; Py_INCREF(Py_None);
- p->fword2id = Py_None; Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_5BiLex_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_BiLex(PyObject *o) {
- struct __pyx_obj_3_sa_BiLex *p = (struct __pyx_obj_3_sa_BiLex *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->col1);
- Py_CLEAR(p->col2);
- Py_CLEAR(p->f_index);
- Py_CLEAR(p->e_index);
- Py_CLEAR(p->id2eword);
- Py_CLEAR(p->id2fword);
- Py_CLEAR(p->eword2id);
- Py_CLEAR(p->fword2id);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_BiLex(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_BiLex *p = (struct __pyx_obj_3_sa_BiLex *)o;
- if (p->col1) {
- e = (*v)(((PyObject*)p->col1), a); if (e) return e;
- }
- if (p->col2) {
- e = (*v)(((PyObject*)p->col2), a); if (e) return e;
- }
- if (p->f_index) {
- e = (*v)(((PyObject*)p->f_index), a); if (e) return e;
- }
- if (p->e_index) {
- e = (*v)(((PyObject*)p->e_index), a); if (e) return e;
- }
- if (p->id2eword) {
- e = (*v)(p->id2eword, a); if (e) return e;
- }
- if (p->id2fword) {
- e = (*v)(p->id2fword, a); if (e) return e;
- }
- if (p->eword2id) {
- e = (*v)(p->eword2id, a); if (e) return e;
- }
- if (p->fword2id) {
- e = (*v)(p->fword2id, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_BiLex(PyObject *o) {
- struct __pyx_obj_3_sa_BiLex *p = (struct __pyx_obj_3_sa_BiLex *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->col1);
- p->col1 = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->col2);
- p->col2 = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->f_index);
- p->f_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->e_index);
- p->e_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->id2eword);
- p->id2eword = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->id2fword);
- p->id2fword = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->eword2id);
- p->eword2id = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->fword2id);
- p->fword2id = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_BiLex[] = {
- {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_5BiLex_3write_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_5BiLex_5read_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_e_id"), (PyCFunction)__pyx_pw_3_sa_5BiLex_7get_e_id, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_f_id"), (PyCFunction)__pyx_pw_3_sa_5BiLex_9get_f_id, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_5BiLex_11read_text, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_5BiLex_13write_enhanced, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_score"), (PyCFunction)__pyx_pw_3_sa_5BiLex_15get_score, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_5BiLex_17write_text, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_5BiLex_16write_text)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_BiLex = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.BiLex"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_BiLex), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_BiLex, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_BiLex, /*tp_traverse*/
- __pyx_tp_clear_3_sa_BiLex, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_BiLex, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_BiLex, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_VEB __pyx_vtable_3_sa_VEB;
-
-static PyObject *__pyx_tp_new_3_sa_VEB(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_VEB *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_VEB *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_VEB;
- if (unlikely(__pyx_pw_3_sa_3VEB_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_VEB(PyObject *o) {
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_3VEB_3__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_VEB[] = {
- {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_3_sa_3VEB_7insert, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("findsucc"), (PyCFunction)__pyx_pw_3_sa_3VEB_9findsucc, METH_O, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_VEB = {
- __pyx_pw_3_sa_3VEB_11__len__, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- 0, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- __pyx_pw_3_sa_3VEB_13__contains__, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_VEB = {
- __pyx_pw_3_sa_3VEB_11__len__, /*mp_length*/
- 0, /*mp_subscript*/
- 0, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_3_sa_VEB = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.VEB"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_VEB), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_VEB, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- &__pyx_tp_as_sequence_VEB, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_VEB, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- __pyx_pw_3_sa_3VEB_5__iter__, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_VEB, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_VEB, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *__pyx_freelist_3_sa___pyx_scope_struct_11_encode_words[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_11_encode_words = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_11_encode_words[--__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o);
- p->__pyx_v_words = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_11_encode_words(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_words);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words))) {
- __pyx_freelist_3_sa___pyx_scope_struct_11_encode_words[__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_11_encode_words(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o;
- if (p->__pyx_v_words) {
- e = (*v)(p->__pyx_v_words, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_11_encode_words(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_words);
- p->__pyx_v_words = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_11_encode_words[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_11_encode_words = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_11_encode_words"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_11_encode_words, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_11_encode_words, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_11_encode_words, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_11_encode_words, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_LCP(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_LCP *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_LCP *)o);
- p->sa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None);
- p->lcp = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_3LCP_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_LCP(PyObject *o) {
- struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->sa);
- Py_CLEAR(p->lcp);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_LCP(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o;
- if (p->sa) {
- e = (*v)(((PyObject*)p->sa), a); if (e) return e;
- }
- if (p->lcp) {
- e = (*v)(((PyObject*)p->lcp), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_LCP(PyObject *o) {
- struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->sa);
- p->sa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->lcp);
- p->lcp = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_LCP[] = {
- {__Pyx_NAMESTR("compute_stats"), (PyCFunction)__pyx_pw_3_sa_3LCP_3compute_stats, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_3LCP_2compute_stats)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_LCP = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.LCP"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_LCP), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_LCP, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_LCP, /*tp_traverse*/
- __pyx_tp_clear_3_sa_LCP, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_LCP, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_LCP, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_DataArray __pyx_vtable_3_sa_DataArray;
-
-static PyObject *__pyx_tp_new_3_sa_DataArray(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_DataArray *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_DataArray *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_DataArray;
- p->word2id = Py_None; Py_INCREF(Py_None);
- p->id2word = Py_None; Py_INCREF(Py_None);
- p->data = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->sent_id = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_9DataArray_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_DataArray(PyObject *o) {
- struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->word2id);
- Py_CLEAR(p->id2word);
- Py_CLEAR(p->data);
- Py_CLEAR(p->sent_id);
- Py_CLEAR(p->sent_index);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_DataArray(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o;
- if (p->word2id) {
- e = (*v)(p->word2id, a); if (e) return e;
- }
- if (p->id2word) {
- e = (*v)(p->id2word, a); if (e) return e;
- }
- if (p->data) {
- e = (*v)(((PyObject*)p->data), a); if (e) return e;
- }
- if (p->sent_id) {
- e = (*v)(((PyObject*)p->sent_id), a); if (e) return e;
- }
- if (p->sent_index) {
- e = (*v)(((PyObject*)p->sent_index), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_DataArray(PyObject *o) {
- struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->word2id);
- p->word2id = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->id2word);
- p->id2word = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->data);
- p->data = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->sent_id);
- p->sent_id = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->sent_index);
- p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *__pyx_sq_item_3_sa_DataArray(PyObject *o, Py_ssize_t i) {
- PyObject *r;
- PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
- r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
- Py_DECREF(x);
- return r;
-}
-
-static PyObject *__pyx_getprop_3_sa_9DataArray_word2id(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9DataArray_7word2id_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9DataArray_word2id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9DataArray_7word2id_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_9DataArray_7word2id_5__del__(o);
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_9DataArray_id2word(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9DataArray_7id2word_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9DataArray_id2word(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9DataArray_7id2word_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_9DataArray_7id2word_5__del__(o);
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_9DataArray_data(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9DataArray_4data_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9DataArray_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9DataArray_4data_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_9DataArray_4data_5__del__(o);
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_9DataArray_sent_id(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9DataArray_7sent_id_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9DataArray_sent_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9DataArray_7sent_id_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_9DataArray_7sent_id_5__del__(o);
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_9DataArray_sent_index(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9DataArray_10sent_index_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9DataArray_sent_index(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9DataArray_10sent_index_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_9DataArray_10sent_index_5__del__(o);
- }
-}
-
-static PyMethodDef __pyx_methods_3_sa_DataArray[] = {
- {__Pyx_NAMESTR("get_sentence_id"), (PyCFunction)__pyx_pw_3_sa_9DataArray_5get_sentence_id, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_sentence"), (PyCFunction)__pyx_pw_3_sa_9DataArray_7get_sentence, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_id"), (PyCFunction)__pyx_pw_3_sa_9DataArray_9get_id, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("get_sentence_bounds"), (PyCFunction)__pyx_pw_3_sa_9DataArray_13get_sentence_bounds, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_9DataArray_15write_text, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_9DataArray_17read_text, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_bitext"), (PyCFunction)__pyx_pw_3_sa_9DataArray_19read_bitext, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_text_data"), (PyCFunction)__pyx_pw_3_sa_9DataArray_21read_text_data, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_9DataArray_23read_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_9DataArray_25write_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_enhanced_handle"), (PyCFunction)__pyx_pw_3_sa_9DataArray_27write_enhanced_handle, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_9DataArray_29write_enhanced, METH_O, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_3_sa_DataArray[] = {
- {(char *)"word2id", __pyx_getprop_3_sa_9DataArray_word2id, __pyx_setprop_3_sa_9DataArray_word2id, 0, 0},
- {(char *)"id2word", __pyx_getprop_3_sa_9DataArray_id2word, __pyx_setprop_3_sa_9DataArray_id2word, 0, 0},
- {(char *)"data", __pyx_getprop_3_sa_9DataArray_data, __pyx_setprop_3_sa_9DataArray_data, 0, 0},
- {(char *)"sent_id", __pyx_getprop_3_sa_9DataArray_sent_id, __pyx_setprop_3_sa_9DataArray_sent_id, 0, 0},
- {(char *)"sent_index", __pyx_getprop_3_sa_9DataArray_sent_index, __pyx_setprop_3_sa_9DataArray_sent_index, 0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_DataArray = {
- __pyx_pw_3_sa_9DataArray_3__len__, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- __pyx_sq_item_3_sa_DataArray, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- 0, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_DataArray = {
- __pyx_pw_3_sa_9DataArray_3__len__, /*mp_length*/
- __pyx_pw_3_sa_9DataArray_11__getitem__, /*mp_subscript*/
- 0, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_3_sa_DataArray = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.DataArray"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_DataArray), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_DataArray, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- &__pyx_tp_as_sequence_DataArray, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_DataArray, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_DataArray, /*tp_traverse*/
- __pyx_tp_clear_3_sa_DataArray, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_DataArray, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_3_sa_DataArray, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_DataArray, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_BitSetIterator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_BitSetIterator(PyObject *o) {
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_BitSetIterator[] = {
- {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_3_sa_14BitSetIterator_1__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_BitSetIterator = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.BitSetIterator"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_BitSetIterator), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_BitSetIterator, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- __pyx_pw_3_sa_14BitSetIterator_1__next__, /*tp_iternext*/
- __pyx_methods_3_sa_BitSetIterator, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_BitSetIterator, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_23_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_23_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_23_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_i = 0;
- p->__pyx_v_j = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_23_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_i);
- Py_CLEAR(p->__pyx_v_j);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_23_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_23_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_i) {
- e = (*v)(p->__pyx_v_i, a); if (e) return e;
- }
- if (p->__pyx_v_j) {
- e = (*v)(p->__pyx_v_j, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_23_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_i);
- p->__pyx_v_i = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_j);
- p->__pyx_v_j = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_23_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_23_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_23_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_23_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_23_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_23_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_23_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_Precomputation __pyx_vtable_3_sa_Precomputation;
-
-static PyObject *__pyx_tp_new_3_sa_Precomputation(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_Precomputation *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_Precomputation *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_Precomputation;
- p->precomputed_index = Py_None; Py_INCREF(Py_None);
- p->precomputed_collocations = Py_None; Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_14Precomputation_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_Precomputation(PyObject *o) {
- struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->precomputed_index);
- Py_CLEAR(p->precomputed_collocations);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_Precomputation(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o;
- if (p->precomputed_index) {
- e = (*v)(p->precomputed_index, a); if (e) return e;
- }
- if (p->precomputed_collocations) {
- e = (*v)(p->precomputed_collocations, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_Precomputation(PyObject *o) {
- struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->precomputed_index);
- p->precomputed_index = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->precomputed_collocations);
- p->precomputed_collocations = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_Precomputation[] = {
- {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_3read_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_5write_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("precompute"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_7precompute, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_Precomputation = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.Precomputation"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_Precomputation), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_Precomputation, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_Precomputation, /*tp_traverse*/
- __pyx_tp_clear_3_sa_Precomputation, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_Precomputation, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_Precomputation, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *__pyx_freelist_3_sa___pyx_scope_struct_18_alignments[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_18_alignments = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_18_alignments(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_18_alignments > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_18_alignments[--__pyx_freecount_3_sa___pyx_scope_struct_18_alignments];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o);
- p->__pyx_v_point = 0;
- p->__pyx_v_self = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_18_alignments(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_point);
- Py_CLEAR(p->__pyx_v_self);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_18_alignments < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments))) {
- __pyx_freelist_3_sa___pyx_scope_struct_18_alignments[__pyx_freecount_3_sa___pyx_scope_struct_18_alignments++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_18_alignments(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o;
- if (p->__pyx_v_point) {
- e = (*v)(p->__pyx_v_point, a); if (e) return e;
- }
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_18_alignments(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_point);
- p->__pyx_v_point = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_Rule *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_18_alignments[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_18_alignments = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_18_alignments"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_18_alignments, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_18_alignments, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_18_alignments, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_18_alignments, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_18_alignments, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_14_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_14_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_14_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_sym = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_14_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_sym);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_14_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_14_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_sym) {
- e = (*v)(p->__pyx_v_sym, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_14_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_sym);
- p->__pyx_v_sym = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_14_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_14_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_14_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_14_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_14_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_14_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_14_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_SuffixArray __pyx_vtable_3_sa_SuffixArray;
-
-static PyObject *__pyx_tp_new_3_sa_SuffixArray(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_SuffixArray *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_SuffixArray *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_SuffixArray;
- p->darray = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None);
- p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->ha = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_11SuffixArray_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_SuffixArray(PyObject *o) {
- struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->darray);
- Py_CLEAR(p->sa);
- Py_CLEAR(p->ha);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_SuffixArray(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o;
- if (p->darray) {
- e = (*v)(((PyObject*)p->darray), a); if (e) return e;
- }
- if (p->sa) {
- e = (*v)(((PyObject*)p->sa), a); if (e) return e;
- }
- if (p->ha) {
- e = (*v)(((PyObject*)p->ha), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_SuffixArray(PyObject *o) {
- struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->darray);
- p->darray = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->sa);
- p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->ha);
- p->ha = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *__pyx_sq_item_3_sa_SuffixArray(PyObject *o, Py_ssize_t i) {
- PyObject *r;
- PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
- r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
- Py_DECREF(x);
- return r;
-}
-
-static PyMethodDef __pyx_methods_3_sa_SuffixArray[] = {
- {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_5read_text, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_11SuffixArray_4read_text)},
- {__Pyx_NAMESTR("q3sort"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_7q3sort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_11SuffixArray_6q3sort)},
- {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_9write_text, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_11read_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_13write_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_15write_enhanced, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("lookup"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_17lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_SuffixArray = {
- 0, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- __pyx_sq_item_3_sa_SuffixArray, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- 0, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_SuffixArray = {
- 0, /*mp_length*/
- __pyx_pw_3_sa_11SuffixArray_3__getitem__, /*mp_subscript*/
- 0, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_3_sa_SuffixArray = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.SuffixArray"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_SuffixArray), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_SuffixArray, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- &__pyx_tp_as_sequence_SuffixArray, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_SuffixArray, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_SuffixArray, /*tp_traverse*/
- __pyx_tp_clear_3_sa_SuffixArray, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_SuffixArray, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_SuffixArray, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *__pyx_freelist_3_sa___pyx_scope_struct_16___str__[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_16___str__ = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_16___str__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_16___str__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_16___str__[--__pyx_freecount_3_sa___pyx_scope_struct_16___str__];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o);
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_16___str__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_16___str__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__))) {
- __pyx_freelist_3_sa___pyx_scope_struct_16___str__[__pyx_freecount_3_sa___pyx_scope_struct_16___str__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_16___str__(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o;
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_16___str__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_Rule *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_16___str__[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_16___str__ = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_16___str__"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_16___str__, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_16___str__, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_16___str__, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_16___str__, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_16___str__, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_Alphabet __pyx_vtable_3_sa_Alphabet;
-
-static PyObject *__pyx_tp_new_3_sa_Alphabet(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa_Alphabet *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_Alphabet *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_Alphabet;
- p->terminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None);
- p->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None);
- p->id2sym = ((PyObject*)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_8Alphabet_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_Alphabet(PyObject *o) {
- struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o;
- PyObject_GC_UnTrack(o);
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_8Alphabet_3__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- Py_CLEAR(p->terminals);
- Py_CLEAR(p->nonterminals);
- Py_CLEAR(p->id2sym);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_Alphabet(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o;
- if (p->terminals) {
- e = (*v)(((PyObject*)p->terminals), a); if (e) return e;
- }
- if (p->nonterminals) {
- e = (*v)(((PyObject*)p->nonterminals), a); if (e) return e;
- }
- if (p->id2sym) {
- e = (*v)(p->id2sym, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_Alphabet(PyObject *o) {
- struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->terminals);
- p->terminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->nonterminals);
- p->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->id2sym);
- p->id2sym = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyObject *__pyx_getprop_3_sa_8Alphabet_terminals(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_8Alphabet_9terminals_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_3_sa_8Alphabet_nonterminals(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_8Alphabet_12nonterminals_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_Alphabet[] = {
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_3_sa_Alphabet[] = {
- {(char *)"terminals", __pyx_getprop_3_sa_8Alphabet_terminals, 0, 0, 0},
- {(char *)"nonterminals", __pyx_getprop_3_sa_8Alphabet_nonterminals, 0, 0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_Alphabet = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.Alphabet"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_Alphabet), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_Alphabet, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_Alphabet, /*tp_traverse*/
- __pyx_tp_clear_3_sa_Alphabet, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_Alphabet, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_3_sa_Alphabet, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_Alphabet, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_Rule(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_Rule *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_Rule *)o);
- p->f = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);
- p->e = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);
- p->scores = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None);
- p->word_alignments = Py_None; Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_4Rule_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_Rule(PyObject *o) {
- struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->f);
- Py_CLEAR(p->e);
- Py_CLEAR(p->scores);
- Py_CLEAR(p->word_alignments);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_Rule(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o;
- if (p->f) {
- e = (*v)(((PyObject*)p->f), a); if (e) return e;
- }
- if (p->e) {
- e = (*v)(((PyObject*)p->e), a); if (e) return e;
- }
- if (p->scores) {
- e = (*v)(((PyObject*)p->scores), a); if (e) return e;
- }
- if (p->word_alignments) {
- e = (*v)(p->word_alignments, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_Rule(PyObject *o) {
- struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->f);
- p->f = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->e);
- p->e = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->scores);
- p->scores = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->word_alignments);
- p->word_alignments = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyObject *__pyx_getprop_3_sa_4Rule_f(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_4Rule_1f_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_3_sa_4Rule_e(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_4Rule_1e_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_Rule[] = {
- {__Pyx_NAMESTR("fmerge"), (PyCFunction)__pyx_pw_3_sa_4Rule_7fmerge, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("arity"), (PyCFunction)__pyx_pw_3_sa_4Rule_9arity, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("alignments"), (PyCFunction)__pyx_pw_3_sa_4Rule_13alignments, METH_NOARGS, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_3_sa_Rule[] = {
- {(char *)"f", __pyx_getprop_3_sa_4Rule_f, 0, 0, 0},
- {(char *)"e", __pyx_getprop_3_sa_4Rule_e, 0, 0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_Rule = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.Rule"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_Rule), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_Rule, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- __pyx_pw_3_sa_4Rule_5__cmp__, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- __pyx_pw_3_sa_4Rule_3__hash__, /*tp_hash*/
- 0, /*tp_call*/
- __pyx_pw_3_sa_4Rule_11__str__, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_Rule, /*tp_traverse*/
- __pyx_tp_clear_3_sa_Rule, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_Rule, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_3_sa_Rule, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_Rule, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_6_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_6_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_6_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_word = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_6_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_word);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_6_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_word) {
- e = (*v)(p->__pyx_v_word, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_6_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_word);
- p->__pyx_v_word = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_6_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_6_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_6_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_6_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_6_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_6_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_6_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *__pyx_freelist_3_sa___pyx_scope_struct_21_add_instance[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_21_add_instance = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_21_add_instance[--__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o);
- p->__pyx_v_al = 0;
- p->__pyx_v_cover = 0;
- p->__pyx_v_e_nt_cover = 0;
- p->__pyx_v_e_words = 0;
- p->__pyx_v_ef_span = 0;
- p->__pyx_v_extract = 0;
- p->__pyx_v_f_len = 0;
- p->__pyx_v_f_words = 0;
- p->__pyx_v_fe_span = 0;
- p->__pyx_v_rules = 0;
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_21_add_instance(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_al);
- Py_CLEAR(p->__pyx_v_cover);
- Py_CLEAR(p->__pyx_v_e_nt_cover);
- Py_CLEAR(p->__pyx_v_e_words);
- Py_CLEAR(p->__pyx_v_ef_span);
- Py_CLEAR(p->__pyx_v_extract);
- Py_CLEAR(p->__pyx_v_f_len);
- Py_CLEAR(p->__pyx_v_f_words);
- Py_CLEAR(p->__pyx_v_fe_span);
- Py_CLEAR(p->__pyx_v_rules);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance))) {
- __pyx_freelist_3_sa___pyx_scope_struct_21_add_instance[__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_21_add_instance(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o;
- if (p->__pyx_v_al) {
- e = (*v)(p->__pyx_v_al, a); if (e) return e;
- }
- if (p->__pyx_v_cover) {
- e = (*v)(p->__pyx_v_cover, a); if (e) return e;
- }
- if (p->__pyx_v_e_nt_cover) {
- e = (*v)(p->__pyx_v_e_nt_cover, a); if (e) return e;
- }
- if (p->__pyx_v_e_words) {
- e = (*v)(p->__pyx_v_e_words, a); if (e) return e;
- }
- if (p->__pyx_v_ef_span) {
- e = (*v)(p->__pyx_v_ef_span, a); if (e) return e;
- }
- if (p->__pyx_v_extract) {
- e = (*v)(p->__pyx_v_extract, a); if (e) return e;
- }
- if (p->__pyx_v_f_len) {
- e = (*v)(p->__pyx_v_f_len, a); if (e) return e;
- }
- if (p->__pyx_v_f_words) {
- e = (*v)(p->__pyx_v_f_words, a); if (e) return e;
- }
- if (p->__pyx_v_fe_span) {
- e = (*v)(p->__pyx_v_fe_span, a); if (e) return e;
- }
- if (p->__pyx_v_rules) {
- e = (*v)(p->__pyx_v_rules, a); if (e) return e;
- }
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_21_add_instance(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_al);
- p->__pyx_v_al = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_cover);
- p->__pyx_v_cover = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_e_nt_cover);
- p->__pyx_v_e_nt_cover = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_e_words);
- p->__pyx_v_e_words = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_ef_span);
- p->__pyx_v_ef_span = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_extract);
- p->__pyx_v_extract = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_f_len);
- p->__pyx_v_f_len = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_f_words);
- p->__pyx_v_f_words = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_fe_span);
- p->__pyx_v_fe_span = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_rules);
- p->__pyx_v_rules = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_21_add_instance[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_21_add_instance = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_21_add_instance"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_21_add_instance, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_21_add_instance, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_21_add_instance, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_21_add_instance, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_2_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_2_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_2_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_line = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_2_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_line);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_2_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_line) {
- e = (*v)(p->__pyx_v_line, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_2_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_line);
- p->__pyx_v_line = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_2_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_2_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_2_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_2_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_2_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_2_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_2_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_PhraseLocation __pyx_vtable_3_sa_PhraseLocation;
-
-static PyObject *__pyx_tp_new_3_sa_PhraseLocation(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_PhraseLocation *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_PhraseLocation *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_PhraseLocation;
- p->arr = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_14PhraseLocation_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_PhraseLocation(PyObject *o) {
- struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->arr);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_PhraseLocation(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o;
- if (p->arr) {
- e = (*v)(((PyObject*)p->arr), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_PhraseLocation(PyObject *o) {
- struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->arr);
- p->arr = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_PhraseLocation[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_PhraseLocation = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.PhraseLocation"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_PhraseLocation), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_PhraseLocation, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_PhraseLocation, /*tp_traverse*/
- __pyx_tp_clear_3_sa_PhraseLocation, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_PhraseLocation, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_PhraseLocation, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *__pyx_freelist_3_sa___pyx_scope_struct_15___iter__[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_15___iter__ = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_15___iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_15___iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_15___iter__[--__pyx_freecount_3_sa___pyx_scope_struct_15___iter__];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o);
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_15___iter__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_15___iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__))) {
- __pyx_freelist_3_sa___pyx_scope_struct_15___iter__[__pyx_freecount_3_sa___pyx_scope_struct_15___iter__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_15___iter__(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o;
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_15___iter__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_15___iter__[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_15___iter__ = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_15___iter__"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_15___iter__, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_15___iter__, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_15___iter__, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_15___iter__, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_15___iter__, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *__pyx_freelist_3_sa___pyx_scope_struct_22_form_rule[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_22_form_rule = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_22_form_rule[--__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o);
- p->__pyx_v_links = 0;
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_22_form_rule(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_links);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule))) {
- __pyx_freelist_3_sa___pyx_scope_struct_22_form_rule[__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_22_form_rule(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o;
- if (p->__pyx_v_links) {
- e = (*v)(p->__pyx_v_links, a); if (e) return e;
- }
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_22_form_rule(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_links);
- p->__pyx_v_links = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_22_form_rule[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_22_form_rule = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_22_form_rule"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_22_form_rule, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_22_form_rule, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_22_form_rule, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_22_form_rule, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_25_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_25_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_25_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_packed = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_25_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_packed);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_25_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_25_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_packed) {
- e = (*v)(p->__pyx_v_packed, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_25_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_packed);
- p->__pyx_v_packed = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_25_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_25_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_25_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_25_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_25_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_25_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_25_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *__pyx_freelist_3_sa___pyx_scope_struct_24_fmt_rule[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_24_fmt_rule[--__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o);
- p->__pyx_v_a = 0;
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_a);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule))) {
- __pyx_freelist_3_sa___pyx_scope_struct_24_fmt_rule[__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o;
- if (p->__pyx_v_a) {
- e = (*v)(p->__pyx_v_a, a); if (e) return e;
- }
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_a);
- p->__pyx_v_a = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_24_fmt_rule[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_24_fmt_rule = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_24_fmt_rule"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *__pyx_freelist_3_sa___pyx_scope_struct_28___str__[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_28___str__ = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_28___str__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_28___str__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_28___str__[--__pyx_freecount_3_sa___pyx_scope_struct_28___str__];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o);
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_28___str__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_28___str__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__))) {
- __pyx_freelist_3_sa___pyx_scope_struct_28___str__[__pyx_freecount_3_sa___pyx_scope_struct_28___str__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_28___str__(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o;
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_28___str__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_28___str__[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_28___str__ = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_28___str__"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_28___str__, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_28___str__, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_28___str__, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_28___str__, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_28___str__, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *__pyx_freelist_3_sa___pyx_scope_struct_1_read_bitext[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_1_read_bitext[--__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o);
- p->__pyx_v_fp = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_fp);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext))) {
- __pyx_freelist_3_sa___pyx_scope_struct_1_read_bitext[__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o;
- if (p->__pyx_v_fp) {
- e = (*v)(p->__pyx_v_fp, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_fp);
- p->__pyx_v_fp = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_1_read_bitext[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_1_read_bitext = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_1_read_bitext"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_1_read_bitext, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_1_read_bitext, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_1_read_bitext, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_1_read_bitext, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *__pyx_freelist_3_sa___pyx_scope_struct_13_decode_words[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_13_decode_words = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_13_decode_words[--__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o);
- p->__pyx_v_syms = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_13_decode_words(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_syms);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words))) {
- __pyx_freelist_3_sa___pyx_scope_struct_13_decode_words[__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_13_decode_words(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o;
- if (p->__pyx_v_syms) {
- e = (*v)(p->__pyx_v_syms, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_13_decode_words(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_syms);
- p->__pyx_v_syms = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_13_decode_words[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_13_decode_words = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_13_decode_words"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_13_decode_words, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_13_decode_words, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_13_decode_words, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_13_decode_words, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_FeatureVector(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa_FeatureVector *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_FeatureVector *)o);
- p->names = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->values = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_13FeatureVector_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_FeatureVector(PyObject *o) {
- struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->names);
- Py_CLEAR(p->values);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_FeatureVector(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o;
- if (p->names) {
- e = (*v)(((PyObject*)p->names), a); if (e) return e;
- }
- if (p->values) {
- e = (*v)(((PyObject*)p->values), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_FeatureVector(PyObject *o) {
- struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->names);
- p->names = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->values);
- p->values = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_FeatureVector[] = {
- {__Pyx_NAMESTR("set"), (PyCFunction)__pyx_pw_3_sa_13FeatureVector_3set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_FeatureVector = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.FeatureVector"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_FeatureVector), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_FeatureVector, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- __pyx_pw_3_sa_13FeatureVector_8__str__, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_FeatureVector, /*tp_traverse*/
- __pyx_tp_clear_3_sa_FeatureVector, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- __pyx_pw_3_sa_13FeatureVector_5__iter__, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_FeatureVector, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_FeatureVector, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *__pyx_freelist_3_sa___pyx_scope_struct_7_decode_lattice[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_7_decode_lattice[--__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o);
- p->__pyx_v_lattice = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_lattice);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice))) {
- __pyx_freelist_3_sa___pyx_scope_struct_7_decode_lattice[__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o;
- if (p->__pyx_v_lattice) {
- e = (*v)(p->__pyx_v_lattice, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_lattice);
- p->__pyx_v_lattice = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_7_decode_lattice[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_7_decode_lattice = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_7_decode_lattice"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_19_input *__pyx_freelist_3_sa___pyx_scope_struct_19_input[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_19_input = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_19_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_19_input *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_19_input > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_19_input)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_19_input[--__pyx_freecount_3_sa___pyx_scope_struct_19_input];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_19_input));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o);
- p->__pyx_v_alignment = 0;
- p->__pyx_v_als = 0;
- p->__pyx_v_alslist = 0;
- p->__pyx_v_chunklen = 0;
- p->__pyx_v_count = 0;
- p->__pyx_v_e = 0;
- p->__pyx_v_elist = 0;
- p->__pyx_v_extract = 0;
- p->__pyx_v_extract_start = 0;
- p->__pyx_v_extract_stop = 0;
- p->__pyx_v_extracts = 0;
- p->__pyx_v_f = 0;
- p->__pyx_v_f_syms = 0;
- p->__pyx_v_fcount = 0;
- p->__pyx_v_fphrases = 0;
- p->__pyx_v_frontier = 0;
- p->__pyx_v_frontier_nodes = 0;
- p->__pyx_v_fwords = 0;
- p->__pyx_v_genexpr = 0;
- p->__pyx_v_hiero_phrase = 0;
- p->__pyx_v_input_match = 0;
- p->__pyx_v_intersect_start_time = 0;
- p->__pyx_v_intersect_stop_time = 0;
- p->__pyx_v_is_shadow_path = 0;
- p->__pyx_v_key = 0;
- p->__pyx_v_lex_i = 0;
- p->__pyx_v_lex_j = 0;
- p->__pyx_v_loc = 0;
- p->__pyx_v_locs = 0;
- p->__pyx_v_max_locs = 0;
- p->__pyx_v_meta = 0;
- p->__pyx_v_new_frontier = 0;
- p->__pyx_v_new_node = 0;
- p->__pyx_v_next_states = 0;
- p->__pyx_v_node = 0;
- p->__pyx_v_nodes_isteps_away_buffer = 0;
- p->__pyx_v_pathlen = 0;
- p->__pyx_v_phrase = 0;
- p->__pyx_v_phrase_location = 0;
- p->__pyx_v_prefix = 0;
- p->__pyx_v_reachable_buffer = 0;
- p->__pyx_v_sa_range = 0;
- p->__pyx_v_sample = 0;
- p->__pyx_v_scores = 0;
- p->__pyx_v_seen_phrases = 0;
- p->__pyx_v_self = 0;
- p->__pyx_v_spanlen = 0;
- p->__pyx_v_stop_time = 0;
- p->__pyx_v_suffix_link = 0;
- p->__pyx_v_suffix_link_xcat_index = 0;
- p->__pyx_v_word_id = 0;
- p->__pyx_v_xcat_index = 0;
- p->__pyx_v_xnode = 0;
- p->__pyx_v_xroot = 0;
- p->__pyx_t_3 = 0;
- p->__pyx_t_4 = 0;
- p->__pyx_t_5 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_19_input(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_19_input *p = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_alignment);
- Py_CLEAR(p->__pyx_v_als);
- Py_CLEAR(p->__pyx_v_alslist);
- Py_CLEAR(p->__pyx_v_chunklen);
- Py_CLEAR(p->__pyx_v_count);
- Py_CLEAR(p->__pyx_v_e);
- Py_CLEAR(p->__pyx_v_elist);
- Py_CLEAR(p->__pyx_v_extract);
- Py_CLEAR(p->__pyx_v_extract_start);
- Py_CLEAR(p->__pyx_v_extract_stop);
- Py_CLEAR(p->__pyx_v_extracts);
- Py_CLEAR(p->__pyx_v_f);
- Py_CLEAR(p->__pyx_v_f_syms);
- Py_CLEAR(p->__pyx_v_fcount);
- Py_CLEAR(p->__pyx_v_fphrases);
- Py_CLEAR(p->__pyx_v_frontier);
- Py_CLEAR(p->__pyx_v_frontier_nodes);
- Py_CLEAR(p->__pyx_v_fwords);
- Py_CLEAR(p->__pyx_v_genexpr);
- Py_CLEAR(p->__pyx_v_hiero_phrase);
- Py_CLEAR(p->__pyx_v_input_match);
- Py_CLEAR(p->__pyx_v_intersect_start_time);
- Py_CLEAR(p->__pyx_v_intersect_stop_time);
- Py_CLEAR(p->__pyx_v_is_shadow_path);
- Py_CLEAR(p->__pyx_v_key);
- Py_CLEAR(p->__pyx_v_lex_i);
- Py_CLEAR(p->__pyx_v_lex_j);
- Py_CLEAR(p->__pyx_v_loc);
- Py_CLEAR(p->__pyx_v_locs);
- Py_CLEAR(p->__pyx_v_max_locs);
- Py_CLEAR(p->__pyx_v_meta);
- Py_CLEAR(p->__pyx_v_new_frontier);
- Py_CLEAR(p->__pyx_v_new_node);
- Py_CLEAR(p->__pyx_v_next_states);
- Py_CLEAR(p->__pyx_v_node);
- Py_CLEAR(p->__pyx_v_nodes_isteps_away_buffer);
- Py_CLEAR(p->__pyx_v_pathlen);
- Py_CLEAR(p->__pyx_v_phrase);
- Py_CLEAR(p->__pyx_v_phrase_location);
- Py_CLEAR(p->__pyx_v_prefix);
- Py_CLEAR(p->__pyx_v_reachable_buffer);
- Py_CLEAR(p->__pyx_v_sa_range);
- Py_CLEAR(p->__pyx_v_sample);
- Py_CLEAR(p->__pyx_v_scores);
- Py_CLEAR(p->__pyx_v_seen_phrases);
- Py_CLEAR(p->__pyx_v_self);
- Py_CLEAR(p->__pyx_v_spanlen);
- Py_CLEAR(p->__pyx_v_stop_time);
- Py_CLEAR(p->__pyx_v_suffix_link);
- Py_CLEAR(p->__pyx_v_suffix_link_xcat_index);
- Py_CLEAR(p->__pyx_v_word_id);
- Py_CLEAR(p->__pyx_v_xcat_index);
- Py_CLEAR(p->__pyx_v_xnode);
- Py_CLEAR(p->__pyx_v_xroot);
- Py_CLEAR(p->__pyx_t_3);
- Py_CLEAR(p->__pyx_t_4);
- Py_CLEAR(p->__pyx_t_5);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_19_input < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_19_input))) {
- __pyx_freelist_3_sa___pyx_scope_struct_19_input[__pyx_freecount_3_sa___pyx_scope_struct_19_input++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_19_input(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_19_input *p = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o;
- if (p->__pyx_v_alignment) {
- e = (*v)(p->__pyx_v_alignment, a); if (e) return e;
- }
- if (p->__pyx_v_als) {
- e = (*v)(p->__pyx_v_als, a); if (e) return e;
- }
- if (p->__pyx_v_alslist) {
- e = (*v)(p->__pyx_v_alslist, a); if (e) return e;
- }
- if (p->__pyx_v_chunklen) {
- e = (*v)(((PyObject*)p->__pyx_v_chunklen), a); if (e) return e;
- }
- if (p->__pyx_v_count) {
- e = (*v)(p->__pyx_v_count, a); if (e) return e;
- }
- if (p->__pyx_v_e) {
- e = (*v)(p->__pyx_v_e, a); if (e) return e;
- }
- if (p->__pyx_v_elist) {
- e = (*v)(p->__pyx_v_elist, a); if (e) return e;
- }
- if (p->__pyx_v_extract) {
- e = (*v)(p->__pyx_v_extract, a); if (e) return e;
- }
- if (p->__pyx_v_extract_start) {
- e = (*v)(p->__pyx_v_extract_start, a); if (e) return e;
- }
- if (p->__pyx_v_extract_stop) {
- e = (*v)(p->__pyx_v_extract_stop, a); if (e) return e;
- }
- if (p->__pyx_v_extracts) {
- e = (*v)(p->__pyx_v_extracts, a); if (e) return e;
- }
- if (p->__pyx_v_f) {
- e = (*v)(p->__pyx_v_f, a); if (e) return e;
- }
- if (p->__pyx_v_f_syms) {
- e = (*v)(p->__pyx_v_f_syms, a); if (e) return e;
- }
- if (p->__pyx_v_fcount) {
- e = (*v)(p->__pyx_v_fcount, a); if (e) return e;
- }
- if (p->__pyx_v_fphrases) {
- e = (*v)(p->__pyx_v_fphrases, a); if (e) return e;
- }
- if (p->__pyx_v_frontier) {
- e = (*v)(p->__pyx_v_frontier, a); if (e) return e;
- }
- if (p->__pyx_v_frontier_nodes) {
- e = (*v)(p->__pyx_v_frontier_nodes, a); if (e) return e;
- }
- if (p->__pyx_v_fwords) {
- e = (*v)(p->__pyx_v_fwords, a); if (e) return e;
- }
- if (p->__pyx_v_genexpr) {
- e = (*v)(p->__pyx_v_genexpr, a); if (e) return e;
- }
- if (p->__pyx_v_hiero_phrase) {
- e = (*v)(((PyObject*)p->__pyx_v_hiero_phrase), a); if (e) return e;
- }
- if (p->__pyx_v_input_match) {
- e = (*v)(p->__pyx_v_input_match, a); if (e) return e;
- }
- if (p->__pyx_v_intersect_start_time) {
- e = (*v)(p->__pyx_v_intersect_start_time, a); if (e) return e;
- }
- if (p->__pyx_v_intersect_stop_time) {
- e = (*v)(p->__pyx_v_intersect_stop_time, a); if (e) return e;
- }
- if (p->__pyx_v_is_shadow_path) {
- e = (*v)(p->__pyx_v_is_shadow_path, a); if (e) return e;
- }
- if (p->__pyx_v_key) {
- e = (*v)(p->__pyx_v_key, a); if (e) return e;
- }
- if (p->__pyx_v_lex_i) {
- e = (*v)(p->__pyx_v_lex_i, a); if (e) return e;
- }
- if (p->__pyx_v_lex_j) {
- e = (*v)(p->__pyx_v_lex_j, a); if (e) return e;
- }
- if (p->__pyx_v_loc) {
- e = (*v)(p->__pyx_v_loc, a); if (e) return e;
- }
- if (p->__pyx_v_locs) {
- e = (*v)(p->__pyx_v_locs, a); if (e) return e;
- }
- if (p->__pyx_v_max_locs) {
- e = (*v)(p->__pyx_v_max_locs, a); if (e) return e;
- }
- if (p->__pyx_v_meta) {
- e = (*v)(p->__pyx_v_meta, a); if (e) return e;
- }
- if (p->__pyx_v_new_frontier) {
- e = (*v)(p->__pyx_v_new_frontier, a); if (e) return e;
- }
- if (p->__pyx_v_new_node) {
- e = (*v)(p->__pyx_v_new_node, a); if (e) return e;
- }
- if (p->__pyx_v_next_states) {
- e = (*v)(p->__pyx_v_next_states, a); if (e) return e;
- }
- if (p->__pyx_v_node) {
- e = (*v)(p->__pyx_v_node, a); if (e) return e;
- }
- if (p->__pyx_v_nodes_isteps_away_buffer) {
- e = (*v)(p->__pyx_v_nodes_isteps_away_buffer, a); if (e) return e;
- }
- if (p->__pyx_v_pathlen) {
- e = (*v)(p->__pyx_v_pathlen, a); if (e) return e;
- }
- if (p->__pyx_v_phrase) {
- e = (*v)(p->__pyx_v_phrase, a); if (e) return e;
- }
- if (p->__pyx_v_phrase_location) {
- e = (*v)(((PyObject*)p->__pyx_v_phrase_location), a); if (e) return e;
- }
- if (p->__pyx_v_prefix) {
- e = (*v)(p->__pyx_v_prefix, a); if (e) return e;
- }
- if (p->__pyx_v_reachable_buffer) {
- e = (*v)(p->__pyx_v_reachable_buffer, a); if (e) return e;
- }
- if (p->__pyx_v_sa_range) {
- e = (*v)(p->__pyx_v_sa_range, a); if (e) return e;
- }
- if (p->__pyx_v_sample) {
- e = (*v)(((PyObject*)p->__pyx_v_sample), a); if (e) return e;
- }
- if (p->__pyx_v_scores) {
- e = (*v)(((PyObject*)p->__pyx_v_scores), a); if (e) return e;
- }
- if (p->__pyx_v_seen_phrases) {
- e = (*v)(p->__pyx_v_seen_phrases, a); if (e) return e;
- }
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- if (p->__pyx_v_spanlen) {
- e = (*v)(p->__pyx_v_spanlen, a); if (e) return e;
- }
- if (p->__pyx_v_stop_time) {
- e = (*v)(p->__pyx_v_stop_time, a); if (e) return e;
- }
- if (p->__pyx_v_suffix_link) {
- e = (*v)(p->__pyx_v_suffix_link, a); if (e) return e;
- }
- if (p->__pyx_v_suffix_link_xcat_index) {
- e = (*v)(p->__pyx_v_suffix_link_xcat_index, a); if (e) return e;
- }
- if (p->__pyx_v_word_id) {
- e = (*v)(p->__pyx_v_word_id, a); if (e) return e;
- }
- if (p->__pyx_v_xcat_index) {
- e = (*v)(p->__pyx_v_xcat_index, a); if (e) return e;
- }
- if (p->__pyx_v_xnode) {
- e = (*v)(p->__pyx_v_xnode, a); if (e) return e;
- }
- if (p->__pyx_v_xroot) {
- e = (*v)(p->__pyx_v_xroot, a); if (e) return e;
- }
- if (p->__pyx_t_3) {
- e = (*v)(p->__pyx_t_3, a); if (e) return e;
- }
- if (p->__pyx_t_4) {
- e = (*v)(p->__pyx_t_4, a); if (e) return e;
- }
- if (p->__pyx_t_5) {
- e = (*v)(p->__pyx_t_5, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_19_input(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_19_input *p = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_alignment);
- p->__pyx_v_alignment = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_als);
- p->__pyx_v_als = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_alslist);
- p->__pyx_v_alslist = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_chunklen);
- p->__pyx_v_chunklen = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_count);
- p->__pyx_v_count = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_e);
- p->__pyx_v_e = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_elist);
- p->__pyx_v_elist = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_extract);
- p->__pyx_v_extract = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_extract_start);
- p->__pyx_v_extract_start = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_extract_stop);
- p->__pyx_v_extract_stop = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_extracts);
- p->__pyx_v_extracts = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_f);
- p->__pyx_v_f = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_f_syms);
- p->__pyx_v_f_syms = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_fcount);
- p->__pyx_v_fcount = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_fphrases);
- p->__pyx_v_fphrases = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_frontier);
- p->__pyx_v_frontier = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_frontier_nodes);
- p->__pyx_v_frontier_nodes = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_fwords);
- p->__pyx_v_fwords = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_genexpr);
- p->__pyx_v_genexpr = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_hiero_phrase);
- p->__pyx_v_hiero_phrase = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_input_match);
- p->__pyx_v_input_match = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_intersect_start_time);
- p->__pyx_v_intersect_start_time = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_intersect_stop_time);
- p->__pyx_v_intersect_stop_time = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_is_shadow_path);
- p->__pyx_v_is_shadow_path = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_key);
- p->__pyx_v_key = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_lex_i);
- p->__pyx_v_lex_i = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_lex_j);
- p->__pyx_v_lex_j = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_loc);
- p->__pyx_v_loc = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_locs);
- p->__pyx_v_locs = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_max_locs);
- p->__pyx_v_max_locs = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_meta);
- p->__pyx_v_meta = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_new_frontier);
- p->__pyx_v_new_frontier = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_new_node);
- p->__pyx_v_new_node = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_next_states);
- p->__pyx_v_next_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_node);
- p->__pyx_v_node = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_nodes_isteps_away_buffer);
- p->__pyx_v_nodes_isteps_away_buffer = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_pathlen);
- p->__pyx_v_pathlen = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_phrase);
- p->__pyx_v_phrase = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_phrase_location);
- p->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_prefix);
- p->__pyx_v_prefix = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_reachable_buffer);
- p->__pyx_v_reachable_buffer = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_sa_range);
- p->__pyx_v_sa_range = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_sample);
- p->__pyx_v_sample = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_scores);
- p->__pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_seen_phrases);
- p->__pyx_v_seen_phrases = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_spanlen);
- p->__pyx_v_spanlen = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_stop_time);
- p->__pyx_v_stop_time = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_suffix_link);
- p->__pyx_v_suffix_link = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_suffix_link_xcat_index);
- p->__pyx_v_suffix_link_xcat_index = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_word_id);
- p->__pyx_v_word_id = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_xcat_index);
- p->__pyx_v_xcat_index = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_xnode);
- p->__pyx_v_xnode = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_xroot);
- p->__pyx_v_xroot = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_3);
- p->__pyx_t_3 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_4);
- p->__pyx_t_4 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_5);
- p->__pyx_t_5 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_19_input[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_19_input = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_19_input"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_19_input), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_19_input, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_19_input, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_19_input, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_19_input, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_19_input, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_Scorer __pyx_vtable_3_sa_Scorer;
-
-static PyObject *__pyx_tp_new_3_sa_Scorer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa_Scorer *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_Scorer *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_Scorer;
- p->models = Py_None; Py_INCREF(Py_None);
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_Scorer(PyObject *o) {
- struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->models);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_Scorer(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o;
- if (p->models) {
- e = (*v)(p->models, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_Scorer(PyObject *o) {
- struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->models);
- p->models = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_Scorer[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_Scorer = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.Scorer"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_Scorer), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_Scorer, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_Scorer, /*tp_traverse*/
- __pyx_tp_clear_3_sa_Scorer, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_Scorer, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- __pyx_pw_3_sa_6Scorer_1__init__, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_Scorer, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_Alignment __pyx_vtable_3_sa_Alignment;
-
-static PyObject *__pyx_tp_new_3_sa_Alignment(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_Alignment *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_Alignment *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_Alignment;
- p->links = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_9Alignment_5__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_Alignment(PyObject *o) {
- struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->links);
- Py_CLEAR(p->sent_index);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_Alignment(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o;
- if (p->links) {
- e = (*v)(((PyObject*)p->links), a); if (e) return e;
- }
- if (p->sent_index) {
- e = (*v)(((PyObject*)p->sent_index), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_Alignment(PyObject *o) {
- struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->links);
- p->links = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->sent_index);
- p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_Alignment[] = {
- {__Pyx_NAMESTR("unlink"), (PyCFunction)__pyx_pw_3_sa_9Alignment_1unlink, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_9Alignment_unlink)},
- {__Pyx_NAMESTR("get_sent_links"), (PyCFunction)__pyx_pw_3_sa_9Alignment_3get_sent_links, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_9Alignment_7read_text, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_9Alignment_9read_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_9Alignment_11write_text, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_9Alignment_13write_binary, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_9Alignment_15write_enhanced, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("alignment"), (PyCFunction)__pyx_pw_3_sa_9Alignment_17alignment, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_9Alignment_16alignment)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_Alignment = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.Alignment"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_Alignment), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_Alignment, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_Alignment, /*tp_traverse*/
- __pyx_tp_clear_3_sa_Alignment, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_Alignment, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_Alignment, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_BitSet(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- if (unlikely(__pyx_pw_3_sa_6BitSet_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_BitSet(PyObject *o) {
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_6BitSet_3__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_BitSet[] = {
- {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_3_sa_6BitSet_7insert, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("findsucc"), (PyCFunction)__pyx_pw_3_sa_6BitSet_9findsucc, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("min"), (PyCFunction)__pyx_pw_3_sa_6BitSet_13min, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("max"), (PyCFunction)__pyx_pw_3_sa_6BitSet_15max, METH_NOARGS, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_BitSet = {
- __pyx_pw_3_sa_6BitSet_17__len__, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- 0, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- __pyx_pw_3_sa_6BitSet_19__contains__, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_BitSet = {
- __pyx_pw_3_sa_6BitSet_17__len__, /*mp_length*/
- 0, /*mp_subscript*/
- 0, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_3_sa_BitSet = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.BitSet"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_BitSet), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_BitSet, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- &__pyx_tp_as_sequence_BitSet, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_BitSet, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- __pyx_pw_3_sa_6BitSet_11__str__, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- __pyx_pw_3_sa_6BitSet_5__iter__, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_BitSet, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_BitSet, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_Sampler(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_Sampler *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_Sampler *)o);
- p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_7Sampler_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_Sampler(PyObject *o) {
- struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->sa);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_Sampler(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o;
- if (p->sa) {
- e = (*v)(((PyObject*)p->sa), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_Sampler(PyObject *o) {
- struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->sa);
- p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa_Sampler[] = {
- {__Pyx_NAMESTR("sample"), (PyCFunction)__pyx_pw_3_sa_7Sampler_3sample, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_7Sampler_2sample)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_Sampler = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.Sampler"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_Sampler), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_Sampler, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- __Pyx_DOCSTR("A Sampler implements a logic for choosing\n samples from a population range"), /*tp_doc*/
- __pyx_tp_traverse_3_sa_Sampler, /*tp_traverse*/
- __pyx_tp_clear_3_sa_Sampler, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_Sampler, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_Sampler, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_StringMap __pyx_vtable_3_sa_StringMap;
-
-static PyObject *__pyx_tp_new_3_sa_StringMap(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa_StringMap *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_StringMap *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_StringMap;
- if (unlikely(__pyx_pw_3_sa_9StringMap_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_StringMap(PyObject *o) {
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_9StringMap_3__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_StringMap[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_StringMap = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.StringMap"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_StringMap), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_StringMap, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_StringMap, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_StringMap, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *__pyx_freelist_3_sa___pyx_scope_struct_26_get_f_phrases[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_26_get_f_phrases[--__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o);
- p->__pyx_v_extract = 0;
- p->__pyx_v_f_len = 0;
- p->__pyx_v_f_words = 0;
- p->__pyx_v_phrases = 0;
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_extract);
- Py_CLEAR(p->__pyx_v_f_len);
- Py_CLEAR(p->__pyx_v_f_words);
- Py_CLEAR(p->__pyx_v_phrases);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases))) {
- __pyx_freelist_3_sa___pyx_scope_struct_26_get_f_phrases[__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o;
- if (p->__pyx_v_extract) {
- e = (*v)(p->__pyx_v_extract, a); if (e) return e;
- }
- if (p->__pyx_v_f_len) {
- e = (*v)(p->__pyx_v_f_len, a); if (e) return e;
- }
- if (p->__pyx_v_f_words) {
- e = (*v)(p->__pyx_v_f_words, a); if (e) return e;
- }
- if (p->__pyx_v_phrases) {
- e = (*v)(p->__pyx_v_phrases, a); if (e) return e;
- }
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_extract);
- p->__pyx_v_extract = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_f_len);
- p->__pyx_v_f_len = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_f_words);
- p->__pyx_v_f_words = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_phrases);
- p->__pyx_v_phrases = ((PyObject*)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_26_get_f_phrases[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_26_get_f_phrases"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_TrieNode(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa_TrieNode *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_TrieNode *)o);
- p->children = Py_None; Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_8TrieNode_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_TrieNode(PyObject *o) {
- struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->children);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_TrieNode(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o;
- if (p->children) {
- e = (*v)(p->children, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_TrieNode(PyObject *o) {
- struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->children);
- p->children = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyObject *__pyx_getprop_3_sa_8TrieNode_children(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_8TrieNode_8children_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_8TrieNode_children(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_8TrieNode_8children_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_8TrieNode_8children_5__del__(o);
- }
-}
-
-static PyMethodDef __pyx_methods_3_sa_TrieNode[] = {
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_3_sa_TrieNode[] = {
- {(char *)"children", __pyx_getprop_3_sa_8TrieNode_children, __pyx_setprop_3_sa_8TrieNode_children, 0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_TrieNode = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.TrieNode"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_TrieNode), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_TrieNode, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_TrieNode, /*tp_traverse*/
- __pyx_tp_clear_3_sa_TrieNode, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_TrieNode, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_3_sa_TrieNode, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_TrieNode, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_ExtendedTrieNode(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_ExtendedTrieNode *p;
- PyObject *o = __pyx_tp_new_3_sa_TrieNode(t, a, k);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_ExtendedTrieNode *)o);
- p->phrase = Py_None; Py_INCREF(Py_None);
- p->phrase_location = Py_None; Py_INCREF(Py_None);
- p->suffix_link = Py_None; Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_16ExtendedTrieNode_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_ExtendedTrieNode(PyObject *o) {
- struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->phrase);
- Py_CLEAR(p->phrase_location);
- Py_CLEAR(p->suffix_link);
- PyObject_GC_Track(o);
- __pyx_tp_dealloc_3_sa_TrieNode(o);
-}
-
-static int __pyx_tp_traverse_3_sa_ExtendedTrieNode(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o;
- e = __pyx_tp_traverse_3_sa_TrieNode(o, v, a); if (e) return e;
- if (p->phrase) {
- e = (*v)(p->phrase, a); if (e) return e;
- }
- if (p->phrase_location) {
- e = (*v)(p->phrase_location, a); if (e) return e;
- }
- if (p->suffix_link) {
- e = (*v)(p->suffix_link, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_ExtendedTrieNode(PyObject *o) {
- struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o;
- PyObject* tmp;
- __pyx_tp_clear_3_sa_TrieNode(o);
- tmp = ((PyObject*)p->phrase);
- p->phrase = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->phrase_location);
- p->phrase_location = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->suffix_link);
- p->suffix_link = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_phrase(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_16ExtendedTrieNode_phrase(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_5__del__(o);
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_phrase_location(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_16ExtendedTrieNode_phrase_location(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_5__del__(o);
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_suffix_link(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_16ExtendedTrieNode_suffix_link(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_5__del__(o);
- }
-}
-
-static PyMethodDef __pyx_methods_3_sa_ExtendedTrieNode[] = {
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_3_sa_ExtendedTrieNode[] = {
- {(char *)"phrase", __pyx_getprop_3_sa_16ExtendedTrieNode_phrase, __pyx_setprop_3_sa_16ExtendedTrieNode_phrase, 0, 0},
- {(char *)"phrase_location", __pyx_getprop_3_sa_16ExtendedTrieNode_phrase_location, __pyx_setprop_3_sa_16ExtendedTrieNode_phrase_location, 0, 0},
- {(char *)"suffix_link", __pyx_getprop_3_sa_16ExtendedTrieNode_suffix_link, __pyx_setprop_3_sa_16ExtendedTrieNode_suffix_link, 0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_ExtendedTrieNode = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.ExtendedTrieNode"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_ExtendedTrieNode), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_ExtendedTrieNode, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_ExtendedTrieNode, /*tp_traverse*/
- __pyx_tp_clear_3_sa_ExtendedTrieNode, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_ExtendedTrieNode, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_3_sa_ExtendedTrieNode, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_ExtendedTrieNode, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_TrieMap __pyx_vtable_3_sa_TrieMap;
-
-static PyObject *__pyx_tp_new_3_sa_TrieMap(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_TrieMap *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_TrieMap *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_TrieMap;
- if (unlikely(__pyx_pw_3_sa_7TrieMap_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_TrieMap(PyObject *o) {
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_7TrieMap_3__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_TrieMap[] = {
- {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_5insert, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("contains"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_7contains, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("toMap"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_9toMap, METH_O, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_TrieMap = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.TrieMap"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_TrieMap), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_TrieMap, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_TrieMap, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_TrieMap, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_8_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_8_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_8_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_arc = 0;
- p->__pyx_v_dist = 0;
- p->__pyx_v_node = 0;
- p->__pyx_v_sym = 0;
- p->__pyx_v_weight = 0;
- p->__pyx_t_0 = 0;
- p->__pyx_t_3 = 0;
- p->__pyx_t_4 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_8_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_arc);
- Py_CLEAR(p->__pyx_v_dist);
- Py_CLEAR(p->__pyx_v_node);
- Py_CLEAR(p->__pyx_v_sym);
- Py_CLEAR(p->__pyx_v_weight);
- Py_CLEAR(p->__pyx_t_0);
- Py_CLEAR(p->__pyx_t_3);
- Py_CLEAR(p->__pyx_t_4);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_8_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_arc) {
- e = (*v)(p->__pyx_v_arc, a); if (e) return e;
- }
- if (p->__pyx_v_dist) {
- e = (*v)(p->__pyx_v_dist, a); if (e) return e;
- }
- if (p->__pyx_v_node) {
- e = (*v)(p->__pyx_v_node, a); if (e) return e;
- }
- if (p->__pyx_v_sym) {
- e = (*v)(p->__pyx_v_sym, a); if (e) return e;
- }
- if (p->__pyx_v_weight) {
- e = (*v)(p->__pyx_v_weight, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- if (p->__pyx_t_3) {
- e = (*v)(p->__pyx_t_3, a); if (e) return e;
- }
- if (p->__pyx_t_4) {
- e = (*v)(p->__pyx_t_4, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_8_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_arc);
- p->__pyx_v_arc = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_dist);
- p->__pyx_v_dist = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_node);
- p->__pyx_v_node = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_sym);
- p->__pyx_v_sym = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_weight);
- p->__pyx_v_weight = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_3);
- p->__pyx_t_3 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_4);
- p->__pyx_t_4 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_8_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_8_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_8_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_8_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_8_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_8_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_8_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *__pyx_freelist_3_sa___pyx_scope_struct_4_make_lattice[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_4_make_lattice[--__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o);
- p->__pyx_v_word_ids = 0;
- p->__pyx_v_words = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_word_ids);
- Py_CLEAR(p->__pyx_v_words);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice))) {
- __pyx_freelist_3_sa___pyx_scope_struct_4_make_lattice[__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o;
- if (p->__pyx_v_word_ids) {
- e = (*v)(p->__pyx_v_word_ids, a); if (e) return e;
- }
- if (p->__pyx_v_words) {
- e = (*v)(p->__pyx_v_words, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_word_ids);
- p->__pyx_v_word_ids = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_words);
- p->__pyx_v_words = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_4_make_lattice[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_4_make_lattice = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_4_make_lattice"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_4_make_lattice, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_4_make_lattice, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_4_make_lattice, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_4_make_lattice, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_Phrase __pyx_vtable_3_sa_Phrase;
-
-static PyObject *__pyx_tp_new_3_sa_Phrase(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_Phrase *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_Phrase *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_Phrase;
- if (unlikely(__pyx_pw_3_sa_6Phrase_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_Phrase(PyObject *o) {
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_6Phrase_3__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- (*Py_TYPE(o)->tp_free)(o);
-}
-static PyObject *__pyx_sq_item_3_sa_Phrase(PyObject *o, Py_ssize_t i) {
- PyObject *r;
- PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
- r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
- Py_DECREF(x);
- return r;
-}
-
-static PyObject *__pyx_getprop_3_sa_6Phrase_words(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_6Phrase_5words_1__get__(o);
-}
-
-static PyMethodDef __pyx_methods_3_sa_Phrase[] = {
- {__Pyx_NAMESTR("handle"), (PyCFunction)__pyx_pw_3_sa_6Phrase_7handle, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_3_sa_6Phrase_6handle)},
- {__Pyx_NAMESTR("strhandle"), (PyCFunction)__pyx_pw_3_sa_6Phrase_9strhandle, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("arity"), (PyCFunction)__pyx_pw_3_sa_6Phrase_11arity, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("getvarpos"), (PyCFunction)__pyx_pw_3_sa_6Phrase_13getvarpos, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("getvar"), (PyCFunction)__pyx_pw_3_sa_6Phrase_15getvar, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("clen"), (PyCFunction)__pyx_pw_3_sa_6Phrase_17clen, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("getchunk"), (PyCFunction)__pyx_pw_3_sa_6Phrase_19getchunk, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("subst"), (PyCFunction)__pyx_pw_3_sa_6Phrase_32subst, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_3_sa_Phrase[] = {
- {(char *)"words", __pyx_getprop_3_sa_6Phrase_words, 0, 0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_Phrase = {
- __pyx_pw_3_sa_6Phrase_25__len__, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- __pyx_sq_item_3_sa_Phrase, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- 0, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_Phrase = {
- __pyx_pw_3_sa_6Phrase_25__len__, /*mp_length*/
- __pyx_pw_3_sa_6Phrase_27__getitem__, /*mp_subscript*/
- 0, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_3_sa_Phrase = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.Phrase"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_Phrase), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_Phrase, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- __pyx_pw_3_sa_6Phrase_21__cmp__, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- &__pyx_tp_as_sequence_Phrase, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_Phrase, /*tp_as_mapping*/
- __pyx_pw_3_sa_6Phrase_23__hash__, /*tp_hash*/
- 0, /*tp_call*/
- __pyx_pw_3_sa_6Phrase_5__str__, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- __pyx_pw_3_sa_6Phrase_29__iter__, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_Phrase, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_3_sa_Phrase, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_Phrase, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *__pyx_freelist_3_sa___pyx_scope_struct_27___iter__[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_27___iter__ = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_27___iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_27___iter__[--__pyx_freecount_3_sa___pyx_scope_struct_27___iter__];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o);
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_27___iter__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_27___iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__))) {
- __pyx_freelist_3_sa___pyx_scope_struct_27___iter__[__pyx_freecount_3_sa___pyx_scope_struct_27___iter__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_27___iter__(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o;
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_27___iter__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_27___iter__[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_27___iter__ = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_27___iter__"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_27___iter__, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_27___iter__, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_27___iter__, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_27___iter__, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_27___iter__, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *__pyx_freelist_3_sa___pyx_scope_struct____iter__[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct____iter__ = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct____iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct____iter__[--__pyx_freecount_3_sa___pyx_scope_struct____iter__];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o);
- p->__pyx_v_self = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct____iter__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_v_self);
- if ((__pyx_freecount_3_sa___pyx_scope_struct____iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__))) {
- __pyx_freelist_3_sa___pyx_scope_struct____iter__[__pyx_freecount_3_sa___pyx_scope_struct____iter__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct____iter__(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o;
- if (p->__pyx_v_self) {
- e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct____iter__(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_v_self);
- p->__pyx_v_self = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct____iter__[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct____iter__ = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct____iter__"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct____iter__, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct____iter__, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct____iter__, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct____iter__, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct____iter__, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyObject *__pyx_tp_new_3_sa_TrieTable(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_TrieTable *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_TrieTable *)o);
- p->root = Py_None; Py_INCREF(Py_None);
- if (unlikely(__pyx_pw_3_sa_9TrieTable_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_TrieTable(PyObject *o) {
- struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->root);
- (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_3_sa_TrieTable(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o;
- if (p->root) {
- e = (*v)(p->root, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa_TrieTable(PyObject *o) {
- struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->root);
- p->root = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyObject *__pyx_getprop_3_sa_9TrieTable_extended(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9TrieTable_8extended_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9TrieTable_extended(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9TrieTable_8extended_3__set__(o, v);
- }
- else {
- PyErr_SetString(PyExc_NotImplementedError, "__del__");
- return -1;
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_9TrieTable_count(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9TrieTable_5count_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9TrieTable_count(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9TrieTable_5count_3__set__(o, v);
- }
- else {
- PyErr_SetString(PyExc_NotImplementedError, "__del__");
- return -1;
- }
-}
-
-static PyObject *__pyx_getprop_3_sa_9TrieTable_root(PyObject *o, CYTHON_UNUSED void *x) {
- return __pyx_pw_3_sa_9TrieTable_4root_1__get__(o);
-}
-
-static int __pyx_setprop_3_sa_9TrieTable_root(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
- if (v) {
- return __pyx_pw_3_sa_9TrieTable_4root_3__set__(o, v);
- }
- else {
- return __pyx_pw_3_sa_9TrieTable_4root_5__del__(o);
- }
-}
-
-static PyMethodDef __pyx_methods_3_sa_TrieTable[] = {
- {0, 0, 0, 0}
-};
-
-static struct PyGetSetDef __pyx_getsets_3_sa_TrieTable[] = {
- {(char *)"extended", __pyx_getprop_3_sa_9TrieTable_extended, __pyx_setprop_3_sa_9TrieTable_extended, 0, 0},
- {(char *)"count", __pyx_getprop_3_sa_9TrieTable_count, __pyx_setprop_3_sa_9TrieTable_count, 0, 0},
- {(char *)"root", __pyx_getprop_3_sa_9TrieTable_root, __pyx_setprop_3_sa_9TrieTable_root, 0, 0},
- {0, 0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa_TrieTable = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.TrieTable"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_TrieTable), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_TrieTable, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa_TrieTable, /*tp_traverse*/
- __pyx_tp_clear_3_sa_TrieTable, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_TrieTable, /*tp_methods*/
- 0, /*tp_members*/
- __pyx_getsets_3_sa_TrieTable, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_TrieTable, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_5_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_5_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_5_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v_word = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_5_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v_word);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_5_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v_word) {
- e = (*v)(p->__pyx_v_word, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_5_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_word);
- p->__pyx_v_word = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_5_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_5_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_5_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_5_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_5_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_5_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_5_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_10_genexpr[8];
-static int __pyx_freecount_3_sa___pyx_scope_struct_10_genexpr = 0;
-
-static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
- struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p;
- PyObject *o;
- if (likely((__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr)))) {
- o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_10_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr];
- memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr));
- PyObject_INIT(o, t);
- PyObject_GC_Track(o);
- } else {
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- }
- p = ((struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o);
- p->__pyx_outer_scope = 0;
- p->__pyx_v__ = 0;
- p->__pyx_v_sym = 0;
- p->__pyx_t_0 = 0;
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_10_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o;
- PyObject_GC_UnTrack(o);
- Py_CLEAR(p->__pyx_outer_scope);
- Py_CLEAR(p->__pyx_v__);
- Py_CLEAR(p->__pyx_v_sym);
- Py_CLEAR(p->__pyx_t_0);
- if ((__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr))) {
- __pyx_freelist_3_sa___pyx_scope_struct_10_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o);
- } else {
- (*Py_TYPE(o)->tp_free)(o);
- }
-}
-
-static int __pyx_tp_traverse_3_sa___pyx_scope_struct_10_genexpr(PyObject *o, visitproc v, void *a) {
- int e;
- struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o;
- if (p->__pyx_outer_scope) {
- e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
- }
- if (p->__pyx_v__) {
- e = (*v)(p->__pyx_v__, a); if (e) return e;
- }
- if (p->__pyx_v_sym) {
- e = (*v)(p->__pyx_v_sym, a); if (e) return e;
- }
- if (p->__pyx_t_0) {
- e = (*v)(p->__pyx_t_0, a); if (e) return e;
- }
- return 0;
-}
-
-static int __pyx_tp_clear_3_sa___pyx_scope_struct_10_genexpr(PyObject *o) {
- struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o;
- PyObject* tmp;
- tmp = ((PyObject*)p->__pyx_outer_scope);
- p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)Py_None); Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v__);
- p->__pyx_v__ = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_v_sym);
- p->__pyx_v_sym = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- tmp = ((PyObject*)p->__pyx_t_0);
- p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
- Py_XDECREF(tmp);
- return 0;
-}
-
-static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_10_genexpr[] = {
- {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_10_genexpr = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.__pyx_scope_struct_10_genexpr"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa___pyx_scope_struct_10_genexpr, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- 0, /*tp_doc*/
- __pyx_tp_traverse_3_sa___pyx_scope_struct_10_genexpr, /*tp_traverse*/
- __pyx_tp_clear_3_sa___pyx_scope_struct_10_genexpr, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa___pyx_scope_struct_10_genexpr, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-static struct __pyx_vtabstruct_3_sa_FloatList __pyx_vtable_3_sa_FloatList;
-
-static PyObject *__pyx_tp_new_3_sa_FloatList(PyTypeObject *t, PyObject *a, PyObject *k) {
- struct __pyx_obj_3_sa_FloatList *p;
- PyObject *o;
- o = (*t->tp_alloc)(t, 0);
- if (unlikely(!o)) return 0;
- p = ((struct __pyx_obj_3_sa_FloatList *)o);
- p->__pyx_vtab = __pyx_vtabptr_3_sa_FloatList;
- if (unlikely(__pyx_pw_3_sa_9FloatList_1__cinit__(o, a, k) < 0)) {
- Py_DECREF(o); o = 0;
- }
- return o;
-}
-
-static void __pyx_tp_dealloc_3_sa_FloatList(PyObject *o) {
- {
- PyObject *etype, *eval, *etb;
- PyErr_Fetch(&etype, &eval, &etb);
- ++Py_REFCNT(o);
- __pyx_pw_3_sa_9FloatList_3__dealloc__(o);
- if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
- --Py_REFCNT(o);
- PyErr_Restore(etype, eval, etb);
- }
- (*Py_TYPE(o)->tp_free)(o);
-}
-static PyObject *__pyx_sq_item_3_sa_FloatList(PyObject *o, Py_ssize_t i) {
- PyObject *r;
- PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
- r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
- Py_DECREF(x);
- return r;
-}
-
-static int __pyx_mp_ass_subscript_3_sa_FloatList(PyObject *o, PyObject *i, PyObject *v) {
- if (v) {
- return __pyx_pw_3_sa_9FloatList_7__setitem__(o, i, v);
- }
- else {
- PyErr_Format(PyExc_NotImplementedError,
- "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name);
- return -1;
- }
-}
-
-static PyMethodDef __pyx_methods_3_sa_FloatList[] = {
- {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pw_3_sa_9FloatList_11append, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_3_sa_9FloatList_13write, METH_O, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_3_sa_9FloatList_15read, METH_O, __Pyx_DOCSTR(0)},
- {0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_FloatList = {
- __pyx_pw_3_sa_9FloatList_9__len__, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- __pyx_sq_item_3_sa_FloatList, /*sq_item*/
- 0, /*sq_slice*/
- 0, /*sq_ass_item*/
- 0, /*sq_ass_slice*/
- 0, /*sq_contains*/
- 0, /*sq_inplace_concat*/
- 0, /*sq_inplace_repeat*/
-};
-
-static PyMappingMethods __pyx_tp_as_mapping_FloatList = {
- __pyx_pw_3_sa_9FloatList_9__len__, /*mp_length*/
- __pyx_pw_3_sa_9FloatList_5__getitem__, /*mp_subscript*/
- __pyx_mp_ass_subscript_3_sa_FloatList, /*mp_ass_subscript*/
-};
-
-static PyTypeObject __pyx_type_3_sa_FloatList = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("_sa.FloatList"), /*tp_name*/
- sizeof(struct __pyx_obj_3_sa_FloatList), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- __pyx_tp_dealloc_3_sa_FloatList, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- #if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
- #else
- 0, /*reserved*/
- #endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- &__pyx_tp_as_sequence_FloatList, /*tp_as_sequence*/
- &__pyx_tp_as_mapping_FloatList, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
- 0, /*tp_doc*/
- 0, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- 0, /*tp_weaklistoffset*/
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_methods_3_sa_FloatList, /*tp_methods*/
- 0, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- __pyx_tp_new_3_sa_FloatList, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
- #if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
- #endif
-};
-
-static PyMethodDef __pyx_methods[] = {
- {0, 0, 0, 0}
-};
-
-#if PY_MAJOR_VERSION >= 3
-static struct PyModuleDef __pyx_moduledef = {
- #if PY_VERSION_HEX < 0x03020000
- { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
- #else
- PyModuleDef_HEAD_INIT,
- #endif
- __Pyx_NAMESTR("_sa"),
- 0, /* m_doc */
- -1, /* m_size */
- __pyx_methods /* m_methods */,
- NULL, /* m_reload */
- NULL, /* m_traverse */
- NULL, /* m_clear */
- NULL /* m_free */
-};
-#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
- {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
- {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
- {&__pyx_kp_s_102, __pyx_k_102, sizeof(__pyx_k_102), 0, 0, 1, 0},
- {&__pyx_kp_s_103, __pyx_k_103, sizeof(__pyx_k_103), 0, 0, 1, 0},
- {&__pyx_n_s_105, __pyx_k_105, sizeof(__pyx_k_105), 0, 0, 1, 1},
- {&__pyx_n_s_106, __pyx_k_106, sizeof(__pyx_k_106), 0, 0, 1, 1},
- {&__pyx_kp_s_108, __pyx_k_108, sizeof(__pyx_k_108), 0, 0, 1, 0},
- {&__pyx_n_s_110, __pyx_k_110, sizeof(__pyx_k_110), 0, 0, 1, 1},
- {&__pyx_kp_s_111, __pyx_k_111, sizeof(__pyx_k_111), 0, 0, 1, 0},
- {&__pyx_kp_s_112, __pyx_k_112, sizeof(__pyx_k_112), 0, 0, 1, 0},
- {&__pyx_kp_s_113, __pyx_k_113, sizeof(__pyx_k_113), 0, 0, 1, 0},
- {&__pyx_kp_s_114, __pyx_k_114, sizeof(__pyx_k_114), 0, 0, 1, 0},
- {&__pyx_kp_s_115, __pyx_k_115, sizeof(__pyx_k_115), 0, 0, 1, 0},
- {&__pyx_kp_s_116, __pyx_k_116, sizeof(__pyx_k_116), 0, 0, 1, 0},
- {&__pyx_kp_s_117, __pyx_k_117, sizeof(__pyx_k_117), 0, 0, 1, 0},
- {&__pyx_kp_s_118, __pyx_k_118, sizeof(__pyx_k_118), 0, 0, 1, 0},
- {&__pyx_kp_s_119, __pyx_k_119, sizeof(__pyx_k_119), 0, 0, 1, 0},
- {&__pyx_kp_s_120, __pyx_k_120, sizeof(__pyx_k_120), 0, 0, 1, 0},
- {&__pyx_kp_s_121, __pyx_k_121, sizeof(__pyx_k_121), 0, 0, 1, 0},
- {&__pyx_n_s_122, __pyx_k_122, sizeof(__pyx_k_122), 0, 0, 1, 1},
- {&__pyx_kp_s_123, __pyx_k_123, sizeof(__pyx_k_123), 0, 0, 1, 0},
- {&__pyx_n_s_124, __pyx_k_124, sizeof(__pyx_k_124), 0, 0, 1, 1},
- {&__pyx_kp_s_125, __pyx_k_125, sizeof(__pyx_k_125), 0, 0, 1, 0},
- {&__pyx_n_s_127, __pyx_k_127, sizeof(__pyx_k_127), 0, 0, 1, 1},
- {&__pyx_n_s_128, __pyx_k_128, sizeof(__pyx_k_128), 0, 0, 1, 1},
- {&__pyx_kp_s_129, __pyx_k_129, sizeof(__pyx_k_129), 0, 0, 1, 0},
- {&__pyx_kp_s_130, __pyx_k_130, sizeof(__pyx_k_130), 0, 0, 1, 0},
- {&__pyx_kp_s_131, __pyx_k_131, sizeof(__pyx_k_131), 0, 0, 1, 0},
- {&__pyx_kp_s_132, __pyx_k_132, sizeof(__pyx_k_132), 0, 0, 1, 0},
- {&__pyx_kp_s_133, __pyx_k_133, sizeof(__pyx_k_133), 0, 0, 1, 0},
- {&__pyx_kp_s_134, __pyx_k_134, sizeof(__pyx_k_134), 0, 0, 1, 0},
- {&__pyx_kp_s_135, __pyx_k_135, sizeof(__pyx_k_135), 0, 0, 1, 0},
- {&__pyx_kp_s_136, __pyx_k_136, sizeof(__pyx_k_136), 0, 0, 1, 0},
- {&__pyx_kp_s_137, __pyx_k_137, sizeof(__pyx_k_137), 0, 0, 1, 0},
- {&__pyx_kp_s_138, __pyx_k_138, sizeof(__pyx_k_138), 0, 0, 1, 0},
- {&__pyx_kp_s_139, __pyx_k_139, sizeof(__pyx_k_139), 0, 0, 1, 0},
- {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0},
- {&__pyx_kp_s_143, __pyx_k_143, sizeof(__pyx_k_143), 0, 0, 1, 0},
- {&__pyx_n_s_144, __pyx_k_144, sizeof(__pyx_k_144), 0, 0, 1, 1},
- {&__pyx_n_s_146, __pyx_k_146, sizeof(__pyx_k_146), 0, 0, 1, 1},
- {&__pyx_kp_s_149, __pyx_k_149, sizeof(__pyx_k_149), 0, 0, 1, 0},
- {&__pyx_kp_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 0},
- {&__pyx_kp_s_150, __pyx_k_150, sizeof(__pyx_k_150), 0, 0, 1, 0},
- {&__pyx_kp_s_151, __pyx_k_151, sizeof(__pyx_k_151), 0, 0, 1, 0},
- {&__pyx_kp_s_153, __pyx_k_153, sizeof(__pyx_k_153), 0, 0, 1, 0},
- {&__pyx_kp_s_157, __pyx_k_157, sizeof(__pyx_k_157), 0, 0, 1, 0},
- {&__pyx_n_s_163, __pyx_k_163, sizeof(__pyx_k_163), 0, 0, 1, 1},
- {&__pyx_n_s_166, __pyx_k_166, sizeof(__pyx_k_166), 0, 0, 1, 1},
- {&__pyx_kp_s_167, __pyx_k_167, sizeof(__pyx_k_167), 0, 0, 1, 0},
- {&__pyx_kp_s_169, __pyx_k_169, sizeof(__pyx_k_169), 0, 0, 1, 0},
- {&__pyx_kp_s_172, __pyx_k_172, sizeof(__pyx_k_172), 0, 0, 1, 0},
- {&__pyx_kp_s_176, __pyx_k_176, sizeof(__pyx_k_176), 0, 0, 1, 0},
- {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0},
- {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0},
- {&__pyx_kp_s_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 0, 1, 0},
- {&__pyx_kp_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 0},
- {&__pyx_n_s_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 1, 1},
- {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
- {&__pyx_kp_s_33, __pyx_k_33, sizeof(__pyx_k_33), 0, 0, 1, 0},
- {&__pyx_kp_s_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 0, 1, 0},
- {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
- {&__pyx_kp_s_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 0, 1, 0},
- {&__pyx_kp_s_47, __pyx_k_47, sizeof(__pyx_k_47), 0, 0, 1, 0},
- {&__pyx_kp_s_48, __pyx_k_48, sizeof(__pyx_k_48), 0, 0, 1, 0},
- {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
- {&__pyx_kp_s_50, __pyx_k_50, sizeof(__pyx_k_50), 0, 0, 1, 0},
- {&__pyx_kp_s_52, __pyx_k_52, sizeof(__pyx_k_52), 0, 0, 1, 0},
- {&__pyx_kp_s_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 0, 1, 0},
- {&__pyx_kp_s_58, __pyx_k_58, sizeof(__pyx_k_58), 0, 0, 1, 0},
- {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
- {&__pyx_kp_s_60, __pyx_k_60, sizeof(__pyx_k_60), 0, 0, 1, 0},
- {&__pyx_kp_s_61, __pyx_k_61, sizeof(__pyx_k_61), 0, 0, 1, 0},
- {&__pyx_kp_s_62, __pyx_k_62, sizeof(__pyx_k_62), 0, 0, 1, 0},
- {&__pyx_kp_s_64, __pyx_k_64, sizeof(__pyx_k_64), 0, 0, 1, 0},
- {&__pyx_kp_s_66, __pyx_k_66, sizeof(__pyx_k_66), 0, 0, 1, 0},
- {&__pyx_kp_s_67, __pyx_k_67, sizeof(__pyx_k_67), 0, 0, 1, 0},
- {&__pyx_kp_s_68, __pyx_k_68, sizeof(__pyx_k_68), 0, 0, 1, 0},
- {&__pyx_kp_s_69, __pyx_k_69, sizeof(__pyx_k_69), 0, 0, 1, 0},
- {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
- {&__pyx_kp_s_70, __pyx_k_70, sizeof(__pyx_k_70), 0, 0, 1, 0},
- {&__pyx_kp_s_71, __pyx_k_71, sizeof(__pyx_k_71), 0, 0, 1, 0},
- {&__pyx_n_s_72, __pyx_k_72, sizeof(__pyx_k_72), 0, 0, 1, 1},
- {&__pyx_n_s_73, __pyx_k_73, sizeof(__pyx_k_73), 0, 0, 1, 1},
- {&__pyx_kp_s_74, __pyx_k_74, sizeof(__pyx_k_74), 0, 0, 1, 0},
- {&__pyx_kp_s_76, __pyx_k_76, sizeof(__pyx_k_76), 0, 0, 1, 0},
- {&__pyx_kp_s_78, __pyx_k_78, sizeof(__pyx_k_78), 0, 0, 1, 0},
- {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
- {&__pyx_kp_s_80, __pyx_k_80, sizeof(__pyx_k_80), 0, 0, 1, 0},
- {&__pyx_kp_s_85, __pyx_k_85, sizeof(__pyx_k_85), 0, 0, 1, 0},
- {&__pyx_kp_s_86, __pyx_k_86, sizeof(__pyx_k_86), 0, 0, 1, 0},
- {&__pyx_kp_s_87, __pyx_k_87, sizeof(__pyx_k_87), 0, 0, 1, 0},
- {&__pyx_kp_s_88, __pyx_k_88, sizeof(__pyx_k_88), 0, 0, 1, 0},
- {&__pyx_kp_s_89, __pyx_k_89, sizeof(__pyx_k_89), 0, 0, 1, 0},
- {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0},
- {&__pyx_kp_s_90, __pyx_k_90, sizeof(__pyx_k_90), 0, 0, 1, 0},
- {&__pyx_kp_s_91, __pyx_k_91, sizeof(__pyx_k_91), 0, 0, 1, 0},
- {&__pyx_kp_s_92, __pyx_k_92, sizeof(__pyx_k_92), 0, 0, 1, 0},
- {&__pyx_kp_s_93, __pyx_k_93, sizeof(__pyx_k_93), 0, 0, 1, 0},
- {&__pyx_kp_s_94, __pyx_k_94, sizeof(__pyx_k_94), 0, 0, 1, 0},
- {&__pyx_kp_s_96, __pyx_k_96, sizeof(__pyx_k_96), 0, 0, 1, 0},
- {&__pyx_kp_s_97, __pyx_k_97, sizeof(__pyx_k_97), 0, 0, 1, 0},
- {&__pyx_kp_s__0, __pyx_k__0, sizeof(__pyx_k__0), 0, 0, 1, 0},
- {&__pyx_kp_s__1, __pyx_k__1, sizeof(__pyx_k__1), 0, 0, 1, 0},
- {&__pyx_n_s__Counter, __pyx_k__Counter, sizeof(__pyx_k__Counter), 0, 0, 1, 1},
- {&__pyx_n_s__E, __pyx_k__E, sizeof(__pyx_k__E), 0, 0, 1, 1},
- {&__pyx_n_s__END_OF_FILE, __pyx_k__END_OF_FILE, sizeof(__pyx_k__END_OF_FILE), 0, 0, 1, 1},
- {&__pyx_n_s__END_OF_LINE, __pyx_k__END_OF_LINE, sizeof(__pyx_k__END_OF_LINE), 0, 0, 1, 1},
- {&__pyx_n_s__Exception, __pyx_k__Exception, sizeof(__pyx_k__Exception), 0, 0, 1, 1},
- {&__pyx_n_s__F, __pyx_k__F, sizeof(__pyx_k__F), 0, 0, 1, 1},
- {&__pyx_n_s__FE, __pyx_k__FE, sizeof(__pyx_k__FE), 0, 0, 1, 1},
- {&__pyx_n_s__FeatureContext, __pyx_k__FeatureContext, sizeof(__pyx_k__FeatureContext), 0, 0, 1, 1},
- {&__pyx_n_s__GzipFile, __pyx_k__GzipFile, sizeof(__pyx_k__GzipFile), 0, 0, 1, 1},
- {&__pyx_n_s__INCREMENT, __pyx_k__INCREMENT, sizeof(__pyx_k__INCREMENT), 0, 0, 1, 1},
- {&__pyx_n_s__INITIAL_CAPACITY, __pyx_k__INITIAL_CAPACITY, sizeof(__pyx_k__INITIAL_CAPACITY), 0, 0, 1, 1},
- {&__pyx_n_s__IndexError, __pyx_k__IndexError, sizeof(__pyx_k__IndexError), 0, 0, 1, 1},
- {&__pyx_n_s__NULL, __pyx_k__NULL, sizeof(__pyx_k__NULL), 0, 0, 1, 1},
- {&__pyx_n_s__RUSAGE_SELF, __pyx_k__RUSAGE_SELF, sizeof(__pyx_k__RUSAGE_SELF), 0, 0, 1, 1},
- {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1},
- {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
- {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
- {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
- {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
- {&__pyx_n_s____import__, __pyx_k____import__, sizeof(__pyx_k____import__), 0, 0, 1, 1},
- {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
- {&__pyx_n_s____name__, __pyx_k____name__, sizeof(__pyx_k____name__), 0, 0, 1, 1},
- {&__pyx_n_s____pyx_vtable__, __pyx_k____pyx_vtable__, sizeof(__pyx_k____pyx_vtable__), 0, 0, 1, 1},
- {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
- {&__pyx_n_s___columns, __pyx_k___columns, sizeof(__pyx_k___columns), 0, 0, 1, 1},
- {&__pyx_n_s___doquicksort, __pyx_k___doquicksort, sizeof(__pyx_k___doquicksort), 0, 0, 1, 1},
- {&__pyx_n_s___sa, __pyx_k___sa, sizeof(__pyx_k___sa), 0, 0, 1, 1},
- {&__pyx_n_s__a, __pyx_k__a, sizeof(__pyx_k__a), 0, 0, 1, 1},
- {&__pyx_n_s__advance, __pyx_k__advance, sizeof(__pyx_k__advance), 0, 0, 1, 1},
- {&__pyx_n_s__al, __pyx_k__al, sizeof(__pyx_k__al), 0, 0, 1, 1},
- {&__pyx_n_s__alignment, __pyx_k__alignment, sizeof(__pyx_k__alignment), 0, 0, 1, 1},
- {&__pyx_n_s__alignments, __pyx_k__alignments, sizeof(__pyx_k__alignments), 0, 0, 1, 1},
- {&__pyx_n_s__alphabet_size, __pyx_k__alphabet_size, sizeof(__pyx_k__alphabet_size), 0, 0, 1, 1},
- {&__pyx_n_s__append, __pyx_k__append, sizeof(__pyx_k__append), 0, 0, 1, 1},
- {&__pyx_n_s__args, __pyx_k__args, sizeof(__pyx_k__args), 0, 0, 1, 1},
- {&__pyx_n_s__arity, __pyx_k__arity, sizeof(__pyx_k__arity), 0, 0, 1, 1},
- {&__pyx_n_s__arr, __pyx_k__arr, sizeof(__pyx_k__arr), 0, 0, 1, 1},
- {&__pyx_n_s__arr_high, __pyx_k__arr_high, sizeof(__pyx_k__arr_high), 0, 0, 1, 1},
- {&__pyx_n_s__arr_low, __pyx_k__arr_low, sizeof(__pyx_k__arr_low), 0, 0, 1, 1},
- {&__pyx_n_s__bilex_e, __pyx_k__bilex_e, sizeof(__pyx_k__bilex_e), 0, 0, 1, 1},
- {&__pyx_n_s__bilex_f, __pyx_k__bilex_f, sizeof(__pyx_k__bilex_f), 0, 0, 1, 1},
- {&__pyx_n_s__bilex_fe, __pyx_k__bilex_fe, sizeof(__pyx_k__bilex_fe), 0, 0, 1, 1},
- {&__pyx_n_s__by_slack_factor, __pyx_k__by_slack_factor, sizeof(__pyx_k__by_slack_factor), 0, 0, 1, 1},
- {&__pyx_n_s__category, __pyx_k__category, sizeof(__pyx_k__category), 0, 0, 1, 1},
- {&__pyx_n_s__chain, __pyx_k__chain, sizeof(__pyx_k__chain), 0, 0, 1, 1},
- {&__pyx_n_s__children, __pyx_k__children, sizeof(__pyx_k__children), 0, 0, 1, 1},
- {&__pyx_n_s__close, __pyx_k__close, sizeof(__pyx_k__close), 0, 0, 1, 1},
- {&__pyx_n_s__cmp, __pyx_k__cmp, sizeof(__pyx_k__cmp), 0, 0, 1, 1},
- {&__pyx_n_s__col, __pyx_k__col, sizeof(__pyx_k__col), 0, 0, 1, 1},
- {&__pyx_n_s__collect, __pyx_k__collect, sizeof(__pyx_k__collect), 0, 0, 1, 1},
- {&__pyx_n_s__collections, __pyx_k__collections, sizeof(__pyx_k__collections), 0, 0, 1, 1},
- {&__pyx_n_s__curr_idx, __pyx_k__curr_idx, sizeof(__pyx_k__curr_idx), 0, 0, 1, 1},
- {&__pyx_n_s__debug, __pyx_k__debug, sizeof(__pyx_k__debug), 0, 0, 1, 1},
- {&__pyx_n_s__decode_lattice, __pyx_k__decode_lattice, sizeof(__pyx_k__decode_lattice), 0, 0, 1, 1},
- {&__pyx_n_s__decode_sentence, __pyx_k__decode_sentence, sizeof(__pyx_k__decode_sentence), 0, 0, 1, 1},
- {&__pyx_n_s__decode_words, __pyx_k__decode_words, sizeof(__pyx_k__decode_words), 0, 0, 1, 1},
- {&__pyx_n_s__defaultdict, __pyx_k__defaultdict, sizeof(__pyx_k__defaultdict), 0, 0, 1, 1},
- {&__pyx_n_s__dist, __pyx_k__dist, sizeof(__pyx_k__dist), 0, 0, 1, 1},
- {&__pyx_n_s__dump_online_rules, __pyx_k__dump_online_rules, sizeof(__pyx_k__dump_online_rules), 0, 0, 1, 1},
- {&__pyx_n_s__e, __pyx_k__e, sizeof(__pyx_k__e), 0, 0, 1, 1},
- {&__pyx_n_s__e_i, __pyx_k__e_i, sizeof(__pyx_k__e_i), 0, 0, 1, 1},
- {&__pyx_n_s__e_j, __pyx_k__e_j, sizeof(__pyx_k__e_j), 0, 0, 1, 1},
- {&__pyx_n_s__e_span, __pyx_k__e_span, sizeof(__pyx_k__e_span), 0, 0, 1, 1},
- {&__pyx_n_s__e_text, __pyx_k__e_text, sizeof(__pyx_k__e_text), 0, 0, 1, 1},
- {&__pyx_n_s__e_words, __pyx_k__e_words, sizeof(__pyx_k__e_words), 0, 0, 1, 1},
- {&__pyx_n_s__earray, __pyx_k__earray, sizeof(__pyx_k__earray), 0, 0, 1, 1},
- {&__pyx_n_s__edarray, __pyx_k__edarray, sizeof(__pyx_k__edarray), 0, 0, 1, 1},
- {&__pyx_n_s__encode_words, __pyx_k__encode_words, sizeof(__pyx_k__encode_words), 0, 0, 1, 1},
- {&__pyx_n_s__end, __pyx_k__end, sizeof(__pyx_k__end), 0, 0, 1, 1},
- {&__pyx_n_s__enumerate, __pyx_k__enumerate, sizeof(__pyx_k__enumerate), 0, 0, 1, 1},
- {&__pyx_n_s__ephrase, __pyx_k__ephrase, sizeof(__pyx_k__ephrase), 0, 0, 1, 1},
- {&__pyx_n_s__eword, __pyx_k__eword, sizeof(__pyx_k__eword), 0, 0, 1, 1},
- {&__pyx_n_s__extend, __pyx_k__extend, sizeof(__pyx_k__extend), 0, 0, 1, 1},
- {&__pyx_n_s__extended, __pyx_k__extended, sizeof(__pyx_k__extended), 0, 0, 1, 1},
- {&__pyx_n_s__extract, __pyx_k__extract, sizeof(__pyx_k__extract), 0, 0, 1, 1},
- {&__pyx_n_s__f, __pyx_k__f, sizeof(__pyx_k__f), 0, 0, 1, 1},
- {&__pyx_n_s__f_i, __pyx_k__f_i, sizeof(__pyx_k__f_i), 0, 0, 1, 1},
- {&__pyx_n_s__f_j, __pyx_k__f_j, sizeof(__pyx_k__f_j), 0, 0, 1, 1},
- {&__pyx_n_s__f_span, __pyx_k__f_span, sizeof(__pyx_k__f_span), 0, 0, 1, 1},
- {&__pyx_n_s__f_text, __pyx_k__f_text, sizeof(__pyx_k__f_text), 0, 0, 1, 1},
- {&__pyx_n_s__f_words, __pyx_k__f_words, sizeof(__pyx_k__f_words), 0, 0, 1, 1},
- {&__pyx_n_s__fcount, __pyx_k__fcount, sizeof(__pyx_k__fcount), 0, 0, 1, 1},
- {&__pyx_n_s__fe, __pyx_k__fe, sizeof(__pyx_k__fe), 0, 0, 1, 1},
- {&__pyx_n_s__filename, __pyx_k__filename, sizeof(__pyx_k__filename), 0, 0, 1, 1},
- {&__pyx_n_s__fmt_rule, __pyx_k__fmt_rule, sizeof(__pyx_k__fmt_rule), 0, 0, 1, 1},
- {&__pyx_n_s__form_rule, __pyx_k__form_rule, sizeof(__pyx_k__form_rule), 0, 0, 1, 1},
- {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1},
- {&__pyx_n_s__fphrase, __pyx_k__fphrase, sizeof(__pyx_k__fphrase), 0, 0, 1, 1},
- {&__pyx_n_s__from_binary, __pyx_k__from_binary, sizeof(__pyx_k__from_binary), 0, 0, 1, 1},
- {&__pyx_n_s__from_data, __pyx_k__from_data, sizeof(__pyx_k__from_data), 0, 0, 1, 1},
- {&__pyx_n_s__from_iterable, __pyx_k__from_iterable, sizeof(__pyx_k__from_iterable), 0, 0, 1, 1},
- {&__pyx_n_s__from_stats, __pyx_k__from_stats, sizeof(__pyx_k__from_stats), 0, 0, 1, 1},
- {&__pyx_n_s__from_text, __pyx_k__from_text, sizeof(__pyx_k__from_text), 0, 0, 1, 1},
- {&__pyx_n_s__frontier, __pyx_k__frontier, sizeof(__pyx_k__frontier), 0, 0, 1, 1},
- {&__pyx_n_s__fsample_count, __pyx_k__fsample_count, sizeof(__pyx_k__fsample_count), 0, 0, 1, 1},
- {&__pyx_n_s__fsarray, __pyx_k__fsarray, sizeof(__pyx_k__fsarray), 0, 0, 1, 1},
- {&__pyx_n_s__fword, __pyx_k__fword, sizeof(__pyx_k__fword), 0, 0, 1, 1},
- {&__pyx_n_s__fwords, __pyx_k__fwords, sizeof(__pyx_k__fwords), 0, 0, 1, 1},
- {&__pyx_n_s__gc, __pyx_k__gc, sizeof(__pyx_k__gc), 0, 0, 1, 1},
- {&__pyx_n_s__genexpr, __pyx_k__genexpr, sizeof(__pyx_k__genexpr), 0, 0, 1, 1},
- {&__pyx_n_s__get, __pyx_k__get, sizeof(__pyx_k__get), 0, 0, 1, 1},
- {&__pyx_n_s__getLogger, __pyx_k__getLogger, sizeof(__pyx_k__getLogger), 0, 0, 1, 1},
- {&__pyx_n_s__get_e_id, __pyx_k__get_e_id, sizeof(__pyx_k__get_e_id), 0, 0, 1, 1},
- {&__pyx_n_s__get_f_id, __pyx_k__get_f_id, sizeof(__pyx_k__get_f_id), 0, 0, 1, 1},
- {&__pyx_n_s__get_f_phrases, __pyx_k__get_f_phrases, sizeof(__pyx_k__get_f_phrases), 0, 0, 1, 1},
- {&__pyx_n_s__get_id, __pyx_k__get_id, sizeof(__pyx_k__get_id), 0, 0, 1, 1},
- {&__pyx_n_s__get_next_states, __pyx_k__get_next_states, sizeof(__pyx_k__get_next_states), 0, 0, 1, 1},
- {&__pyx_n_s__get_word, __pyx_k__get_word, sizeof(__pyx_k__get_word), 0, 0, 1, 1},
- {&__pyx_n_s__getchunk, __pyx_k__getchunk, sizeof(__pyx_k__getchunk), 0, 0, 1, 1},
- {&__pyx_n_s__getrusage, __pyx_k__getrusage, sizeof(__pyx_k__getrusage), 0, 0, 1, 1},
- {&__pyx_n_s__gzip, __pyx_k__gzip, sizeof(__pyx_k__gzip), 0, 0, 1, 1},
- {&__pyx_n_s__gzip_or_text, __pyx_k__gzip_or_text, sizeof(__pyx_k__gzip_or_text), 0, 0, 1, 1},
- {&__pyx_n_s__h, __pyx_k__h, sizeof(__pyx_k__h), 0, 0, 1, 1},
- {&__pyx_n_s__high, __pyx_k__high, sizeof(__pyx_k__high), 0, 0, 1, 1},
- {&__pyx_n_s__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 1, 1},
- {&__pyx_n_s__ifrom, __pyx_k__ifrom, sizeof(__pyx_k__ifrom), 0, 0, 1, 1},
- {&__pyx_n_s__increment, __pyx_k__increment, sizeof(__pyx_k__increment), 0, 0, 1, 1},
- {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
- {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1},
- {&__pyx_n_s__initial_len, __pyx_k__initial_len, sizeof(__pyx_k__initial_len), 0, 0, 1, 1},
- {&__pyx_n_s__input_match, __pyx_k__input_match, sizeof(__pyx_k__input_match), 0, 0, 1, 1},
- {&__pyx_n_s__input_span, __pyx_k__input_span, sizeof(__pyx_k__input_span), 0, 0, 1, 1},
- {&__pyx_n_s__insert, __pyx_k__insert, sizeof(__pyx_k__insert), 0, 0, 1, 1},
- {&__pyx_n_s__isa, __pyx_k__isa, sizeof(__pyx_k__isa), 0, 0, 1, 1},
- {&__pyx_n_s__isvar, __pyx_k__isvar, sizeof(__pyx_k__isvar), 0, 0, 1, 1},
- {&__pyx_n_s__iteritems, __pyx_k__iteritems, sizeof(__pyx_k__iteritems), 0, 0, 1, 1},
- {&__pyx_n_s__itertools, __pyx_k__itertools, sizeof(__pyx_k__itertools), 0, 0, 1, 1},
- {&__pyx_n_s__itervalues, __pyx_k__itervalues, sizeof(__pyx_k__itervalues), 0, 0, 1, 1},
- {&__pyx_n_s__ito, __pyx_k__ito, sizeof(__pyx_k__ito), 0, 0, 1, 1},
- {&__pyx_n_s__j, __pyx_k__j, sizeof(__pyx_k__j), 0, 0, 1, 1},
- {&__pyx_n_s__join, __pyx_k__join, sizeof(__pyx_k__join), 0, 0, 1, 1},
- {&__pyx_n_s__k, __pyx_k__k, sizeof(__pyx_k__k), 0, 0, 1, 1},
- {&__pyx_n_s__key, __pyx_k__key, sizeof(__pyx_k__key), 0, 0, 1, 1},
- {&__pyx_n_s__lattice, __pyx_k__lattice, sizeof(__pyx_k__lattice), 0, 0, 1, 1},
- {&__pyx_n_s__lex_i, __pyx_k__lex_i, sizeof(__pyx_k__lex_i), 0, 0, 1, 1},
- {&__pyx_n_s__lex_j, __pyx_k__lex_j, sizeof(__pyx_k__lex_j), 0, 0, 1, 1},
- {&__pyx_n_s__lhs, __pyx_k__lhs, sizeof(__pyx_k__lhs), 0, 0, 1, 1},
- {&__pyx_n_s__link, __pyx_k__link, sizeof(__pyx_k__link), 0, 0, 1, 1},
- {&__pyx_n_s__link_i, __pyx_k__link_i, sizeof(__pyx_k__link_i), 0, 0, 1, 1},
- {&__pyx_n_s__link_j, __pyx_k__link_j, sizeof(__pyx_k__link_j), 0, 0, 1, 1},
- {&__pyx_n_s__links, __pyx_k__links, sizeof(__pyx_k__links), 0, 0, 1, 1},
- {&__pyx_n_s__logger, __pyx_k__logger, sizeof(__pyx_k__logger), 0, 0, 1, 1},
- {&__pyx_n_s__logging, __pyx_k__logging, sizeof(__pyx_k__logging), 0, 0, 1, 1},
- {&__pyx_n_s__lookup, __pyx_k__lookup, sizeof(__pyx_k__lookup), 0, 0, 1, 1},
- {&__pyx_n_s__low, __pyx_k__low, sizeof(__pyx_k__low), 0, 0, 1, 1},
- {&__pyx_n_s__make_lattice, __pyx_k__make_lattice, sizeof(__pyx_k__make_lattice), 0, 0, 1, 1},
- {&__pyx_n_s__map, __pyx_k__map, sizeof(__pyx_k__map), 0, 0, 1, 1},
- {&__pyx_n_s__matches, __pyx_k__matches, sizeof(__pyx_k__matches), 0, 0, 1, 1},
- {&__pyx_n_s__max, __pyx_k__max, sizeof(__pyx_k__max), 0, 0, 1, 1},
- {&__pyx_n_s__max_chunks, __pyx_k__max_chunks, sizeof(__pyx_k__max_chunks), 0, 0, 1, 1},
- {&__pyx_n_s__max_initial_size, __pyx_k__max_initial_size, sizeof(__pyx_k__max_initial_size), 0, 0, 1, 1},
- {&__pyx_n_s__max_length, __pyx_k__max_length, sizeof(__pyx_k__max_length), 0, 0, 1, 1},
- {&__pyx_n_s__max_nonterminals, __pyx_k__max_nonterminals, sizeof(__pyx_k__max_nonterminals), 0, 0, 1, 1},
- {&__pyx_n_s__max_target_chunks, __pyx_k__max_target_chunks, sizeof(__pyx_k__max_target_chunks), 0, 0, 1, 1},
- {&__pyx_n_s__max_target_length, __pyx_k__max_target_length, sizeof(__pyx_k__max_target_length), 0, 0, 1, 1},
- {&__pyx_n_s__merge, __pyx_k__merge, sizeof(__pyx_k__merge), 0, 0, 1, 1},
- {&__pyx_n_s__meta, __pyx_k__meta, sizeof(__pyx_k__meta), 0, 0, 1, 1},
- {&__pyx_n_s__min_bound, __pyx_k__min_bound, sizeof(__pyx_k__min_bound), 0, 0, 1, 1},
- {&__pyx_n_s__min_dist, __pyx_k__min_dist, sizeof(__pyx_k__min_dist), 0, 0, 1, 1},
- {&__pyx_n_s__min_gap_size, __pyx_k__min_gap_size, sizeof(__pyx_k__min_gap_size), 0, 0, 1, 1},
- {&__pyx_n_s__monitor_cpu, __pyx_k__monitor_cpu, sizeof(__pyx_k__monitor_cpu), 0, 0, 1, 1},
- {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
- {&__pyx_n_s__namedtuple, __pyx_k__namedtuple, sizeof(__pyx_k__namedtuple), 0, 0, 1, 1},
- {&__pyx_n_s__new_e_i, __pyx_k__new_e_i, sizeof(__pyx_k__new_e_i), 0, 0, 1, 1},
- {&__pyx_n_s__new_e_j, __pyx_k__new_e_j, sizeof(__pyx_k__new_e_j), 0, 0, 1, 1},
- {&__pyx_n_s__new_lex_i, __pyx_k__new_lex_i, sizeof(__pyx_k__new_lex_i), 0, 0, 1, 1},
- {&__pyx_n_s__new_lex_j, __pyx_k__new_lex_j, sizeof(__pyx_k__new_lex_j), 0, 0, 1, 1},
- {&__pyx_n_s__new_min_bound, __pyx_k__new_min_bound, sizeof(__pyx_k__new_min_bound), 0, 0, 1, 1},
- {&__pyx_n_s__next_states, __pyx_k__next_states, sizeof(__pyx_k__next_states), 0, 0, 1, 1},
- {&__pyx_n_s__nt, __pyx_k__nt, sizeof(__pyx_k__nt), 0, 0, 1, 1},
- {&__pyx_n_s__nt_collision, __pyx_k__nt_collision, sizeof(__pyx_k__nt_collision), 0, 0, 1, 1},
- {&__pyx_n_s__nt_open, __pyx_k__nt_open, sizeof(__pyx_k__nt_open), 0, 0, 1, 1},
- {&__pyx_n_s__ntc, __pyx_k__ntc, sizeof(__pyx_k__ntc), 0, 0, 1, 1},
- {&__pyx_n_s__num_subpatterns, __pyx_k__num_subpatterns, sizeof(__pyx_k__num_subpatterns), 0, 0, 1, 1},
- {&__pyx_n_s__offset, __pyx_k__offset, sizeof(__pyx_k__offset), 0, 0, 1, 1},
- {&__pyx_n_s__old_last_nt, __pyx_k__old_last_nt, sizeof(__pyx_k__old_last_nt), 0, 0, 1, 1},
- {&__pyx_n_s__online, __pyx_k__online, sizeof(__pyx_k__online), 0, 0, 1, 1},
- {&__pyx_n_s__online_ctx_lookup, __pyx_k__online_ctx_lookup, sizeof(__pyx_k__online_ctx_lookup), 0, 0, 1, 1},
- {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
- {&__pyx_n_s__pad, __pyx_k__pad, sizeof(__pyx_k__pad), 0, 0, 1, 1},
- {&__pyx_n_s__paircount, __pyx_k__paircount, sizeof(__pyx_k__paircount), 0, 0, 1, 1},
- {&__pyx_n_s__partition, __pyx_k__partition, sizeof(__pyx_k__partition), 0, 0, 1, 1},
- {&__pyx_n_s__pathlen, __pyx_k__pathlen, sizeof(__pyx_k__pathlen), 0, 0, 1, 1},
- {&__pyx_n_s__pattern2phrase, __pyx_k__pattern2phrase, sizeof(__pyx_k__pattern2phrase), 0, 0, 1, 1},
- {&__pyx_n_s__pattern2phrase_plus, __pyx_k__pattern2phrase_plus, sizeof(__pyx_k__pattern2phrase_plus), 0, 0, 1, 1},
- {&__pyx_n_s__phrase, __pyx_k__phrase, sizeof(__pyx_k__phrase), 0, 0, 1, 1},
- {&__pyx_n_s__phrase_location, __pyx_k__phrase_location, sizeof(__pyx_k__phrase_location), 0, 0, 1, 1},
- {&__pyx_n_s__plus_links, __pyx_k__plus_links, sizeof(__pyx_k__plus_links), 0, 0, 1, 1},
- {&__pyx_n_s__pop, __pyx_k__pop, sizeof(__pyx_k__pop), 0, 0, 1, 1},
- {&__pyx_n_s__precompute, __pyx_k__precompute, sizeof(__pyx_k__precompute), 0, 0, 1, 1},
- {&__pyx_n_s__precompute_file, __pyx_k__precompute_file, sizeof(__pyx_k__precompute_file), 0, 0, 1, 1},
- {&__pyx_n_s__precompute_rank, __pyx_k__precompute_rank, sizeof(__pyx_k__precompute_rank), 0, 0, 1, 1},
- {&__pyx_n_s__precomputed, __pyx_k__precomputed, sizeof(__pyx_k__precomputed), 0, 0, 1, 1},
- {&__pyx_n_s__q3sort, __pyx_k__q3sort, sizeof(__pyx_k__q3sort), 0, 0, 1, 1},
- {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
- {&__pyx_n_s__reachable, __pyx_k__reachable, sizeof(__pyx_k__reachable), 0, 0, 1, 1},
- {&__pyx_n_s__reachable_buffer, __pyx_k__reachable_buffer, sizeof(__pyx_k__reachable_buffer), 0, 0, 1, 1},
- {&__pyx_n_s__read_binary, __pyx_k__read_binary, sizeof(__pyx_k__read_binary), 0, 0, 1, 1},
- {&__pyx_n_s__read_bitext, __pyx_k__read_bitext, sizeof(__pyx_k__read_bitext), 0, 0, 1, 1},
- {&__pyx_n_s__read_text, __pyx_k__read_text, sizeof(__pyx_k__read_text), 0, 0, 1, 1},
- {&__pyx_n_s__read_text_data, __pyx_k__read_text_data, sizeof(__pyx_k__read_text_data), 0, 0, 1, 1},
- {&__pyx_n_s__res, __pyx_k__res, sizeof(__pyx_k__res), 0, 0, 1, 1},
- {&__pyx_n_s__reset, __pyx_k__reset, sizeof(__pyx_k__reset), 0, 0, 1, 1},
- {&__pyx_n_s__resource, __pyx_k__resource, sizeof(__pyx_k__resource), 0, 0, 1, 1},
- {&__pyx_n_s__ru_stime, __pyx_k__ru_stime, sizeof(__pyx_k__ru_stime), 0, 0, 1, 1},
- {&__pyx_n_s__ru_utime, __pyx_k__ru_utime, sizeof(__pyx_k__ru_utime), 0, 0, 1, 1},
- {&__pyx_n_s__sa, __pyx_k__sa, sizeof(__pyx_k__sa), 0, 0, 1, 1},
- {&__pyx_n_s__sa_high, __pyx_k__sa_high, sizeof(__pyx_k__sa_high), 0, 0, 1, 1},
- {&__pyx_n_s__sa_low, __pyx_k__sa_low, sizeof(__pyx_k__sa_low), 0, 0, 1, 1},
- {&__pyx_n_s__sample, __pyx_k__sample, sizeof(__pyx_k__sample), 0, 0, 1, 1},
- {&__pyx_n_s__sample_size, __pyx_k__sample_size, sizeof(__pyx_k__sample_size), 0, 0, 1, 1},
- {&__pyx_n_s__sampler, __pyx_k__sampler, sizeof(__pyx_k__sampler), 0, 0, 1, 1},
- {&__pyx_n_s__sarray, __pyx_k__sarray, sizeof(__pyx_k__sarray), 0, 0, 1, 1},
- {&__pyx_n_s__scorer, __pyx_k__scorer, sizeof(__pyx_k__scorer), 0, 0, 1, 1},
- {&__pyx_n_s__scores, __pyx_k__scores, sizeof(__pyx_k__scores), 0, 0, 1, 1},
- {&__pyx_n_s__seek, __pyx_k__seek, sizeof(__pyx_k__seek), 0, 0, 1, 1},
- {&__pyx_n_s__send, __pyx_k__send, sizeof(__pyx_k__send), 0, 0, 1, 1},
- {&__pyx_n_s__set, __pyx_k__set, sizeof(__pyx_k__set), 0, 0, 1, 1},
- {&__pyx_n_s__shortest, __pyx_k__shortest, sizeof(__pyx_k__shortest), 0, 0, 1, 1},
- {&__pyx_n_s__side, __pyx_k__side, sizeof(__pyx_k__side), 0, 0, 1, 1},
- {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
- {&__pyx_n_s__skip, __pyx_k__skip, sizeof(__pyx_k__skip), 0, 0, 1, 1},
- {&__pyx_n_s__sorted, __pyx_k__sorted, sizeof(__pyx_k__sorted), 0, 0, 1, 1},
- {&__pyx_n_s__source, __pyx_k__source, sizeof(__pyx_k__source), 0, 0, 1, 1},
- {&__pyx_n_s__span_check, __pyx_k__span_check, sizeof(__pyx_k__span_check), 0, 0, 1, 1},
- {&__pyx_n_s__span_dec, __pyx_k__span_dec, sizeof(__pyx_k__span_dec), 0, 0, 1, 1},
- {&__pyx_n_s__span_inc, __pyx_k__span_inc, sizeof(__pyx_k__span_inc), 0, 0, 1, 1},
- {&__pyx_n_s__spanlen, __pyx_k__spanlen, sizeof(__pyx_k__spanlen), 0, 0, 1, 1},
- {&__pyx_n_s__split, __pyx_k__split, sizeof(__pyx_k__split), 0, 0, 1, 1},
- {&__pyx_n_s__start, __pyx_k__start, sizeof(__pyx_k__start), 0, 0, 1, 1},
- {&__pyx_n_s__stats, __pyx_k__stats, sizeof(__pyx_k__stats), 0, 0, 1, 1},
- {&__pyx_n_s__stop, __pyx_k__stop, sizeof(__pyx_k__stop), 0, 0, 1, 1},
- {&__pyx_n_s__suffix_link, __pyx_k__suffix_link, sizeof(__pyx_k__suffix_link), 0, 0, 1, 1},
- {&__pyx_n_s__sym, __pyx_k__sym, sizeof(__pyx_k__sym), 0, 0, 1, 1},
- {&__pyx_n_s__syms, __pyx_k__syms, sizeof(__pyx_k__syms), 0, 0, 1, 1},
- {&__pyx_n_s__test_sentence, __pyx_k__test_sentence, sizeof(__pyx_k__test_sentence), 0, 0, 1, 1},
- {&__pyx_n_s__throw, __pyx_k__throw, sizeof(__pyx_k__throw), 0, 0, 1, 1},
- {&__pyx_n_s__tight_phrases, __pyx_k__tight_phrases, sizeof(__pyx_k__tight_phrases), 0, 0, 1, 1},
- {&__pyx_n_s__toMap, __pyx_k__toMap, sizeof(__pyx_k__toMap), 0, 0, 1, 1},
- {&__pyx_n_s__train_min_gap_size, __pyx_k__train_min_gap_size, sizeof(__pyx_k__train_min_gap_size), 0, 0, 1, 1},
- {&__pyx_n_s__unlink, __pyx_k__unlink, sizeof(__pyx_k__unlink), 0, 0, 1, 1},
- {&__pyx_n_s__use_baeza_yates, __pyx_k__use_baeza_yates, sizeof(__pyx_k__use_baeza_yates), 0, 0, 1, 1},
- {&__pyx_n_s__use_collocations, __pyx_k__use_collocations, sizeof(__pyx_k__use_collocations), 0, 0, 1, 1},
- {&__pyx_n_s__use_index, __pyx_k__use_index, sizeof(__pyx_k__use_index), 0, 0, 1, 1},
- {&__pyx_n_s__use_sent_id, __pyx_k__use_sent_id, sizeof(__pyx_k__use_sent_id), 0, 0, 1, 1},
- {&__pyx_n_s__value, __pyx_k__value, sizeof(__pyx_k__value), 0, 0, 1, 1},
- {&__pyx_n_s__vec, __pyx_k__vec, sizeof(__pyx_k__vec), 0, 0, 1, 1},
- {&__pyx_n_s__w, __pyx_k__w, sizeof(__pyx_k__w), 0, 0, 1, 1},
- {&__pyx_n_s__warn, __pyx_k__warn, sizeof(__pyx_k__warn), 0, 0, 1, 1},
- {&__pyx_n_s__wc, __pyx_k__wc, sizeof(__pyx_k__wc), 0, 0, 1, 1},
- {&__pyx_n_s__word, __pyx_k__word, sizeof(__pyx_k__word), 0, 0, 1, 1},
- {&__pyx_n_s__word_alignments, __pyx_k__word_alignments, sizeof(__pyx_k__word_alignments), 0, 0, 1, 1},
- {&__pyx_n_s__word_ids, __pyx_k__word_ids, sizeof(__pyx_k__word_ids), 0, 0, 1, 1},
- {&__pyx_n_s__words, __pyx_k__words, sizeof(__pyx_k__words), 0, 0, 1, 1},
- {&__pyx_n_s__write, __pyx_k__write, sizeof(__pyx_k__write), 0, 0, 1, 1},
- {&__pyx_n_s__write_text, __pyx_k__write_text, sizeof(__pyx_k__write_text), 0, 0, 1, 1},
- {&__pyx_n_s__x, __pyx_k__x, sizeof(__pyx_k__x), 0, 0, 1, 1},
- {&__pyx_n_s__y, __pyx_k__y, sizeof(__pyx_k__y), 0, 0, 1, 1},
- {&__pyx_n_s__zip, __pyx_k__zip, sizeof(__pyx_k__zip), 0, 0, 1, 1},
- {0, 0, 0, 0, 0, 0, 0}
-};
-static int __Pyx_InitCachedBuiltins(void) {
- __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s__open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s__IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s__map); if (!__pyx_builtin_map) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_Exception = __Pyx_GetBuiltinName(__pyx_n_s__Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s__zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_cmp = __Pyx_GetBuiltinName(__pyx_n_s__cmp); if (!__pyx_builtin_cmp) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s__sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s__max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- return 0;
- __pyx_L1_error:;
- return -1;
-}
-
-static int __Pyx_InitCachedConstants(void) {
- __Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":20
- * self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}
- * self.id2word = ["END_OF_FILE", "END_OF_LINE"]
- * self.data = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.sent_id = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000)
- */
- __pyx_k_tuple_11 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_11);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":21
- * self.id2word = ["END_OF_FILE", "END_OF_LINE"]
- * self.data = IntList(1000,1000)
- * self.sent_id = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.sent_index = IntList(1000,1000)
- * self.use_sent_id = use_sent_id
- */
- __pyx_k_tuple_12 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_12);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":22
- * self.data = IntList(1000,1000)
- * self.sent_id = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.use_sent_id = use_sent_id
- * if from_binary:
- */
- __pyx_k_tuple_13 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_13);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":66
- * f.write("%s " % self.get_word(w_id))
- * if w_id == 1:
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def read_text(self, char* filename):
- */
- __pyx_k_tuple_16 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_16);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":61
- *
- * def write_text(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * for w_id in self.data:
- * if w_id > 1:
- */
- __pyx_k_tuple_17 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_17);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":69
- *
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as fp: # <<<<<<<<<<<<<<
- * self.read_text_data(fp)
- *
- */
- __pyx_k_tuple_18 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_18);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74
- * def read_bitext(self, char* filename, int side):
- * with gzip_or_text(filename) as fp:
- * data = (line.split(' ||| ')[side] for line in fp) # <<<<<<<<<<<<<<
- * self.read_text_data(data)
- *
- */
- __pyx_k_tuple_20 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_20);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":73
- *
- * def read_bitext(self, char* filename, int side):
- * with gzip_or_text(filename) as fp: # <<<<<<<<<<<<<<
- * data = (line.split(' ||| ')[side] for line in fp)
- * self.read_text_data(data)
- */
- __pyx_k_tuple_21 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_21);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":130
- * num_words = len(self.id2word) - 2
- * fwrite(&(num_words), sizeof(int), 1, f)
- * for word in self.id2word[2:]: # <<<<<<<<<<<<<<
- * word_len = len(word) + 1
- * fwrite(&(word_len), sizeof(int), 1, f)
- */
- __pyx_k_slice_22 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_k_slice_22)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_slice_22);
- __Pyx_GIVEREF(__pyx_k_slice_22);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":144
- * for i in self.data:
- * f.write("%d " %i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i in self.sent_index:
- * f.write("%d " %i)
- */
- __pyx_k_tuple_24 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_24);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":147
- * for i in self.sent_index:
- * f.write("%d " %i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i in self.sent_id:
- * f.write("%d " %i)
- */
- __pyx_k_tuple_25 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_25);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":150
- * for i in self.sent_id:
- * f.write("%d " %i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for word in self.id2word:
- * f.write("%s %d " % (word, self.word2id[word]))
- */
- __pyx_k_tuple_26 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_26);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":153
- * for word in self.id2word:
- * f.write("%s %d " % (word, self.word2id[word]))
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def write_enhanced(self, char* filename):
- */
- __pyx_k_tuple_28 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_28);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":156
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * self.write_enhanced_handle(self, f)
- */
- __pyx_k_tuple_30 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_30);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":48
- *
- * def __cinit__(self, from_binary=None, from_text=None):
- * self.links = IntList(1000,1000) # <<<<<<<<<<<<<<
- * self.sent_index = IntList(1000,1000)
- * if from_binary:
- */
- __pyx_k_tuple_31 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_31);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":49
- * def __cinit__(self, from_binary=None, from_text=None):
- * self.links = IntList(1000,1000)
- * self.sent_index = IntList(1000,1000) # <<<<<<<<<<<<<<
- * if from_binary:
- * self.read_binary(from_binary)
- */
- __pyx_k_tuple_32 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_32);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":61
- * pairs = line.split()
- * for pair in pairs:
- * (i, j) = map(int, pair.split('-')) # <<<<<<<<<<<<<<
- * self.links.append(self.link(i, j))
- * self.sent_index.append(len(self.links))
- */
- __pyx_k_tuple_34 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_33)); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_34);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":56
- *
- * def read_text(self, char* filename):
- * with gzip_or_text(filename) as f: # <<<<<<<<<<<<<<
- * for line in f:
- * self.sent_index.append(len(self.links))
- */
- __pyx_k_tuple_35 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_35)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_35);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_35));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":77
- * for i, link in enumerate(self.links):
- * while i >= self.sent_index[sent_num]:
- * f.write("\n") # <<<<<<<<<<<<<<
- * sent_num = sent_num + 1
- * f.write("%d-%d " % self.unlink(link))
- */
- __pyx_k_tuple_36 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_36)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_36);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_36));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":80
- * sent_num = sent_num + 1
- * f.write("%d-%d " % self.unlink(link))
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def write_binary(self, char* filename):
- */
- __pyx_k_tuple_38 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_38)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_38);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_38));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":73
- *
- * def write_text(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * sent_num = 0
- * for i, link in enumerate(self.links):
- */
- __pyx_k_tuple_39 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_39);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":94
- * for link in self.links:
- * f.write("%d " % link)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i in self.sent_index:
- * f.write("%d " % i)
- */
- __pyx_k_tuple_40 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_40);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":97
- * for i in self.sent_index:
- * f.write("%d " % i)
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * def alignment(self, i):
- */
- __pyx_k_tuple_41 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_41)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_41);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_41));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":90
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * sent_num = 1
- * for link in self.links:
- */
- __pyx_k_tuple_42 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_42)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_42);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_42));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":297
- *
- * # Re-read file, placing words into buckets
- * f.seek(0) # <<<<<<<<<<<<<<
- * for line in f:
- * (fword, eword, score1, score2) = line.split()
- */
- __pyx_k_tuple_45 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_45);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":273
- *
- * fcount = IntList()
- * with gzip_or_text(filename) as f: # <<<<<<<<<<<<<<
- * # first loop merely establishes size of array objects
- * for line in f:
- */
- __pyx_k_tuple_46 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_46)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_46);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_46));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":339
- *
- * if i > j:
- * raise Exception("Sort error in CLex") # <<<<<<<<<<<<<<
- * if i == j: #empty interval
- * return
- */
- __pyx_k_tuple_49 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_48)); if (unlikely(!__pyx_k_tuple_49)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_49);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_49));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":362
- * for i in self.f_index:
- * f.write("%d " % i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i, s1, s2 in zip(self.e_index, self.col1, self.col2):
- * f.write("%d %f %f " % (i, s1, s2))
- */
- __pyx_k_tuple_51 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_51)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_51);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_51));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":365
- * for i, s1, s2 in zip(self.e_index, self.col1, self.col2):
- * f.write("%d %f %f " % (i, s1, s2))
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i, w in enumerate(self.id2fword):
- * f.write("%d %s " % (i, w))
- */
- __pyx_k_tuple_53 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_53)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_53);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_53));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":368
- * for i, w in enumerate(self.id2fword):
- * f.write("%d %s " % (i, w))
- * f.write("\n") # <<<<<<<<<<<<<<
- * for i, w in enumerate(self.id2eword):
- * f.write("%d %s " % (i, w))
- */
- __pyx_k_tuple_55 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_55)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_55);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_55));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":371
- * for i, w in enumerate(self.id2eword):
- * f.write("%d %s " % (i, w))
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_k_tuple_56 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_56)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_56);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_56));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":359
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * for i in self.f_index:
- * f.write("%d " % i)
- */
- __pyx_k_tuple_57 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_57)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_57);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_57));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":404
- * cdef i, N, e_id, f_id
- *
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * N = len(self.e_index)
- * f_id = 0
- */
- __pyx_k_tuple_59 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_59)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_59);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_59));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":13
- * cdef IntList rank
- *
- * logger.info("Constructing LCP array") # <<<<<<<<<<<<<<
- * self.sa = sa
- * n = self.sa.sa.len
- */
- __pyx_k_tuple_63 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_62)); if (unlikely(!__pyx_k_tuple_63)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_63);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_63));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":34
- * if h > 0:
- * h = h-1
- * logger.info("LCP array completed") # <<<<<<<<<<<<<<
- *
- * def compute_stats(self, int max_n):
- */
- __pyx_k_tuple_65 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_64)); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_65);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":297
- * pattern_rank = {}
- *
- * logger.info("Precomputing frequent intersections") # <<<<<<<<<<<<<<
- * cdef float start_time = monitor_cpu()
- *
- */
- __pyx_k_tuple_75 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_74)); if (unlikely(!__pyx_k_tuple_75)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_75);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_75));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":314
- * queue = IntList(increment=1000)
- *
- * logger.info(" Computing inverted indexes...") # <<<<<<<<<<<<<<
- * N = len(data)
- * for i from 0 <= i < N:
- */
- __pyx_k_tuple_77 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_76)); if (unlikely(!__pyx_k_tuple_77)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_77);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_77));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":329
- * trie_node_data_append(node, i)
- *
- * logger.info(" Computing collocations...") # <<<<<<<<<<<<<<
- * N = len(queue)
- * ptr1 = 0
- */
- __pyx_k_tuple_79 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_78)); if (unlikely(!__pyx_k_tuple_79)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_79);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_79));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":393
- * for pattern2 in J_set:
- * if len(pattern1) + len(pattern2) + 1 < self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2 # <<<<<<<<<<<<<<
- * J2_set.add(combined_pattern)
- *
- */
- __pyx_k_tuple_81 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_81)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_81);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_81));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":400
- * x = x+1
- * if len(pattern1) + len(pattern2) + 1 <= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2 # <<<<<<<<<<<<<<
- * IJ_set.add(combined_pattern)
- *
- */
- __pyx_k_tuple_82 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_82)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_82);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_82));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":407
- * x = x+2
- * if len(pattern1) + len(pattern2) + 1<= self.max_length:
- * combined_pattern = pattern1 + (-1,) + pattern2 # <<<<<<<<<<<<<<
- * IJ_set.add(combined_pattern)
- * combined_pattern = pattern2 + (-1,) + pattern1
- */
- __pyx_k_tuple_83 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_83)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_83);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_83));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":409
- * combined_pattern = pattern1 + (-1,) + pattern2
- * IJ_set.add(combined_pattern)
- * combined_pattern = pattern2 + (-1,) + pattern1 # <<<<<<<<<<<<<<
- * IJ_set.add(combined_pattern)
- *
- */
- __pyx_k_tuple_84 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_84)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_84);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_84));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":94
- *
- * '''Step 3: read off suffix array from inverse suffix array'''
- * logger.info(" Finalizing sort...") # <<<<<<<<<<<<<<
- * for i from 0 <= i < N:
- * j = isa.arr[i]
- */
- __pyx_k_tuple_95 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_94)); if (unlikely(!__pyx_k_tuple_95)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_95);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_95));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":193
- * for a_i in self.sa:
- * f.write("%d " % a_i)
- * f.write("\n") # <<<<<<<<<<<<<<
- * for w_i in self.ha:
- * f.write("%d " % w_i)
- */
- __pyx_k_tuple_98 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_98)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_98);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_98));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":196
- * for w_i in self.ha:
- * f.write("%d " % w_i)
- * f.write("\n") # <<<<<<<<<<<<<<
- *
- * cdef int __search_high(self, int word_id, int offset, int low, int high):
- */
- __pyx_k_tuple_99 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_99)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_99);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_99));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":189
- *
- * def write_enhanced(self, char* filename):
- * with open(filename, "w") as f: # <<<<<<<<<<<<<<
- * self.darray.write_enhanced_handle(f)
- * for a_i in self.sa:
- */
- __pyx_k_tuple_100 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_100)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_100);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_100));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":119
- * logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)
- * else:
- * logger.info("Sampling strategy: no sampling") # <<<<<<<<<<<<<<
- *
- * def sample(self, PhraseLocation phrase_location):
- */
- __pyx_k_tuple_104 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_103)); if (unlikely(!__pyx_k_tuple_104)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_104);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_104));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":339
- * self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())
- * if alignment is None:
- * raise Exception("Must specify an alignment object") # <<<<<<<<<<<<<<
- * self.alignment = alignment
- *
- */
- __pyx_k_tuple_109 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_108)); if (unlikely(!__pyx_k_tuple_109)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_109);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_109));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1064
- * else:
- * #ERROR: We never get here
- * raise Exception("Keyword trie error") # <<<<<<<<<<<<<<
- * # checking whether lookup_required
- * if lookup_required:
- */
- __pyx_k_tuple_126 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_125)); if (unlikely(!__pyx_k_tuple_126)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_126);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_126));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1982
- * if nt and nt[-1][2] == f_j - 1:
- * # Add to non-terminal, checking for collisions
- * old_last_nt = nt[-1][:] # <<<<<<<<<<<<<<
- * nt[-1][2] = f_j
- * if link_i < nt[-1][3]:
- */
- __pyx_k_slice_140 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_140)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_slice_140);
- __Pyx_GIVEREF(__pyx_k_slice_140);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1919
- * # f_ i and j are current, e_ i and j are previous
- * # We care _considering_ f_j, so it is not yet in counts
- * def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open): # <<<<<<<<<<<<<<
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- */
- __pyx_k_tuple_141 = PyTuple_Pack(19, ((PyObject *)__pyx_n_s__f_i), ((PyObject *)__pyx_n_s__f_j), ((PyObject *)__pyx_n_s__e_i), ((PyObject *)__pyx_n_s__e_j), ((PyObject *)__pyx_n_s__min_bound), ((PyObject *)__pyx_n_s__wc), ((PyObject *)__pyx_n_s__links), ((PyObject *)__pyx_n_s__nt), ((PyObject *)__pyx_n_s__nt_open), ((PyObject *)__pyx_n_s__link_i), ((PyObject *)__pyx_n_s__link_j), ((PyObject *)__pyx_n_s__new_e_i), ((PyObject *)__pyx_n_s__new_e_j), ((PyObject *)__pyx_n_s__new_min_bound), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__nt_collision), ((PyObject *)__pyx_n_s__link), ((PyObject *)__pyx_n_s__plus_links), ((PyObject *)__pyx_n_s__old_last_nt)); if (unlikely(!__pyx_k_tuple_141)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_141);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_141));
- __pyx_k_codeobj_142 = (PyObject*)__Pyx_PyCode_New(9, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__extract, 1919, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_142)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2039
- * # Update phrase counts
- * for rule in rules:
- * (f_ph, e_ph, al) = rule[:3] # <<<<<<<<<<<<<<
- * self.phrases_f[f_ph] += 1
- * self.phrases_e[e_ph] += 1
- */
- __pyx_k_slice_145 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_k_slice_145)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_slice_145);
- __Pyx_GIVEREF(__pyx_k_slice_145);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2059
- * # Substitute in non-terminals
- * nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))
- * f_sym = list(f_span[:]) # <<<<<<<<<<<<<<
- * off = f_i
- * for next_nt in nt:
- */
- __pyx_k_slice_147 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_147)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_slice_147);
- __Pyx_GIVEREF(__pyx_k_slice_147);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2069
- * f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))
- * off += (nt_len - 1)
- * e_sym = list(e_span[:]) # <<<<<<<<<<<<<<
- * off = e_i
- * for next_nt in nt_inv:
- */
- __pyx_k_slice_148 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_148)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_slice_148);
- __Pyx_GIVEREF(__pyx_k_slice_148);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2126
- * # Debugging
- * def dump_online_stats(self):
- * logger.info('------------------------------') # <<<<<<<<<<<<<<
- * logger.info(' Online Stats ')
- * logger.info('------------------------------')
- */
- __pyx_k_tuple_152 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_151)); if (unlikely(!__pyx_k_tuple_152)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_152);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_152));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2127
- * def dump_online_stats(self):
- * logger.info('------------------------------')
- * logger.info(' Online Stats ') # <<<<<<<<<<<<<<
- * logger.info('------------------------------')
- * logger.info('f')
- */
- __pyx_k_tuple_154 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_153)); if (unlikely(!__pyx_k_tuple_154)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_154);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_154));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2128
- * logger.info('------------------------------')
- * logger.info(' Online Stats ')
- * logger.info('------------------------------') # <<<<<<<<<<<<<<
- * logger.info('f')
- * for w in self.bilex_f:
- */
- __pyx_k_tuple_155 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_151)); if (unlikely(!__pyx_k_tuple_155)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_155);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_155));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2129
- * logger.info(' Online Stats ')
- * logger.info('------------------------------')
- * logger.info('f') # <<<<<<<<<<<<<<
- * for w in self.bilex_f:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))
- */
- __pyx_k_tuple_156 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__f)); if (unlikely(!__pyx_k_tuple_156)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_156);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_156));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2132
- * for w in self.bilex_f:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))
- * logger.info('e') # <<<<<<<<<<<<<<
- * for w in self.bilex_e:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))
- */
- __pyx_k_tuple_158 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__e)); if (unlikely(!__pyx_k_tuple_158)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_158);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_158));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2135
- * for w in self.bilex_e:
- * logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))
- * logger.info('fe') # <<<<<<<<<<<<<<
- * for w in self.bilex_fe:
- * for w2 in self.bilex_fe[w]:
- */
- __pyx_k_tuple_159 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__fe)); if (unlikely(!__pyx_k_tuple_159)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_159);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_159));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2139
- * for w2 in self.bilex_fe[w]:
- * logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))
- * logger.info('F') # <<<<<<<<<<<<<<
- * for ph in self.phrases_f:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))
- */
- __pyx_k_tuple_160 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__F)); if (unlikely(!__pyx_k_tuple_160)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_160);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_160));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2142
- * for ph in self.phrases_f:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))
- * logger.info('E') # <<<<<<<<<<<<<<
- * for ph in self.phrases_e:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))
- */
- __pyx_k_tuple_161 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__E)); if (unlikely(!__pyx_k_tuple_161)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_161);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_161));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2145
- * for ph in self.phrases_e:
- * logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))
- * logger.info('FE') # <<<<<<<<<<<<<<
- * self.dump_online_rules()
- *
- */
- __pyx_k_tuple_162 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__FE)); if (unlikely(!__pyx_k_tuple_162)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_162);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_162));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2172
- * phrases = set() # (fphrase, lex_i, lex_j)
- *
- * def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms): # <<<<<<<<<<<<<<
- * # Phrase extraction limits
- * if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- */
- __pyx_k_tuple_164 = PyTuple_Pack(10, ((PyObject *)__pyx_n_s__f_i), ((PyObject *)__pyx_n_s__f_j), ((PyObject *)__pyx_n_s__lex_i), ((PyObject *)__pyx_n_s__lex_j), ((PyObject *)__pyx_n_s__wc), ((PyObject *)__pyx_n_s__ntc), ((PyObject *)__pyx_n_s__syms), ((PyObject *)__pyx_n_s__f), ((PyObject *)__pyx_n_s__new_lex_i), ((PyObject *)__pyx_n_s__new_lex_j)); if (unlikely(!__pyx_k_tuple_164)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_164);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_164));
- __pyx_k_codeobj_165 = (PyObject*)__Pyx_PyCode_New(7, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__extract, 2172, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_165)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "_sa.pyx":5
- * import gzip
- *
- * def monitor_cpu(): # <<<<<<<<<<<<<<
- * return (resource.getrusage(resource.RUSAGE_SELF).ru_utime+
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime)
- */
- __pyx_k_codeobj_168 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_169, __pyx_n_s__monitor_cpu, 5, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "_sa.pyx":9
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime)
- *
- * def gzip_or_text(char* filename): # <<<<<<<<<<<<<<
- * if filename.endswith('.gz'):
- * return gzip.GzipFile(filename)
- */
- __pyx_k_tuple_170 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__filename), ((PyObject *)__pyx_n_s__filename)); if (unlikely(!__pyx_k_tuple_170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_170);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_170));
- __pyx_k_codeobj_171 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_169, __pyx_n_s__gzip_or_text, 9, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "_sa.pyx":15
- * return open(filename)
- *
- * logger = logging.getLogger('cdec.sa') # <<<<<<<<<<<<<<
- *
- * include "float_list.pxi"
- */
- __pyx_k_tuple_173 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_172)); if (unlikely(!__pyx_k_tuple_173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_173);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_173));
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":107
- * return ALPHABET.fromstring(string, terminal)
- *
- * def isvar(sym): # <<<<<<<<<<<<<<
- * return sym_isvar(sym)
- *
- */
- __pyx_k_tuple_174 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__sym)); if (unlikely(!__pyx_k_tuple_174)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_174);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_174));
- __pyx_k_codeobj_175 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__isvar, 107, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_175)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110
- * return sym_isvar(sym)
- *
- * def make_lattice(words): # <<<<<<<<<<<<<<
- * word_ids = (sym_fromstring(word, True) for word in words)
- * return tuple(((word, None, 1), ) for word in word_ids)
- */
- __pyx_k_tuple_177 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__words), ((PyObject *)__pyx_n_s__word_ids), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_177)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_177);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_177));
- __pyx_k_codeobj_178 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__make_lattice, 110, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_178)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114
- * return tuple(((word, None, 1), ) for word in word_ids)
- *
- * def decode_lattice(lattice): # <<<<<<<<<<<<<<
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc
- * for arc in node for node in lattice)
- */
- __pyx_k_tuple_179 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__lattice), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_179)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_179);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_179));
- __pyx_k_codeobj_180 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__decode_lattice, 114, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_180)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118
- * for arc in node for node in lattice)
- *
- * def decode_sentence(lattice): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- */
- __pyx_k_tuple_181 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__lattice), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_181)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_181);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_181));
- __pyx_k_codeobj_182 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__decode_sentence, 118, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_182)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- * def encode_words(words): # <<<<<<<<<<<<<<
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- */
- __pyx_k_tuple_183 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__words), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_183)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_183);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_183));
- __pyx_k_codeobj_184 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__encode_words, 121, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_184)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- * def decode_words(syms): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for sym in syms)
- */
- __pyx_k_tuple_185 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__syms), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_185)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_185);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_185));
- __pyx_k_codeobj_186 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__decode_words, 124, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_186)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2206
- *
- * # Spans are _inclusive_ on both ends [i, j]
- * def span_check(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
- __pyx_k_tuple_188 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vec), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__k)); if (unlikely(!__pyx_k_tuple_188)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_188);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_188));
- __pyx_k_codeobj_189 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_188, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__span_check, 2206, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_189)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2214
- * return True
- *
- * def span_inc(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
- __pyx_k_tuple_190 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vec), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__k)); if (unlikely(!__pyx_k_tuple_190)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_190);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_190));
- __pyx_k_codeobj_191 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_190, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__span_inc, 2214, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_191)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2220
- * k += 1
- *
- * def span_dec(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
- __pyx_k_tuple_192 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vec), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__k)); if (unlikely(!__pyx_k_tuple_192)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_k_tuple_192);
- __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_192));
- __pyx_k_codeobj_193 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__span_dec, 2220, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_193)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_RefNannyFinishContext();
- return 0;
- __pyx_L1_error:;
- __Pyx_RefNannyFinishContext();
- return -1;
-}
-
-static int __Pyx_InitGlobals(void) {
- if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_20 = PyInt_FromLong(20); if (unlikely(!__pyx_int_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- return 0;
- __pyx_L1_error:;
- return -1;
-}
-
-#if PY_MAJOR_VERSION < 3
-PyMODINIT_FUNC init_sa(void); /*proto*/
-PyMODINIT_FUNC init_sa(void)
-#else
-PyMODINIT_FUNC PyInit__sa(void); /*proto*/
-PyMODINIT_FUNC PyInit__sa(void)
-#endif
-{
- PyObject *__pyx_t_1 = NULL;
- PyObject *__pyx_t_2 = NULL;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_lineno = 0;
- const char *__pyx_filename = NULL;
- int __pyx_clineno = 0;
- __Pyx_RefNannyDeclarations
- #if CYTHON_REFNANNY
- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
- if (!__Pyx_RefNanny) {
- PyErr_Clear();
- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
- if (!__Pyx_RefNanny)
- Py_FatalError("failed to import 'refnanny' module");
- }
- #endif
- __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__sa(void)", 0);
- if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #ifdef __Pyx_CyFunction_USED
- if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- #ifdef __Pyx_FusedFunction_USED
- if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- #ifdef __Pyx_Generator_USED
- if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- /*--- Library function declarations ---*/
- /*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
- PyEval_InitThreads();
- #endif
- #endif
- /*--- Module creation code ---*/
- #if PY_MAJOR_VERSION < 3
- __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_sa"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
- #else
- __pyx_m = PyModule_Create(&__pyx_moduledef);
- #endif
- if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- Py_INCREF(__pyx_d);
- #if PY_MAJOR_VERSION >= 3
- {
- PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!PyDict_GetItemString(modules, "_sa")) {
- if (unlikely(PyDict_SetItemString(modules, "_sa", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- }
- }
- #endif
- __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #if CYTHON_COMPILING_IN_PYPY
- Py_INCREF(__pyx_b);
- #endif
- if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- /*--- Initialize various global constants etc. ---*/
- if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
- if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- #endif
- if (__pyx_module_is_main__sa) {
- if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- }
- /*--- Builtin init code ---*/
- if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /*--- Constants init code ---*/
- if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /*--- Global init code ---*/
- __pyx_v_3_sa_ALPHABET = ((struct __pyx_obj_3_sa_Alphabet *)Py_None); Py_INCREF(Py_None);
- __pyx_v_3_sa_FD = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None);
- /*--- Variable export code ---*/
- /*--- Function export code ---*/
- if (__Pyx_ExportFunction("sym_tostring", (void (*)(void))__pyx_f_3_sa_sym_tostring, "char *(int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_ExportFunction("sym_tocat", (void (*)(void))__pyx_f_3_sa_sym_tocat, "char *(int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_ExportFunction("sym_isvar", (void (*)(void))__pyx_f_3_sa_sym_isvar, "int (int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_ExportFunction("sym_getindex", (void (*)(void))__pyx_f_3_sa_sym_getindex, "int (int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /*--- Type init code ---*/
- __pyx_vtabptr_3_sa_HieroCachingRuleFactory = &__pyx_vtable_3_sa_HieroCachingRuleFactory;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.set_idmap = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_DataArray *))__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.baeza_yates_helper = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.compare_matchings_set = (long (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, struct __pyx_t_3_sa_Matching *, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.compare_matchings = (long (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_t_3_sa_Matching *, struct __pyx_t_3_sa_Matching *, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.merge_helper = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.sort_phrase_loc = (void (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_Phrase *))__pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.intersect_helper = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_PhraseLocation *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.loc2str = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_PhraseLocation *))__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.intersect = (struct __pyx_obj_3_sa_PhraseLocation *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, PyObject *, PyObject *, struct __pyx_obj_3_sa_Phrase *))__pyx_f_3_sa_23HieroCachingRuleFactory_intersect;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.find_fixpoint = (int (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, PyObject *, int *, int *, int *, int *, int, int, int *, int *, int *, int *, int, int, int, int, int, int, int, int, int, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.find_projection = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.int_arr_extend = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int *, int *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.extract_phrases = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int, int, int, int *, int *, int *, int, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.create_alignments = (struct __pyx_obj_3_sa_IntList *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_IntList *))__pyx_f_3_sa_23HieroCachingRuleFactory_create_alignments;
- __pyx_vtable_3_sa_HieroCachingRuleFactory.extract = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_t_3_sa_Matching *, int *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_extract;
- if (PyType_Ready(&__pyx_type_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_HieroCachingRuleFactory.tp_dict, __pyx_vtabptr_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "HieroCachingRuleFactory", (PyObject *)&__pyx_type_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_HieroCachingRuleFactory = &__pyx_type_3_sa_HieroCachingRuleFactory;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_9_decode_sentence) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence = &__pyx_type_3_sa___pyx_scope_struct_9_decode_sentence;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_17_genexpr) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_17_genexpr = &__pyx_type_3_sa___pyx_scope_struct_17_genexpr;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_20_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_20_genexpr = &__pyx_type_3_sa___pyx_scope_struct_20_genexpr;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_3_compute_stats) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats = &__pyx_type_3_sa___pyx_scope_struct_3_compute_stats;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_12_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_12_genexpr = &__pyx_type_3_sa___pyx_scope_struct_12_genexpr;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_29_genexpr) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_29_genexpr = &__pyx_type_3_sa___pyx_scope_struct_29_genexpr;
- __pyx_vtabptr_3_sa_IntList = &__pyx_vtable_3_sa_IntList;
- __pyx_vtable_3_sa_IntList.set = (void (*)(struct __pyx_obj_3_sa_IntList *, int, int))__pyx_f_3_sa_7IntList_set;
- __pyx_vtable_3_sa_IntList._append = (void (*)(struct __pyx_obj_3_sa_IntList *, int))__pyx_f_3_sa_7IntList__append;
- __pyx_vtable_3_sa_IntList._extend = (void (*)(struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_IntList *))__pyx_f_3_sa_7IntList__extend;
- __pyx_vtable_3_sa_IntList._extend_arr = (void (*)(struct __pyx_obj_3_sa_IntList *, int *, int))__pyx_f_3_sa_7IntList__extend_arr;
- __pyx_vtable_3_sa_IntList._clear = (void (*)(struct __pyx_obj_3_sa_IntList *))__pyx_f_3_sa_7IntList__clear;
- __pyx_vtable_3_sa_IntList.write_handle = (void (*)(struct __pyx_obj_3_sa_IntList *, FILE *))__pyx_f_3_sa_7IntList_write_handle;
- __pyx_vtable_3_sa_IntList.read_handle = (void (*)(struct __pyx_obj_3_sa_IntList *, FILE *))__pyx_f_3_sa_7IntList_read_handle;
- if (PyType_Ready(&__pyx_type_3_sa_IntList) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_IntList.tp_dict, __pyx_vtabptr_3_sa_IntList) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "IntList", (PyObject *)&__pyx_type_3_sa_IntList) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_IntList = &__pyx_type_3_sa_IntList;
- if (PyType_Ready(&__pyx_type_3_sa_VEBIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "VEBIterator", (PyObject *)&__pyx_type_3_sa_VEBIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_VEBIterator = &__pyx_type_3_sa_VEBIterator;
- __pyx_vtabptr_3_sa_BiLex = &__pyx_vtable_3_sa_BiLex;
- __pyx_vtable_3_sa_BiLex.compute_from_data = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, struct __pyx_obj_3_sa_SuffixArray *, struct __pyx_obj_3_sa_DataArray *, struct __pyx_obj_3_sa_Alignment *))__pyx_f_3_sa_5BiLex_compute_from_data;
- __pyx_vtable_3_sa_BiLex._add_node = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, struct __pyx_t_3_sa__node *, int *, float, int *))__pyx_f_3_sa_5BiLex__add_node;
- __pyx_vtable_3_sa_BiLex.write_wordlist = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, PyObject *, FILE *))__pyx_f_3_sa_5BiLex_write_wordlist;
- __pyx_vtable_3_sa_BiLex.read_wordlist = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, PyObject *, PyObject *, FILE *))__pyx_f_3_sa_5BiLex_read_wordlist;
- __pyx_vtable_3_sa_BiLex.swap = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, int, int))__pyx_f_3_sa_5BiLex_swap;
- __pyx_vtable_3_sa_BiLex.qsort = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, int, int, PyObject *))__pyx_f_3_sa_5BiLex_qsort;
- if (PyType_Ready(&__pyx_type_3_sa_BiLex) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_BiLex.tp_dict, __pyx_vtabptr_3_sa_BiLex) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "BiLex", (PyObject *)&__pyx_type_3_sa_BiLex) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_BiLex = &__pyx_type_3_sa_BiLex;
- __pyx_vtabptr_3_sa_VEB = &__pyx_vtable_3_sa_VEB;
- __pyx_vtable_3_sa_VEB._findsucc = (int (*)(struct __pyx_obj_3_sa_VEB *, int))__pyx_f_3_sa_3VEB__findsucc;
- __pyx_vtable_3_sa_VEB._insert = (int (*)(struct __pyx_obj_3_sa_VEB *, int))__pyx_f_3_sa_3VEB__insert;
- __pyx_vtable_3_sa_VEB._first = (int (*)(struct __pyx_obj_3_sa_VEB *))__pyx_f_3_sa_3VEB__first;
- if (PyType_Ready(&__pyx_type_3_sa_VEB) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_VEB.tp_dict, __pyx_vtabptr_3_sa_VEB) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "VEB", (PyObject *)&__pyx_type_3_sa_VEB) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_VEB = &__pyx_type_3_sa_VEB;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_11_encode_words) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_11_encode_words = &__pyx_type_3_sa___pyx_scope_struct_11_encode_words;
- if (PyType_Ready(&__pyx_type_3_sa_LCP) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "LCP", (PyObject *)&__pyx_type_3_sa_LCP) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_LCP = &__pyx_type_3_sa_LCP;
- __pyx_vtabptr_3_sa_DataArray = &__pyx_vtable_3_sa_DataArray;
- __pyx_vtable_3_sa_DataArray.read_handle = (void (*)(struct __pyx_obj_3_sa_DataArray *, FILE *))__pyx_f_3_sa_9DataArray_read_handle;
- __pyx_vtable_3_sa_DataArray.write_handle = (void (*)(struct __pyx_obj_3_sa_DataArray *, FILE *))__pyx_f_3_sa_9DataArray_write_handle;
- if (PyType_Ready(&__pyx_type_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_DataArray.tp_dict, __pyx_vtabptr_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "DataArray", (PyObject *)&__pyx_type_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_DataArray = &__pyx_type_3_sa_DataArray;
- if (PyType_Ready(&__pyx_type_3_sa_BitSetIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "BitSetIterator", (PyObject *)&__pyx_type_3_sa_BitSetIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_BitSetIterator = &__pyx_type_3_sa_BitSetIterator;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_23_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_23_genexpr = &__pyx_type_3_sa___pyx_scope_struct_23_genexpr;
- __pyx_vtabptr_3_sa_Precomputation = &__pyx_vtable_3_sa_Precomputation;
- __pyx_vtable_3_sa_Precomputation.read_map = (PyObject *(*)(struct __pyx_obj_3_sa_Precomputation *, FILE *))__pyx_f_3_sa_14Precomputation_read_map;
- __pyx_vtable_3_sa_Precomputation.write_map = (PyObject *(*)(struct __pyx_obj_3_sa_Precomputation *, PyObject *, FILE *))__pyx_f_3_sa_14Precomputation_write_map;
- if (PyType_Ready(&__pyx_type_3_sa_Precomputation) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_Precomputation.tp_dict, __pyx_vtabptr_3_sa_Precomputation) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "Precomputation", (PyObject *)&__pyx_type_3_sa_Precomputation) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_Precomputation = &__pyx_type_3_sa_Precomputation;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_18_alignments) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_18_alignments = &__pyx_type_3_sa___pyx_scope_struct_18_alignments;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_14_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_14_genexpr = &__pyx_type_3_sa___pyx_scope_struct_14_genexpr;
- __pyx_vtabptr_3_sa_SuffixArray = &__pyx_vtable_3_sa_SuffixArray;
- __pyx_vtable_3_sa_SuffixArray.__pyx___search_high = (int (*)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int))__pyx_f_3_sa_11SuffixArray___search_high;
- __pyx_vtable_3_sa_SuffixArray.__pyx___search_low = (int (*)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int))__pyx_f_3_sa_11SuffixArray___search_low;
- __pyx_vtable_3_sa_SuffixArray.__pyx___get_range = (PyObject *(*)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int, int))__pyx_f_3_sa_11SuffixArray___get_range;
- __pyx_vtable_3_sa_SuffixArray.__pyx___lookup_helper = (PyObject *(*)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int))__pyx_f_3_sa_11SuffixArray___lookup_helper;
- if (PyType_Ready(&__pyx_type_3_sa_SuffixArray) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_SuffixArray.tp_dict, __pyx_vtabptr_3_sa_SuffixArray) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "SuffixArray", (PyObject *)&__pyx_type_3_sa_SuffixArray) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_SuffixArray = &__pyx_type_3_sa_SuffixArray;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_16___str__) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_16___str__ = &__pyx_type_3_sa___pyx_scope_struct_16___str__;
- __pyx_vtabptr_3_sa_Alphabet = &__pyx_vtable_3_sa_Alphabet;
- __pyx_vtable_3_sa_Alphabet.isvar = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_isvar;
- __pyx_vtable_3_sa_Alphabet.isword = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_isword;
- __pyx_vtable_3_sa_Alphabet.getindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_getindex;
- __pyx_vtable_3_sa_Alphabet.setindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int, int))__pyx_f_3_sa_8Alphabet_setindex;
- __pyx_vtable_3_sa_Alphabet.clearindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_clearindex;
- __pyx_vtable_3_sa_Alphabet.match = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int, int))__pyx_f_3_sa_8Alphabet_match;
- __pyx_vtable_3_sa_Alphabet.tocat = (char *(*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_tocat;
- __pyx_vtable_3_sa_Alphabet.fromcat = (int (*)(struct __pyx_obj_3_sa_Alphabet *, char *))__pyx_f_3_sa_8Alphabet_fromcat;
- __pyx_vtable_3_sa_Alphabet.tostring = (char *(*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_tostring;
- __pyx_vtable_3_sa_Alphabet.fromstring = (int (*)(struct __pyx_obj_3_sa_Alphabet *, char *, int))__pyx_f_3_sa_8Alphabet_fromstring;
- if (PyType_Ready(&__pyx_type_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_Alphabet.tp_dict, __pyx_vtabptr_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "Alphabet", (PyObject *)&__pyx_type_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_Alphabet = &__pyx_type_3_sa_Alphabet;
- if (PyType_Ready(&__pyx_type_3_sa_Rule) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "Rule", (PyObject *)&__pyx_type_3_sa_Rule) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_Rule = &__pyx_type_3_sa_Rule;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_6_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_6_genexpr = &__pyx_type_3_sa___pyx_scope_struct_6_genexpr;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_21_add_instance) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_21_add_instance = &__pyx_type_3_sa___pyx_scope_struct_21_add_instance;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_2_genexpr) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_2_genexpr = &__pyx_type_3_sa___pyx_scope_struct_2_genexpr;
- __pyx_vtabptr_3_sa_PhraseLocation = &__pyx_vtable_3_sa_PhraseLocation;
- __pyx_vtable_3_sa_PhraseLocation.contains = (int (*)(struct __pyx_obj_3_sa_PhraseLocation *, int))__pyx_f_3_sa_14PhraseLocation_contains;
- if (PyType_Ready(&__pyx_type_3_sa_PhraseLocation) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_PhraseLocation.tp_dict, __pyx_vtabptr_3_sa_PhraseLocation) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "PhraseLocation", (PyObject *)&__pyx_type_3_sa_PhraseLocation) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_PhraseLocation = &__pyx_type_3_sa_PhraseLocation;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_15___iter__) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_15___iter__ = &__pyx_type_3_sa___pyx_scope_struct_15___iter__;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_22_form_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_22_form_rule = &__pyx_type_3_sa___pyx_scope_struct_22_form_rule;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_25_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_25_genexpr = &__pyx_type_3_sa___pyx_scope_struct_25_genexpr;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_24_fmt_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule = &__pyx_type_3_sa___pyx_scope_struct_24_fmt_rule;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_28___str__) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_28___str__ = &__pyx_type_3_sa___pyx_scope_struct_28___str__;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_1_read_bitext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext = &__pyx_type_3_sa___pyx_scope_struct_1_read_bitext;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_13_decode_words) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_13_decode_words = &__pyx_type_3_sa___pyx_scope_struct_13_decode_words;
- if (PyType_Ready(&__pyx_type_3_sa_FeatureVector) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "FeatureVector", (PyObject *)&__pyx_type_3_sa_FeatureVector) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_FeatureVector = &__pyx_type_3_sa_FeatureVector;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_7_decode_lattice) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice = &__pyx_type_3_sa___pyx_scope_struct_7_decode_lattice;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_19_input) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_19_input = &__pyx_type_3_sa___pyx_scope_struct_19_input;
- __pyx_vtabptr_3_sa_Scorer = &__pyx_vtable_3_sa_Scorer;
- __pyx_vtable_3_sa_Scorer.score = (struct __pyx_obj_3_sa_FeatureVector *(*)(struct __pyx_obj_3_sa_Scorer *, PyObject *))__pyx_f_3_sa_6Scorer_score;
- if (PyType_Ready(&__pyx_type_3_sa_Scorer) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_Scorer.tp_dict, __pyx_vtabptr_3_sa_Scorer) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "Scorer", (PyObject *)&__pyx_type_3_sa_Scorer) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_Scorer = &__pyx_type_3_sa_Scorer;
- __pyx_vtabptr_3_sa_Alignment = &__pyx_vtable_3_sa_Alignment;
- __pyx_vtable_3_sa_Alignment.link = (int (*)(struct __pyx_obj_3_sa_Alignment *, int, int))__pyx_f_3_sa_9Alignment_link;
- __pyx_vtable_3_sa_Alignment._unlink = (PyObject *(*)(struct __pyx_obj_3_sa_Alignment *, int, int *, int *))__pyx_f_3_sa_9Alignment__unlink;
- __pyx_vtable_3_sa_Alignment._get_sent_links = (int *(*)(struct __pyx_obj_3_sa_Alignment *, int, int *))__pyx_f_3_sa_9Alignment__get_sent_links;
- if (PyType_Ready(&__pyx_type_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_Alignment.tp_dict, __pyx_vtabptr_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "Alignment", (PyObject *)&__pyx_type_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_Alignment = &__pyx_type_3_sa_Alignment;
- if (PyType_Ready(&__pyx_type_3_sa_BitSet) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "BitSet", (PyObject *)&__pyx_type_3_sa_BitSet) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_BitSet = &__pyx_type_3_sa_BitSet;
- if (PyType_Ready(&__pyx_type_3_sa_Sampler) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "Sampler", (PyObject *)&__pyx_type_3_sa_Sampler) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_Sampler = &__pyx_type_3_sa_Sampler;
- __pyx_vtabptr_3_sa_StringMap = &__pyx_vtable_3_sa_StringMap;
- __pyx_vtable_3_sa_StringMap.word = (char *(*)(struct __pyx_obj_3_sa_StringMap *, int))__pyx_f_3_sa_9StringMap_word;
- __pyx_vtable_3_sa_StringMap.index = (int (*)(struct __pyx_obj_3_sa_StringMap *, char *))__pyx_f_3_sa_9StringMap_index;
- if (PyType_Ready(&__pyx_type_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_StringMap.tp_dict, __pyx_vtabptr_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "StringMap", (PyObject *)&__pyx_type_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_StringMap = &__pyx_type_3_sa_StringMap;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases = &__pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases;
- if (PyType_Ready(&__pyx_type_3_sa_TrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "TrieNode", (PyObject *)&__pyx_type_3_sa_TrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_TrieNode = &__pyx_type_3_sa_TrieNode;
- __pyx_type_3_sa_ExtendedTrieNode.tp_base = __pyx_ptype_3_sa_TrieNode;
- if (PyType_Ready(&__pyx_type_3_sa_ExtendedTrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "ExtendedTrieNode", (PyObject *)&__pyx_type_3_sa_ExtendedTrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_ExtendedTrieNode = &__pyx_type_3_sa_ExtendedTrieNode;
- __pyx_vtabptr_3_sa_TrieMap = &__pyx_vtable_3_sa_TrieMap;
- __pyx_vtable_3_sa_TrieMap._insert = (struct __pyx_t_3_sa__Trie_Node *(*)(struct __pyx_obj_3_sa_TrieMap *, int *, int))__pyx_f_3_sa_7TrieMap__insert;
- __pyx_vtable_3_sa_TrieMap._contains = (struct __pyx_t_3_sa__Trie_Node *(*)(struct __pyx_obj_3_sa_TrieMap *, int *, int))__pyx_f_3_sa_7TrieMap__contains;
- if (PyType_Ready(&__pyx_type_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_TrieMap.tp_dict, __pyx_vtabptr_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "TrieMap", (PyObject *)&__pyx_type_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_TrieMap = &__pyx_type_3_sa_TrieMap;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_8_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_8_genexpr = &__pyx_type_3_sa___pyx_scope_struct_8_genexpr;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_4_make_lattice) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice = &__pyx_type_3_sa___pyx_scope_struct_4_make_lattice;
- __pyx_vtabptr_3_sa_Phrase = &__pyx_vtable_3_sa_Phrase;
- __pyx_vtable_3_sa_Phrase.chunkpos = (int (*)(struct __pyx_obj_3_sa_Phrase *, int))__pyx_f_3_sa_6Phrase_chunkpos;
- __pyx_vtable_3_sa_Phrase.chunklen = (int (*)(struct __pyx_obj_3_sa_Phrase *, int))__pyx_f_3_sa_6Phrase_chunklen;
- if (PyType_Ready(&__pyx_type_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_Phrase.tp_dict, __pyx_vtabptr_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "Phrase", (PyObject *)&__pyx_type_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_Phrase = &__pyx_type_3_sa_Phrase;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_27___iter__) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_27___iter__ = &__pyx_type_3_sa___pyx_scope_struct_27___iter__;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct____iter__) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct____iter__ = &__pyx_type_3_sa___pyx_scope_struct____iter__;
- if (PyType_Ready(&__pyx_type_3_sa_TrieTable) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "TrieTable", (PyObject *)&__pyx_type_3_sa_TrieTable) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_TrieTable = &__pyx_type_3_sa_TrieTable;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_5_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_5_genexpr = &__pyx_type_3_sa___pyx_scope_struct_5_genexpr;
- if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_10_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa___pyx_scope_struct_10_genexpr = &__pyx_type_3_sa___pyx_scope_struct_10_genexpr;
- __pyx_vtabptr_3_sa_FloatList = &__pyx_vtable_3_sa_FloatList;
- __pyx_vtable_3_sa_FloatList.set = (void (*)(struct __pyx_obj_3_sa_FloatList *, int, float))__pyx_f_3_sa_9FloatList_set;
- __pyx_vtable_3_sa_FloatList.write_handle = (void (*)(struct __pyx_obj_3_sa_FloatList *, FILE *))__pyx_f_3_sa_9FloatList_write_handle;
- __pyx_vtable_3_sa_FloatList.read_handle = (void (*)(struct __pyx_obj_3_sa_FloatList *, FILE *))__pyx_f_3_sa_9FloatList_read_handle;
- if (PyType_Ready(&__pyx_type_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_3_sa_FloatList.tp_dict, __pyx_vtabptr_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "FloatList", (PyObject *)&__pyx_type_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_3_sa_FloatList = &__pyx_type_3_sa_FloatList;
- /*--- Type import code ---*/
- /*--- Variable import code ---*/
- /*--- Function import code ---*/
- /*--- Execution code ---*/
-
- /* "_sa.pyx":1
- * import logging # <<<<<<<<<<<<<<
- * import resource
- * import gzip
- */
- __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__logging), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__logging, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "_sa.pyx":2
- * import logging
- * import resource # <<<<<<<<<<<<<<
- * import gzip
- *
- */
- __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__resource), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__resource, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "_sa.pyx":3
- * import logging
- * import resource
- * import gzip # <<<<<<<<<<<<<<
- *
- * def monitor_cpu():
- */
- __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__gzip), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__gzip, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "_sa.pyx":5
- * import gzip
- *
- * def monitor_cpu(): # <<<<<<<<<<<<<<
- * return (resource.getrusage(resource.RUSAGE_SELF).ru_utime+
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime)
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_1monitor_cpu, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__monitor_cpu, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "_sa.pyx":9
- * resource.getrusage(resource.RUSAGE_SELF).ru_stime)
- *
- * def gzip_or_text(char* filename): # <<<<<<<<<<<<<<
- * if filename.endswith('.gz'):
- * return gzip.GzipFile(filename)
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_3gzip_or_text, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__gzip_or_text, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "_sa.pyx":15
- * return open(filename)
- *
- * logger = logging.getLogger('cdec.sa') # <<<<<<<<<<<<<<
- *
- * include "float_list.pxi"
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logging); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_173), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__logger, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":8
- * # May need to revisit if things get really tight, though.
- *
- * cdef int ALIGNMENT_CODE = 1 << 16 # <<<<<<<<<<<<<<
- *
- * cdef class Alignment:
- */
- __pyx_v_3_sa_ALIGNMENT_CODE = 65536;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":54
- * cdef id2eword, id2fword, eword2id, fword2id
- *
- * def __cinit__(self, from_text=None, from_data=False, from_binary=None, # <<<<<<<<<<<<<<
- * earray=None, fsarray=None, alignment=None):
- * self.id2eword = []
- */
- __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_k_43 = __pyx_t_1;
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":17
- * from libc.string cimport memset
- *
- * cdef int MIN_BOTTOM_SIZE = 32 # <<<<<<<<<<<<<<
- * cdef int MIN_BOTTOM_BITS = 5
- * cdef int LOWER_MASK[32]
- */
- __pyx_v_3_sa_MIN_BOTTOM_SIZE = 32;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":18
- *
- * cdef int MIN_BOTTOM_SIZE = 32
- * cdef int MIN_BOTTOM_BITS = 5 # <<<<<<<<<<<<<<
- * cdef int LOWER_MASK[32]
- *
- */
- __pyx_v_3_sa_MIN_BOTTOM_BITS = 5;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":28
- * LOWER_MASK[i] = mask
- *
- * _init_lower_mask() # <<<<<<<<<<<<<<
- *
- * cdef struct _BitSet:
- */
- __pyx_f_3_sa__init_lower_mask();
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":4
- * from libc.stdlib cimport malloc, realloc, strtol
- *
- * cdef int INDEX_SHIFT = 3 # <<<<<<<<<<<<<<
- * cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1
- *
- */
- __pyx_v_3_sa_INDEX_SHIFT = 3;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":5
- *
- * cdef int INDEX_SHIFT = 3
- * cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1 # <<<<<<<<<<<<<<
- *
- * cdef class Alphabet:
- */
- __pyx_v_3_sa_INDEX_MASK = ((1 << __pyx_v_3_sa_INDEX_SHIFT) - 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":87
- * return self.terminals.index(s)
- *
- * cdef Alphabet ALPHABET = Alphabet() # <<<<<<<<<<<<<<
- *
- * cdef char* sym_tostring(int sym):
- */
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Alphabet)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_XGOTREF(((PyObject *)__pyx_v_3_sa_ALPHABET));
- __Pyx_DECREF(((PyObject *)__pyx_v_3_sa_ALPHABET));
- __Pyx_GIVEREF(__pyx_t_1);
- __pyx_v_3_sa_ALPHABET = ((struct __pyx_obj_3_sa_Alphabet *)__pyx_t_1);
- __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":107
- * return ALPHABET.fromstring(string, terminal)
- *
- * def isvar(sym): # <<<<<<<<<<<<<<
- * return sym_isvar(sym)
- *
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_5isvar, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__isvar, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110
- * return sym_isvar(sym)
- *
- * def make_lattice(words): # <<<<<<<<<<<<<<
- * word_ids = (sym_fromstring(word, True) for word in words)
- * return tuple(((word, None, 1), ) for word in word_ids)
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_7make_lattice, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__make_lattice, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114
- * return tuple(((word, None, 1), ) for word in word_ids)
- *
- * def decode_lattice(lattice): # <<<<<<<<<<<<<<
- * return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc
- * for arc in node for node in lattice)
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_9decode_lattice, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__decode_lattice, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118
- * for arc in node for node in lattice)
- *
- * def decode_sentence(lattice): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_11decode_sentence, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__decode_sentence, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121
- * return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
- *
- * def encode_words(words): # <<<<<<<<<<<<<<
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_13encode_words, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__encode_words, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124
- * return tuple(sym_fromstring(word, True) for word in words)
- *
- * def decode_words(syms): # <<<<<<<<<<<<<<
- * return tuple(sym_tostring(sym) for sym in syms)
- */
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_15decode_words, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__decode_words, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":5
- * # Much faster than the Python numbers reported there.
- * # Note to reader: this code is closer to C than Python
- * import gc # <<<<<<<<<<<<<<
- * import itertools
- *
- */
- __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__gc), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__gc, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":6
- * # Note to reader: this code is closer to C than Python
- * import gc
- * import itertools # <<<<<<<<<<<<<<
- *
- * from libc.stdlib cimport malloc, realloc, free
- */
- __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__itertools), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__itertools, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":12
- * from libc.math cimport fmod, ceil, floor, log
- *
- * from collections import defaultdict, Counter, namedtuple # <<<<<<<<<<<<<<
- *
- * FeatureContext = namedtuple('FeatureContext',
- */
- __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_n_s__defaultdict));
- PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__defaultdict));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__defaultdict));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__Counter));
- PyList_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_s__Counter));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__Counter));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__namedtuple));
- PyList_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_n_s__namedtuple));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__namedtuple));
- __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__collections), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__defaultdict, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s__Counter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__Counter, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s__namedtuple); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__namedtuple, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":14
- * from collections import defaultdict, Counter, namedtuple
- *
- * FeatureContext = namedtuple('FeatureContext', # <<<<<<<<<<<<<<
- * ['fphrase',
- * 'ephrase',
- */
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__namedtuple); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":15
- *
- * FeatureContext = namedtuple('FeatureContext',
- * ['fphrase', # <<<<<<<<<<<<<<
- * 'ephrase',
- * 'paircount',
- */
- __pyx_t_1 = PyList_New(13); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(((PyObject *)__pyx_n_s__fphrase));
- PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__fphrase));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fphrase));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__ephrase));
- PyList_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_s__ephrase));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ephrase));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__paircount));
- PyList_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_n_s__paircount));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__paircount));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__fcount));
- PyList_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_n_s__fcount));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fcount));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__fsample_count));
- PyList_SET_ITEM(__pyx_t_1, 4, ((PyObject *)__pyx_n_s__fsample_count));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fsample_count));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__input_span));
- PyList_SET_ITEM(__pyx_t_1, 5, ((PyObject *)__pyx_n_s__input_span));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__input_span));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__matches));
- PyList_SET_ITEM(__pyx_t_1, 6, ((PyObject *)__pyx_n_s__matches));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__matches));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__input_match));
- PyList_SET_ITEM(__pyx_t_1, 7, ((PyObject *)__pyx_n_s__input_match));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__input_match));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__test_sentence));
- PyList_SET_ITEM(__pyx_t_1, 8, ((PyObject *)__pyx_n_s__test_sentence));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__test_sentence));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__f_text));
- PyList_SET_ITEM(__pyx_t_1, 9, ((PyObject *)__pyx_n_s__f_text));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f_text));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__e_text));
- PyList_SET_ITEM(__pyx_t_1, 10, ((PyObject *)__pyx_n_s__e_text));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__e_text));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__meta));
- PyList_SET_ITEM(__pyx_t_1, 11, ((PyObject *)__pyx_n_s__meta));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__meta));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__online));
- PyList_SET_ITEM(__pyx_t_1, 12, ((PyObject *)__pyx_n_s__online));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__online));
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(((PyObject *)__pyx_n_s__FeatureContext));
- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_s__FeatureContext));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__FeatureContext));
- PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_t_1));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__FeatureContext, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":30
- * ])
- *
- * OnlineFeatureContext = namedtuple('OnlineFeatureContext', # <<<<<<<<<<<<<<
- * ['fcount',
- * 'fsample_count',
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__namedtuple); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":31
- *
- * OnlineFeatureContext = namedtuple('OnlineFeatureContext',
- * ['fcount', # <<<<<<<<<<<<<<
- * 'fsample_count',
- * 'paircount',
- */
- __pyx_t_3 = PyList_New(6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(((PyObject *)__pyx_n_s__fcount));
- PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_s__fcount));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fcount));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__fsample_count));
- PyList_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__fsample_count));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fsample_count));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__paircount));
- PyList_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_n_s__paircount));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__paircount));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__bilex_f));
- PyList_SET_ITEM(__pyx_t_3, 3, ((PyObject *)__pyx_n_s__bilex_f));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bilex_f));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__bilex_e));
- PyList_SET_ITEM(__pyx_t_3, 4, ((PyObject *)__pyx_n_s__bilex_e));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bilex_e));
- __Pyx_INCREF(((PyObject *)__pyx_n_s__bilex_fe));
- PyList_SET_ITEM(__pyx_t_3, 5, ((PyObject *)__pyx_n_s__bilex_fe));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bilex_fe));
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(((PyObject *)__pyx_n_s_163));
- PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_163));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_s_163));
- PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_t_3));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_163, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":39
- * ])
- *
- * cdef int PRECOMPUTE = 0 # <<<<<<<<<<<<<<
- * cdef int MERGE = 1
- * cdef int BAEZA_YATES = 2
- */
- __pyx_v_3_sa_PRECOMPUTE = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":40
- *
- * cdef int PRECOMPUTE = 0
- * cdef int MERGE = 1 # <<<<<<<<<<<<<<
- * cdef int BAEZA_YATES = 2
- *
- */
- __pyx_v_3_sa_MERGE = 1;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":41
- * cdef int PRECOMPUTE = 0
- * cdef int MERGE = 1
- * cdef int BAEZA_YATES = 2 # <<<<<<<<<<<<<<
- *
- * # NOTE: was encoded as a non-terminal in the previous version
- */
- __pyx_v_3_sa_BAEZA_YATES = 2;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":44
- *
- * # NOTE: was encoded as a non-terminal in the previous version
- * cdef int EPSILON = sym_fromstring('*EPS*', True) # <<<<<<<<<<<<<<
- *
- * cdef class TrieNode:
- */
- __pyx_v_3_sa_EPSILON = __pyx_f_3_sa_sym_fromstring(__pyx_k_187, 1);
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":67
- * cdef public int count
- * cdef public root
- * def __cinit__(self, extended=False): # <<<<<<<<<<<<<<
- * self.count = 0
- * self.extended = extended
- */
- __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_k_101 = __pyx_t_3;
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2206
- *
- * # Spans are _inclusive_ on both ends [i, j]
- * def span_check(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
- __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_17span_check, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__span_check, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2214
- * return True
- *
- * def span_inc(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
- __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_19span_inc, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__span_inc, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2220
- * k += 1
- *
- * def span_dec(vec, i, j): # <<<<<<<<<<<<<<
- * k = i
- * while k <= j:
- */
- __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_21span_dec, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__span_dec, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":1
- * cdef StringMap FD = StringMap() # Feature name dictionary # <<<<<<<<<<<<<<
- *
- * INITIAL_CAPACITY = 7 # default number of features
- */
- __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_StringMap)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_XGOTREF(((PyObject *)__pyx_v_3_sa_FD));
- __Pyx_DECREF(((PyObject *)__pyx_v_3_sa_FD));
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_v_3_sa_FD = ((struct __pyx_obj_3_sa_StringMap *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":3
- * cdef StringMap FD = StringMap() # Feature name dictionary
- *
- * INITIAL_CAPACITY = 7 # default number of features # <<<<<<<<<<<<<<
- * INCREMENT = INITIAL_CAPACITY # double size
- *
- */
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__INITIAL_CAPACITY, __pyx_int_7) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":4
- *
- * INITIAL_CAPACITY = 7 # default number of features
- * INCREMENT = INITIAL_CAPACITY # double size # <<<<<<<<<<<<<<
- *
- * cdef class FeatureVector:
- */
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s__INCREMENT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
- /* "_sa.pyx":1
- * import logging # <<<<<<<<<<<<<<
- * import resource
- * import gzip
- */
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- if (PyDict_SetItem(__pyx_d, __pyx_n_s____test__, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- goto __pyx_L0;
- __pyx_L1_error:;
- __Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_2);
- __Pyx_XDECREF(__pyx_t_3);
- if (__pyx_m) {
- __Pyx_AddTraceback("init _sa", __pyx_clineno, __pyx_lineno, __pyx_filename);
- Py_DECREF(__pyx_m); __pyx_m = 0;
- } else if (!PyErr_Occurred()) {
- PyErr_SetString(PyExc_ImportError, "init _sa");
- }
- __pyx_L0:;
- __Pyx_RefNannyFinishContext();
- #if PY_MAJOR_VERSION < 3
- return;
- #else
- return __pyx_m;
- #endif
-}
-
-/* Runtime support code */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
- PyObject *m = NULL, *p = NULL;
- void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
- if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
- if (!p) goto end;
- r = PyLong_AsVoidPtr(p);
-end:
- Py_XDECREF(p);
- Py_XDECREF(m);
- return (__Pyx_RefNannyAPIStruct *)r;
-}
-#endif /* CYTHON_REFNANNY */
-
-static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
- PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
- if (unlikely(!result)) {
- PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
- "name '%U' is not defined", name);
-#else
- "name '%s' is not defined", PyString_AS_STRING(name));
-#endif
- }
- return result;
-}
-
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
- PyObject *result;
-#if CYTHON_COMPILING_IN_CPYTHON
- result = PyDict_GetItem(__pyx_d, name);
- if (result) {
- Py_INCREF(result);
- } else {
-#else
- result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
- }
- return result;
-}
-
-static void __Pyx_RaiseDoubleKeywordsError(
- const char* func_name,
- PyObject* kw_name)
-{
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION >= 3
- "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
- #else
- "%s() got multiple values for keyword argument '%s'", func_name,
- PyString_AsString(kw_name));
- #endif
-}
-
-static int __Pyx_ParseOptionalKeywords(
- PyObject *kwds,
- PyObject **argnames[],
- PyObject *kwds2,
- PyObject *values[],
- Py_ssize_t num_pos_args,
- const char* function_name)
-{
- PyObject *key = 0, *value = 0;
- Py_ssize_t pos = 0;
- PyObject*** name;
- PyObject*** first_kw_arg = argnames + num_pos_args;
- while (PyDict_Next(kwds, &pos, &key, &value)) {
- name = first_kw_arg;
- while (*name && (**name != key)) name++;
- if (*name) {
- values[name-argnames] = value;
- continue;
- }
- name = first_kw_arg;
- #if PY_MAJOR_VERSION < 3
- if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
- while (*name) {
- if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
- && _PyString_Eq(**name, key)) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- if ((**argname == key) || (
- (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
- && _PyString_Eq(**argname, key))) {
- goto arg_passed_twice;
- }
- argname++;
- }
- }
- } else
- #endif
- if (likely(PyUnicode_Check(key))) {
- while (*name) {
- int cmp = (**name == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
- #endif
- PyUnicode_Compare(**name, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) {
- values[name-argnames] = value;
- break;
- }
- name++;
- }
- if (*name) continue;
- else {
- PyObject*** argname = argnames;
- while (argname != first_kw_arg) {
- int cmp = (**argname == key) ? 0 :
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
- (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
- #endif
- PyUnicode_Compare(**argname, key);
- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
- if (cmp == 0) goto arg_passed_twice;
- argname++;
- }
- }
- } else
- goto invalid_keyword_type;
- if (kwds2) {
- if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
- } else {
- goto invalid_keyword;
- }
- }
- return 0;
-arg_passed_twice:
- __Pyx_RaiseDoubleKeywordsError(function_name, key);
- goto bad;
-invalid_keyword_type:
- PyErr_Format(PyExc_TypeError,
- "%s() keywords must be strings", function_name);
- goto bad;
-invalid_keyword:
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION < 3
- "%s() got an unexpected keyword argument '%s'",
- function_name, PyString_AsString(key));
- #else
- "%s() got an unexpected keyword argument '%U'",
- function_name, key);
- #endif
-bad:
- return -1;
-}
-
-static void __Pyx_RaiseArgtupleInvalid(
- const char* func_name,
- int exact,
- Py_ssize_t num_min,
- Py_ssize_t num_max,
- Py_ssize_t num_found)
-{
- Py_ssize_t num_expected;
- const char *more_or_less;
- if (num_found < num_min) {
- num_expected = num_min;
- more_or_less = "at least";
- } else {
- num_expected = num_max;
- more_or_less = "at most";
- }
- if (exact) {
- more_or_less = "exactly";
- }
- PyErr_Format(PyExc_TypeError,
- "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
- func_name, more_or_less, num_expected,
- (num_expected == 1) ? "" : "s", num_found);
-}
-
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- PyThreadState *tstate = PyThreadState_GET();
- tmp_type = tstate->curexc_type;
- tmp_value = tstate->curexc_value;
- tmp_tb = tstate->curexc_traceback;
- tstate->curexc_type = type;
- tstate->curexc_value = value;
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-#else
- PyErr_Restore(type, value, tb);
-#endif
-}
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
- PyThreadState *tstate = PyThreadState_GET();
- *type = tstate->curexc_type;
- *value = tstate->curexc_value;
- *tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
-#else
- PyErr_Fetch(type, value, tb);
-#endif
-}
-
-#if PY_MAJOR_VERSION < 3
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
- CYTHON_UNUSED PyObject *cause) {
- Py_XINCREF(type);
- if (!value || value == Py_None)
- value = NULL;
- else
- Py_INCREF(value);
- if (!tb || tb == Py_None)
- tb = NULL;
- else {
- Py_INCREF(tb);
- if (!PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto raise_error;
- }
- }
- #if PY_VERSION_HEX < 0x02050000
- if (PyClass_Check(type)) {
- #else
- if (PyType_Check(type)) {
- #endif
-#if CYTHON_COMPILING_IN_PYPY
- if (!value) {
- Py_INCREF(Py_None);
- value = Py_None;
- }
-#endif
- PyErr_NormalizeException(&type, &value, &tb);
- } else {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto raise_error;
- }
- value = type;
- #if PY_VERSION_HEX < 0x02050000
- if (PyInstance_Check(type)) {
- type = (PyObject*) ((PyInstanceObject*)type)->in_class;
- Py_INCREF(type);
- } else {
- type = 0;
- PyErr_SetString(PyExc_TypeError,
- "raise: exception must be an old-style class or instance");
- goto raise_error;
- }
- #else
- type = (PyObject*) Py_TYPE(type);
- Py_INCREF(type);
- if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto raise_error;
- }
- #endif
- }
- __Pyx_ErrRestore(type, value, tb);
- return;
-raise_error:
- Py_XDECREF(value);
- Py_XDECREF(type);
- Py_XDECREF(tb);
- return;
-}
-#else /* Python 3+ */
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
- PyObject* owned_instance = NULL;
- if (tb == Py_None) {
- tb = 0;
- } else if (tb && !PyTraceBack_Check(tb)) {
- PyErr_SetString(PyExc_TypeError,
- "raise: arg 3 must be a traceback or None");
- goto bad;
- }
- if (value == Py_None)
- value = 0;
- if (PyExceptionInstance_Check(type)) {
- if (value) {
- PyErr_SetString(PyExc_TypeError,
- "instance exception may not have a separate value");
- goto bad;
- }
- value = type;
- type = (PyObject*) Py_TYPE(value);
- } else if (PyExceptionClass_Check(type)) {
- PyObject *args;
- if (!value)
- args = PyTuple_New(0);
- else if (PyTuple_Check(value)) {
- Py_INCREF(value);
- args = value;
- } else
- args = PyTuple_Pack(1, value);
- if (!args)
- goto bad;
- owned_instance = PyEval_CallObject(type, args);
- Py_DECREF(args);
- if (!owned_instance)
- goto bad;
- value = owned_instance;
- if (!PyExceptionInstance_Check(value)) {
- PyErr_Format(PyExc_TypeError,
- "calling %R should have returned an instance of "
- "BaseException, not %R",
- type, Py_TYPE(value));
- goto bad;
- }
- } else {
- PyErr_SetString(PyExc_TypeError,
- "raise: exception class must be a subclass of BaseException");
- goto bad;
- }
-#if PY_VERSION_HEX >= 0x03030000
- if (cause) {
-#else
- if (cause && cause != Py_None) {
-#endif
- PyObject *fixed_cause;
- if (cause == Py_None) {
- fixed_cause = NULL;
- } else if (PyExceptionClass_Check(cause)) {
- fixed_cause = PyObject_CallObject(cause, NULL);
- if (fixed_cause == NULL)
- goto bad;
- } else if (PyExceptionInstance_Check(cause)) {
- fixed_cause = cause;
- Py_INCREF(fixed_cause);
- } else {
- PyErr_SetString(PyExc_TypeError,
- "exception causes must derive from "
- "BaseException");
- goto bad;
- }
- PyException_SetCause(value, fixed_cause);
- }
- PyErr_SetObject(type, value);
- if (tb) {
- PyThreadState *tstate = PyThreadState_GET();
- PyObject* tmp_tb = tstate->curexc_traceback;
- if (tb != tmp_tb) {
- Py_INCREF(tb);
- tstate->curexc_traceback = tb;
- Py_XDECREF(tmp_tb);
- }
- }
-bad:
- Py_XDECREF(owned_instance);
- return;
-}
-#endif
-
-static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
- CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) {
- PyObject *old_exc, *old_val, *old_tb;
- PyObject *ctx;
- __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
- #if PY_MAJOR_VERSION < 3
- ctx = PyString_FromString(name);
- #else
- ctx = PyUnicode_FromString(name);
- #endif
- __Pyx_ErrRestore(old_exc, old_val, old_tb);
- if (!ctx) {
- PyErr_WriteUnraisable(Py_None);
- } else {
- PyErr_WriteUnraisable(ctx);
- Py_DECREF(ctx);
- }
-}
-
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
- if (unlikely(!type)) {
- PyErr_Format(PyExc_SystemError, "Missing type object");
- return 0;
- }
- if (likely(PyObject_TypeCheck(obj, type)))
- return 1;
- PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
- Py_TYPE(obj)->tp_name, type->tp_name);
- return 0;
-}
-
-static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
- PyObject *kwdict,
- const char* function_name,
- int kw_allowed)
-{
- PyObject* key = 0;
- Py_ssize_t pos = 0;
-#if CPYTHON_COMPILING_IN_PYPY
- if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
- goto invalid_keyword;
- return 1;
-#else
- while (PyDict_Next(kwdict, &pos, &key, 0)) {
- #if PY_MAJOR_VERSION < 3
- if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
- #endif
- if (unlikely(!PyUnicode_Check(key)))
- goto invalid_keyword_type;
- }
- if ((!kw_allowed) && unlikely(key))
- goto invalid_keyword;
- return 1;
-invalid_keyword_type:
- PyErr_Format(PyExc_TypeError,
- "%s() keywords must be strings", function_name);
- return 0;
-#endif
-invalid_keyword:
- PyErr_Format(PyExc_TypeError,
- #if PY_MAJOR_VERSION < 3
- "%s() got an unexpected keyword argument '%s'",
- function_name, PyString_AsString(key));
- #else
- "%s() got an unexpected keyword argument '%U'",
- function_name, key);
- #endif
- return 0;
-}
-
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
- PyObject *r;
- if (!j) return NULL;
- r = PyObject_GetItem(o, j);
- Py_DECREF(j);
- return r;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
- if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
- if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
- PyObject *r = PyList_GET_ITEM(o, i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
- return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
- int wraparound, int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
- if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, i);
- Py_INCREF(r);
- return r;
- }
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
- return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
- int is_list, int wraparound, int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
- if (is_list || PyList_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
- PyObject *r = PyList_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
- }
- }
- else if (PyTuple_CheckExact(o)) {
- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
- PyObject *r = PyTuple_GET_ITEM(o, n);
- Py_INCREF(r);
- return r;
- }
- } else {
- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
- if (likely(m && m->sq_item)) {
- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
- Py_ssize_t l = m->sq_length(o);
- if (likely(l >= 0)) {
- i += l;
- } else {
- if (PyErr_ExceptionMatches(PyExc_OverflowError))
- PyErr_Clear();
- else
- return NULL;
- }
- }
- return m->sq_item(o, i);
- }
- }
-#else
- if (is_list || PySequence_Check(o)) {
- return PySequence_GetItem(o, i);
- }
-#endif
- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
- if (likely(PyList_CheckExact(L))) {
- if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return NULL;
- Py_INCREF(Py_None);
- return Py_None; /* this is just to have an accurate signature */
- } else {
- return __Pyx_PyObject_CallMethod1(L, __pyx_n_s__append, x);
- }
-}
-
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
- PyObject *local_type, *local_value, *local_tb;
-#if CYTHON_COMPILING_IN_CPYTHON
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- PyThreadState *tstate = PyThreadState_GET();
- local_type = tstate->curexc_type;
- local_value = tstate->curexc_value;
- local_tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
-#else
- PyErr_Fetch(&local_type, &local_value, &local_tb);
-#endif
- PyErr_NormalizeException(&local_type, &local_value, &local_tb);
-#if CYTHON_COMPILING_IN_CPYTHON
- if (unlikely(tstate->curexc_type))
-#else
- if (unlikely(PyErr_Occurred()))
-#endif
- goto bad;
- #if PY_MAJOR_VERSION >= 3
- if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
- goto bad;
- #endif
- Py_INCREF(local_type);
- Py_INCREF(local_value);
- Py_INCREF(local_tb);
- *type = local_type;
- *value = local_value;
- *tb = local_tb;
-#if CYTHON_COMPILING_IN_CPYTHON
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = local_type;
- tstate->exc_value = local_value;
- tstate->exc_traceback = local_tb;
- /* Make sure tstate is in a consistent state when we XDECREF
- these objects (DECREF may run arbitrary code). */
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-#else
- PyErr_SetExcInfo(local_type, local_value, local_tb);
-#endif
- return 0;
-bad:
- *type = 0;
- *value = 0;
- *tb = 0;
- Py_XDECREF(local_type);
- Py_XDECREF(local_value);
- Py_XDECREF(local_tb);
- return -1;
-}
-
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
- PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
- PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
- PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
- int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
-#if CYTHON_COMPILING_IN_CPYTHON
- PyMappingMethods* mp;
-#if PY_MAJOR_VERSION < 3
- PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
- if (likely(ms && ms->sq_slice)) {
- if (!has_cstart) {
- if (_py_start && (*_py_start != Py_None)) {
- cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
- if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
- } else
- cstart = 0;
- }
- if (!has_cstop) {
- if (_py_stop && (*_py_stop != Py_None)) {
- cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
- if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
- } else
- cstop = PY_SSIZE_T_MAX;
- }
- if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
- Py_ssize_t l = ms->sq_length(obj);
- if (likely(l >= 0)) {
- if (cstop < 0) {
- cstop += l;
- if (cstop < 0) cstop = 0;
- }
- if (cstart < 0) {
- cstart += l;
- if (cstart < 0) cstart = 0;
- }
- } else {
- if (PyErr_ExceptionMatches(PyExc_OverflowError))
- PyErr_Clear();
- else
- goto bad;
- }
- }
- return ms->sq_slice(obj, cstart, cstop);
- }
-#endif
- mp = Py_TYPE(obj)->tp_as_mapping;
- if (likely(mp && mp->mp_subscript))
-#endif
- {
- PyObject* result;
- PyObject *py_slice, *py_start, *py_stop;
- if (_py_slice) {
- py_slice = *_py_slice;
- } else {
- PyObject* owned_start = NULL;
- PyObject* owned_stop = NULL;
- if (_py_start) {
- py_start = *_py_start;
- } else {
- if (has_cstart) {
- owned_start = py_start = PyInt_FromSsize_t(cstart);
- if (unlikely(!py_start)) goto bad;
- } else
- py_start = Py_None;
- }
- if (_py_stop) {
- py_stop = *_py_stop;
- } else {
- if (has_cstop) {
- owned_stop = py_stop = PyInt_FromSsize_t(cstop);
- if (unlikely(!py_stop)) {
- Py_XDECREF(owned_start);
- goto bad;
- }
- } else
- py_stop = Py_None;
- }
- py_slice = PySlice_New(py_start, py_stop, Py_None);
- Py_XDECREF(owned_start);
- Py_XDECREF(owned_stop);
- if (unlikely(!py_slice)) goto bad;
- }
-#if CYTHON_COMPILING_IN_CPYTHON
- result = mp->mp_subscript(obj, py_slice);
-#else
- result = PyObject_GetItem(obj, py_slice);
-#endif
- if (!_py_slice) {
- Py_DECREF(py_slice);
- }
- return result;
- }
- PyErr_Format(PyExc_TypeError,
- "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
-bad:
- return NULL;
-}
-
-static CYTHON_INLINE int __Pyx_div_int(int a, int b) {
- int q = a / b;
- int r = a - q*b;
- q -= ((r != 0) & ((r ^ b) < 0));
- return q;
-}
-
-static CYTHON_INLINE int __Pyx_mod_int(int a, int b) {
- int r = a % b;
- r += ((r != 0) & ((r ^ b) < 0)) * b;
- return r;
-}
-
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
- PyErr_Format(PyExc_ValueError,
- "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
-}
-
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
- PyErr_Format(PyExc_ValueError,
- "need more than %" CYTHON_FORMAT_SSIZE_T "d value%s to unpack",
- index, (index == 1) ? "" : "s");
-}
-
-static CYTHON_INLINE int __Pyx_IterFinish(void) {
-#if CYTHON_COMPILING_IN_CPYTHON
- PyThreadState *tstate = PyThreadState_GET();
- PyObject* exc_type = tstate->curexc_type;
- if (unlikely(exc_type)) {
- if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
- PyObject *exc_value, *exc_tb;
- exc_value = tstate->curexc_value;
- exc_tb = tstate->curexc_traceback;
- tstate->curexc_type = 0;
- tstate->curexc_value = 0;
- tstate->curexc_traceback = 0;
- Py_DECREF(exc_type);
- Py_XDECREF(exc_value);
- Py_XDECREF(exc_tb);
- return 0;
- } else {
- return -1;
- }
- }
- return 0;
-#else
- if (unlikely(PyErr_Occurred())) {
- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
- PyErr_Clear();
- return 0;
- } else {
- return -1;
- }
- }
- return 0;
-#endif
-}
-
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
- if (unlikely(retval)) {
- Py_DECREF(retval);
- __Pyx_RaiseTooManyValuesError(expected);
- return -1;
- } else {
- return __Pyx_IterFinish();
- }
- return 0;
-}
-
-static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
- int r;
- if (!j) return -1;
- r = PyObject_SetItem(o, j, v);
- Py_DECREF(j);
- return r;
-}
-static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
- int is_list, int wraparound, int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
- if (is_list || PyList_CheckExact(o)) {
- Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
- if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
- PyObject* old = PyList_GET_ITEM(o, n);
- Py_INCREF(v);
- PyList_SET_ITEM(o, n, v);
- Py_DECREF(old);
- return 1;
- }
- } else {
- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
- if (likely(m && m->sq_ass_item)) {
- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
- Py_ssize_t l = m->sq_length(o);
- if (likely(l >= 0)) {
- i += l;
- } else {
- if (PyErr_ExceptionMatches(PyExc_OverflowError))
- PyErr_Clear();
- else
- return -1;
- }
- }
- return m->sq_ass_item(o, i, v);
- }
- }
-#else
-#if CYTHON_COMPILING_IN_PYPY
- if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
-#else
- if (is_list || PySequence_Check(o)) {
-#endif
- return PySequence_SetItem(o, i, v);
- }
-#endif
- return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
-}
-
-static double __Pyx__PyObject_AsDouble(PyObject* obj) {
- PyObject* float_value;
-#if CYTHON_COMPILING_IN_PYPY
- float_value = PyNumber_Float(obj);
-#else
- PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
- if (likely(nb) && likely(nb->nb_float)) {
- float_value = nb->nb_float(obj);
- if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
- PyErr_Format(PyExc_TypeError,
- "__float__ returned non-float (type %.200s)",
- Py_TYPE(float_value)->tp_name);
- Py_DECREF(float_value);
- goto bad;
- }
- } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) {
-#if PY_MAJOR_VERSION >= 3
- float_value = PyFloat_FromString(obj);
-#else
- float_value = PyFloat_FromString(obj, 0);
-#endif
- } else {
- PyObject* args = PyTuple_New(1);
- if (unlikely(!args)) goto bad;
- PyTuple_SET_ITEM(args, 0, obj);
- float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0);
- PyTuple_SET_ITEM(args, 0, 0);
- Py_DECREF(args);
- }
-#endif
- if (likely(float_value)) {
- double value = PyFloat_AS_DOUBLE(float_value);
- Py_DECREF(float_value);
- return value;
- }
-bad:
- return (double)-1;
-}
-
-static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
- PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
-}
-
-static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
- long q = a / b;
- long r = a - q*b;
- q -= ((r != 0) & ((r ^ b) < 0));
- return q;
-}
-
-static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
- const char *name, int exact)
-{
- if (!type) {
- PyErr_Format(PyExc_SystemError, "Missing type object");
- return 0;
- }
- if (none_allowed && obj == Py_None) return 1;
- else if (exact) {
- if (Py_TYPE(obj) == type) return 1;
- }
- else {
- if (PyObject_TypeCheck(obj, type)) return 1;
- }
- PyErr_Format(PyExc_TypeError,
- "Argument '%s' has incorrect type (expected %s, got %s)",
- name, type->tp_name, Py_TYPE(obj)->tp_name);
- return 0;
-}
-
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-}
-
-static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
- if (t == Py_None) {
- __Pyx_RaiseNoneNotIterableError();
- } else if (PyTuple_GET_SIZE(t) < index) {
- __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
- } else {
- __Pyx_RaiseTooManyValuesError(index);
- }
-}
-
-static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
- int is_tuple, int has_known_size, int decref_tuple) {
- Py_ssize_t index;
- PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
- if (!is_tuple && unlikely(!PyTuple_Check(tuple))) {
- iternextfunc iternext;
- iter = PyObject_GetIter(tuple);
- if (unlikely(!iter)) goto bad;
- if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
- iternext = Py_TYPE(iter)->tp_iternext;
- value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
- value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
- if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
- Py_DECREF(iter);
- } else {
- if (!has_known_size && unlikely(PyTuple_GET_SIZE(tuple) != 2)) {
- __Pyx_UnpackTupleError(tuple, 2);
- goto bad;
- }
-#if CYTHON_COMPILING_IN_PYPY
- value1 = PySequence_ITEM(tuple, 0);
- if (unlikely(!value1)) goto bad;
- value2 = PySequence_ITEM(tuple, 1);
- if (unlikely(!value2)) goto bad;
-#else
- value1 = PyTuple_GET_ITEM(tuple, 0);
- value2 = PyTuple_GET_ITEM(tuple, 1);
- Py_INCREF(value1);
- Py_INCREF(value2);
-#endif
- if (decref_tuple) { Py_DECREF(tuple); }
- }
- *pvalue1 = value1;
- *pvalue2 = value2;
- return 0;
-unpacking_failed:
- if (!has_known_size && __Pyx_IterFinish() == 0)
- __Pyx_RaiseNeedMoreValuesError(index);
-bad:
- Py_XDECREF(iter);
- Py_XDECREF(value1);
- Py_XDECREF(value2);
- if (decref_tuple) { Py_XDECREF(tuple); }
- return -1;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
- Py_ssize_t* p_orig_length, int* p_source_is_dict) {
- is_dict = is_dict || likely(PyDict_CheckExact(iterable));
- *p_source_is_dict = is_dict;
-#if !CYTHON_COMPILING_IN_PYPY
- if (is_dict) {
- *p_orig_length = PyDict_Size(iterable);
- Py_INCREF(iterable);
- return iterable;
- }
-#endif
- *p_orig_length = 0;
- if (method_name) {
- PyObject* iter;
- iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
- if (!iterable)
- return NULL;
-#if !CYTHON_COMPILING_IN_PYPY
- if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
- return iterable;
-#endif
- iter = PyObject_GetIter(iterable);
- Py_DECREF(iterable);
- return iter;
- }
- return PyObject_GetIter(iterable);
-}
-static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* iter_obj, Py_ssize_t orig_length, Py_ssize_t* ppos,
- PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
- PyObject* next_item;
-#if !CYTHON_COMPILING_IN_PYPY
- if (source_is_dict) {
- PyObject *key, *value;
- if (unlikely(orig_length != PyDict_Size(iter_obj))) {
- PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
- return -1;
- }
- if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
- return 0;
- }
- if (pitem) {
- PyObject* tuple = PyTuple_New(2);
- if (unlikely(!tuple)) {
- return -1;
- }
- Py_INCREF(key);
- Py_INCREF(value);
- PyTuple_SET_ITEM(tuple, 0, key);
- PyTuple_SET_ITEM(tuple, 1, value);
- *pitem = tuple;
- } else {
- if (pkey) {
- Py_INCREF(key);
- *pkey = key;
- }
- if (pvalue) {
- Py_INCREF(value);
- *pvalue = value;
- }
- }
- return 1;
- } else if (PyTuple_CheckExact(iter_obj)) {
- Py_ssize_t pos = *ppos;
- if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
- *ppos = pos + 1;
- next_item = PyTuple_GET_ITEM(iter_obj, pos);
- Py_INCREF(next_item);
- } else if (PyList_CheckExact(iter_obj)) {
- Py_ssize_t pos = *ppos;
- if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
- *ppos = pos + 1;
- next_item = PyList_GET_ITEM(iter_obj, pos);
- Py_INCREF(next_item);
- } else
-#endif
- {
- next_item = PyIter_Next(iter_obj);
- if (unlikely(!next_item)) {
- return __Pyx_IterFinish();
- }
- }
- if (pitem) {
- *pitem = next_item;
- } else if (pkey && pvalue) {
- if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
- return -1;
- } else if (pkey) {
- *pkey = next_item;
- } else {
- *pvalue = next_item;
- }
- return 1;
-}
-
-static CYTHON_INLINE long __Pyx_mod_long(long a, long b) {
- long r = a % b;
- r += ((r != 0) & ((r ^ b) < 0)) * b;
- return r;
-}
-
-static PyObject *
-__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
-{
- if (unlikely(op->func_doc == NULL)) {
- if (op->func.m_ml->ml_doc) {
-#if PY_MAJOR_VERSION >= 3
- op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
-#else
- op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
-#endif
- if (unlikely(op->func_doc == NULL))
- return NULL;
- } else {
- Py_INCREF(Py_None);
- return Py_None;
- }
- }
- Py_INCREF(op->func_doc);
- return op->func_doc;
-}
-static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
-{
- PyObject *tmp = op->func_doc;
- if (value == NULL)
- value = Py_None; /* Mark as deleted */
- Py_INCREF(value);
- op->func_doc = value;
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
-{
- if (unlikely(op->func_name == NULL)) {
-#if PY_MAJOR_VERSION >= 3
- op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
-#else
- op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
-#endif
- if (unlikely(op->func_name == NULL))
- return NULL;
- }
- Py_INCREF(op->func_name);
- return op->func_name;
-}
-static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
-{
- PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
- PyErr_SetString(PyExc_TypeError,
- "__name__ must be set to a string object");
- return -1;
- }
- tmp = op->func_name;
- Py_INCREF(value);
- op->func_name = value;
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
-{
- Py_INCREF(op->func_qualname);
- return op->func_qualname;
-}
-static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
-{
- PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
-#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
-#endif
- PyErr_SetString(PyExc_TypeError,
- "__qualname__ must be set to a string object");
- return -1;
- }
- tmp = op->func_qualname;
- Py_INCREF(value);
- op->func_qualname = value;
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
-{
- PyObject *self;
- self = m->func_closure;
- if (self == NULL)
- self = Py_None;
- Py_INCREF(self);
- return self;
-}
-static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
-{
- if (unlikely(op->func_dict == NULL)) {
- op->func_dict = PyDict_New();
- if (unlikely(op->func_dict == NULL))
- return NULL;
- }
- Py_INCREF(op->func_dict);
- return op->func_dict;
-}
-static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
-{
- PyObject *tmp;
- if (unlikely(value == NULL)) {
- PyErr_SetString(PyExc_TypeError,
- "function's dictionary may not be deleted");
- return -1;
- }
- if (unlikely(!PyDict_Check(value))) {
- PyErr_SetString(PyExc_TypeError,
- "setting function's dictionary to a non-dict");
- return -1;
- }
- tmp = op->func_dict;
- Py_INCREF(value);
- op->func_dict = value;
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_globals(CYTHON_UNUSED __pyx_CyFunctionObject *op)
-{
- PyObject* dict = PyModule_GetDict(__pyx_m);
- Py_XINCREF(dict);
- return dict;
-}
-static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
-{
- Py_INCREF(Py_None);
- return Py_None;
-}
-static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
-{
- PyObject* result = (op->func_code) ? op->func_code : Py_None;
- Py_INCREF(result);
- return result;
-}
-static int
-__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
- PyObject *res = op->defaults_getter((PyObject *) op);
- if (unlikely(!res))
- return -1;
- op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
- Py_INCREF(op->defaults_tuple);
- op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
- Py_INCREF(op->defaults_kwdict);
- Py_DECREF(res);
- return 0;
-}
-static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
- PyObject* tmp;
- if (!value) {
- value = Py_None;
- } else if (value != Py_None && !PyTuple_Check(value)) {
- PyErr_SetString(PyExc_TypeError,
- "__defaults__ must be set to a tuple object");
- return -1;
- }
- Py_INCREF(value);
- tmp = op->defaults_tuple;
- op->defaults_tuple = value;
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
- PyObject* result = op->defaults_tuple;
- if (unlikely(!result)) {
- if (op->defaults_getter) {
- if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
- result = op->defaults_tuple;
- } else {
- result = Py_None;
- }
- }
- Py_INCREF(result);
- return result;
-}
-static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
- PyObject* tmp;
- if (!value) {
- value = Py_None;
- } else if (value != Py_None && !PyDict_Check(value)) {
- PyErr_SetString(PyExc_TypeError,
- "__kwdefaults__ must be set to a dict object");
- return -1;
- }
- Py_INCREF(value);
- tmp = op->defaults_kwdict;
- op->defaults_kwdict = value;
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
- PyObject* result = op->defaults_kwdict;
- if (unlikely(!result)) {
- if (op->defaults_getter) {
- if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
- result = op->defaults_kwdict;
- } else {
- result = Py_None;
- }
- }
- Py_INCREF(result);
- return result;
-}
-static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
- PyObject* tmp;
- if (!value || value == Py_None) {
- value = NULL;
- } else if (!PyDict_Check(value)) {
- PyErr_SetString(PyExc_TypeError,
- "__annotations__ must be set to a dict object");
- return -1;
- }
- Py_XINCREF(value);
- tmp = op->func_annotations;
- op->func_annotations = value;
- Py_XDECREF(tmp);
- return 0;
-}
-static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
- PyObject* result = op->func_annotations;
- if (unlikely(!result)) {
- result = PyDict_New();
- if (unlikely(!result)) return NULL;
- op->func_annotations = result;
- }
- Py_INCREF(result);
- return result;
-}
-static PyGetSetDef __pyx_CyFunction_getsets[] = {
- {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
- {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
- {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
- {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
- {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
- {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
- {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
- {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
- {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
- {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
- {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
- {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
- {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
- {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
- {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
- {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
- {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
- {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
- {0, 0, 0, 0, 0}
-};
-#ifndef PY_WRITE_RESTRICTED /* < Py2.5 */
-#define PY_WRITE_RESTRICTED WRITE_RESTRICTED
-#endif
-static PyMemberDef __pyx_CyFunction_members[] = {
- {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0},
- {0, 0, 0, 0, 0}
-};
-static PyObject *
-__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
-{
-#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
-#else
- return PyString_FromString(m->func.m_ml->ml_name);
-#endif
-}
-static PyMethodDef __pyx_CyFunction_methods[] = {
- {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
- {0, 0, 0, 0}
-};
-static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,
- PyObject *closure, PyObject *module, PyObject* code) {
- __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);
- if (op == NULL)
- return NULL;
- op->flags = flags;
- op->func_weakreflist = NULL;
- op->func.m_ml = ml;
- op->func.m_self = (PyObject *) op;
- Py_XINCREF(closure);
- op->func_closure = closure;
- Py_XINCREF(module);
- op->func.m_module = module;
- op->func_dict = NULL;
- op->func_name = NULL;
- Py_INCREF(qualname);
- op->func_qualname = qualname;
- op->func_doc = NULL;
- op->func_classobj = NULL;
- Py_XINCREF(code);
- op->func_code = code;
- op->defaults_pyobjects = 0;
- op->defaults = NULL;
- op->defaults_tuple = NULL;
- op->defaults_kwdict = NULL;
- op->defaults_getter = NULL;
- op->func_annotations = NULL;
- PyObject_GC_Track(op);
- return (PyObject *) op;
-}
-static int
-__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
-{
- Py_CLEAR(m->func_closure);
- Py_CLEAR(m->func.m_module);
- Py_CLEAR(m->func_dict);
- Py_CLEAR(m->func_name);
- Py_CLEAR(m->func_qualname);
- Py_CLEAR(m->func_doc);
- Py_CLEAR(m->func_code);
- Py_CLEAR(m->func_classobj);
- Py_CLEAR(m->defaults_tuple);
- Py_CLEAR(m->defaults_kwdict);
- Py_CLEAR(m->func_annotations);
- if (m->defaults) {
- PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
- int i;
- for (i = 0; i < m->defaults_pyobjects; i++)
- Py_XDECREF(pydefaults[i]);
- PyMem_Free(m->defaults);
- m->defaults = NULL;
- }
- return 0;
-}
-static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
-{
- PyObject_GC_UnTrack(m);
- if (m->func_weakreflist != NULL)
- PyObject_ClearWeakRefs((PyObject *) m);
- __Pyx_CyFunction_clear(m);
- PyObject_GC_Del(m);
-}
-static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
-{
- Py_VISIT(m->func_closure);
- Py_VISIT(m->func.m_module);
- Py_VISIT(m->func_dict);
- Py_VISIT(m->func_name);
- Py_VISIT(m->func_qualname);
- Py_VISIT(m->func_doc);
- Py_VISIT(m->func_code);
- Py_VISIT(m->func_classobj);
- Py_VISIT(m->defaults_tuple);
- Py_VISIT(m->defaults_kwdict);
- if (m->defaults) {
- PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
- int i;
- for (i = 0; i < m->defaults_pyobjects; i++)
- Py_VISIT(pydefaults[i]);
- }
- return 0;
-}
-static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
-{
- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
- if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
- Py_INCREF(func);
- return func;
- }
- if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
- if (type == NULL)
- type = (PyObject *)(Py_TYPE(obj));
- return PyMethod_New(func,
- type, (PyObject *)(Py_TYPE(type)));
- }
- if (obj == Py_None)
- obj = NULL;
- return PyMethod_New(func, obj, type);
-}
-static PyObject*
-__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
-{
-#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromFormat("<cyfunction %U at %p>",
- op->func_qualname, (void *)op);
-#else
- return PyString_FromFormat("<cyfunction %s at %p>",
- PyString_AsString(op->func_qualname), (void *)op);
-#endif
-}
-#if CYTHON_COMPILING_IN_PYPY
-static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
- PyCFunctionObject* f = (PyCFunctionObject*)func;
- PyCFunction meth = PyCFunction_GET_FUNCTION(func);
- PyObject *self = PyCFunction_GET_SELF(func);
- Py_ssize_t size;
- switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) {
- case METH_VARARGS:
- if (likely(kw == NULL) || PyDict_Size(kw) == 0)
- return (*meth)(self, arg);
- break;
- case METH_VARARGS | METH_KEYWORDS:
- return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
- case METH_NOARGS:
- if (likely(kw == NULL) || PyDict_Size(kw) == 0) {
- size = PyTuple_GET_SIZE(arg);
- if (size == 0)
- return (*meth)(self, NULL);
- PyErr_Format(PyExc_TypeError,
- "%.200s() takes no arguments (%zd given)",
- f->m_ml->ml_name, size);
- return NULL;
- }
- break;
- case METH_O:
- if (likely(kw == NULL) || PyDict_Size(kw) == 0) {
- size = PyTuple_GET_SIZE(arg);
- if (size == 1)
- return (*meth)(self, PyTuple_GET_ITEM(arg, 0));
- PyErr_Format(PyExc_TypeError,
- "%.200s() takes exactly one argument (%zd given)",
- f->m_ml->ml_name, size);
- return NULL;
- }
- break;
- default:
- PyErr_SetString(PyExc_SystemError, "Bad call flags in "
- "__Pyx_CyFunction_Call. METH_OLDARGS is no "
- "longer supported!");
- return NULL;
- }
- PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
- f->m_ml->ml_name);
- return NULL;
-}
-#else
-static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
- return PyCFunction_Call(func, arg, kw);
-}
-#endif
-static PyTypeObject __pyx_CyFunctionType_type = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("cython_function_or_method"), /*tp_name*/
- sizeof(__pyx_CyFunctionObject), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor) __Pyx_CyFunction_dealloc, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
-#if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
-#else
- 0, /*reserved*/
-#endif
- (reprfunc) __Pyx_CyFunction_repr, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- __Pyx_CyFunction_Call, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/
- 0, /*tp_doc*/
- (traverseproc) __Pyx_CyFunction_traverse, /*tp_traverse*/
- (inquiry) __Pyx_CyFunction_clear, /*tp_clear*/
- 0, /*tp_richcompare*/
- offsetof(__pyx_CyFunctionObject, func_weakreflist), /* tp_weaklistoffse */
- 0, /*tp_iter*/
- 0, /*tp_iternext*/
- __pyx_CyFunction_methods, /*tp_methods*/
- __pyx_CyFunction_members, /*tp_members*/
- __pyx_CyFunction_getsets, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- __Pyx_CyFunction_descr_get, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- offsetof(__pyx_CyFunctionObject, func_dict),/*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- 0, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- 0, /*tp_del*/
-#if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
-#endif
-};
-static int __Pyx_CyFunction_init(void) {
-#if !CYTHON_COMPILING_IN_PYPY
- __pyx_CyFunctionType_type.tp_call = PyCFunction_Call;
-#endif
- if (PyType_Ready(&__pyx_CyFunctionType_type) < 0)
- return -1;
- __pyx_CyFunctionType = &__pyx_CyFunctionType_type;
- return 0;
-}
-static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
- m->defaults = PyMem_Malloc(size);
- if (!m->defaults)
- return PyErr_NoMemory();
- memset(m->defaults, 0, size);
- m->defaults_pyobjects = pyobjects;
- return m->defaults;
-}
-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
- m->defaults_tuple = tuple;
- Py_INCREF(tuple);
-}
-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
- m->defaults_kwdict = dict;
- Py_INCREF(dict);
-}
-static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
- m->func_annotations = dict;
- Py_INCREF(dict);
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Pop(PyObject* L) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02040000
- if (likely(PyList_CheckExact(L))
- && likely(PyList_GET_SIZE(L) > (((PyListObject*)L)->allocated >> 1))) {
- Py_SIZE(L) -= 1;
- return PyList_GET_ITEM(L, PyList_GET_SIZE(L));
- }
-#if PY_VERSION_HEX >= 0x02050000
- else if (Py_TYPE(L) == (&PySet_Type)) {
- return PySet_Pop(L);
- }
-#endif
-#endif
- return __Pyx_PyObject_CallMethod0(L, __pyx_n_s__pop);
-}
-
-static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
- PyObject *ob = PyCapsule_New(vtable, 0, 0);
-#else
- PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
-#endif
- if (!ob)
- goto bad;
- if (PyDict_SetItem(dict, __pyx_n_s____pyx_vtable__, ob) < 0)
- goto bad;
- Py_DECREF(ob);
- return 0;
-bad:
- Py_XDECREF(ob);
- return -1;
-}
-
-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
- PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
- if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_Format(PyExc_ImportError,
- #if PY_MAJOR_VERSION < 3
- "cannot import name %.230s", PyString_AS_STRING(name));
- #else
- "cannot import name %S", name);
- #endif
- }
- return value;
-}
-
-static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
- PyThreadState *tstate = PyThreadState_GET();
- *type = tstate->exc_type;
- *value = tstate->exc_value;
- *tb = tstate->exc_traceback;
- Py_XINCREF(*type);
- Py_XINCREF(*value);
- Py_XINCREF(*tb);
-#else
- PyErr_GetExcInfo(type, value, tb);
-#endif
-}
-static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- PyThreadState *tstate = PyThreadState_GET();
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = type;
- tstate->exc_value = value;
- tstate->exc_traceback = tb;
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
-#else
- PyErr_SetExcInfo(type, value, tb);
-#endif
-}
-
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
- PyObject *empty_list = 0;
- PyObject *module = 0;
- PyObject *global_dict = 0;
- PyObject *empty_dict = 0;
- PyObject *list;
- #if PY_VERSION_HEX < 0x03030000
- PyObject *py_import;
- py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s____import__);
- if (!py_import)
- goto bad;
- #endif
- if (from_list)
- list = from_list;
- else {
- empty_list = PyList_New(0);
- if (!empty_list)
- goto bad;
- list = empty_list;
- }
- global_dict = PyModule_GetDict(__pyx_m);
- if (!global_dict)
- goto bad;
- empty_dict = PyDict_New();
- if (!empty_dict)
- goto bad;
- #if PY_VERSION_HEX >= 0x02050000
- {
- #if PY_MAJOR_VERSION >= 3
- if (level == -1) {
- if (strchr(__Pyx_MODULE_NAME, '.')) {
- #if PY_VERSION_HEX < 0x03030000
- PyObject *py_level = PyInt_FromLong(1);
- if (!py_level)
- goto bad;
- module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
- Py_DECREF(py_level);
- #else
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, 1);
- #endif
- if (!module) {
- if (!PyErr_ExceptionMatches(PyExc_ImportError))
- goto bad;
- PyErr_Clear();
- }
- }
- level = 0; /* try absolute import on failure */
- }
- #endif
- if (!module) {
- #if PY_VERSION_HEX < 0x03030000
- PyObject *py_level = PyInt_FromLong(level);
- if (!py_level)
- goto bad;
- module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
- Py_DECREF(py_level);
- #else
- module = PyImport_ImportModuleLevelObject(
- name, global_dict, empty_dict, list, level);
- #endif
- }
- }
- #else
- if (level>0) {
- PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
- goto bad;
- }
- module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, NULL);
- #endif
-bad:
- #if PY_VERSION_HEX < 0x03030000
- Py_XDECREF(py_import);
- #endif
- Py_XDECREF(empty_list);
- Py_XDECREF(empty_dict);
- return module;
-}
-
-static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
- const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(unsigned char) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(unsigned char)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to unsigned char" :
- "value too large to convert to unsigned char");
- }
- return (unsigned char)-1;
- }
- return (unsigned char)val;
- }
- return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
-}
-
-static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
- const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(unsigned short) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(unsigned short)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to unsigned short" :
- "value too large to convert to unsigned short");
- }
- return (unsigned short)-1;
- }
- return (unsigned short)val;
- }
- return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
-}
-
-static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
- const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(unsigned int) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(unsigned int)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to unsigned int" :
- "value too large to convert to unsigned int");
- }
- return (unsigned int)-1;
- }
- return (unsigned int)val;
- }
- return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
-}
-
-static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
- const char neg_one = (char)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(char) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(char)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to char" :
- "value too large to convert to char");
- }
- return (char)-1;
- }
- return (char)val;
- }
- return (char)__Pyx_PyInt_AsLong(x);
-}
-
-static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
- const short neg_one = (short)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(short) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(short)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to short" :
- "value too large to convert to short");
- }
- return (short)-1;
- }
- return (short)val;
- }
- return (short)__Pyx_PyInt_AsLong(x);
-}
-
-static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
- const int neg_one = (int)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(int) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(int)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to int" :
- "value too large to convert to int");
- }
- return (int)-1;
- }
- return (int)val;
- }
- return (int)__Pyx_PyInt_AsLong(x);
-}
-
-static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
- const signed char neg_one = (signed char)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(signed char) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(signed char)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to signed char" :
- "value too large to convert to signed char");
- }
- return (signed char)-1;
- }
- return (signed char)val;
- }
- return (signed char)__Pyx_PyInt_AsSignedLong(x);
-}
-
-static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
- const signed short neg_one = (signed short)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(signed short) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(signed short)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to signed short" :
- "value too large to convert to signed short");
- }
- return (signed short)-1;
- }
- return (signed short)val;
- }
- return (signed short)__Pyx_PyInt_AsSignedLong(x);
-}
-
-static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
- const signed int neg_one = (signed int)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(signed int) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(signed int)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to signed int" :
- "value too large to convert to signed int");
- }
- return (signed int)-1;
- }
- return (signed int)val;
- }
- return (signed int)__Pyx_PyInt_AsSignedLong(x);
-}
-
-static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
- const int neg_one = (int)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
- if (sizeof(int) < sizeof(long)) {
- long val = __Pyx_PyInt_AsLong(x);
- if (unlikely(val != (long)(int)val)) {
- if (!unlikely(val == -1 && PyErr_Occurred())) {
- PyErr_SetString(PyExc_OverflowError,
- (is_unsigned && unlikely(val < 0)) ?
- "can't convert negative value to int" :
- "value too large to convert to int");
- }
- return (int)-1;
- }
- return (int)val;
- }
- return (int)__Pyx_PyInt_AsLong(x);
-}
-
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
-#include "longintrepr.h"
-#endif
-#endif
-static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
- const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to unsigned long");
- return (unsigned long)-1;
- }
- return (unsigned long)val;
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(unsigned long)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return (unsigned long) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- if (unlikely(Py_SIZE(x) < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to unsigned long");
- return (unsigned long)-1;
- }
- return (unsigned long)PyLong_AsUnsignedLong(x);
- } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(unsigned long)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return +(unsigned long) ((PyLongObject*)x)->ob_digit[0];
- case -1: return -(unsigned long) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- return (unsigned long)PyLong_AsLong(x);
- }
- } else {
- unsigned long val;
- PyObject *tmp = __Pyx_PyNumber_Int(x);
- if (!tmp) return (unsigned long)-1;
- val = __Pyx_PyInt_AsUnsignedLong(tmp);
- Py_DECREF(tmp);
- return val;
- }
-}
-
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
-#include "longintrepr.h"
-#endif
-#endif
-static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
- const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to unsigned PY_LONG_LONG");
- return (unsigned PY_LONG_LONG)-1;
- }
- return (unsigned PY_LONG_LONG)val;
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return (unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- if (unlikely(Py_SIZE(x) < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to unsigned PY_LONG_LONG");
- return (unsigned PY_LONG_LONG)-1;
- }
- return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
- } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return +(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- case -1: return -(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
- }
- } else {
- unsigned PY_LONG_LONG val;
- PyObject *tmp = __Pyx_PyNumber_Int(x);
- if (!tmp) return (unsigned PY_LONG_LONG)-1;
- val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
- Py_DECREF(tmp);
- return val;
- }
-}
-
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
-#include "longintrepr.h"
-#endif
-#endif
-static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
- const long neg_one = (long)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to long");
- return (long)-1;
- }
- return (long)val;
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(long)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return (long) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- if (unlikely(Py_SIZE(x) < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to long");
- return (long)-1;
- }
- return (long)PyLong_AsUnsignedLong(x);
- } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(long)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return +(long) ((PyLongObject*)x)->ob_digit[0];
- case -1: return -(long) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- return (long)PyLong_AsLong(x);
- }
- } else {
- long val;
- PyObject *tmp = __Pyx_PyNumber_Int(x);
- if (!tmp) return (long)-1;
- val = __Pyx_PyInt_AsLong(tmp);
- Py_DECREF(tmp);
- return val;
- }
-}
-
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
-#include "longintrepr.h"
-#endif
-#endif
-static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
- const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to PY_LONG_LONG");
- return (PY_LONG_LONG)-1;
- }
- return (PY_LONG_LONG)val;
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(PY_LONG_LONG)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return (PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- if (unlikely(Py_SIZE(x) < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to PY_LONG_LONG");
- return (PY_LONG_LONG)-1;
- }
- return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
- } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(PY_LONG_LONG)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return +(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- case -1: return -(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- return (PY_LONG_LONG)PyLong_AsLongLong(x);
- }
- } else {
- PY_LONG_LONG val;
- PyObject *tmp = __Pyx_PyNumber_Int(x);
- if (!tmp) return (PY_LONG_LONG)-1;
- val = __Pyx_PyInt_AsLongLong(tmp);
- Py_DECREF(tmp);
- return val;
- }
-}
-
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
-#include "longintrepr.h"
-#endif
-#endif
-static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
- const signed long neg_one = (signed long)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to signed long");
- return (signed long)-1;
- }
- return (signed long)val;
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(signed long)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return (signed long) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- if (unlikely(Py_SIZE(x) < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to signed long");
- return (signed long)-1;
- }
- return (signed long)PyLong_AsUnsignedLong(x);
- } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(signed long)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return +(signed long) ((PyLongObject*)x)->ob_digit[0];
- case -1: return -(signed long) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- return (signed long)PyLong_AsLong(x);
- }
- } else {
- signed long val;
- PyObject *tmp = __Pyx_PyNumber_Int(x);
- if (!tmp) return (signed long)-1;
- val = __Pyx_PyInt_AsSignedLong(tmp);
- Py_DECREF(tmp);
- return val;
- }
-}
-
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
-#include "longintrepr.h"
-#endif
-#endif
-static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
- const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
- const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
- if (likely(PyInt_Check(x))) {
- long val = PyInt_AS_LONG(x);
- if (is_unsigned && unlikely(val < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to signed PY_LONG_LONG");
- return (signed PY_LONG_LONG)-1;
- }
- return (signed PY_LONG_LONG)val;
- } else
-#endif
- if (likely(PyLong_Check(x))) {
- if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return (signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- if (unlikely(Py_SIZE(x) < 0)) {
- PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to signed PY_LONG_LONG");
- return (signed PY_LONG_LONG)-1;
- }
- return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
- } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-#if CYTHON_USE_PYLONG_INTERNALS
- if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) {
- switch (Py_SIZE(x)) {
- case 0: return 0;
- case 1: return +(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- case -1: return -(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0];
- }
- }
-#endif
-#endif
- return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
- }
- } else {
- signed PY_LONG_LONG val;
- PyObject *tmp = __Pyx_PyNumber_Int(x);
- if (!tmp) return (signed PY_LONG_LONG)-1;
- val = __Pyx_PyInt_AsSignedLongLong(tmp);
- Py_DECREF(tmp);
- return val;
- }
-}
-
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
- PyObject *tmp_type, *tmp_value, *tmp_tb;
-#if CYTHON_COMPILING_IN_CPYTHON
- PyThreadState *tstate = PyThreadState_GET();
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = *type;
- tstate->exc_value = *value;
- tstate->exc_traceback = *tb;
-#else
- PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
- PyErr_SetExcInfo(*type, *value, *tb);
-#endif
- *type = tmp_type;
- *value = tmp_value;
- *tb = tmp_tb;
-}
-
-static PyObject *__Pyx_Generator_Next(PyObject *self);
-static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value);
-static PyObject *__Pyx_Generator_Close(PyObject *self);
-static PyObject *__Pyx_Generator_Throw(PyObject *gen, PyObject *args);
-static PyTypeObject *__pyx_GeneratorType = 0;
-#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
-#define __Pyx_Generator_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
-#if 1 || PY_VERSION_HEX < 0x030300B0
-static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) {
- PyObject *et, *ev, *tb;
- PyObject *value = NULL;
- __Pyx_ErrFetch(&et, &ev, &tb);
- if (!et) {
- Py_XDECREF(tb);
- Py_XDECREF(ev);
- Py_INCREF(Py_None);
- *pvalue = Py_None;
- return 0;
- }
- if (unlikely(et != PyExc_StopIteration) &&
- unlikely(!PyErr_GivenExceptionMatches(et, PyExc_StopIteration))) {
- __Pyx_ErrRestore(et, ev, tb);
- return -1;
- }
- if (likely(et == PyExc_StopIteration)) {
- if (likely(!ev) || !PyObject_IsInstance(ev, PyExc_StopIteration)) {
- if (!ev) {
- Py_INCREF(Py_None);
- ev = Py_None;
- }
- Py_XDECREF(tb);
- Py_DECREF(et);
- *pvalue = ev;
- return 0;
- }
- }
- PyErr_NormalizeException(&et, &ev, &tb);
- if (unlikely(!PyObject_IsInstance(ev, PyExc_StopIteration))) {
- __Pyx_ErrRestore(et, ev, tb);
- return -1;
- }
- Py_XDECREF(tb);
- Py_DECREF(et);
-#if PY_VERSION_HEX >= 0x030300A0
- value = ((PyStopIterationObject *)ev)->value;
- Py_INCREF(value);
- Py_DECREF(ev);
-#else
- {
- PyObject* args = PyObject_GetAttr(ev, __pyx_n_s__args);
- Py_DECREF(ev);
- if (likely(args)) {
- value = PyObject_GetItem(args, 0);
- Py_DECREF(args);
- }
- if (unlikely(!value)) {
- __Pyx_ErrRestore(NULL, NULL, NULL);
- Py_INCREF(Py_None);
- value = Py_None;
- }
- }
-#endif
- *pvalue = value;
- return 0;
-}
-#endif
-static CYTHON_INLINE
-void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) {
- PyObject *exc_type = self->exc_type;
- PyObject *exc_value = self->exc_value;
- PyObject *exc_traceback = self->exc_traceback;
- self->exc_type = NULL;
- self->exc_value = NULL;
- self->exc_traceback = NULL;
- Py_XDECREF(exc_type);
- Py_XDECREF(exc_value);
- Py_XDECREF(exc_traceback);
-}
-static CYTHON_INLINE
-int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) {
- if (unlikely(gen->is_running)) {
- PyErr_SetString(PyExc_ValueError,
- "generator already executing");
- return 1;
- }
- return 0;
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) {
- PyObject *retval;
- assert(!self->is_running);
- if (unlikely(self->resume_label == 0)) {
- if (unlikely(value && value != Py_None)) {
- PyErr_SetString(PyExc_TypeError,
- "can't send non-None value to a "
- "just-started generator");
- return NULL;
- }
- }
- if (unlikely(self->resume_label == -1)) {
- PyErr_SetNone(PyExc_StopIteration);
- return NULL;
- }
- if (value) {
-#if CYTHON_COMPILING_IN_PYPY
-#else
- /* Generators always return to their most recent caller, not
- * necessarily their creator. */
- if (self->exc_traceback) {
- PyThreadState *tstate = PyThreadState_GET();
- PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
- PyFrameObject *f = tb->tb_frame;
- Py_XINCREF(tstate->frame);
- assert(f->f_back == NULL);
- f->f_back = tstate->frame;
- }
-#endif
- __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
- &self->exc_traceback);
- } else {
- __Pyx_Generator_ExceptionClear(self);
- }
- self->is_running = 1;
- retval = self->body((PyObject *) self, value);
- self->is_running = 0;
- if (retval) {
- __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
- &self->exc_traceback);
-#if CYTHON_COMPILING_IN_PYPY
-#else
- /* Don't keep the reference to f_back any longer than necessary. It
- * may keep a chain of frames alive or it could create a reference
- * cycle. */
- if (self->exc_traceback) {
- PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
- PyFrameObject *f = tb->tb_frame;
- Py_CLEAR(f->f_back);
- }
-#endif
- } else {
- __Pyx_Generator_ExceptionClear(self);
- }
- return retval;
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Generator_FinishDelegation(__pyx_GeneratorObject *gen) {
- PyObject *ret;
- PyObject *val = NULL;
- __Pyx_Generator_Undelegate(gen);
- __Pyx_PyGen_FetchStopIterationValue(&val);
- ret = __Pyx_Generator_SendEx(gen, val);
- Py_XDECREF(val);
- return ret;
-}
-static PyObject *__Pyx_Generator_Next(PyObject *self) {
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
- PyObject *yf = gen->yieldfrom;
- if (unlikely(__Pyx_Generator_CheckRunning(gen)))
- return NULL;
- if (yf) {
- PyObject *ret;
- gen->is_running = 1;
- ret = Py_TYPE(yf)->tp_iternext(yf);
- gen->is_running = 0;
- if (likely(ret)) {
- return ret;
- }
- return __Pyx_Generator_FinishDelegation(gen);
- }
- return __Pyx_Generator_SendEx(gen, Py_None);
-}
-static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) {
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
- PyObject *yf = gen->yieldfrom;
- if (unlikely(__Pyx_Generator_CheckRunning(gen)))
- return NULL;
- if (yf) {
- PyObject *ret;
- gen->is_running = 1;
- if (__Pyx_Generator_CheckExact(yf)) {
- ret = __Pyx_Generator_Send(yf, value);
- } else {
- if (value == Py_None)
- ret = PyIter_Next(yf);
- else
- ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s__send, value);
- }
- gen->is_running = 0;
- if (likely(ret)) {
- return ret;
- }
- return __Pyx_Generator_FinishDelegation(gen);
- }
- return __Pyx_Generator_SendEx(gen, value);
-}
-static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) {
- PyObject *retval = NULL;
- int err = 0;
- if (__Pyx_Generator_CheckExact(yf)) {
- retval = __Pyx_Generator_Close(yf);
- if (!retval)
- return -1;
- } else {
- PyObject *meth;
- gen->is_running = 1;
- meth = PyObject_GetAttr(yf, __pyx_n_s__close);
- if (unlikely(!meth)) {
- if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_WriteUnraisable(yf);
- }
- PyErr_Clear();
- } else {
- retval = PyObject_CallFunction(meth, NULL);
- Py_DECREF(meth);
- if (!retval)
- err = -1;
- }
- gen->is_running = 0;
- }
- Py_XDECREF(retval);
- return err;
-}
-static PyObject *__Pyx_Generator_Close(PyObject *self) {
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
- PyObject *retval, *raised_exception;
- PyObject *yf = gen->yieldfrom;
- int err = 0;
- if (unlikely(__Pyx_Generator_CheckRunning(gen)))
- return NULL;
- if (yf) {
- Py_INCREF(yf);
- err = __Pyx_Generator_CloseIter(gen, yf);
- __Pyx_Generator_Undelegate(gen);
- Py_DECREF(yf);
- }
- if (err == 0)
-#if PY_VERSION_HEX < 0x02050000
- PyErr_SetNone(PyExc_StopIteration);
-#else
- PyErr_SetNone(PyExc_GeneratorExit);
-#endif
- retval = __Pyx_Generator_SendEx(gen, NULL);
- if (retval) {
- Py_DECREF(retval);
- PyErr_SetString(PyExc_RuntimeError,
- "generator ignored GeneratorExit");
- return NULL;
- }
- raised_exception = PyErr_Occurred();
- if (!raised_exception
- || raised_exception == PyExc_StopIteration
-#if PY_VERSION_HEX >= 0x02050000
- || raised_exception == PyExc_GeneratorExit
- || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit)
-#endif
- || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration))
- {
- if (raised_exception) PyErr_Clear(); /* ignore these errors */
- Py_INCREF(Py_None);
- return Py_None;
- }
- return NULL;
-}
-static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) {
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
- PyObject *typ;
- PyObject *tb = NULL;
- PyObject *val = NULL;
- PyObject *yf = gen->yieldfrom;
- if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
- return NULL;
- if (unlikely(__Pyx_Generator_CheckRunning(gen)))
- return NULL;
- if (yf) {
- PyObject *ret;
- Py_INCREF(yf);
-#if PY_VERSION_HEX >= 0x02050000
- if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) {
- int err = __Pyx_Generator_CloseIter(gen, yf);
- Py_DECREF(yf);
- __Pyx_Generator_Undelegate(gen);
- if (err < 0)
- return __Pyx_Generator_SendEx(gen, NULL);
- goto throw_here;
- }
-#endif
- gen->is_running = 1;
- if (__Pyx_Generator_CheckExact(yf)) {
- ret = __Pyx_Generator_Throw(yf, args);
- } else {
- PyObject *meth = PyObject_GetAttr(yf, __pyx_n_s__throw);
- if (unlikely(!meth)) {
- Py_DECREF(yf);
- if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
- gen->is_running = 0;
- return NULL;
- }
- PyErr_Clear();
- __Pyx_Generator_Undelegate(gen);
- gen->is_running = 0;
- goto throw_here;
- }
- ret = PyObject_CallObject(meth, args);
- Py_DECREF(meth);
- }
- gen->is_running = 0;
- Py_DECREF(yf);
- if (!ret) {
- ret = __Pyx_Generator_FinishDelegation(gen);
- }
- return ret;
- }
-throw_here:
- __Pyx_Raise(typ, val, tb, NULL);
- return __Pyx_Generator_SendEx(gen, NULL);
-}
-static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) {
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
- Py_VISIT(gen->closure);
- Py_VISIT(gen->classobj);
- Py_VISIT(gen->yieldfrom);
- Py_VISIT(gen->exc_type);
- Py_VISIT(gen->exc_value);
- Py_VISIT(gen->exc_traceback);
- return 0;
-}
-static int __Pyx_Generator_clear(PyObject *self) {
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
- Py_CLEAR(gen->closure);
- Py_CLEAR(gen->classobj);
- Py_CLEAR(gen->yieldfrom);
- Py_CLEAR(gen->exc_type);
- Py_CLEAR(gen->exc_value);
- Py_CLEAR(gen->exc_traceback);
- return 0;
-}
-static void __Pyx_Generator_dealloc(PyObject *self) {
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
- PyObject_GC_UnTrack(gen);
- if (gen->gi_weakreflist != NULL)
- PyObject_ClearWeakRefs(self);
- PyObject_GC_Track(self);
- if (gen->resume_label > 0) {
- Py_TYPE(gen)->tp_del(self);
- if (self->ob_refcnt > 0)
- return; /* resurrected. :( */
- }
- PyObject_GC_UnTrack(self);
- __Pyx_Generator_clear(self);
- PyObject_GC_Del(gen);
-}
-static void __Pyx_Generator_del(PyObject *self) {
- PyObject *res;
- PyObject *error_type, *error_value, *error_traceback;
- __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
- if (gen->resume_label <= 0)
- return ;
- assert(self->ob_refcnt == 0);
- self->ob_refcnt = 1;
- __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
- res = __Pyx_Generator_Close(self);
- if (res == NULL)
- PyErr_WriteUnraisable(self);
- else
- Py_DECREF(res);
- __Pyx_ErrRestore(error_type, error_value, error_traceback);
- /* Undo the temporary resurrection; can't use DECREF here, it would
- * cause a recursive call.
- */
- assert(self->ob_refcnt > 0);
- if (--self->ob_refcnt == 0)
- return; /* this is the normal path out */
- /* close() resurrected it! Make it look like the original Py_DECREF
- * never happened.
- */
- {
- Py_ssize_t refcnt = self->ob_refcnt;
- _Py_NewReference(self);
- self->ob_refcnt = refcnt;
- }
-#if CYTHON_COMPILING_IN_CPYTHON
- assert(PyType_IS_GC(self->ob_type) &&
- _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
- /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so
- * we need to undo that. */
- _Py_DEC_REFTOTAL;
-#endif
- /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object
- * chain, so no more to do there.
- * If COUNT_ALLOCS, the original decref bumped tp_frees, and
- * _Py_NewReference bumped tp_allocs: both of those need to be
- * undone.
- */
-#ifdef COUNT_ALLOCS
- --Py_TYPE(self)->tp_frees;
- --Py_TYPE(self)->tp_allocs;
-#endif
-}
-static PyMemberDef __pyx_Generator_memberlist[] = {
- {(char *) "gi_running",
-#if PY_VERSION_HEX >= 0x02060000
- T_BOOL,
-#else
- T_BYTE,
-#endif
- offsetof(__pyx_GeneratorObject, is_running),
- READONLY,
- NULL},
- {0, 0, 0, 0, 0}
-};
-static PyMethodDef __pyx_Generator_methods[] = {
- {__Pyx_NAMESTR("send"), (PyCFunction) __Pyx_Generator_Send, METH_O, 0},
- {__Pyx_NAMESTR("throw"), (PyCFunction) __Pyx_Generator_Throw, METH_VARARGS, 0},
- {__Pyx_NAMESTR("close"), (PyCFunction) __Pyx_Generator_Close, METH_NOARGS, 0},
- {0, 0, 0, 0}
-};
-static PyTypeObject __pyx_GeneratorType_type = {
- PyVarObject_HEAD_INIT(0, 0)
- __Pyx_NAMESTR("generator"), /*tp_name*/
- sizeof(__pyx_GeneratorObject), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor) __Pyx_Generator_dealloc,/*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
-#if PY_MAJOR_VERSION < 3
- 0, /*tp_compare*/
-#else
- 0, /*reserved*/
-#endif
- 0, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/
- 0, /*tp_doc*/
- (traverseproc) __Pyx_Generator_traverse, /*tp_traverse*/
- 0, /*tp_clear*/
- 0, /*tp_richcompare*/
- offsetof(__pyx_GeneratorObject, gi_weakreflist), /* tp_weaklistoffse */
- 0, /*tp_iter*/
- (iternextfunc) __Pyx_Generator_Next, /*tp_iternext*/
- __pyx_Generator_methods, /*tp_methods*/
- __pyx_Generator_memberlist, /*tp_members*/
- 0, /*tp_getset*/
- 0, /*tp_base*/
- 0, /*tp_dict*/
- 0, /*tp_descr_get*/
- 0, /*tp_descr_set*/
- 0, /*tp_dictoffset*/
- 0, /*tp_init*/
- 0, /*tp_alloc*/
- 0, /*tp_new*/
- 0, /*tp_free*/
- 0, /*tp_is_gc*/
- 0, /*tp_bases*/
- 0, /*tp_mro*/
- 0, /*tp_cache*/
- 0, /*tp_subclasses*/
- 0, /*tp_weaklist*/
- __Pyx_Generator_del, /*tp_del*/
-#if PY_VERSION_HEX >= 0x02060000
- 0, /*tp_version_tag*/
-#endif
-};
-static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
- PyObject *closure) {
- __pyx_GeneratorObject *gen =
- PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType_type);
- if (gen == NULL)
- return NULL;
- gen->body = body;
- gen->closure = closure;
- Py_XINCREF(closure);
- gen->is_running = 0;
- gen->resume_label = 0;
- gen->classobj = NULL;
- gen->yieldfrom = NULL;
- gen->exc_type = NULL;
- gen->exc_value = NULL;
- gen->exc_traceback = NULL;
- gen->gi_weakreflist = NULL;
- PyObject_GC_Track(gen);
- return gen;
-}
-static int __pyx_Generator_init(void) {
- __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr;
- __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
- if (PyType_Ready(&__pyx_GeneratorType_type)) {
- return -1;
- }
- __pyx_GeneratorType = &__pyx_GeneratorType_type;
- return 0;
-}
-
-static int __Pyx_check_binary_version(void) {
- char ctversion[4], rtversion[4];
- PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
- PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
- if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
- char message[200];
- PyOS_snprintf(message, sizeof(message),
- "compiletime version %s of module '%.100s' "
- "does not match runtime version %s",
- ctversion, __Pyx_MODULE_NAME, rtversion);
- #if PY_VERSION_HEX < 0x02050000
- return PyErr_Warn(NULL, message);
- #else
- return PyErr_WarnEx(NULL, message, 1);
- #endif
- }
- return 0;
-}
-
-static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
- PyObject *d = 0;
- PyObject *cobj = 0;
- union {
- void (*fp)(void);
- void *p;
- } tmp;
- d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
- if (!d) {
- PyErr_Clear();
- d = PyDict_New();
- if (!d)
- goto bad;
- Py_INCREF(d);
- if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
- goto bad;
- }
- tmp.fp = f;
-#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
- cobj = PyCapsule_New(tmp.p, sig, 0);
-#else
- cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
-#endif
- if (!cobj)
- goto bad;
- if (PyDict_SetItemString(d, name, cobj) < 0)
- goto bad;
- Py_DECREF(cobj);
- Py_DECREF(d);
- return 0;
-bad:
- Py_XDECREF(cobj);
- Py_XDECREF(d);
- return -1;
-}
-
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
- int start = 0, mid = 0, end = count - 1;
- if (end >= 0 && code_line > entries[end].code_line) {
- return count;
- }
- while (start < end) {
- mid = (start + end) / 2;
- if (code_line < entries[mid].code_line) {
- end = mid;
- } else if (code_line > entries[mid].code_line) {
- start = mid + 1;
- } else {
- return mid;
- }
- }
- if (code_line <= entries[mid].code_line) {
- return mid;
- } else {
- return mid + 1;
- }
-}
-static PyCodeObject *__pyx_find_code_object(int code_line) {
- PyCodeObject* code_object;
- int pos;
- if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
- return NULL;
- }
- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
- if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
- return NULL;
- }
- code_object = __pyx_code_cache.entries[pos].code_object;
- Py_INCREF(code_object);
- return code_object;
-}
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
- int pos, i;
- __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
- if (unlikely(!code_line)) {
- return;
- }
- if (unlikely(!entries)) {
- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
- if (likely(entries)) {
- __pyx_code_cache.entries = entries;
- __pyx_code_cache.max_count = 64;
- __pyx_code_cache.count = 1;
- entries[0].code_line = code_line;
- entries[0].code_object = code_object;
- Py_INCREF(code_object);
- }
- return;
- }
- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
- if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
- PyCodeObject* tmp = entries[pos].code_object;
- entries[pos].code_object = code_object;
- Py_DECREF(tmp);
- return;
- }
- if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
- int new_max = __pyx_code_cache.max_count + 64;
- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
- __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
- if (unlikely(!entries)) {
- return;
- }
- __pyx_code_cache.entries = entries;
- __pyx_code_cache.max_count = new_max;
- }
- for (i=__pyx_code_cache.count; i>pos; i--) {
- entries[i] = entries[i-1];
- }
- entries[pos].code_line = code_line;
- entries[pos].code_object = code_object;
- __pyx_code_cache.count++;
- Py_INCREF(code_object);
-}
-
-#include "compile.h"
-#include "frameobject.h"
-#include "traceback.h"
-static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
- const char *funcname, int c_line,
- int py_line, const char *filename) {
- PyCodeObject *py_code = 0;
- PyObject *py_srcfile = 0;
- PyObject *py_funcname = 0;
- #if PY_MAJOR_VERSION < 3
- py_srcfile = PyString_FromString(filename);
- #else
- py_srcfile = PyUnicode_FromString(filename);
- #endif
- if (!py_srcfile) goto bad;
- if (c_line) {
- #if PY_MAJOR_VERSION < 3
- py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
- #else
- py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
- #endif
- }
- else {
- #if PY_MAJOR_VERSION < 3
- py_funcname = PyString_FromString(funcname);
- #else
- py_funcname = PyUnicode_FromString(funcname);
- #endif
- }
- if (!py_funcname) goto bad;
- py_code = __Pyx_PyCode_New(
- 0, /*int argcount,*/
- 0, /*int kwonlyargcount,*/
- 0, /*int nlocals,*/
- 0, /*int stacksize,*/
- 0, /*int flags,*/
- __pyx_empty_bytes, /*PyObject *code,*/
- __pyx_empty_tuple, /*PyObject *consts,*/
- __pyx_empty_tuple, /*PyObject *names,*/
- __pyx_empty_tuple, /*PyObject *varnames,*/
- __pyx_empty_tuple, /*PyObject *freevars,*/
- __pyx_empty_tuple, /*PyObject *cellvars,*/
- py_srcfile, /*PyObject *filename,*/
- py_funcname, /*PyObject *name,*/
- py_line, /*int firstlineno,*/
- __pyx_empty_bytes /*PyObject *lnotab*/
- );
- Py_DECREF(py_srcfile);
- Py_DECREF(py_funcname);
- return py_code;
-bad:
- Py_XDECREF(py_srcfile);
- Py_XDECREF(py_funcname);
- return NULL;
-}
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
- int py_line, const char *filename) {
- PyCodeObject *py_code = 0;
- PyObject *py_globals = 0;
- PyFrameObject *py_frame = 0;
- py_code = __pyx_find_code_object(c_line ? c_line : py_line);
- if (!py_code) {
- py_code = __Pyx_CreateCodeObjectForTraceback(
- funcname, c_line, py_line, filename);
- if (!py_code) goto bad;
- __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
- }
- py_globals = PyModule_GetDict(__pyx_m);
- if (!py_globals) goto bad;
- py_frame = PyFrame_New(
- PyThreadState_GET(), /*PyThreadState *tstate,*/
- py_code, /*PyCodeObject *code,*/
- py_globals, /*PyObject *globals,*/
- 0 /*PyObject *locals*/
- );
- if (!py_frame) goto bad;
- py_frame->f_lineno = py_line;
- PyTraceBack_Here(py_frame);
-bad:
- Py_XDECREF(py_code);
- Py_XDECREF(py_frame);
-}
-
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
- while (t->p) {
- #if PY_MAJOR_VERSION < 3
- if (t->is_unicode) {
- *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
- } else if (t->intern) {
- *t->p = PyString_InternFromString(t->s);
- } else {
- *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
- }
- #else /* Python 3+ has unicode identifiers */
- if (t->is_unicode | t->is_str) {
- if (t->intern) {
- *t->p = PyUnicode_InternFromString(t->s);
- } else if (t->encoding) {
- *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
- } else {
- *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
- }
- } else {
- *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
- }
- #endif
- if (!*t->p)
- return -1;
- ++t;
- }
- return 0;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) {
- return __Pyx_PyUnicode_FromStringAndSize(c_str, strlen(c_str));
-}
-static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
- Py_ssize_t ignore;
- return __Pyx_PyObject_AsStringAndSize(o, &ignore);
-}
-static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
- if (
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- __Pyx_sys_getdefaultencoding_not_ascii &&
-#endif
- PyUnicode_Check(o)) {
-#if PY_VERSION_HEX < 0x03030000
- char* defenc_c;
- PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
- if (!defenc) return NULL;
- defenc_c = PyBytes_AS_STRING(defenc);
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- {
- char* end = defenc_c + PyBytes_GET_SIZE(defenc);
- char* c;
- for (c = defenc_c; c < end; c++) {
- if ((unsigned char) (*c) >= 128) {
- PyUnicode_AsASCIIString(o);
- return NULL;
- }
- }
- }
-#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/
- *length = PyBytes_GET_SIZE(defenc);
- return defenc_c;
-#else /* PY_VERSION_HEX < 0x03030000 */
- if (PyUnicode_READY(o) == -1) return NULL;
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
- if (PyUnicode_IS_ASCII(o)) {
- *length = PyUnicode_GET_DATA_SIZE(o);
- return PyUnicode_AsUTF8(o);
- } else {
- PyUnicode_AsASCIIString(o);
- return NULL;
- }
-#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */
- return PyUnicode_AsUTF8AndSize(o, length);
-#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */
-#endif /* PY_VERSION_HEX < 0x03030000 */
- } else
-#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */
- {
- char* result;
- int r = PyBytes_AsStringAndSize(o, &result, length);
- if (r < 0) {
- return NULL;
- } else {
- return result;
- }
- }
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
- int is_true = x == Py_True;
- if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
- else return PyObject_IsTrue(x);
-}
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
- PyNumberMethods *m;
- const char *name = NULL;
- PyObject *res = NULL;
-#if PY_MAJOR_VERSION < 3
- if (PyInt_Check(x) || PyLong_Check(x))
-#else
- if (PyLong_Check(x))
-#endif
- return Py_INCREF(x), x;
- m = Py_TYPE(x)->tp_as_number;
-#if PY_MAJOR_VERSION < 3
- if (m && m->nb_int) {
- name = "int";
- res = PyNumber_Int(x);
- }
- else if (m && m->nb_long) {
- name = "long";
- res = PyNumber_Long(x);
- }
-#else
- if (m && m->nb_int) {
- name = "int";
- res = PyNumber_Long(x);
- }
-#endif
- if (res) {
-#if PY_MAJOR_VERSION < 3
- if (!PyInt_Check(res) && !PyLong_Check(res)) {
-#else
- if (!PyLong_Check(res)) {
-#endif
- PyErr_Format(PyExc_TypeError,
- "__%s__ returned non-%s (type %.200s)",
- name, name, Py_TYPE(res)->tp_name);
- Py_DECREF(res);
- return NULL;
- }
- }
- else if (!PyErr_Occurred()) {
- PyErr_SetString(PyExc_TypeError,
- "an integer is required");
- }
- return res;
-}
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
- Py_ssize_t ival;
- PyObject* x = PyNumber_Index(b);
- if (!x) return -1;
- ival = PyInt_AsSsize_t(x);
- Py_DECREF(x);
- return ival;
-}
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
-#if PY_VERSION_HEX < 0x02050000
- if (ival <= LONG_MAX)
- return PyInt_FromLong((long)ival);
- else {
- unsigned char *bytes = (unsigned char *) &ival;
- int one = 1; int little = (int)*(unsigned char*)&one;
- return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
- }
-#else
- return PyInt_FromSize_t(ival);
-#endif
-}
-static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
- unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
- if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
- if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred())
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to size_t");
- return (size_t)-1;
- }
- return (size_t)val;
-}
-
-
-#endif /* Py_PYTHON_H */
diff --git a/python/src/sa/_sa.pxd b/python/src/sa/_sa.pxd
deleted file mode 100644
index f1cd8e29..00000000
--- a/python/src/sa/_sa.pxd
+++ /dev/null
@@ -1,45 +0,0 @@
-from libc.stdio cimport FILE
-
-cdef class FloatList:
- cdef int size
- cdef int increment
- cdef int len
- cdef float* arr
- cdef void set(self, int i, float v)
- cdef void write_handle(self, FILE* f)
- cdef void read_handle(self, FILE* f)
-
-cdef class IntList:
- cdef int size
- cdef int increment
- cdef int len
- cdef int* arr
- cdef void set(self, int i, int val)
- cdef void _append(self, int val)
- cdef void _extend(self, IntList other)
- cdef void _extend_arr(self, int* other, int other_len)
- cdef void _clear(self)
- cdef void write_handle(self, FILE* f)
- cdef void read_handle(self, FILE* f)
-
-cdef class FeatureVector:
- cdef IntList names
- cdef FloatList values
-
-cdef class Phrase:
- cdef int *syms
- cdef int n, *varpos, n_vars
- cdef public int chunkpos(self, int k)
- cdef public int chunklen(self, int k)
-
-cdef class Rule:
- cdef int lhs
- cdef readonly Phrase f, e
- cdef FeatureVector scores
- cdef int n_scores
- cdef word_alignments
-
-cdef char* sym_tostring(int sym)
-cdef char* sym_tocat(int sym)
-cdef int sym_isvar(int sym)
-cdef int sym_getindex(int sym)
diff --git a/python/src/sa/_sa.pyx b/python/src/sa/_sa.pyx
deleted file mode 100644
index 4716d174..00000000
--- a/python/src/sa/_sa.pyx
+++ /dev/null
@@ -1,30 +0,0 @@
-import logging
-import resource
-import gzip
-
-def monitor_cpu():
- return (resource.getrusage(resource.RUSAGE_SELF).ru_utime+
- resource.getrusage(resource.RUSAGE_SELF).ru_stime)
-
-def gzip_or_text(char* filename):
- if filename.endswith('.gz'):
- return gzip.GzipFile(filename)
- else:
- return open(filename)
-
-logger = logging.getLogger('cdec.sa')
-
-include "float_list.pxi"
-include "int_list.pxi"
-include "str_map.pxi"
-include "data_array.pxi"
-include "alignment.pxi"
-include "bilex.pxi"
-include "veb.pxi"
-include "lcp.pxi"
-include "sym.pxi"
-include "rule.pxi"
-include "precomputation.pxi"
-include "suffix_array.pxi"
-include "rulefactory.pxi"
-include "features.pxi"
diff --git a/python/src/sa/alignment.pxi b/python/src/sa/alignment.pxi
deleted file mode 100644
index f66f0fbf..00000000
--- a/python/src/sa/alignment.pxi
+++ /dev/null
@@ -1,107 +0,0 @@
-from libc.stdio cimport FILE, fopen, fread, fwrite, fclose
-from libc.stdlib cimport malloc, realloc, free
-
-# Note: Callison-Burch uses short instead of int.
-# We have the space for our corpus, so this is not a problem;
-# May need to revisit if things get really tight, though.
-
-cdef int ALIGNMENT_CODE = 1 << 16
-
-cdef class Alignment:
- cdef IntList links
- cdef IntList sent_index
-
- cdef int link(self, int i, int j):
- """Integerizes an alignment link pair"""
- return i * ALIGNMENT_CODE + j
-
- def unlink(self, link):
- """De-integerizes an alignment link pair"""
- return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE)
-
- cdef _unlink(self, int link, int* f, int* e):
- f[0] = link / ALIGNMENT_CODE
- e[0] = link % ALIGNMENT_CODE
-
- def get_sent_links(self, int sent_id):
- cdef IntList sent_links
- cdef int* arr
- cdef int arr_len
- sent_links = IntList()
- arr = self._get_sent_links(sent_id, &arr_len)
- sent_links._extend_arr(arr, arr_len*2)
- free(arr)
- return sent_links
-
- cdef int* _get_sent_links(self, int sent_id, int* num_links):
- cdef int* sent_links
- cdef int i, start, end
- start = self.sent_index.arr[sent_id]
- end = self.sent_index.arr[sent_id+1]
- num_links[0] = end - start
- sent_links = <int*> malloc(2*num_links[0]*sizeof(int))
- for i from 0 <= i < num_links[0]:
- self._unlink(self.links.arr[start + i], sent_links + (2*i), sent_links + (2*i) + 1)
- return sent_links
-
- def __cinit__(self, from_binary=None, from_text=None):
- self.links = IntList(1000,1000)
- self.sent_index = IntList(1000,1000)
- if from_binary:
- self.read_binary(from_binary)
- elif from_text:
- self.read_text(from_text)
-
- def read_text(self, char* filename):
- with gzip_or_text(filename) as f:
- for line in f:
- self.sent_index.append(len(self.links))
- pairs = line.split()
- for pair in pairs:
- (i, j) = map(int, pair.split('-'))
- self.links.append(self.link(i, j))
- self.sent_index.append(len(self.links))
-
- def read_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "r")
- self.links.read_handle(f)
- self.sent_index.read_handle(f)
- fclose(f)
-
- def write_text(self, char* filename):
- with open(filename, "w") as f:
- sent_num = 0
- for i, link in enumerate(self.links):
- while i >= self.sent_index[sent_num]:
- f.write("\n")
- sent_num = sent_num + 1
- f.write("%d-%d " % self.unlink(link))
- f.write("\n")
-
- def write_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "w")
- self.links.write_handle(f)
- self.sent_index.write_handle(f)
- fclose(f)
-
- def write_enhanced(self, char* filename):
- with open(filename, "w") as f:
- sent_num = 1
- for link in self.links:
- f.write("%d " % link)
- f.write("\n")
- for i in self.sent_index:
- f.write("%d " % i)
- f.write("\n")
-
- def alignment(self, i):
- """Return all (e,f) pairs for sentence i"""
- cdef int j, start, end
- result = []
- start = self.sent_index.arr[i]
- end = self.sent_index.arr[i+1]
- for j from start <= j < end:
- result.append(self.unlink(self.links.arr[j]))
- return result
diff --git a/python/src/sa/bilex.pxi b/python/src/sa/bilex.pxi
deleted file mode 100644
index 44bc0ce6..00000000
--- a/python/src/sa/bilex.pxi
+++ /dev/null
@@ -1,413 +0,0 @@
-# defines bilexical dictionaries in C, with some convenience methods
-# for reading arrays directly as globs directly from disk.
-# Adam Lopez <alopez@cs.umd.edu>
-
-from libc.stdio cimport FILE, fopen, fread, fwrite, fclose
-from libc.stdlib cimport malloc, realloc, free
-from libc.string cimport memset, strcpy
-
-cdef struct _node:
- _node* smaller
- _node* bigger
- int key
- int val
-
-cdef _node* new_node(int key):
- cdef _node* n
- n = <_node*> malloc(sizeof(_node))
- n.smaller = NULL
- n.bigger = NULL
- n.key = key
- n.val = 0
- return n
-
-
-cdef del_node(_node* n):
- if n.smaller != NULL:
- del_node(n.smaller)
- if n.bigger != NULL:
- del_node(n.bigger)
- free(n)
-
-cdef int* get_val(_node* n, int key):
- if key == n.key:
- return &n.val
- elif key < n.key:
- if n.smaller == NULL:
- n.smaller = new_node(key)
- return &(n.smaller.val)
- return get_val(n.smaller, key)
- else:
- if n.bigger == NULL:
- n.bigger = new_node(key)
- return &(n.bigger.val)
- return get_val(n.bigger, key)
-
-
-cdef class BiLex:
- cdef FloatList col1
- cdef FloatList col2
- cdef IntList f_index
- cdef IntList e_index
- cdef id2eword, id2fword, eword2id, fword2id
-
- def __cinit__(self, from_text=None, from_data=False, from_binary=None,
- earray=None, fsarray=None, alignment=None):
- self.id2eword = []
- self.id2fword = []
- self.eword2id = {}
- self.fword2id = {}
- self.e_index = IntList()
- self.f_index = IntList()
- self.col1 = FloatList()
- self.col2 = FloatList()
- if from_binary:
- self.read_binary(from_binary)
- elif from_data:
- self.compute_from_data(fsarray, earray, alignment)
- else:
- self.read_text(from_text)
-
-
- cdef compute_from_data(self, SuffixArray fsa, DataArray eda, Alignment aa):
- cdef int sent_id, num_links, l, i, j, f_i, e_j, I, J, V_E, V_F, num_pairs
- cdef int *fsent, *esent, *alignment, *links, *ealigned, *faligned
- cdef _node** dict
- cdef int *fmargin, *emargin, *count
- cdef int null_word
-
- null_word = 0
- for word in fsa.darray.id2word: # I miss list comprehensions
- self.id2fword.append(word)
- self.id2fword[null_word] = "NULL"
- for id, word in enumerate(self.id2fword):
- self.fword2id[word] = id
-
- for word in eda.id2word:
- self.id2eword.append(word)
- self.id2eword[null_word] = "NULL"
- for id, word in enumerate(self.id2eword):
- self.eword2id[word] = id
-
- num_pairs = 0
-
- V_E = len(eda.id2word)
- V_F = len(fsa.darray.id2word)
- fmargin = <int*> malloc(V_F*sizeof(int))
- emargin = <int*> malloc(V_E*sizeof(int))
- memset(fmargin, 0, V_F*sizeof(int))
- memset(emargin, 0, V_E*sizeof(int))
-
- dict = <_node**> malloc(V_F*sizeof(_node*))
- memset(dict, 0, V_F*sizeof(_node*))
-
- num_sents = len(fsa.darray.sent_index)
- for sent_id from 0 <= sent_id < num_sents-1:
-
- fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id]
- I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1
- faligned = <int*> malloc(I*sizeof(int))
- memset(faligned, 0, I*sizeof(int))
-
- esent = eda.data.arr + eda.sent_index.arr[sent_id]
- J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1
- ealigned = <int*> malloc(J*sizeof(int))
- memset(ealigned, 0, J*sizeof(int))
-
- links = aa._get_sent_links(sent_id, &num_links)
-
- for l from 0 <= l < num_links:
- i = links[l*2]
- j = links[l*2+1]
- if i >= I or j >= J:
- raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))
- f_i = fsent[i]
- e_j = esent[j]
- fmargin[f_i] = fmargin[f_i]+1
- emargin[e_j] = emargin[e_j]+1
- if dict[f_i] == NULL:
- dict[f_i] = new_node(e_j)
- dict[f_i].val = 1
- num_pairs = num_pairs + 1
- else:
- count = get_val(dict[f_i], e_j)
- if count[0] == 0:
- num_pairs = num_pairs + 1
- count[0] = count[0] + 1
- # add count
- faligned[i] = 1
- ealigned[j] = 1
- for i from 0 <= i < I:
- if faligned[i] == 0:
- f_i = fsent[i]
- fmargin[f_i] = fmargin[f_i] + 1
- emargin[null_word] = emargin[null_word] + 1
- if dict[f_i] == NULL:
- dict[f_i] = new_node(null_word)
- dict[f_i].val = 1
- num_pairs = num_pairs + 1
- else:
- count = get_val(dict[f_i], null_word)
- if count[0] == 0:
- num_pairs = num_pairs + 1
- count[0] = count[0] + 1
- for j from 0 <= j < J:
- if ealigned[j] == 0:
- e_j = esent[j]
- fmargin[null_word] = fmargin[null_word] + 1
- emargin[e_j] = emargin[e_j] + 1
- if dict[null_word] == NULL:
- dict[null_word] = new_node(e_j)
- dict[null_word].val = 1
- num_pairs = num_pairs + 1
- else:
- count = get_val(dict[null_word], e_j)
- if count[0] == 0:
- num_pairs = num_pairs + 1
- count[0] = count[0] + 1
- free(links)
- free(faligned)
- free(ealigned)
- self.f_index = IntList(initial_len=V_F)
- self.e_index = IntList(initial_len=num_pairs)
- self.col1 = FloatList(initial_len=num_pairs)
- self.col2 = FloatList(initial_len=num_pairs)
-
- num_pairs = 0
- for i from 0 <= i < V_F:
- #self.f_index[i] = num_pairs
- self.f_index.set(i, num_pairs)
- if dict[i] != NULL:
- self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)
- del_node(dict[i])
- free(fmargin)
- free(emargin)
- free(dict)
- return
-
-
- cdef _add_node(self, _node* n, int* num_pairs, float fmargin, int* emargin):
- cdef int loc
- if n.smaller != NULL:
- self._add_node(n.smaller, num_pairs, fmargin, emargin)
- loc = num_pairs[0]
- self.e_index.set(loc, n.key)
- self.col1.set(loc, float(n.val)/fmargin)
- self.col2.set(loc, float(n.val)/float(emargin[n.key]))
- num_pairs[0] = loc + 1
- if n.bigger != NULL:
- self._add_node(n.bigger, num_pairs, fmargin, emargin)
-
-
- def write_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "w")
- self.f_index.write_handle(f)
- self.e_index.write_handle(f)
- self.col1.write_handle(f)
- self.col2.write_handle(f)
- self.write_wordlist(self.id2fword, f)
- self.write_wordlist(self.id2eword, f)
- fclose(f)
-
-
- cdef write_wordlist(self, wordlist, FILE* f):
- cdef int word_len
- cdef int num_words
-
- num_words = len(wordlist)
- fwrite(&(num_words), sizeof(int), 1, f)
- for word in wordlist:
- word_len = len(word) + 1
- fwrite(&(word_len), sizeof(int), 1, f)
- fwrite(<char *>word, sizeof(char), word_len, f)
-
-
- cdef read_wordlist(self, word2id, id2word, FILE* f):
- cdef int num_words
- cdef int word_len
- cdef char* word
-
- fread(&(num_words), sizeof(int), 1, f)
- for i from 0 <= i < num_words:
- fread(&(word_len), sizeof(int), 1, f)
- word = <char*> malloc (word_len * sizeof(char))
- fread(word, sizeof(char), word_len, f)
- word2id[word] = len(id2word)
- id2word.append(word)
- free(word)
-
- def read_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "r")
- self.f_index.read_handle(f)
- self.e_index.read_handle(f)
- self.col1.read_handle(f)
- self.col2.read_handle(f)
- self.read_wordlist(self.fword2id, self.id2fword, f)
- self.read_wordlist(self.eword2id, self.id2eword, f)
- fclose(f)
-
-
- def get_e_id(self, eword):
- if eword not in self.eword2id:
- e_id = len(self.id2eword)
- self.id2eword.append(eword)
- self.eword2id[eword] = e_id
- return self.eword2id[eword]
-
-
- def get_f_id(self, fword):
- if fword not in self.fword2id:
- f_id = len(self.id2fword)
- self.id2fword.append(fword)
- self.fword2id[fword] = f_id
- return self.fword2id[fword]
-
-
- def read_text(self, char* filename):
- cdef i, j, w, e_id, f_id, n_f, n_e, N
- cdef IntList fcount
-
- fcount = IntList()
- with gzip_or_text(filename) as f:
- # first loop merely establishes size of array objects
- for line in f:
- (fword, eword, score1, score2) = line.split()
- f_id = self.get_f_id(fword)
- e_id = self.get_e_id(eword)
- while f_id >= len(fcount):
- fcount.append(0)
- fcount.arr[f_id] = fcount.arr[f_id] + 1
-
- # Allocate space for dictionary in arrays
- N = 0
- n_f = len(fcount)
- self.f_index = IntList(initial_len=n_f+1)
- for i from 0 <= i < n_f:
- self.f_index.arr[i] = N
- N = N + fcount.arr[i]
- fcount.arr[i] = 0
- self.f_index.arr[n_f] = N
- self.e_index = IntList(initial_len=N)
- self.col1 = FloatList(initial_len=N)
- self.col2 = FloatList(initial_len=N)
-
- # Re-read file, placing words into buckets
- f.seek(0)
- for line in f:
- (fword, eword, score1, score2) = line.split()
- f_id = self.get_f_id(fword)
- e_id = self.get_e_id(eword)
- index = self.f_index.arr[f_id] + fcount.arr[f_id]
- fcount.arr[f_id] = fcount.arr[f_id] + 1
- self.e_index.arr[index] = int(e_id)
- self.col1[index] = float(score1)
- self.col2[index] = float(score2)
-
- # Sort buckets by eword
- for b from 0 <= b < n_f:
- i = self.f_index.arr[b]
- j = self.f_index.arr[b+1]
- self.qsort(i,j, "")
-
-
- cdef swap(self, int i, int j):
- cdef int itmp
- cdef float ftmp
-
- if i == j:
- return
-
- itmp = self.e_index.arr[i]
- self.e_index.arr[i] = self.e_index.arr[j]
- self.e_index.arr[j] = itmp
-
- ftmp = self.col1.arr[i]
- self.col1.arr[i] = self.col1.arr[j]
- self.col1.arr[j] = ftmp
-
- ftmp = self.col2.arr[i]
- self.col2.arr[i] = self.col2.arr[j]
- self.col2.arr[j] = ftmp
-
-
- cdef qsort(self, int i, int j, pad):
- cdef int pval, p
-
- if i > j:
- raise Exception("Sort error in CLex")
- if i == j: #empty interval
- return
- if i == j-1: # singleton interval
- return
-
- p = (i+j)/2
- pval = self.e_index.arr[p]
- self.swap(i, p)
- p = i
- for k from i+1 <= k < j:
- if pval >= self.e_index.arr[k]:
- self.swap(p+1, k)
- self.swap(p, p+1)
- p = p + 1
- self.qsort(i,p, pad+" ")
- self.qsort(p+1,j, pad+" ")
-
-
- def write_enhanced(self, char* filename):
- with open(filename, "w") as f:
- for i in self.f_index:
- f.write("%d " % i)
- f.write("\n")
- for i, s1, s2 in zip(self.e_index, self.col1, self.col2):
- f.write("%d %f %f " % (i, s1, s2))
- f.write("\n")
- for i, w in enumerate(self.id2fword):
- f.write("%d %s " % (i, w))
- f.write("\n")
- for i, w in enumerate(self.id2eword):
- f.write("%d %s " % (i, w))
- f.write("\n")
-
-
- def get_score(self, fword, eword, col):
- cdef e_id, f_id, low, high, midpoint, val
-
- if eword not in self.eword2id:
- return None
- if fword not in self.fword2id:
- return None
- f_id = self.fword2id[fword]
- e_id = self.eword2id[eword]
- low = self.f_index.arr[f_id]
- high = self.f_index.arr[f_id+1]
- while high - low > 0:
- midpoint = (low+high)/2
- val = self.e_index.arr[midpoint]
- if val == e_id:
- if col == 0:
- return self.col1.arr[midpoint]
- if col == 1:
- return self.col2.arr[midpoint]
- if val > e_id:
- high = midpoint
- if val < e_id:
- low = midpoint + 1
- return None
-
-
- def write_text(self, char* filename):
- """Note: does not guarantee writing the dictionary in the original order"""
- cdef i, N, e_id, f_id
-
- with open(filename, "w") as f:
- N = len(self.e_index)
- f_id = 0
- for i from 0 <= i < N:
- while self.f_index.arr[f_id+1] == i:
- f_id = f_id + 1
- e_id = self.e_index.arr[i]
- score1 = self.col1.arr[i]
- score2 = self.col2.arr[i]
- f.write("%s %s %.6f %.6f\n" % (self.id2fword[f_id], self.id2eword[e_id], score1, score2))
diff --git a/python/src/sa/data_array.pxi b/python/src/sa/data_array.pxi
deleted file mode 100644
index 2a8ea921..00000000
--- a/python/src/sa/data_array.pxi
+++ /dev/null
@@ -1,157 +0,0 @@
-# Defines "data arrays" that can be directly written to/read from disk in binary format
-# In particular, the array itself is written/read directly as a glob of binary data
-# Adam Lopez <alopez@cs.umd.edu>
-
-from libc.stdio cimport FILE, fopen, fread, fwrite, fclose
-from libc.stdlib cimport malloc, realloc, free
-from libc.string cimport memset, strcpy
-
-cdef class DataArray:
- cdef public word2id
- cdef public id2word
- cdef public IntList data
- cdef public IntList sent_id
- cdef public IntList sent_index
- cdef bint use_sent_id
-
- def __cinit__(self, from_binary=None, from_text=None, side=None, bint use_sent_id=False):
- self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}
- self.id2word = ["END_OF_FILE", "END_OF_LINE"]
- self.data = IntList(1000,1000)
- self.sent_id = IntList(1000,1000)
- self.sent_index = IntList(1000,1000)
- self.use_sent_id = use_sent_id
- if from_binary:
- self.read_binary(from_binary)
- elif from_text:
- if side:
- self.read_bitext(from_text, (0 if side == 'source' else 1))
- else:
- self.read_text(from_text)
-
- def __len__(self):
- return len(self.data)
-
- def get_sentence_id(self, i):
- return self.sent_id.arr[i]
-
- def get_sentence(self, i):
- cdef int j, start, stop
- sent = []
- start = self.sent_index.arr[i]
- stop = self.sent_index.arr[i+1]
- for i from start <= i < stop:
- sent.append(self.id2word[self.data.arr[i]])
- return sent
-
- def get_id(self, word):
- if not word in self.word2id:
- self.word2id[word] = len(self.id2word)
- self.id2word.append(word)
- return self.word2id[word]
-
- def __getitem__(self, loc):
- return self.id2word[self.data.arr[loc]]
-
- def get_sentence_bounds(self, loc):
- cdef int sid = self.sent_id.arr[loc]
- return (self.sent_index.arr[sid], self.sent_index.arr[sid+1])
-
- def write_text(self, char* filename):
- with open(filename, "w") as f:
- for w_id in self.data:
- if w_id > 1:
- f.write("%s " % self.get_word(w_id))
- if w_id == 1:
- f.write("\n")
-
- def read_text(self, char* filename):
- with gzip_or_text(filename) as fp:
- self.read_text_data(fp)
-
- def read_bitext(self, char* filename, int side):
- with gzip_or_text(filename) as fp:
- data = (line.split(' ||| ')[side] for line in fp)
- self.read_text_data(data)
-
- def read_text_data(self, data):
- cdef int word_count = 0
- for line_num, line in enumerate(data):
- self.sent_index.append(word_count)
- for word in line.split():
- self.data.append(self.get_id(word))
- if self.use_sent_id:
- self.sent_id.append(line_num)
- word_count = word_count + 1
- self.data.append(1)
- if self.use_sent_id:
- self.sent_id.append(line_num)
- word_count = word_count + 1
- self.data.append(0)
- self.sent_index.append(word_count)
-
-
- def read_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "r")
- self.read_handle(f)
- fclose(f)
-
- cdef void read_handle(self, FILE* f):
- cdef int num_words, word_len
- cdef unsigned i
- cdef char* word
-
- self.data.read_handle(f)
- self.sent_index.read_handle(f)
- self.sent_id.read_handle(f)
- fread(&(num_words), sizeof(int), 1, f)
- for i in range(num_words):
- fread(&(word_len), sizeof(int), 1, f)
- word = <char*> malloc (word_len * sizeof(char))
- fread(word, sizeof(char), word_len, f)
- self.word2id[word] = len(self.id2word)
- self.id2word.append(word)
- free(word)
- if len(self.sent_id) == 0:
- self.use_sent_id = False
- else:
- self.use_sent_id = True
-
- cdef void write_handle(self, FILE* f):
- cdef int word_len
- cdef int num_words
-
- self.data.write_handle(f)
- self.sent_index.write_handle(f)
- self.sent_id.write_handle(f)
- num_words = len(self.id2word) - 2
- fwrite(&(num_words), sizeof(int), 1, f)
- for word in self.id2word[2:]:
- word_len = len(word) + 1
- fwrite(&(word_len), sizeof(int), 1, f)
- fwrite(<char *>word, sizeof(char), word_len, f)
-
- def write_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "w")
- self.write_handle(f)
- fclose(f)
-
- def write_enhanced_handle(self, f):
- for i in self.data:
- f.write("%d " %i)
- f.write("\n")
- for i in self.sent_index:
- f.write("%d " %i)
- f.write("\n")
- for i in self.sent_id:
- f.write("%d " %i)
- f.write("\n")
- for word in self.id2word:
- f.write("%s %d " % (word, self.word2id[word]))
- f.write("\n")
-
- def write_enhanced(self, char* filename):
- with open(filename, "w") as f:
- self.write_enhanced_handle(self, f)
diff --git a/python/src/sa/features.pxi b/python/src/sa/features.pxi
deleted file mode 100644
index 9b9ecf3c..00000000
--- a/python/src/sa/features.pxi
+++ /dev/null
@@ -1,33 +0,0 @@
-cdef StringMap FD = StringMap() # Feature name dictionary
-
-INITIAL_CAPACITY = 7 # default number of features
-INCREMENT = INITIAL_CAPACITY # double size
-
-cdef class FeatureVector:
- def __cinit__(self):
- self.names = IntList(INITIAL_CAPACITY, INCREMENT)
- self.values = FloatList(INITIAL_CAPACITY, INCREMENT)
-
- def set(self, unsigned name, float value):
- self.names.append(name)
- self.values.append(value)
-
- def __iter__(self):
- cdef unsigned i
- for i in range(self.names.len):
- yield (FD.word(self.names[i]), self.values[i])
-
- def __str__(self):
- return ' '.join('%s=%s' % feat for feat in self)
-
-cdef class Scorer:
- cdef models
- def __init__(self, *models):
- names = [FD.index(<char *>model.__name__) for model in models]
- self.models = zip(names, models)
-
- cdef FeatureVector score(self, ctx):
- cdef FeatureVector scores = FeatureVector()
- for name, model in self.models:
- scores.set(name, model(ctx))
- return scores
diff --git a/python/src/sa/float_list.pxi b/python/src/sa/float_list.pxi
deleted file mode 100644
index b98e444f..00000000
--- a/python/src/sa/float_list.pxi
+++ /dev/null
@@ -1,73 +0,0 @@
-# defines int arrays in C, with some convenience methods
-# for reading arrays directly as globs directly from disk.
-# Adam Lopez <alopez@cs.umd.edu>
-
-from libc.stdio cimport FILE, fopen, fread, fwrite, fclose
-from libc.stdlib cimport malloc, realloc, free
-from libc.string cimport memset, strcpy, strlen
-
-cdef class FloatList:
-
- def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- if initial_len > size:
- size = initial_len
- self.size = size
- self.increment = increment
- self.len = initial_len
- self.arr = <float*> malloc(size*sizeof(float))
- memset(self.arr, 0, initial_len*sizeof(float))
-
- def __dealloc__(self):
- free(self.arr)
-
- def __getitem__(self, i):
- j = i
- if i<0:
- j = self.len + i
- if j<0 or j>=self.len:
- raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- return self.arr[j]
-
- cdef void set(self, int i, float v):
- j = i
- if i<0:
- j = self.len + i
- if j<0 or j>=self.len:
- raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))
- self.arr[j] = v
-
- def __setitem__(self, i, val):
- self.set(i, val)
-
- def __len__(self):
- return self.len
-
- def append(self, float val):
- if self.len == self.size:
- self.size = self.size + self.increment
- self.arr = <float*> realloc(self.arr, self.size*sizeof(float))
- self.arr[self.len] = val
- self.len = self.len + 1
-
- cdef void write_handle(self, FILE* f):
- fwrite(&(self.len), sizeof(float), 1, f)
- fwrite(self.arr, sizeof(float), self.len, f)
-
- def write(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "w")
- self.write_handle(f)
- fclose(f)
-
- cdef void read_handle(self, FILE* f):
- free(self.arr)
- fread(&(self.len), sizeof(float), 1, f)
- self.arr = <float*> malloc(self.len * sizeof(float))
- self.size = self.len
- fread(self.arr, sizeof(float), self.len, f)
-
- def read(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "r")
- self.read_handle(f)
- fclose(f)
diff --git a/python/src/sa/int_list.pxi b/python/src/sa/int_list.pxi
deleted file mode 100644
index 46d434e7..00000000
--- a/python/src/sa/int_list.pxi
+++ /dev/null
@@ -1,178 +0,0 @@
-# defines int arrays in C, with some convenience methods
-# for reading arrays as globs directly from disk.
-# Adam Lopez <alopez@cs.umd.edu>
-
-from libc.stdio cimport FILE, fopen, fread, fwrite, fclose
-from libc.stdlib cimport malloc, realloc, free
-from libc.string cimport memset, memcpy
-
-cdef class IntList:
-
- def __cinit__(self, int size=0, int increment=1, int initial_len=0):
- if initial_len > size:
- size = initial_len
- self.size = size
- self.increment = increment
- self.len = initial_len
- self.arr = <int*> malloc(size*sizeof(int))
- memset(self.arr, 0, initial_len*sizeof(int))
-
- def __str__(self):
- cdef unsigned i
- ret = "IntList["
- for idx in range(self.size):
- if idx>0:
- ret += ","
- ret += str(self.arr[idx])
- ret += "]"
- ret += "len="
- ret += str(self.len)
- return ret
-
- def index(self, int val):
- cdef unsigned i
- for i in range(self.len):
- if self.arr[i] == val:
- return i
- raise ValueError('%s not in IntList' % val)
-
- def partition(self,start,end):
- pivot = self.arr[end]
- bottom = start-1
- top = end
- done = 0
- while not done:
- while not done:
- bottom += 1
- if bottom == top:
- done = 1
- break
- if self.arr[bottom] > pivot:
- self.arr[top] = self.arr[bottom]
- break
- while not done:
- top -= 1
- if top == bottom:
- done = 1
- break
- if self.arr[top] < pivot:
- self.arr[bottom] = self.arr[top]
- break
- self.arr[top] = pivot
- return top
-
- def _doquicksort(self,start,end):
- if start < end:
- split = self.partition(start,end)
- self._doquicksort(start,split-1)
- self._doquicksort(split+1,end)
- else:
- return
-
- def sort(self):
- self._doquicksort(0,self.len-1)
-
- def reset(self):
- self.len = 0
-
- def __dealloc__(self):
- free(self.arr)
-
- def __iter__(self):
- cdef int i
- for i in range(self.len):
- yield self.arr[i]
-
- def __getitem__(self, index):
- cdef int i, j, k
- if isinstance(index, int):
- j = index
- if j < 0:
- j = self.len + j
- if j<0 or j>=self.len:
- raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))
- return self.arr[j]
- elif isinstance(index, slice):
- i = index.start
- j = index.stop
- if i < 0:
- i = self.len + i
- if j < 0:
- j = self.len + j
- if i < 0 or i >= self.len or j < 0 or j > self.len:
- raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))
- result = ()
- for k from i <= k < j:
- result = result + (self.arr[k],)
- return result
- else:
- raise TypeError("Illegal key type %s for IntList" % type(index))
-
- cdef void set(self, int i, int val):
- j = i
- if i<0:
- j = self.len + i
- if j<0 or j>=self.len:
- raise IndexError("Requested index %d of %d-length IntList" % (i, self.len))
- self.arr[j] = val
-
- def __setitem__(self, i, val):
- self.set(i, val)
-
- def __len__(self):
- return self.len
-
- def get_size(self):
- return self.size
-
- def append(self, int val):
- self._append(val)
-
- cdef void _append(self, int val):
- if self.len == self.size:
- self.size = self.size + self.increment
- self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- self.arr[self.len] = val
- self.len = self.len + 1
-
- def extend(self, other):
- self._extend(other)
-
- cdef void _extend(self, IntList other):
- self._extend_arr(other.arr, other.len)
-
- cdef void _extend_arr(self, int* other, int other_len):
- if self.size < self.len + other_len:
- self.size = self.len + other_len
- self.arr = <int*> realloc(self.arr, self.size*sizeof(int))
- memcpy(self.arr+self.len, other, other_len*sizeof(int))
- self.len = self.len + other_len
-
- cdef void _clear(self):
- free(self.arr)
- self.len = 0
- self.size = 0
- self.arr = <int*> malloc(0)
-
- cdef void write_handle(self, FILE* f):
- fwrite(&(self.len), sizeof(int), 1, f)
- fwrite(self.arr, sizeof(int), self.len, f)
-
- def write(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "w")
- self.write_handle(f)
- fclose(f)
-
- cdef void read_handle(self, FILE* f):
- (self.arr)
- fread(&(self.len), sizeof(int), 1, f)
- self.arr = <int*> malloc(self.len * sizeof(int))
- self.size = self.len
- fread(self.arr, sizeof(int), self.len, f)
-
- def read(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "r")
- self.read_handle(f)
- fclose(f)
diff --git a/python/src/sa/lcp.pxi b/python/src/sa/lcp.pxi
deleted file mode 100644
index 8e86e611..00000000
--- a/python/src/sa/lcp.pxi
+++ /dev/null
@@ -1,89 +0,0 @@
-"""Compute LCP array for a suffix array using the Kasai et al. algorithm
-Can also be used to compute statistics such
-as k most frequent n-grams"""
-
-cdef class LCP:
- cdef SuffixArray sa
- cdef IntList lcp
-
- def __cinit__(self, SuffixArray sa):
- cdef int i, k, j, h, n
- cdef IntList rank
-
- logger.info("Constructing LCP array")
- self.sa = sa
- n = self.sa.sa.len
- self.lcp = IntList(initial_len=n)
-
- rank = IntList(initial_len=n)
- for i from 0 <= i < n:
- rank.arr[sa.sa.arr[i]] = i
-
- h = 0
- for i from 0 <= i < n:
- k = rank.arr[i]
- if k == 0:
- self.lcp.arr[k] = -1
- else:
- j = sa.sa.arr[k-1]
- while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]:
- h = h+1
- self.lcp.arr[k] = h
- if h > 0:
- h = h-1
- logger.info("LCP array completed")
-
- def compute_stats(self, int max_n):
- """Note: the output of this function is not exact. In
- particular, the frequency associated with each word is
- not guaranteed to be correct. This is due to a bit of
- laxness in the design; the function is intended only to
- obtain a list of the most frequent words; for this
- purpose it is perfectly fine"""
- cdef int i, ii, iii, j, k, h, n, N, rs, freq, valid
- cdef IntList run_start
- cdef IntList ngram_start
- cdef VEB veb
-
- N = self.sa.sa.len
-
- ngram_starts = []
- for n from 0 <= n < max_n:
- ngram_starts.append(IntList(initial_len=N))
-
- run_start = IntList(initial_len=max_n)
- veb = VEB(N)
-
- for i from 0 <= i < N:
- h = self.lcp.arr[i]
- if h < 0:
- h = 0
- for n from h <= n < max_n:
- rs = run_start.arr[n]
- run_start.arr[n] = i
- freq = i - rs
- if freq > 1000: # arbitrary, but see note below
- veb._insert(freq)
- ngram_start = ngram_starts[n]
- while ngram_start.arr[freq] > 0:
- freq = freq + 1 # cheating a bit, should be ok for sparse histogram
- ngram_start.arr[freq] = rs
- i = veb.veb.min_val
- while i != -1:
- ii = veb._findsucc(i)
- for n from 0 <= n < max_n:
- ngram_start = ngram_starts[n]
- iii = i
- rs = ngram_start.arr[iii]
- while (ii==-1 or iii < ii) and rs != 0:
- j = self.sa.sa.arr[rs]
- valid = 1
- for k from 0 <= k < n+1:
- if self.sa.darray.data.arr[j+k] < 2:
- valid = 0
- if valid:
- ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])
- yield i, n+1, ngram
- iii = iii + 1
- rs = ngram_start.arr[iii]
- i = ii
diff --git a/python/src/sa/precomputation.pxi b/python/src/sa/precomputation.pxi
deleted file mode 100644
index a3527f47..00000000
--- a/python/src/sa/precomputation.pxi
+++ /dev/null
@@ -1,454 +0,0 @@
-# precomputes a set of collocations by advancing over the text.
-# warning: nasty C code
-
-from libc.stdio cimport FILE, fopen, fread, fwrite, fclose
-from libc.stdlib cimport malloc, realloc, free
-from libc.string cimport memset, memcpy
-
-cdef struct _Trie_Node # forward decl
-
-cdef struct _Trie_Edge:
- int val
- _Trie_Node* node
- _Trie_Edge* bigger
- _Trie_Edge* smaller
-
-cdef struct _Trie_Node:
- _Trie_Edge* root
- int* arr
- int arr_len
-
-cdef _Trie_Node* new_trie_node():
- cdef _Trie_Node* node
- node = <_Trie_Node*> malloc(sizeof(_Trie_Node))
- node.root = NULL
- node.arr_len = 0
- node.arr = <int*> malloc(sizeof(0*sizeof(int)))
- return node
-
-cdef _Trie_Edge* new_trie_edge(int val):
- cdef _Trie_Edge* edge
- edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge))
- edge.node = new_trie_node()
- edge.bigger = NULL
- edge.smaller = NULL
- edge.val = val
- return edge
-
-cdef free_trie_node(_Trie_Node* node):
- if node != NULL:
- free_trie_edge(node.root)
- free(node.arr)
-
-cdef free_trie_edge(_Trie_Edge* edge):
- if edge != NULL:
- free_trie_node(edge.node)
- free_trie_edge(edge.bigger)
- free_trie_edge(edge.smaller)
-
-cdef _Trie_Node* trie_find(_Trie_Node* node, int val):
- cdef _Trie_Edge* cur
- cur = node.root
- while cur != NULL and cur.val != val:
- if val > cur.val:
- cur = cur.bigger
- elif val < cur.val:
- cur = cur.smaller
- if cur == NULL:
- return NULL
- else:
- return cur.node
-
-cdef trie_node_data_append(_Trie_Node* node, int val):
- cdef int new_len
- new_len = node.arr_len + 1
- node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- node.arr[node.arr_len] = val
- node.arr_len = new_len
-
-cdef trie_node_data_extend(_Trie_Node* node, int* vals, int num_vals):
- cdef int new_len
- new_len = node.arr_len + num_vals
- node.arr = <int*> realloc(node.arr, new_len*sizeof(int))
- memcpy(node.arr + node.arr_len, vals, num_vals*sizeof(int))
- node.arr_len = new_len
-
-
-cdef _Trie_Node* trie_insert(_Trie_Node* node, int val):
- cdef _Trie_Edge** cur
- cur = &node.root
- while cur[0] != NULL and cur[0].val != val:
- if val > cur[0].val:
- cur = &cur[0].bigger
- elif val < cur[0].val:
- cur = &cur[0].smaller
- if cur[0] == NULL:
- cur[0] = new_trie_edge(val)
- return cur[0].node
-
-cdef trie_node_to_map(_Trie_Node* node, result, prefix, int include_zeros):
- cdef IntList arr
-
- if include_zeros or node.arr_len > 0:
- arr = IntList()
- free(arr.arr)
- arr.arr = <int*> malloc(node.arr_len * sizeof(int))
- memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))
- arr.len = node.arr_len
- arr.size = node.arr_len
- result[prefix] = arr
- trie_edge_to_map(node.root, result, prefix, include_zeros)
-
-cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros):
- if edge != NULL:
- trie_edge_to_map(edge.smaller, result, prefix, include_zeros)
- trie_edge_to_map(edge.bigger, result, prefix, include_zeros)
- prefix = prefix + (edge.val,)
- trie_node_to_map(edge.node, result, prefix, include_zeros)
-
-cdef class TrieMap:
-
- cdef _Trie_Node** root
- cdef int V
-
- def __cinit__(self, int alphabet_size):
- self.V = alphabet_size
- self.root = <_Trie_Node**> malloc(self.V * sizeof(_Trie_Node*))
- memset(self.root, 0, self.V * sizeof(_Trie_Node*))
-
-
- def __dealloc__(self):
- cdef int i
- for i from 0 <= i < self.V:
- if self.root[i] != NULL:
- free_trie_node(self.root[i])
- free(self.root)
-
-
- def insert(self, pattern):
- cdef int* p
- cdef int i, l
- l = len(pattern)
- p = <int*> malloc(l*sizeof(int))
- for i from 0 <= i < l:
- p[i] = pattern[i]
- self._insert(p,l)
- free(p)
-
-
- cdef _Trie_Node* _insert(self, int* pattern, int pattern_len):
- cdef int i
- cdef _Trie_Node* node
- if self.root[pattern[0]] == NULL:
- self.root[pattern[0]] = new_trie_node()
- node = self.root[pattern[0]]
- for i from 1 <= i < pattern_len:
- node = trie_insert(node, pattern[i])
- return node
-
- def contains(self, pattern):
- cdef int* p
- cdef int i, l
- cdef _Trie_Node* node
- l = len(pattern)
- p = <int*> malloc(l*sizeof(int))
- for i from 0 <= i < l:
- p[i] = pattern[i]
- node = self._contains(p,l)
- free(p)
- if node == NULL:
- return False
- else:
- return True
-
- cdef _Trie_Node* _contains(self, int* pattern, int pattern_len):
- cdef int i
- cdef _Trie_Node* node
- node = self.root[pattern[0]]
- i = 1
- while node != NULL and i < pattern_len:
- node = trie_find(node, pattern[i])
- i = i+1
- return node
-
- def toMap(self, flag):
- cdef int i, include_zeros
-
- if flag:
- include_zeros=1
- else:
- include_zeros=0
- result = {}
- for i from 0 <= i < self.V:
- if self.root[i] != NULL:
- trie_node_to_map(self.root[i], result, (i,), include_zeros)
- return result
-
-
-cdef class Precomputation:
- cdef int precompute_rank
- cdef int precompute_secondary_rank
- cdef int max_length
- cdef int max_nonterminals
- cdef int train_max_initial_size
- cdef int train_min_gap_size
- cdef precomputed_index
- cdef precomputed_collocations
- cdef read_map(self, FILE* f)
- cdef write_map(self, m, FILE* f)
-
- def __cinit__(self, fsarray=None, from_stats=None, from_binary=None,
- precompute_rank=1000, precompute_secondary_rank=20,
- max_length=5, max_nonterminals=2,
- train_max_initial_size=10, train_min_gap_size=2):
- self.precompute_rank = precompute_rank
- self.precompute_secondary_rank = precompute_secondary_rank
- self.max_length = max_length
- self.max_nonterminals = max_nonterminals
- self.train_max_initial_size = train_max_initial_size
- self.train_min_gap_size = train_min_gap_size
- if from_binary:
- self.read_binary(from_binary)
- elif from_stats:
- self.precompute(from_stats, fsarray)
-
-
- def read_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "r")
- fread(&(self.precompute_rank), sizeof(int), 1, f)
- fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- fread(&(self.max_length), sizeof(int), 1, f)
- fread(&(self.max_nonterminals), sizeof(int), 1, f)
- fread(&(self.train_max_initial_size), sizeof(int), 1, f)
- fread(&(self.train_min_gap_size), sizeof(int), 1, f)
- self.precomputed_index = self.read_map(f)
- self.precomputed_collocations = self.read_map(f)
- fclose(f)
-
-
- def write_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "w")
- fwrite(&(self.precompute_rank), sizeof(int), 1, f)
- fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)
- fwrite(&(self.max_length), sizeof(int), 1, f)
- fwrite(&(self.max_nonterminals), sizeof(int), 1, f)
- fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)
- fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)
- self.write_map(self.precomputed_index, f)
- self.write_map(self.precomputed_collocations, f)
- fclose(f)
-
-
- cdef write_map(self, m, FILE* f):
- cdef int i, N
- cdef IntList arr
-
- N = len(m)
- fwrite(&(N), sizeof(int), 1, f)
- for pattern, val in m.iteritems():
- N = len(pattern)
- fwrite(&(N), sizeof(int), 1, f)
- for word_id in pattern:
- i = word_id
- fwrite(&(i), sizeof(int), 1, f)
- arr = val
- arr.write_handle(f)
-
-
- cdef read_map(self, FILE* f):
- cdef int i, j, k, word_id, N
- cdef IntList arr
-
- m = {}
- fread(&(N), sizeof(int), 1, f)
- for j from 0 <= j < N:
- fread(&(i), sizeof(int), 1, f)
- key = ()
- for k from 0 <= k < i:
- fread(&(word_id), sizeof(int), 1, f)
- key = key + (word_id,)
- arr = IntList()
- arr.read_handle(f)
- m[key] = arr
- return m
-
-
- def precompute(self, stats, SuffixArray sarray):
- cdef int i, l, N, max_pattern_len, i1, l1, i2, l2, i3, l3, ptr1, ptr2, ptr3, is_super, sent_count, max_rank
- cdef DataArray darray = sarray.darray
- cdef IntList data, queue, cost_by_rank, count_by_rank
- cdef TrieMap frequent_patterns, super_frequent_patterns, collocations
- cdef _Trie_Node* node
-
- data = darray.data
-
- frequent_patterns = TrieMap(len(darray.id2word))
- super_frequent_patterns = TrieMap(len(darray.id2word))
- collocations = TrieMap(len(darray.id2word))
-
- I_set = set()
- J_set = set()
- J2_set = set()
- IJ_set = set()
- pattern_rank = {}
-
- logger.info("Precomputing frequent intersections")
- cdef float start_time = monitor_cpu()
-
- max_pattern_len = 0
- for rank, (_, _, phrase) in enumerate(stats):
- if rank >= self.precompute_rank:
- break
- max_pattern_len = max(max_pattern_len, len(phrase))
- frequent_patterns.insert(phrase)
- I_set.add(phrase)
- pattern_rank[phrase] = rank
- if rank < self.precompute_secondary_rank:
- super_frequent_patterns.insert(phrase)
- J_set.add(phrase)
-
- queue = IntList(increment=1000)
-
- logger.info(" Computing inverted indexes...")
- N = len(data)
- for i from 0 <= i < N:
- sa_word_id = data.arr[i]
- if sa_word_id == 1:
- queue._append(-1)
- else:
- for l from 1 <= l <= max_pattern_len:
- node = frequent_patterns._contains(data.arr+i, l)
- if node == NULL:
- break
- queue._append(i)
- queue._append(l)
- trie_node_data_append(node, i)
-
- logger.info(" Computing collocations...")
- N = len(queue)
- ptr1 = 0
- sent_count = 0
- while ptr1 < N: # main loop
- i1 = queue.arr[ptr1]
- if i1 > -1:
- l1 = queue.arr[ptr1+1]
- ptr2 = ptr1 + 2
- while ptr2 < N:
- i2 = queue.arr[ptr2]
- if i2 == -1 or i2 - i1 >= self.train_max_initial_size:
- break
- l2 = queue.arr[ptr2+1]
- if (i2 - i1 - l1 >= self.train_min_gap_size and
- i2 + l2 - i1 <= self.train_max_initial_size and
- l1+l2+1 <= self.max_length):
- node = collocations._insert(data.arr+i1, l1)
- node = trie_insert(node, -1)
- for i from i2 <= i < i2+l2:
- node = trie_insert(node, data.arr[i])
- trie_node_data_append(node, i1)
- trie_node_data_append(node, i2)
- if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:
- if super_frequent_patterns._contains(data.arr+i1, l1) != NULL:
- is_super = 1
- else:
- is_super = 0
- ptr3 = ptr2 + 2
- while ptr3 < N:
- i3 = queue.arr[ptr3]
- if i3 == -1 or i3 - i1 >= self.train_max_initial_size:
- break
- l3 = queue.arr[ptr3+1]
- if (i3 - i2 - l2 >= self.train_min_gap_size and
- i3 + l3 - i1 <= self.train_max_initial_size and
- l1+l2+l3+2 <= self.max_length):
- if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:
- node = collocations._insert(data.arr+i1, l1)
- node = trie_insert(node, -1)
- for i from i2 <= i < i2+l2:
- node = trie_insert(node, data.arr[i])
- node = trie_insert(node, -1)
- for i from i3 <= i < i3+l3:
- node = trie_insert(node, data.arr[i])
- trie_node_data_append(node, i1)
- trie_node_data_append(node, i2)
- trie_node_data_append(node, i3)
- ptr3 = ptr3 + 2
- ptr2 = ptr2 + 2
- ptr1 = ptr1 + 2
- else:
- sent_count = sent_count + 1
- if sent_count % 10000 == 0:
- logger.debug(" %d sentences", sent_count)
- ptr1 = ptr1 + 1
-
- self.precomputed_collocations = collocations.toMap(False)
- self.precomputed_index = frequent_patterns.toMap(True)
-
- x = 0
- for pattern1 in J_set:
- for pattern2 in J_set:
- if len(pattern1) + len(pattern2) + 1 < self.max_length:
- combined_pattern = pattern1 + (-1,) + pattern2
- J2_set.add(combined_pattern)
-
- for pattern1 in I_set:
- for pattern2 in I_set:
- x = x+1
- if len(pattern1) + len(pattern2) + 1 <= self.max_length:
- combined_pattern = pattern1 + (-1,) + pattern2
- IJ_set.add(combined_pattern)
-
- for pattern1 in I_set:
- for pattern2 in J2_set:
- x = x+2
- if len(pattern1) + len(pattern2) + 1<= self.max_length:
- combined_pattern = pattern1 + (-1,) + pattern2
- IJ_set.add(combined_pattern)
- combined_pattern = pattern2 + (-1,) + pattern1
- IJ_set.add(combined_pattern)
-
- N = len(pattern_rank)
- cost_by_rank = IntList(initial_len=N)
- count_by_rank = IntList(initial_len=N)
- for pattern, arr in self.precomputed_collocations.iteritems():
- if pattern not in IJ_set:
- s = ""
- for word_id in pattern:
- if word_id == -1:
- s = s + "X "
- else:
- s = s + darray.id2word[word_id] + " "
- logger.warn("ERROR: unexpected pattern %s in set of precomputed collocations", s)
- else:
- chunk = ()
- max_rank = 0
- arity = 0
- for word_id in pattern:
- if word_id == -1:
- max_rank = max(max_rank, pattern_rank[chunk])
- arity = arity + 1
- chunk = ()
- else:
- chunk = chunk + (word_id,)
- max_rank = max(max_rank, pattern_rank[chunk])
- cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))
- count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))
-
- cumul_cost = 0
- cumul_count = 0
- for i from 0 <= i < N:
- cumul_cost = cumul_cost + cost_by_rank.arr[i]
- cumul_count = cumul_count + count_by_rank.arr[i]
- logger.debug("RANK %d\tCOUNT, COST: %d %d\tCUMUL: %d, %d", i, count_by_rank.arr[i], cost_by_rank.arr[i], cumul_count, cumul_cost)
-
- num_found_patterns = len(self.precomputed_collocations)
- for pattern in IJ_set:
- if pattern not in self.precomputed_collocations:
- self.precomputed_collocations[pattern] = IntList()
-
- cdef float stop_time = monitor_cpu()
- logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)
- logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))
- logger.info("Precomputation took %f seconds", (stop_time - start_time))
diff --git a/python/src/sa/rule.pxi b/python/src/sa/rule.pxi
deleted file mode 100644
index 4f0ea74f..00000000
--- a/python/src/sa/rule.pxi
+++ /dev/null
@@ -1,192 +0,0 @@
-from libc.stdlib cimport malloc, calloc, realloc, free, strtof, strtol
-from libc.string cimport strsep, strcpy, strlen
-
-cdef class Phrase:
-
- def __cinit__(self, words):
- cdef int i, j, n, n_vars
- n_vars = 0
- n = len(words)
- self.syms = <int *>malloc(n*sizeof(int))
- for i from 0 <= i < n:
- self.syms[i] = words[i]
- if sym_isvar(self.syms[i]):
- n_vars += 1
- self.n = n
- self.n_vars = n_vars
- self.varpos = <int *>malloc(n_vars*sizeof(int))
- j = 0
- for i from 0 <= i < n:
- if sym_isvar(self.syms[i]):
- self.varpos[j] = i
- j = j + 1
-
- def __dealloc__(self):
- free(self.syms)
- free(self.varpos)
-
- def __str__(self):
- strs = []
- cdef int i, s
- for i from 0 <= i < self.n:
- s = self.syms[i]
- strs.append(sym_tostring(s))
- return ' '.join(strs)
-
- def handle(self):
- """return a hashable representation that normalizes the ordering
- of the nonterminal indices"""
- norm = []
- cdef int i, j, s
- i = 1
- j = 0
- for j from 0 <= j < self.n:
- s = self.syms[j]
- if sym_isvar(s):
- s = sym_setindex(s,i)
- i = i + 1
- norm.append(s)
- return tuple(norm)
-
- def strhandle(self):
- strs = []
- norm = []
- cdef int i, j, s
- i = 1
- j = 0
- for j from 0 <= j < self.n:
- s = self.syms[j]
- if sym_isvar(s):
- s = sym_setindex(s,i)
- i = i + 1
- norm.append(sym_tostring(s))
- return ' '.join(norm)
-
- def arity(self):
- return self.n_vars
-
- def getvarpos(self, i):
- if 0 <= i < self.n_vars:
- return self.varpos[i]
- else:
- raise IndexError
-
- def getvar(self, i):
- if 0 <= i < self.n_vars:
- return self.syms[self.varpos[i]]
- else:
- raise IndexError
-
- cdef int chunkpos(self, int k):
- if k == 0:
- return 0
- else:
- return self.varpos[k-1]+1
-
- cdef int chunklen(self, int k):
- if self.n_vars == 0:
- return self.n
- elif k == 0:
- return self.varpos[0]
- elif k == self.n_vars:
- return self.n-self.varpos[k-1]-1
- else:
- return self.varpos[k]-self.varpos[k-1]-1
-
- def clen(self, k):
- return self.chunklen(k)
-
- def getchunk(self, ci):
- cdef int start, stop
- start = self.chunkpos(ci)
- stop = start+self.chunklen(ci)
- chunk = []
- for i from start <= i < stop:
- chunk.append(self.syms[i])
- return chunk
-
- def __cmp__(self, other):
- cdef Phrase otherp
- cdef int i
- otherp = other
- for i from 0 <= i < min(self.n, otherp.n):
- if self.syms[i] < otherp.syms[i]:
- return -1
- elif self.syms[i] > otherp.syms[i]:
- return 1
- if self.n < otherp.n:
- return -1
- elif self.n > otherp.n:
- return 1
- else:
- return 0
-
- def __hash__(self):
- cdef int i
- cdef unsigned h
- h = 0
- for i from 0 <= i < self.n:
- if self.syms[i] > 0:
- h = (h << 1) + self.syms[i]
- else:
- h = (h << 1) + -self.syms[i]
- return h
-
- def __len__(self):
- return self.n
-
- def __getitem__(self, i):
- return self.syms[i]
-
- def __iter__(self):
- cdef int i
- for i from 0 <= i < self.n:
- yield self.syms[i]
-
- def subst(self, start, children):
- cdef int i
- for i from 0 <= i < self.n:
- if sym_isvar(self.syms[i]):
- start = start + children[sym_getindex(self.syms[i])-1]
- else:
- start = start + (self.syms[i],)
- return start
-
- property words:
- def __get__(self):
- return [sym_tostring(w) for w in self if not sym_isvar(w)]
-
-cdef class Rule:
-
- def __cinit__(self, int lhs, Phrase f, Phrase e, scores=None, word_alignments=None):
- if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs)
- self.lhs = lhs
- self.f = f
- self.e = e
- self.word_alignments = word_alignments
- self.scores = scores
-
- def __hash__(self):
- return hash((self.lhs, self.f, self.e))
-
- def __cmp__(self, Rule other):
- return cmp((self.lhs, self.f, self.e, self.word_alignments),
- (other.lhs, other.f, other.e, self.word_alignments))
-
- def fmerge(self, Phrase f):
- if self.f == f:
- self.f = f
-
- def arity(self):
- return self.f.arity()
-
- def __str__(self):
- cdef unsigned i
- fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]
- if self.word_alignments is not None:
- fields.append(' '.join('%d-%d' % a for a in self.alignments()))
- return ' ||| '.join(fields)
-
- def alignments(self):
- for point in self.word_alignments:
- yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE
diff --git a/python/src/sa/rulefactory.pxi b/python/src/sa/rulefactory.pxi
deleted file mode 100644
index 10bb9737..00000000
--- a/python/src/sa/rulefactory.pxi
+++ /dev/null
@@ -1,2224 +0,0 @@
-# Implementation of the algorithms described in
-# Lopez, EMNLP-CoNLL 2007
-# Much faster than the Python numbers reported there.
-# Note to reader: this code is closer to C than Python
-import gc
-import itertools
-
-from libc.stdlib cimport malloc, realloc, free
-from libc.string cimport memset, memcpy
-from libc.math cimport fmod, ceil, floor, log
-
-from collections import defaultdict, Counter, namedtuple
-
-FeatureContext = namedtuple('FeatureContext',
- ['fphrase',
- 'ephrase',
- 'paircount',
- 'fcount',
- 'fsample_count',
- 'input_span',
- 'matches',
- 'input_match',
- 'test_sentence',
- 'f_text',
- 'e_text',
- 'meta',
- 'online'
- ])
-
-OnlineFeatureContext = namedtuple('OnlineFeatureContext',
- ['fcount',
- 'fsample_count',
- 'paircount',
- 'bilex_f',
- 'bilex_e',
- 'bilex_fe'
- ])
-
-cdef int PRECOMPUTE = 0
-cdef int MERGE = 1
-cdef int BAEZA_YATES = 2
-
-# NOTE: was encoded as a non-terminal in the previous version
-cdef int EPSILON = sym_fromstring('*EPS*', True)
-
-cdef class TrieNode:
- cdef public children
-
- def __cinit__(self):
- self.children = {}
-
-cdef class ExtendedTrieNode(TrieNode):
- cdef public phrase
- cdef public phrase_location
- cdef public suffix_link
-
- def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None):
- self.phrase = phrase
- self.phrase_location = phrase_location
- self.suffix_link = suffix_link
-
-
-cdef class TrieTable:
- cdef public int extended
- cdef public int count
- cdef public root
- def __cinit__(self, extended=False):
- self.count = 0
- self.extended = extended
- if extended:
- self.root = ExtendedTrieNode()
- else:
- self.root = TrieNode()
-
-# linked list structure for storing matches in BaselineRuleFactory
-cdef struct match_node:
- int* match
- match_node* next
-
-# encodes information needed to find a (hierarchical) phrase
-# in the text. If phrase is contiguous, that's just a range
-# in the suffix array; if discontiguous, it is the set of
-# actual locations (packed into an array)
-cdef class PhraseLocation:
- cdef int sa_low
- cdef int sa_high
- cdef int arr_low
- cdef int arr_high
- cdef IntList arr
- cdef int num_subpatterns
-
- # returns true if sent_id is contained
- cdef int contains(self, int sent_id):
- return 1
-
- def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1,
- arr=None, int num_subpatterns=1):
- self.sa_low = sa_low
- self.sa_high = sa_high
- self.arr_low = arr_low
- self.arr_high = arr_high
- self.arr = arr
- self.num_subpatterns = num_subpatterns
-
-
-cdef class Sampler:
- '''A Sampler implements a logic for choosing
- samples from a population range'''
-
- cdef int sample_size
- cdef IntList sa
-
- def __cinit__(self, int sample_size, SuffixArray fsarray):
- self.sample_size = sample_size
- self.sa = fsarray.sa
- if sample_size > 0:
- logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)
- else:
- logger.info("Sampling strategy: no sampling")
-
- def sample(self, PhraseLocation phrase_location):
- '''Returns a sample of the locations for
- the phrase. If there are less than self.sample_size
- locations, return all of them; otherwise, return
- up to self.sample_size locations. In the latter case,
- we choose to sample UNIFORMLY -- that is, the locations
- are chosen at uniform intervals over the entire set, rather
- than randomly. This makes the algorithm deterministic, which
- is good for things like MERT'''
- cdef IntList sample
- cdef double i, stepsize
- cdef int num_locations, val, j
-
- sample = IntList()
- if phrase_location.arr is None:
- num_locations = phrase_location.sa_high - phrase_location.sa_low
- if self.sample_size == -1 or num_locations <= self.sample_size:
- sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations)
- else:
- stepsize = float(num_locations)/float(self.sample_size)
- i = phrase_location.sa_low
- while i < phrase_location.sa_high and sample.len < self.sample_size:
- '''Note: int(i) not guaranteed to have the desired
- effect, according to the python documentation'''
- if fmod(i,1.0) > 0.5:
- val = int(ceil(i))
- else:
- val = int(floor(i))
- sample._append(self.sa.arr[val])
- i = i + stepsize
- else:
- num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns
- if self.sample_size == -1 or num_locations <= self.sample_size:
- sample = phrase_location.arr
- else:
- stepsize = float(num_locations)/float(self.sample_size)
- i = phrase_location.arr_low
- while i < num_locations and sample.len < self.sample_size * phrase_location.num_subpatterns:
- '''Note: int(i) not guaranteed to have the desired
- effect, according to the python documentation'''
- if fmod(i,1.0) > 0.5:
- val = int(ceil(i))
- else:
- val = int(floor(i))
- j = phrase_location.arr_low + (val*phrase_location.num_subpatterns)
- sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)
- i = i + stepsize
- return sample
-
-
-# struct used to encapsulate a single matching
-cdef struct Matching:
- int* arr
- int start
- int end
- int sent_id
- int size
-
-
-cdef void assign_matching(Matching* m, int* arr, int start, int step, int* sent_id_arr):
- m.arr = arr
- m.start = start
- m.end = start + step
- m.sent_id = sent_id_arr[arr[start]]
- m.size = step
-
-
-cdef int* append_combined_matching(int* arr, Matching* loc1, Matching* loc2,
- int offset_by_one, int num_subpatterns, int* result_len):
- cdef int i, new_len
-
- new_len = result_len[0] + num_subpatterns
- arr = <int*> realloc(arr, new_len*sizeof(int))
-
- for i from 0 <= i < loc1.size:
- arr[result_len[0]+i] = loc1.arr[loc1.start+i]
- if num_subpatterns > loc1.size:
- arr[new_len-1] = loc2.arr[loc2.end-1]
- result_len[0] = new_len
- return arr
-
-
-cdef int* extend_arr(int* arr, int* arr_len, int* appendix, int appendix_len):
- cdef int new_len
-
- new_len = arr_len[0] + appendix_len
- arr = <int*> realloc(arr, new_len*sizeof(int))
- memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))
- arr_len[0] = new_len
- return arr
-
-cdef int median(int low, int high, int step):
- return low + (((high - low)/step)/2)*step
-
-
-cdef void find_comparable_matchings(int low, int high, int* arr, int step, int loc, int* loc_minus, int* loc_plus):
- # Returns (minus, plus) indices for the portion of the array
- # in which all matchings have the same first index as the one
- # starting at loc
- loc_plus[0] = loc + step
- while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]:
- loc_plus[0] = loc_plus[0] + step
- loc_minus[0] = loc
- while loc_minus[0]-step >= low and arr[loc_minus[0]-step] == arr[loc]:
- loc_minus[0] = loc_minus[0] - step
-
-
-cdef class HieroCachingRuleFactory:
- '''This RuleFactory implements a caching
- method using TrieTable, which makes phrase
- generation somewhat speedier -- phrases only
- need to be extracted once (however, it is
- quite possible they need to be scored
- for each input sentence, for contextual models)'''
-
- cdef TrieTable rules
- cdef Sampler sampler
- cdef Scorer scorer
-
- cdef int max_chunks
- cdef int max_target_chunks
- cdef int max_length
- cdef int max_target_length
- cdef int max_nonterminals
- cdef int max_initial_size
- cdef int train_max_initial_size
- cdef int min_gap_size
- cdef int train_min_gap_size
- cdef int category
-
- cdef precomputed_index
- cdef precomputed_collocations
- cdef precompute_file
- cdef max_rank
- cdef int precompute_rank, precompute_secondary_rank
- cdef bint use_baeza_yates
- cdef bint use_index
- cdef bint use_collocations
- cdef float by_slack_factor
-
- cdef prev_norm_prefix
- cdef float extract_time
- cdef float intersect_time
- cdef SuffixArray fsa
- cdef DataArray fda
- cdef DataArray eda
-
- cdef Alignment alignment
- cdef IntList eid2symid
- cdef IntList fid2symid
- cdef bint tight_phrases
- cdef bint require_aligned_terminal
- cdef bint require_aligned_chunks
-
- cdef IntList findexes
- cdef IntList findexes1
-
- cdef bint online
- cdef samples_f
- cdef phrases_f
- cdef phrases_e
- cdef phrases_fe
- cdef phrases_al
- cdef bilex_f
- cdef bilex_e
- cdef bilex_fe
-
- def __cinit__(self,
- # compiled alignment object (REQUIRED)
- Alignment alignment,
- # parameter for double-binary search; doesn't seem to matter much
- float by_slack_factor=1.0,
- # name of generic nonterminal used by Hiero
- char* category="[X]",
- # maximum number of contiguous chunks of terminal symbols in RHS of a rule. If None, defaults to max_nonterminals+1
- max_chunks=None,
- # maximum span of a grammar rule in TEST DATA
- unsigned max_initial_size=10,
- # maximum number of symbols (both T and NT) allowed in a rule
- unsigned max_length=5,
- # maximum number of nonterminals allowed in a rule (set >2 at your own risk)
- unsigned max_nonterminals=2,
- # maximum number of contiguous chunks of terminal symbols in target-side RHS of a rule. If None, defaults to max_nonterminals+1
- max_target_chunks=None,
- # maximum number of target side symbols (both T and NT) allowed in a rule. If None, defaults to max_initial_size
- max_target_length=None,
- # minimum span of a nonterminal in the RHS of a rule in TEST DATA
- unsigned min_gap_size=2,
- # filename of file containing precomputed collocations
- precompute_file=None,
- # maximum frequency rank of patterns used to compute triples (don't set higher than 20).
- unsigned precompute_secondary_rank=20,
- # maximum frequency rank of patterns used to compute collocations (no need to set higher than maybe 200-300)
- unsigned precompute_rank=100,
- # require extracted rules to have at least one aligned word
- bint require_aligned_terminal=True,
- # require each contiguous chunk of extracted rules to have at least one aligned word
- bint require_aligned_chunks=False,
- # maximum span of a grammar rule extracted from TRAINING DATA
- unsigned train_max_initial_size=10,
- # minimum span of an RHS nonterminal in a rule extracted from TRAINING DATA
- unsigned train_min_gap_size=2,
- # False if phrases should be loose (better but slower), True otherwise
- bint tight_phrases=True,
- # True to require use of double-binary alg, false otherwise
- bint use_baeza_yates=True,
- # True to enable used of precomputed collocations
- bint use_collocations=True,
- # True to enable use of precomputed inverted indices
- bint use_index=True):
- '''Note: we make a distinction between the min_gap_size
- and max_initial_size used in test and train. The latter
- are represented by train_min_gap_size and train_max_initial_size,
- respectively. This is because Chiang's model does not require
- them to be the same, therefore we don't either.'''
- self.rules = TrieTable(True) # cache
- self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())
- if alignment is None:
- raise Exception("Must specify an alignment object")
- self.alignment = alignment
-
- # grammar parameters and settings
- # NOTE: setting max_nonterminals > 2 is not currently supported in Hiero
- self.max_length = max_length
- self.max_nonterminals = max_nonterminals
- self.max_initial_size = max_initial_size
- self.train_max_initial_size = train_max_initial_size
- self.min_gap_size = min_gap_size
- self.train_min_gap_size = train_min_gap_size
- self.category = sym_fromstring(category, False)
-
- if max_chunks is None:
- self.max_chunks = self.max_nonterminals + 1
- else:
- self.max_chunks = max_chunks
-
- if max_target_chunks is None:
- self.max_target_chunks = self.max_nonterminals + 1
- else:
- self.max_target_chunks = max_target_chunks
-
- if max_target_length is None:
- self.max_target_length = max_initial_size
- else:
- self.max_target_length = max_target_length
-
- # algorithmic parameters and settings
- self.precomputed_collocations = {}
- self.precomputed_index = {}
- self.use_index = use_index
- self.use_collocations = use_collocations
- self.max_rank = {}
- self.precompute_file = precompute_file
- self.precompute_rank = precompute_rank
- self.precompute_secondary_rank = precompute_secondary_rank
- self.use_baeza_yates = use_baeza_yates
- self.by_slack_factor = by_slack_factor
- self.tight_phrases = tight_phrases
-
- if require_aligned_chunks:
- # one condition is a stronger version of the other.
- self.require_aligned_chunks = self.require_aligned_terminal = True
- elif require_aligned_terminal:
- self.require_aligned_chunks = False
- self.require_aligned_terminal = True
- else:
- self.require_aligned_chunks = self.require_aligned_terminal = False
-
- # diagnostics
- self.prev_norm_prefix = ()
-
- self.findexes = IntList(initial_len=10)
- self.findexes1 = IntList(initial_len=10)
-
- # Online stats
-
- # True after data is added
- self.online = False
-
- # Keep track of everything that can be sampled:
- self.samples_f = defaultdict(int)
-
- # Phrase counts
- self.phrases_f = defaultdict(int)
- self.phrases_e = defaultdict(int)
- self.phrases_fe = defaultdict(lambda: defaultdict(int))
- self.phrases_al = defaultdict(lambda: defaultdict(tuple))
-
- # Bilexical counts
- self.bilex_f = defaultdict(int)
- self.bilex_e = defaultdict(int)
- self.bilex_fe = defaultdict(lambda: defaultdict(int))
-
- def configure(self, SuffixArray fsarray, DataArray edarray,
- Sampler sampler, Scorer scorer):
- '''This gives the RuleFactory access to the Context object.
- Here we also use it to precompute the most expensive intersections
- in the corpus quickly.'''
- self.fsa = fsarray
- self.fda = fsarray.darray
- self.eda = edarray
- self.fid2symid = self.set_idmap(self.fda)
- self.eid2symid = self.set_idmap(self.eda)
- self.precompute()
- self.sampler = sampler
- self.scorer = scorer
-
- cdef set_idmap(self, DataArray darray):
- cdef int word_id, new_word_id, N
- cdef IntList idmap
-
- N = len(darray.id2word)
- idmap = IntList(initial_len=N)
- for word_id from 0 <= word_id < N:
- new_word_id = sym_fromstring(darray.id2word[word_id], True)
- idmap.arr[word_id] = new_word_id
- return idmap
-
-
- def pattern2phrase(self, pattern):
- # pattern is a tuple, which we must convert to a hiero Phrase
- result = ()
- arity = 0
- for word_id in pattern:
- if word_id == -1:
- arity = arity + 1
- new_id = sym_setindex(self.category, arity)
- else:
- new_id = sym_fromstring(self.fda.id2word[word_id], True)
- result = result + (new_id,)
- return Phrase(result)
-
- def pattern2phrase_plus(self, pattern):
- # returns a list containing both the pattern, and pattern
- # suffixed/prefixed with the NT category.
- patterns = []
- result = ()
- arity = 0
- for word_id in pattern:
- if word_id == -1:
- arity = arity + 1
- new_id = sym_setindex(self.category, arity)
- else:
- new_id = sym_fromstring(self.fda.id2word[word_id], True)
- result = result + (new_id,)
- patterns.append(Phrase(result))
- patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))
- patterns.append(Phrase((sym_setindex(self.category, 1),) + result))
- return patterns
-
- def precompute(self):
- cdef Precomputation pre
-
- if self.precompute_file is not None:
- start_time = monitor_cpu()
- logger.info("Reading precomputed data from file %s... ", self.precompute_file)
- pre = Precomputation(from_binary=self.precompute_file)
- # check parameters of precomputation -- some are critical and some are not
- if pre.max_nonterminals != self.max_nonterminals:
- logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)
- if pre.max_length != self.max_length:
- logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)
- if pre.train_max_initial_size != self.train_max_initial_size:
- raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))
- if pre.train_min_gap_size != self.train_min_gap_size:
- raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))
- if self.use_index:
- logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))
- for pattern, arr in pre.precomputed_index.iteritems():
- phrases = self.pattern2phrase_plus(pattern)
- for phrase in phrases:
- self.precomputed_index[phrase] = arr
- if self.use_collocations:
- logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))
- for pattern, arr in pre.precomputed_collocations.iteritems():
- phrase = self.pattern2phrase(pattern)
- self.precomputed_collocations[phrase] = arr
- stop_time = monitor_cpu()
- logger.info("Processing precomputations took %f seconds", stop_time - start_time)
-
-
- def get_precomputed_collocation(self, phrase):
- if phrase in self.precomputed_collocations:
- arr = self.precomputed_collocations[phrase]
- return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)
- return None
-
-
- cdef int* baeza_yates_helper(self, int low1, int high1, int* arr1, int step1,
- int low2, int high2, int* arr2, int step2,
- int offset_by_one, int len_last, int num_subpatterns, int* result_len):
- cdef int i1, i2, j1, j2, med1, med2, med1_plus, med1_minus, med2_minus, med2_plus
- cdef int d_first, qsetsize, dsetsize, tmp, search_low, search_high
- cdef int med_result_len, low_result_len, high_result_len
- cdef long comparison
- cdef int* result
- cdef int* low_result
- cdef int* med_result
- cdef int* high_result
- cdef Matching loc1, loc2
-
- result = <int*> malloc(0*sizeof(int*))
-
- d_first = 0
- if high1 - low1 > high2 - low2:
- d_first = 1
-
- # First, check to see if we are at any of the recursive base cases
- # Case 1: one of the sets is empty
- if low1 >= high1 or low2 >= high2:
- return result
-
- # Case 2: sets are non-overlapping
- assign_matching(&loc1, arr1, high1-step1, step1, self.fda.sent_id.arr)
- assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr)
- if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == -1:
- return result
-
- assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr)
- assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr)
- if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- return result
-
- # Case 3: query set and data set do not meet size mismatch constraints;
- # We use mergesort instead in this case
- qsetsize = (high1-low1) / step1
- dsetsize = (high2-low2) / step2
- if d_first:
- tmp = qsetsize
- qsetsize = dsetsize
- dsetsize = tmp
-
- if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize:
- free(result)
- return self.merge_helper(low1, high1, arr1, step1, low2, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, result_len)
-
- # binary search. There are two flavors, depending on
- # whether the queryset or dataset is first
- if d_first:
- med2 = median(low2, high2, step2)
- assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
-
- search_low = low1
- search_high = high1
- while search_low < search_high:
- med1 = median(search_low, search_high, step1)
- find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
- comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- if comparison == -1:
- search_low = med1_plus
- elif comparison == 1:
- search_high = med1_minus
- else:
- break
- else:
- med1 = median(low1, high1, step1)
- find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)
-
- search_low = low2
- search_high = high2
- while search_low < search_high:
- med2 = median(search_low, search_high, step2)
- assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)
- comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)
- if comparison == -1:
- search_high = med2
- elif comparison == 1:
- search_low = med2 + step2
- else:
- break
-
- med_result_len = 0
- med_result = <int*> malloc(0*sizeof(int*))
- if search_high > search_low:
- # Then there is a match for the median element of Q
- # What we want to find is the group of all bindings in the first set
- # s.t. their first element == the first element of med1. Then we
- # want to store the bindings for all of those elements. We can
- # subsequently throw all of them away.
- med2_minus = med2
- med2_plus = med2 + step2
- i1 = med1_minus
- while i1 < med1_plus:
- assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- while med2_minus-step2 >= low2:
- assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)
- if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1:
- med2_minus = med2_minus - step2
- else:
- break
- i2 = med2_minus
- while i2 < high2:
- assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- if comparison == 0:
- pass
- med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)
- if comparison == -1:
- break
- i2 = i2 + step2
- if i2 > med2_plus:
- med2_plus = i2
- i1 = i1 + step1
-
- tmp = med1_minus
- med1_minus = med1_plus
- med1_plus = tmp
- else:
- # No match; need to figure out the point of division in D and Q
- med2_minus = med2
- med2_plus = med2
- if d_first:
- med2_minus = med2_minus + step2
- if comparison == -1:
- med1_minus = med1_plus
- if comparison == 1:
- med1_plus = med1_minus
- else:
- tmp = med1_minus
- med1_minus = med1_plus
- med1_plus = tmp
- if comparison == 1:
- med2_minus = med2_minus + step2
- med2_plus = med2_plus + step2
-
- low_result_len = 0
- low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len)
- high_result_len = 0
- high_result = self.baeza_yates_helper(med1_minus, high1, arr1, step1, med2_minus, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, &high_result_len)
-
- result = extend_arr(result, result_len, low_result, low_result_len)
- result = extend_arr(result, result_len, med_result, med_result_len)
- result = extend_arr(result, result_len, high_result, high_result_len)
- free(low_result)
- free(med_result)
- free(high_result)
-
- return result
-
-
-
- cdef long compare_matchings_set(self, int i1_minus, int i1_plus, int* arr1, int step1,
- Matching* loc2, int offset_by_one, int len_last):
- """
- Compares a *set* of bindings, all with the same first element,
- to a single binding. Returns -1 if all comparisons == -1, 1 if all
- comparisons == 1, and 0 otherwise.
- """
- cdef int i1, comparison, prev_comparison
- cdef Matching l1_stack
- cdef Matching* loc1
-
- loc1 = &l1_stack
-
- i1 = i1_minus
- while i1 < i1_plus:
- assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)
- comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)
- if comparison == 0:
- prev_comparison = 0
- break
- elif i1 == i1_minus:
- prev_comparison = comparison
- else:
- if comparison != prev_comparison:
- prev_comparison = 0
- break
- i1 = i1 + step1
- return prev_comparison
-
-
- cdef long compare_matchings(self, Matching* loc1, Matching* loc2, int offset_by_one, int len_last):
- cdef int i
-
- if loc1.sent_id > loc2.sent_id:
- return 1
- if loc2.sent_id > loc1.sent_id:
- return -1
-
- if loc1.size == 1 and loc2.size == 1:
- if loc2.arr[loc2.start] - loc1.arr[loc1.start] <= self.train_min_gap_size:
- return 1
-
- elif offset_by_one:
- for i from 1 <= i < loc1.size:
- if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:
- return 1
- if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]:
- return -1
-
- else:
- if loc1.arr[loc1.start]+1 > loc2.arr[loc2.start]:
- return 1
- if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]:
- return -1
-
- for i from 1 <= i < loc1.size:
- if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]:
- return 1
- if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]:
- return -1
-
- if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size:
- return -1
- return 0
-
-
- cdef int* merge_helper(self, int low1, int high1, int* arr1, int step1,
- int low2, int high2, int* arr2, int step2,
- int offset_by_one, int len_last, int num_subpatterns, int* result_len):
- cdef int i1, i2, j1, j2
- cdef long comparison
- cdef int* result
- cdef Matching loc1, loc2
-
- result_len[0] = 0
- result = <int*> malloc(0*sizeof(int))
-
- i1 = low1
- i2 = low2
- while i1 < high1 and i2 < high2:
-
- # First, pop all unneeded loc2's off the stack
- assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- while i2 < high2:
- assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)
- if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:
- i2 = i2 + step2
- else:
- break
-
- # Next: process all loc1's with the same starting val
- j1 = i1
- while i1 < high1 and arr1[j1] == arr1[i1]:
- assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)
- j2 = i2
- while j2 < high2:
- assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)
- comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)
- if comparison == 0:
- result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len)
- if comparison == 1:
- pass
- if comparison == -1:
- break
- else:
- j2 = j2 + step2
- i1 = i1 + step1
- return result
-
-
- cdef void sort_phrase_loc(self, IntList arr, PhraseLocation loc, Phrase phrase):
- cdef int i, j
- cdef VEB veb
- cdef IntList result
-
- if phrase in self.precomputed_index:
- loc.arr = self.precomputed_index[phrase]
- else:
- loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)
- veb = VEB(arr.len)
- for i from loc.sa_low <= i < loc.sa_high:
- veb._insert(arr.arr[i])
- i = veb.veb.min_val
- for j from 0 <= j < loc.sa_high-loc.sa_low:
- loc.arr.arr[j] = i
- i = veb._findsucc(i)
- loc.arr_low = 0
- loc.arr_high = loc.arr.len
-
-
- cdef intersect_helper(self, Phrase prefix, Phrase suffix,
- PhraseLocation prefix_loc, PhraseLocation suffix_loc, int algorithm):
-
- cdef IntList arr1, arr2, result
- cdef int low1, high1, step1, low2, high2, step2, offset_by_one, len_last, num_subpatterns, result_len
- cdef int* result_ptr
-
- result_len = 0
-
- if sym_isvar(suffix[0]):
- offset_by_one = 1
- else:
- offset_by_one = 0
-
- len_last = len(suffix.getchunk(suffix.arity()))
-
- if prefix_loc.arr is None:
- self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)
- arr1 = prefix_loc.arr
- low1 = prefix_loc.arr_low
- high1 = prefix_loc.arr_high
- step1 = prefix_loc.num_subpatterns
-
- if suffix_loc.arr is None:
- self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix)
- arr2 = suffix_loc.arr
- low2 = suffix_loc.arr_low
- high2 = suffix_loc.arr_high
- step2 = suffix_loc.num_subpatterns
-
- num_subpatterns = prefix.arity()+1
-
- if algorithm == MERGE:
- result_ptr = self.merge_helper(low1, high1, arr1.arr, step1,
- low2, high2, arr2.arr, step2,
- offset_by_one, len_last, num_subpatterns, &result_len)
- else:
- result_ptr = self.baeza_yates_helper(low1, high1, arr1.arr, step1,
- low2, high2, arr2.arr, step2,
- offset_by_one, len_last, num_subpatterns, &result_len)
-
- if result_len == 0:
- free(result_ptr)
- return None
- else:
- result = IntList()
- free(result.arr)
- result.arr = result_ptr
- result.len = result_len
- result.size = result_len
- return PhraseLocation(arr_low=0, arr_high=result_len, arr=result, num_subpatterns=num_subpatterns)
-
- cdef loc2str(self, PhraseLocation loc):
- cdef int i, j
- result = "{"
- i = 0
- while i < loc.arr_high:
- result = result + "("
- for j from i <= j < i + loc.num_subpatterns:
- result = result + ("%d " %loc.arr[j])
- result = result + ")"
- i = i + loc.num_subpatterns
- result = result + "}"
- return result
-
- cdef PhraseLocation intersect(self, prefix_node, suffix_node, Phrase phrase):
- cdef Phrase prefix, suffix
- cdef PhraseLocation prefix_loc, suffix_loc, result
-
- prefix = prefix_node.phrase
- suffix = suffix_node.phrase
- prefix_loc = prefix_node.phrase_location
- suffix_loc = suffix_node.phrase_location
-
- result = self.get_precomputed_collocation(phrase)
- if result is not None:
- intersect_method = "precomputed"
-
- if result is None:
- if self.use_baeza_yates:
- result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)
- intersect_method="double binary"
- else:
- result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)
- intersect_method="merge"
- return result
-
- def advance(self, frontier, res, fwords):
- cdef unsigned na
- nf = []
- for toskip, (i, alt, pathlen) in frontier:
- spanlen = fwords[i][alt][2]
- if toskip == 0:
- res.append((i, alt, pathlen))
- ni = i + spanlen
- if ni < len(fwords) and pathlen + 1 < self.max_initial_size:
- for na in range(len(fwords[ni])):
- nf.append((toskip - 1, (ni, na, pathlen + 1)))
- if len(nf) > 0:
- return self.advance(nf, res, fwords)
- else:
- return res
-
- def get_all_nodes_isteps_away(self, skip, i, spanlen, pathlen, fwords, next_states, reachable_buffer):
- cdef unsigned alt_it
- frontier = []
- if i+spanlen+skip >= len(next_states):
- return frontier
- key = tuple([i,spanlen])
- reachable = []
- if key in reachable_buffer:
- reachable = reachable_buffer[key]
- else:
- reachable = self.reachable(fwords, i, spanlen)
- reachable_buffer[key] = reachable
- for nextreachable in reachable:
- for next_id in next_states[nextreachable]:
- jump = self.shortest(fwords,i,next_id)
- if jump < skip:
- continue
- if pathlen+jump <= self.max_initial_size:
- for alt_id in range(len(fwords[next_id])):
- if fwords[next_id][alt_id][0] != EPSILON:
- newel = (next_id,alt_id,pathlen+jump)
- if newel not in frontier:
- frontier.append((next_id,alt_id,pathlen+jump))
- return frontier
-
- def reachable(self, fwords, ifrom, dist):
- ret = []
- if ifrom >= len(fwords):
- return ret
- for alt_id in range(len(fwords[ifrom])):
- if fwords[ifrom][alt_id][0] == EPSILON:
- ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))
- else:
- if dist == 0:
- if ifrom not in ret:
- ret.append(ifrom)
- else:
- for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1):
- if ifromchild not in ret:
- ret.append(ifromchild)
-
- return ret
-
- def shortest(self, fwords, ifrom, ito):
- cdef unsigned alt_id
- min = 1000
- if ifrom > ito:
- return min
- if ifrom == ito:
- return 0
- for alt_id in range(len(fwords[ifrom])):
- currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito)
- if fwords[ifrom][alt_id][0] != EPSILON:
- currmin += 1
- if currmin < min:
- min = currmin
- return min
-
- def get_next_states(self, _columns, curr_idx, min_dist=2):
- result = []
- candidate = [[curr_idx,0]]
-
- while len(candidate) > 0:
- curr = candidate.pop()
- if curr[0] >= len(_columns):
- continue
- if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:
- result.append(curr[0]);
- curr_col = _columns[curr[0]]
- for alt in curr_col:
- next_id = curr[0]+alt[2]
- jump = 1
- if alt[0] == EPSILON:
- jump = 0
- if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:
- candidate.append([next_id,curr[1]+jump])
- return sorted(result);
-
- def input(self, fwords, meta):
- '''When this function is called on the RuleFactory,
- it looks up all of the rules that can be used to translate
- the input sentence'''
- cdef int i, j, k, flen, arity, num_subpatterns, num_samples, alt, alt_id, nualt
- cdef float start_time
- cdef PhraseLocation phrase_location
- cdef IntList sample, chunklen
- cdef Matching matching
- cdef Phrase hiero_phrase
-
- flen = len(fwords)
- start_time = monitor_cpu()
- self.extract_time = 0.0
- self.intersect_time = 0.0
- nodes_isteps_away_buffer = {}
- hit = 0
- reachable_buffer = {}
-
- # Phrase pairs processed by suffix array extractor. Do not re-extract
- # during online extraction. This is probably the hackiest part of
- # online grammar extraction.
- seen_phrases = set()
-
- # Do not cache between sentences
- self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())
-
- frontier = []
- for i in range(len(fwords)):
- for alt in range(0, len(fwords[i])):
- if fwords[i][alt][0] != EPSILON:
- frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))
-
- xroot = None
- x1 = sym_setindex(self.category, 1)
- if x1 in self.rules.root.children:
- xroot = self.rules.root.children[x1]
- else:
- xroot = ExtendedTrieNode(suffix_link=self.rules.root, phrase_location=PhraseLocation())
- self.rules.root.children[x1] = xroot
-
- for i in range(self.min_gap_size, len(fwords)):
- for alt in range(0, len(fwords[i])):
- if fwords[i][alt][0] != EPSILON:
- frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))
-
- next_states = []
- for i in range(len(fwords)):
- next_states.append(self.get_next_states(fwords,i,self.min_gap_size))
-
- while len(frontier) > 0:
- new_frontier = []
- for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:
- word_id = fwords[i][alt][0]
- spanlen = fwords[i][alt][2]
- # TODO get rid of k -- pathlen is replacing it
- if word_id == EPSILON:
- # skipping because word_id is epsilon
- if i+spanlen >= len(fwords):
- continue
- for nualt in range(0,len(fwords[i+spanlen])):
- frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path))
- continue
-
- phrase = prefix + (word_id,)
- hiero_phrase = Phrase(phrase)
- arity = hiero_phrase.arity()
-
- lookup_required = False
- if word_id in node.children:
- if node.children[word_id] is None:
- # Path dead-ends at this node
- continue
- else:
- # Path continues at this node
- node = node.children[word_id]
- else:
- if node.suffix_link is None:
- # Current node is root; lookup required
- lookup_required = True
- else:
- if word_id in node.suffix_link.children:
- if node.suffix_link.children[word_id] is None:
- # Suffix link reports path is dead end
- node.children[word_id] = None
- continue
- else:
- # Suffix link indicates lookup is reqired
- lookup_required = True
- else:
- #ERROR: We never get here
- raise Exception("Keyword trie error")
- # checking whether lookup_required
- if lookup_required:
- new_node = None
- if is_shadow_path:
- # Extending shadow path
- # on the shadow path we don't do any search, we just use info from suffix link
- new_node = ExtendedTrieNode(phrase_location=node.suffix_link.children[word_id].phrase_location,
- suffix_link=node.suffix_link.children[word_id],
- phrase=hiero_phrase)
- else:
- if arity > 0:
- # Intersecting because of arity > 0
- intersect_start_time = monitor_cpu()
- phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)
- intersect_stop_time = monitor_cpu()
- self.intersect_time += intersect_stop_time - intersect_start_time
- else:
- # Suffix array search
- phrase_location = node.phrase_location
- sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)
- if sa_range is not None:
- phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1])
- else:
- phrase_location = None
-
- if phrase_location is None:
- node.children[word_id] = None
- # Search failed
- continue
- # Search succeeded
- suffix_link = self.rules.root
- if node.suffix_link is not None:
- suffix_link = node.suffix_link.children[word_id]
- new_node = ExtendedTrieNode(phrase_location=phrase_location,
- suffix_link=suffix_link,
- phrase=hiero_phrase)
- node.children[word_id] = new_node
- node = new_node
-
- '''Automatically add a trailing X node, if allowed --
- This should happen before we get to extraction (so that
- the node will exist if needed)'''
- if arity < self.max_nonterminals:
- xcat_index = arity+1
- xcat = sym_setindex(self.category, xcat_index)
- suffix_link_xcat_index = xcat_index
- if is_shadow_path:
- suffix_link_xcat_index = xcat_index-1
- suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)
- node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,
- suffix_link=node.suffix_link.children[suffix_link_xcat],
- phrase= Phrase(phrase + (xcat,)))
-
- # sample from range
- if not is_shadow_path:
- sample = self.sampler.sample(node.phrase_location)
- num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns
- chunklen = IntList(initial_len=num_subpatterns)
- for j from 0 <= j < num_subpatterns:
- chunklen.arr[j] = hiero_phrase.chunklen(j)
- extracts = []
- j = 0
- extract_start = monitor_cpu()
- while j < sample.len:
- extract = []
-
- assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr)
- loc = tuple(sample[j:j+num_subpatterns])
- extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)
- extracts.extend([(e, loc) for e in extract])
- j = j + num_subpatterns
-
- num_samples = sample.len/num_subpatterns
- extract_stop = monitor_cpu()
- self.extract_time = self.extract_time + extract_stop - extract_start
- if len(extracts) > 0:
- fcount = Counter()
- fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
- for (f, e, count, als), loc in extracts:
- fcount[f] += count
- fphrases[f][e][als].append(loc)
- for f, elist in fphrases.iteritems():
- for e, alslist in elist.iteritems():
- alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))
- locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))
- count = len(locs)
- scores = self.scorer.score(FeatureContext(
- f, e, count, fcount[f], num_samples,
- (k,i+spanlen), locs, input_match,
- fwords, self.fda, self.eda,
- meta,
- # Include online stats. None if none.
- self.online_ctx_lookup(f, e)))
- # Phrase pair processed
- if self.online:
- seen_phrases.add((f, e))
- yield Rule(self.category, f, e, scores, alignment)
-
- if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size:
- for alt_id in range(len(fwords[i+spanlen])):
- new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))
- num_subpatterns = arity
- if not is_shadow_path:
- num_subpatterns = num_subpatterns + 1
- if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:
- xcat = sym_setindex(self.category, arity+1)
- xnode = node.children[xcat]
- # I put spanlen=1 below
- key = tuple([self.min_gap_size, i, 1, pathlen])
- frontier_nodes = []
- if key in nodes_isteps_away_buffer:
- frontier_nodes = nodes_isteps_away_buffer[key]
- else:
- frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer)
- nodes_isteps_away_buffer[key] = frontier_nodes
-
- for i, alt, pathlen in frontier_nodes:
- new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path))
- frontier = new_frontier
-
- # Online rule extraction and scoring
- if self.online:
- f_syms = tuple(word[0][0] for word in fwords)
- for f, lex_i, lex_j in self.get_f_phrases(f_syms):
- spanlen = (lex_j - lex_i) + 1
- if not sym_isvar(f[0]):
- spanlen += 1
- if not sym_isvar(f[1]):
- spanlen += 1
- for e in self.phrases_fe.get(f, ()):
- if (f, e) not in seen_phrases:
- # Don't add multiple instances of the same phrase here
- seen_phrases.add((f, e))
- scores = self.scorer.score(FeatureContext(
- f, e, 0, 0, 0,
- spanlen, None, None,
- fwords, self.fda, self.eda,
- meta,
- self.online_ctx_lookup(f, e)))
- alignment = self.phrases_al[f][e]
- yield Rule(self.category, f, e, scores, alignment)
-
- stop_time = monitor_cpu()
- logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))
- gc.collect()
- logger.info(" Extract time = %f seconds", self.extract_time)
- logger.info(" Intersect time = %f seconds", self.intersect_time)
-
-
- cdef int find_fixpoint(self,
- int f_low, f_high,
- int* f_links_low, int* f_links_high,
- int* e_links_low, int* e_links_high,
- int e_in_low, int e_in_high,
- int* e_low, int* e_high,
- int* f_back_low, int* f_back_high,
- int f_sent_len, int e_sent_len,
- int max_f_len, int max_e_len,
- int min_fx_size, int min_ex_size,
- int max_new_x,
- int allow_low_x, int allow_high_x,
- int allow_arbitrary_x, int write_log):
- cdef int e_low_prev, e_high_prev, f_low_prev, f_high_prev, new_x, new_low_x, new_high_x
-
- e_low[0] = e_in_low
- e_high[0] = e_in_high
- self.find_projection(f_low, f_high, f_links_low, f_links_high, e_low, e_high)
- if e_low[0] == -1:
- # low-priority corner case: if phrase w is unaligned,
- # but we don't require aligned terminals, then returning
- # an error here might prevent extraction of allowed
- # rule X -> X_1 w X_2 / X_1 X_2. This is probably
- # not worth the bother, though.
- return 0
- elif e_in_low != -1 and e_low[0] != e_in_low:
- if e_in_low - e_low[0] < min_ex_size:
- e_low[0] = e_in_low - min_ex_size
- if e_low[0] < 0:
- return 0
-
- if e_high[0] - e_low[0] > max_e_len:
- return 0
- elif e_in_high != -1 and e_high[0] != e_in_high:
- if e_high[0] - e_in_high < min_ex_size:
- e_high[0] = e_in_high + min_ex_size
- if e_high[0] > e_sent_len:
- return 0
-
- f_back_low[0] = -1
- f_back_high[0] = -1
- f_low_prev = f_low
- f_high_prev = f_high
- new_x = 0
- new_low_x = 0
- new_high_x = 0
-
- while True:
-
- if f_back_low[0] == -1:
- self.find_projection(e_low[0], e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)
- else:
- self.find_projection(e_low[0], e_low_prev, e_links_low, e_links_high, f_back_low, f_back_high)
- self.find_projection(e_high_prev, e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)
-
- if f_back_low[0] > f_low:
- f_back_low[0] = f_low
-
- if f_back_high[0] < f_high:
- f_back_high[0] = f_high
-
- if f_back_low[0] == f_low_prev and f_back_high[0] == f_high_prev:
- return 1
-
- if allow_low_x == 0 and f_back_low[0] < f_low:
- # FAIL: f phrase is not tight
- return 0
-
- if f_back_high[0] - f_back_low[0] > max_f_len:
- # FAIL: f back projection is too wide
- return 0
-
- if allow_high_x == 0 and f_back_high[0] > f_high:
- # FAIL: extension on high side not allowed
- return 0
-
- if f_low != f_back_low[0]:
- if new_low_x == 0:
- if new_x >= max_new_x:
- # FAIL: extension required on low side violates max # of gaps
- return 0
- else:
- new_x = new_x + 1
- new_low_x = 1
- if f_low - f_back_low[0] < min_fx_size:
- f_back_low[0] = f_low - min_fx_size
- if f_back_high[0] - f_back_low[0] > max_f_len:
- # FAIL: extension required on low side violates max initial length
- return 0
- if f_back_low[0] < 0:
- # FAIL: extension required on low side violates sentence boundary
- return 0
-
- if f_high != f_back_high[0]:
- if new_high_x == 0:
- if new_x >= max_new_x:
- # FAIL: extension required on high side violates max # of gaps
- return 0
- else:
- new_x = new_x + 1
- new_high_x = 1
- if f_back_high[0] - f_high < min_fx_size:
- f_back_high[0] = f_high + min_fx_size
- if f_back_high[0] - f_back_low[0] > max_f_len:
- # FAIL: extension required on high side violates max initial length
- return 0
- if f_back_high[0] > f_sent_len:
- # FAIL: extension required on high side violates sentence boundary
- return 0
-
- e_low_prev = e_low[0]
- e_high_prev = e_high[0]
-
- self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high)
- self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high)
- if e_low[0] == e_low_prev and e_high[0] == e_high_prev:
- return 1
- if allow_arbitrary_x == 0:
- # FAIL: arbitrary expansion not permitted
- return 0
- if e_high[0] - e_low[0] > max_e_len:
- # FAIL: re-projection violates sentence max phrase length
- return 0
- f_low_prev = f_back_low[0]
- f_high_prev = f_back_high[0]
-
-
- cdef find_projection(self, int in_low, int in_high, int* in_links_low, int* in_links_high,
- int* out_low, int* out_high):
- cdef int i
- for i from in_low <= i < in_high:
- if in_links_low[i] != -1:
- if out_low[0] == -1 or in_links_low[i] < out_low[0]:
- out_low[0] = in_links_low[i]
- if out_high[0] == -1 or in_links_high[i] > out_high[0]:
- out_high[0] = in_links_high[i]
-
-
- cdef int* int_arr_extend(self, int* arr, int* arr_len, int* data, int data_len):
- cdef int new_len
- new_len = arr_len[0] + data_len
- arr = <int*> realloc(arr, new_len*sizeof(int))
- memcpy(arr+arr_len[0], data, data_len*sizeof(int))
- arr_len[0] = new_len
- return arr
-
-
- cdef extract_phrases(self, int e_low, int e_high, int* e_gap_low, int* e_gap_high, int* e_links_low, int num_gaps,
- int f_low, int f_high, int* f_gap_low, int* f_gap_high, int* f_links_low,
- int sent_id, int e_sent_len, int e_sent_start):
- cdef int i, j, k, m, n, *e_gap_order, e_x_low, e_x_high, e_x_gap_low, e_x_gap_high
- cdef int *e_gaps1, *e_gaps2, len1, len2, step, num_chunks
- cdef IntList ephr_arr
- cdef result
-
- result = []
- len1 = 0
- e_gaps1 = <int*> malloc(0)
- ephr_arr = IntList()
-
- e_gap_order = <int*> malloc(num_gaps*sizeof(int))
- if num_gaps > 0:
- e_gap_order[0] = 0
- for i from 1 <= i < num_gaps:
- for j from 0 <= j < i:
- if e_gap_low[i] < e_gap_low[j]:
- for k from j <= k < i:
- e_gap_order[k+1] = e_gap_order[k]
- e_gap_order[j] = i
- break
- else:
- e_gap_order[i] = i
-
- e_x_low = e_low
- e_x_high = e_high
- if not self.tight_phrases:
- while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:
- e_x_low = e_x_low - 1
- while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1:
- e_x_high = e_x_high + 1
-
- for i from e_x_low <= i <= e_low:
- e_gaps1 = self.int_arr_extend(e_gaps1, &len1, &i, 1)
-
- for i from 0 <= i < num_gaps:
- e_gaps2 = <int*> malloc(0)
- len2 = 0
-
- j = e_gap_order[i]
- e_x_gap_low = e_gap_low[j]
- e_x_gap_high = e_gap_high[j]
- if not self.tight_phrases:
- while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:
- e_x_gap_low = e_x_gap_low - 1
- while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1:
- e_x_gap_high = e_x_gap_high + 1
-
- k = 0
- step = 1+(i*2)
- while k < len1:
- for m from e_x_gap_low <= m <= e_gap_low[j]:
- if m >= e_gaps1[k+step-1]:
- for n from e_gap_high[j] <= n <= e_x_gap_high:
- if n-m >= 1: # extractor.py doesn't restrict target-side gap length
- e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)
- e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)
- e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)
- k = k + step
- free(e_gaps1)
- e_gaps1 = e_gaps2
- len1 = len2
-
- step = 1+(num_gaps*2)
- e_gaps2 = <int*> malloc(0)
- len2 = 0
- for i from e_high <= i <= e_x_high:
- j = 0
- while j < len1:
- if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:
- e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)
- e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)
- j = j + step
- free(e_gaps1)
- e_gaps1 = e_gaps2
- len1 = len2
-
- step = (num_gaps+1)*2
- i = 0
-
- cdef IntList indexes
- while i < len1:
- ephr_arr._clear()
- num_chunks = 0
- indexes = IntList()
- for j from 0 <= j < num_gaps+1:
- if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:
- num_chunks = num_chunks + 1
- for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:
- indexes.append(k)
- ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])
- if j < num_gaps:
- indexes.append(sym_setindex(self.category, e_gap_order[j]+1))
- ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))
- i = i + step
- if ephr_arr.len <= self.max_target_length and num_chunks <= self.max_target_chunks:
- result.append((Phrase(ephr_arr),indexes))
-
- free(e_gaps1)
- free(e_gap_order)
- return result
-
- cdef IntList create_alignments(self, int* sent_links, int num_links,
- IntList findexes, IntList eindexes):
- cdef unsigned i
- cdef IntList ret = IntList()
- for i in range(findexes.len):
- s = findexes.arr[i]
- if s < 0: continue
- idx = 0
- while idx < num_links * 2:
- if sent_links[idx] == s:
- j = eindexes.index(sent_links[idx+1])
- ret.append(i * ALIGNMENT_CODE + j)
- idx += 2
- return ret
-
- cdef extract(self, Phrase phrase, Matching* matching, int* chunklen, int num_chunks):
- cdef int* sent_links, *e_links_low, *e_links_high, *f_links_low, *f_links_high
- cdef int *f_gap_low, *f_gap_high, *e_gap_low, *e_gap_high, num_gaps, gap_start
- cdef int i, j, k, e_i, f_i, num_links, num_aligned_chunks, met_constraints, x
- cdef int f_low, f_high, e_low, e_high, f_back_low, f_back_high
- cdef int e_sent_start, e_sent_end, f_sent_start, f_sent_end, e_sent_len, f_sent_len
- cdef int e_word_count, f_x_low, f_x_high, e_x_low, e_x_high, phrase_len
- cdef float pair_count
- cdef extracts, phrase_list
- cdef IntList fphr_arr
- cdef Phrase fphr
- cdef reason_for_failure
-
- fphr_arr = IntList()
- phrase_len = phrase.n
- extracts = []
- sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)
-
- e_sent_start = self.eda.sent_index.arr[matching.sent_id]
- e_sent_end = self.eda.sent_index.arr[matching.sent_id+1]
- e_sent_len = e_sent_end - e_sent_start - 1
- f_sent_start = self.fda.sent_index.arr[matching.sent_id]
- f_sent_end = self.fda.sent_index.arr[matching.sent_id+1]
- f_sent_len = f_sent_end - f_sent_start - 1
-
- self.findexes1.reset()
- sofar = 0
- for i in range(num_chunks):
- for j in range(chunklen[i]):
- self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);
- sofar += 1
- if i+1 < num_chunks:
- self.findexes1.append(phrase[sofar])
- sofar += 1
-
-
- e_links_low = <int*> malloc(e_sent_len*sizeof(int))
- e_links_high = <int*> malloc(e_sent_len*sizeof(int))
- f_links_low = <int*> malloc(f_sent_len*sizeof(int))
- f_links_high = <int*> malloc(f_sent_len*sizeof(int))
- f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))
- e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))
- memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))
- memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))
- memset(e_gap_low, 0, (num_chunks+1)*sizeof(int))
- memset(e_gap_high, 0, (num_chunks+1)*sizeof(int))
-
- reason_for_failure = ""
-
- for i from 0 <= i < e_sent_len:
- e_links_low[i] = -1
- e_links_high[i] = -1
- for i from 0 <= i < f_sent_len:
- f_links_low[i] = -1
- f_links_high[i] = -1
-
- # this is really inefficient -- might be good to
- # somehow replace with binary search just for the f
- # links that we care about (but then how to look up
- # when we want to check something on the e side?)
- i = 0
- while i < num_links*2:
- f_i = sent_links[i]
- e_i = sent_links[i+1]
- if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:
- f_links_low[f_i] = e_i
- if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:
- f_links_high[f_i] = e_i + 1
- if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:
- e_links_low[e_i] = f_i
- if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:
- e_links_high[e_i] = f_i + 1
- i = i + 2
-
- als = []
- for x in range(matching.start,matching.end):
- al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])
- als.append(al)
- # check all source-side alignment constraints
- met_constraints = 1
- if self.require_aligned_terminal:
- num_aligned_chunks = 0
- for i from 0 <= i < num_chunks:
- for j from 0 <= j < chunklen[i]:
- if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:
- num_aligned_chunks = num_aligned_chunks + 1
- break
- if num_aligned_chunks == 0:
- reason_for_failure = "No aligned terminals"
- met_constraints = 0
- if self.require_aligned_chunks and num_aligned_chunks < num_chunks:
- reason_for_failure = "Unaligned chunk"
- met_constraints = 0
-
- if met_constraints and self.tight_phrases:
- # outside edge constraints are checked later
- for i from 0 <= i < num_chunks-1:
- if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1:
- reason_for_failure = "Gaps are not tight phrases"
- met_constraints = 0
- break
- if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:
- reason_for_failure = "Gaps are not tight phrases"
- met_constraints = 0
- break
-
- f_low = matching.arr[matching.start] - f_sent_start
- f_high = matching.arr[matching.start + matching.size - 1] + chunklen[num_chunks-1] - f_sent_start
- if met_constraints:
-
- if self.find_fixpoint(f_low, f_high, f_links_low, f_links_high, e_links_low, e_links_high,
- -1, -1, &e_low, &e_high, &f_back_low, &f_back_high, f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- self.train_min_gap_size, 0,
- self.max_nonterminals - num_chunks + 1, 1, 1, 0, 0):
- gap_error = 0
- num_gaps = 0
-
- if f_back_low < f_low:
- f_gap_low[0] = f_back_low
- f_gap_high[0] = f_low
- num_gaps = 1
- gap_start = 0
- phrase_len = phrase_len+1
- if phrase_len > self.max_length:
- gap_error = 1
- if self.tight_phrases:
- if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:
- gap_error = 1
- reason_for_failure = "Inside edges of preceding subphrase are not tight"
- else:
- gap_start = 1
- if self.tight_phrases and f_links_low[f_low] == -1:
- # this is not a hard error. we can't extract this phrase
- # but we still might be able to extract a superphrase
- met_constraints = 0
-
- for i from 0 <= i < matching.size - 1:
- f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start
- f_gap_high[1+i] = matching.arr[matching.start+i+1] - f_sent_start
- num_gaps = num_gaps + 1
-
- if f_high < f_back_high:
- f_gap_low[gap_start+num_gaps] = f_high
- f_gap_high[gap_start+num_gaps] = f_back_high
- num_gaps = num_gaps + 1
- phrase_len = phrase_len+1
- if phrase_len > self.max_length:
- gap_error = 1
- if self.tight_phrases:
- if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:
- gap_error = 1
- reason_for_failure = "Inside edges of following subphrase are not tight"
- else:
- if self.tight_phrases and f_links_low[f_high-1] == -1:
- met_constraints = 0
-
- if gap_error == 0:
- e_word_count = e_high - e_low
- for i from 0 <= i < num_gaps: # check integrity of subphrases
- if self.find_fixpoint(f_gap_low[gap_start+i], f_gap_high[gap_start+i],
- f_links_low, f_links_high, e_links_low, e_links_high,
- -1, -1, e_gap_low+gap_start+i, e_gap_high+gap_start+i,
- f_gap_low+gap_start+i, f_gap_high+gap_start+i,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 0, 0, 0, 0, 0, 0, 0) == 0:
- gap_error = 1
- reason_for_failure = "Subphrase [%d, %d] failed integrity check" % (f_gap_low[gap_start+i], f_gap_high[gap_start+i])
- break
-
- if gap_error == 0:
- i = 1
- self.findexes.reset()
- if f_back_low < f_low:
- fphr_arr._append(sym_setindex(self.category, i))
- i = i+1
- self.findexes.append(sym_setindex(self.category, i))
- self.findexes.extend(self.findexes1)
- for j from 0 <= j < phrase.n:
- if sym_isvar(phrase.syms[j]):
- fphr_arr._append(sym_setindex(self.category, i))
- i = i + 1
- else:
- fphr_arr._append(phrase.syms[j])
- if f_back_high > f_high:
- fphr_arr._append(sym_setindex(self.category, i))
- self.findexes.append(sym_setindex(self.category, i))
-
- fphr = Phrase(fphr_arr)
- if met_constraints:
- phrase_list = self.extract_phrases(e_low, e_high, e_gap_low + gap_start, e_gap_high + gap_start, e_links_low, num_gaps,
- f_back_low, f_back_high, f_gap_low + gap_start, f_gap_high + gap_start, f_links_low,
- matching.sent_id, e_sent_len, e_sent_start)
- if len(phrase_list) > 0:
- pair_count = 1.0 / len(phrase_list)
- else:
- pair_count = 0
- reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high)
- for phrase2, eindexes in phrase_list:
- als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- extracts.append((fphr, phrase2, pair_count, tuple(als1)))
- if (num_gaps < self.max_nonterminals and
- phrase_len < self.max_length and
- f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):
- if (f_back_low == f_low and
- f_low >= self.train_min_gap_size and
- ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):
- f_x_low = f_low-self.train_min_gap_size
- met_constraints = 1
- if self.tight_phrases:
- while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- f_x_low = f_x_low - 1
- if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size:
- met_constraints = 0
-
- if (met_constraints and
- (self.find_fixpoint(f_x_low, f_back_high,
- f_links_low, f_links_high, e_links_low, e_links_high,
- e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 1, 1, 1, 1, 0, 1, 0) == 1) and
- ((not self.tight_phrases) or f_links_low[f_x_low] != -1) and
- self.find_fixpoint(f_x_low, f_low, # check integrity of new subphrase
- f_links_low, f_links_high, e_links_low, e_links_high,
- -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 0, 0, 0, 0, 0, 0, 0)):
- fphr_arr._clear()
- i = 1
- self.findexes.reset()
- self.findexes.append(sym_setindex(self.category, i))
- fphr_arr._append(sym_setindex(self.category, i))
- i = i+1
- self.findexes.extend(self.findexes1)
- for j from 0 <= j < phrase.n:
- if sym_isvar(phrase.syms[j]):
- fphr_arr._append(sym_setindex(self.category, i))
- i = i + 1
- else:
- fphr_arr._append(phrase.syms[j])
- if f_back_high > f_high:
- fphr_arr._append(sym_setindex(self.category, i))
- self.findexes.append(sym_setindex(self.category, i))
- fphr = Phrase(fphr_arr)
- phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+1,
- f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low, matching.sent_id,
- e_sent_len, e_sent_start)
- if len(phrase_list) > 0:
- pair_count = 1.0 / len(phrase_list)
- else:
- pair_count = 0
- for phrase2, eindexes in phrase_list:
- als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- extracts.append((fphr, phrase2, pair_count, tuple(als2)))
-
- if (f_back_high == f_high and
- f_sent_len - f_high >= self.train_min_gap_size and
- ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):
- f_x_high = f_high+self.train_min_gap_size
- met_constraints = 1
- if self.tight_phrases:
- while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- f_x_high = f_x_high + 1
- if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size:
- met_constraints = 0
-
- if (met_constraints and
- self.find_fixpoint(f_back_low, f_x_high,
- f_links_low, f_links_high, e_links_low, e_links_high,
- e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 1, 1, 1, 0, 1, 1, 0) and
- ((not self.tight_phrases) or f_links_low[f_x_high-1] != -1) and
- self.find_fixpoint(f_high, f_x_high,
- f_links_low, f_links_high, e_links_low, e_links_high,
- -1, -1, e_gap_low+gap_start+num_gaps, e_gap_high+gap_start+num_gaps,
- f_gap_low+gap_start+num_gaps, f_gap_high+gap_start+num_gaps,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 0, 0, 0, 0, 0, 0, 0)):
- fphr_arr._clear()
- i = 1
- self.findexes.reset()
- if f_back_low < f_low:
- fphr_arr._append(sym_setindex(self.category, i))
- i = i+1
- self.findexes.append(sym_setindex(self.category, i))
- self.findexes.extend(self.findexes1)
- for j from 0 <= j < phrase.n:
- if sym_isvar(phrase.syms[j]):
- fphr_arr._append(sym_setindex(self.category, i))
- i = i + 1
- else:
- fphr_arr._append(phrase.syms[j])
- fphr_arr._append(sym_setindex(self.category, i))
- self.findexes.append(sym_setindex(self.category, i))
- fphr = Phrase(fphr_arr)
- phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low+gap_start, e_gap_high+gap_start, e_links_low, num_gaps+1,
- f_x_low, f_x_high, f_gap_low+gap_start, f_gap_high+gap_start, f_links_low,
- matching.sent_id, e_sent_len, e_sent_start)
- if len(phrase_list) > 0:
- pair_count = 1.0 / len(phrase_list)
- else:
- pair_count = 0
- for phrase2, eindexes in phrase_list:
- als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- extracts.append((fphr, phrase2, pair_count, tuple(als3)))
- if (num_gaps < self.max_nonterminals - 1 and
- phrase_len+1 < self.max_length and
- f_back_high == f_high and
- f_back_low == f_low and
- f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and
- f_low >= self.train_min_gap_size and
- f_high <= f_sent_len - self.train_min_gap_size and
- ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):
-
- met_constraints = 1
- f_x_low = f_low-self.train_min_gap_size
- if self.tight_phrases:
- while f_x_low >= 0 and f_links_low[f_x_low] == -1:
- f_x_low = f_x_low - 1
- if f_x_low < 0:
- met_constraints = 0
-
- f_x_high = f_high+self.train_min_gap_size
- if self.tight_phrases:
- while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:
- f_x_high = f_x_high + 1
- if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size:
- met_constraints = 0
-
- if (met_constraints and
- (self.find_fixpoint(f_x_low, f_x_high,
- f_links_low, f_links_high, e_links_low, e_links_high,
- e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 1, 1, 2, 1, 1, 1, 1) == 1) and
- ((not self.tight_phrases) or (f_links_low[f_x_low] != -1 and f_links_low[f_x_high-1] != -1)) and
- self.find_fixpoint(f_x_low, f_low,
- f_links_low, f_links_high, e_links_low, e_links_high,
- -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 0, 0, 0, 0, 0, 0, 0) and
- self.find_fixpoint(f_high, f_x_high,
- f_links_low, f_links_high, e_links_low, e_links_high,
- -1, -1, e_gap_low+1+num_gaps, e_gap_high+1+num_gaps,
- f_gap_low+1+num_gaps, f_gap_high+1+num_gaps,
- f_sent_len, e_sent_len,
- self.train_max_initial_size, self.train_max_initial_size,
- 0, 0, 0, 0, 0, 0, 0)):
- fphr_arr._clear()
- i = 1
- self.findexes.reset()
- self.findexes.append(sym_setindex(self.category, i))
- fphr_arr._append(sym_setindex(self.category, i))
- i = i+1
- self.findexes.extend(self.findexes1)
- for j from 0 <= j < phrase.n:
- if sym_isvar(phrase.syms[j]):
- fphr_arr._append(sym_setindex(self.category, i))
- i = i + 1
- else:
- fphr_arr._append(phrase.syms[j])
- fphr_arr._append(sym_setindex(self.category, i))
- self.findexes.append(sym_setindex(self.category, i))
- fphr = Phrase(fphr_arr)
- phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+2,
- f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low,
- matching.sent_id, e_sent_len, e_sent_start)
- if len(phrase_list) > 0:
- pair_count = 1.0 / len(phrase_list)
- else:
- pair_count = 0
- for phrase2, eindexes in phrase_list:
- als4 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)
- extracts.append((fphr, phrase2, pair_count, tuple(als4)))
- else:
- reason_for_failure = "Unable to extract basic phrase"
-
- free(sent_links)
- free(f_links_low)
- free(f_links_high)
- free(e_links_low)
- free(e_links_high)
- free(f_gap_low)
- free(f_gap_high)
- free(e_gap_low)
- free(e_gap_high)
-
- return extracts
-
- #
- # Online grammar extraction handling
- #
-
- # Aggregate stats from a training instance
- # (Extract rules, update counts)
- def add_instance(self, f_words, e_words, alignment):
-
- self.online = True
-
- # Rules extracted from this instance
- # Track span of lexical items (terminals) to make
- # sure we don't extract the same rule for the same
- # span more than once.
- # (f, e, al, lex_f_i, lex_f_j)
- rules = set()
-
- f_len = len(f_words)
- e_len = len(e_words)
-
- # Pre-compute alignment info
- al = [[] for i in range(f_len)]
- fe_span = [[e_len + 1, -1] for i in range(f_len)]
- ef_span = [[f_len + 1, -1] for i in range(e_len)]
- for f, e in alignment:
- al[f].append(e)
- fe_span[f][0] = min(fe_span[f][0], e)
- fe_span[f][1] = max(fe_span[f][1], e)
- ef_span[e][0] = min(ef_span[e][0], f)
- ef_span[e][1] = max(ef_span[e][1], f)
-
- # Target side word coverage
- cover = [0] * e_len
- # Non-terminal coverage
- f_nt_cover = [0] * f_len
- e_nt_cover = [0] * e_len
-
- # Extract all possible hierarchical phrases starting at a source index
- # f_ i and j are current, e_ i and j are previous
- # We care _considering_ f_j, so it is not yet in counts
- def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open):
- # Phrase extraction limits
- if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- return
- # Unaligned word
- if not al[f_j]:
- # Adjacent to non-terminal: extend (non-terminal now open)
- if nt and nt[-1][2] == f_j - 1:
- nt[-1][2] += 1
- extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)
- nt[-1][2] -= 1
- # Unless non-terminal already open, always extend with word
- # Make sure adding a word doesn't exceed length
- if not nt_open and wc < self.max_length:
- extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)
- return
- # Aligned word
- link_i = fe_span[f_j][0]
- link_j = fe_span[f_j][1]
- new_e_i = min(link_i, e_i)
- new_e_j = max(link_j, e_j)
- # Check reverse links of newly covered words to see if they violate left
- # bound (return) or extend minimum right bound for chunk
- new_min_bound = min_bound
- # First aligned word creates span
- if e_j == -1:
- for i from new_e_i <= i <= new_e_j:
- if ef_span[i][0] < f_i:
- return
- new_min_bound = max(new_min_bound, ef_span[i][1])
- # Other aligned words extend span
- else:
- for i from new_e_i <= i < e_i:
- if ef_span[i][0] < f_i:
- return
- new_min_bound = max(new_min_bound, ef_span[i][1])
- for i from e_j < i <= new_e_j:
- if ef_span[i][0] < f_i:
- return
- new_min_bound = max(new_min_bound, ef_span[i][1])
- # Extract, extend with word (unless non-terminal open)
- if not nt_open:
- nt_collision = False
- for link in al[f_j]:
- if e_nt_cover[link]:
- nt_collision = True
- # Non-terminal collisions block word extraction and extension, but
- # may be okay for continuing non-terminals
- if not nt_collision and wc < self.max_length:
- plus_links = []
- for link in al[f_j]:
- plus_links.append((f_j, link))
- cover[link] += 1
- links.append(plus_links)
- if links and f_j >= new_min_bound:
- rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- links.pop()
- for link in al[f_j]:
- cover[link] -= 1
- # Try to add a word to current non-terminal (if any), extract, extend
- if nt and nt[-1][2] == f_j - 1:
- # Add to non-terminal, checking for collisions
- old_last_nt = nt[-1][:]
- nt[-1][2] = f_j
- if link_i < nt[-1][3]:
- if not span_check(cover, link_i, nt[-1][3] - 1):
- nt[-1] = old_last_nt
- return
- span_inc(cover, link_i, nt[-1][3] - 1)
- span_inc(e_nt_cover, link_i, nt[-1][3] - 1)
- nt[-1][3] = link_i
- if link_j > nt[-1][4]:
- if not span_check(cover, nt[-1][4] + 1, link_j):
- nt[-1] = old_last_nt
- return
- span_inc(cover, nt[-1][4] + 1, link_j)
- span_inc(e_nt_cover, nt[-1][4] + 1, link_j)
- nt[-1][4] = link_j
- if links and f_j >= new_min_bound:
- rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)
- nt[-1] = old_last_nt
- if link_i < nt[-1][3]:
- span_dec(cover, link_i, nt[-1][3] - 1)
- span_dec(e_nt_cover, link_i, nt[-1][3] - 1)
- if link_j > nt[-1][4]:
- span_dec(cover, nt[-1][4] + 1, link_j)
- span_dec(e_nt_cover, nt[-1][4] + 1, link_j)
- # Try to start a new non-terminal, extract, extend
- if (not nt or f_j - nt[-1][2] > 1) and wc < self.max_length and len(nt) < self.max_nonterminals:
- # Check for collisions
- if not span_check(cover, link_i, link_j):
- return
- span_inc(cover, link_i, link_j)
- span_inc(e_nt_cover, link_i, link_j)
- nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])
- # Require at least one word in phrase
- if links and f_j >= new_min_bound:
- rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))
- extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)
- nt.pop()
- span_dec(cover, link_i, link_j)
- span_dec(e_nt_cover, link_i, link_j)
-
- # Try to extract phrases from every f index
- for f_i from 0 <= f_i < f_len:
- # Skip if phrases won't be tight on left side
- if not al[f_i]:
- continue
- extract(f_i, f_i, f_len + 1, -1, f_i, 0, [], [], False)
-
- # Update possible phrases (samples)
- # This could be more efficiently integrated with extraction
- # at the cost of readability
- for f, lex_i, lex_j in self.get_f_phrases(f_words):
- self.samples_f[f] += 1
-
- # Update phrase counts
- for rule in rules:
- (f_ph, e_ph, al) = rule[:3]
- self.phrases_f[f_ph] += 1
- self.phrases_e[e_ph] += 1
- self.phrases_fe[f_ph][e_ph] += 1
- if not self.phrases_al[f_ph][e_ph]:
- self.phrases_al[f_ph][e_ph] = al
-
- # Update Bilexical counts
- for e_w in e_words:
- self.bilex_e[e_w] += 1
- for f_w in f_words:
- self.bilex_f[f_w] += 1
- for e_w in e_words:
- self.bilex_fe[f_w][e_w] += 1
-
- # Create a rule from source, target, non-terminals, and alignments
- def form_rule(self, f_i, e_i, f_span, e_span, nt, al):
-
- # Substitute in non-terminals
- nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))
- f_sym = list(f_span[:])
- off = f_i
- for next_nt in nt:
- nt_len = (next_nt[2] - next_nt[1]) + 1
- i = 0
- while i < nt_len:
- f_sym.pop(next_nt[1] - off)
- i += 1
- f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))
- off += (nt_len - 1)
- e_sym = list(e_span[:])
- off = e_i
- for next_nt in nt_inv:
- nt_len = (next_nt[4] - next_nt[3]) + 1
- i = 0
- while i < nt_len:
- e_sym.pop(next_nt[3] - off)
- i += 1
- e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))
- off += (nt_len - 1)
-
- # Adjusting alignment links takes some doing
- links = [list(link) for sub in al for link in sub]
- links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))
- links_len = len(links)
- nt_len = len(nt)
- nt_i = 0
- off = f_i
- i = 0
- while i < links_len:
- while nt_i < nt_len and links[i][0] > nt[nt_i][1]:
- off += (nt[nt_i][2] - nt[nt_i][1])
- nt_i += 1
- links[i][0] -= off
- i += 1
- nt_i = 0
- off = e_i
- i = 0
- while i < links_len:
- while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:
- off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])
- nt_i += 1
- links_inv[i][1] -= off
- i += 1
-
- # Find lexical span
- lex_f_i = f_i
- lex_f_j = f_i + (len(f_span) - 1)
- if nt:
- if nt[0][1] == lex_f_i:
- lex_f_i += (nt[0][2] - nt[0][1]) + 1
- if nt[-1][2] == lex_f_j:
- lex_f_j -= (nt[-1][2] - nt[-1][1]) + 1
-
- # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)
- f = Phrase(f_sym)
- e = Phrase(e_sym)
- a = tuple(self.alignment.link(i, j) for i, j in links)
- return (f, e, a, lex_f_i, lex_f_j)
-
- # Rule string from rule
- def fmt_rule(self, f, e, a):
- a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)
- return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)
-
- # Debugging
- def dump_online_stats(self):
- logger.info('------------------------------')
- logger.info(' Online Stats ')
- logger.info('------------------------------')
- logger.info('f')
- for w in self.bilex_f:
- logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))
- logger.info('e')
- for w in self.bilex_e:
- logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))
- logger.info('fe')
- for w in self.bilex_fe:
- for w2 in self.bilex_fe[w]:
- logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))
- logger.info('F')
- for ph in self.phrases_f:
- logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))
- logger.info('E')
- for ph in self.phrases_e:
- logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))
- logger.info('FE')
- self.dump_online_rules()
-
- def dump_online_rules(self):
- for ph in self.phrases_fe:
- for ph2 in self.phrases_fe[ph]:
- logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))
-
- # Lookup online stats for phrase pair (f, e). Return None if no match.
- # IMPORTANT: use get() to avoid adding items to defaultdict
- def online_ctx_lookup(self, f, e):
- if self.online:
- fcount = self.phrases_f.get(f, 0)
- fsample_count = self.samples_f.get(f, 0)
- d = self.phrases_fe.get(f, None)
- paircount = d.get(e, 0) if d else 0
- return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)
- return None
-
- # Find all phrases that we might try to extract
- # (Used for EGivenFCoherent)
- # Return set of (fphrase, lex_i, lex_j)
- def get_f_phrases(self, f_words):
-
- f_len = len(f_words)
- phrases = set() # (fphrase, lex_i, lex_j)
-
- def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):
- # Phrase extraction limits
- if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:
- return
- # Extend with word
- if wc + ntc < self.max_length:
- syms.append(f_words[f_j])
- f = Phrase(syms)
- new_lex_i = min(lex_i, f_j)
- new_lex_j = max(lex_j, f_j)
- phrases.add((f, new_lex_i, new_lex_j))
- extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)
- syms.pop()
- # Extend with existing non-terminal
- if syms and sym_isvar(syms[-1]):
- # Don't re-extract the same phrase
- extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc, syms)
- # Extend with new non-terminal
- if wc + ntc < self.max_length:
- if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):
- syms.append(sym_setindex(self.category, ntc + 1))
- f = Phrase(syms)
- if wc > 0:
- phrases.add((f, lex_i, lex_j))
- extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)
- syms.pop()
-
- # Try to extract phrases from every f index
- for f_i from 0 <= f_i < f_len:
- extract(f_i, f_i, f_len, -1, 0, 0, [])
-
- return phrases
-
-# Spans are _inclusive_ on both ends [i, j]
-def span_check(vec, i, j):
- k = i
- while k <= j:
- if vec[k]:
- return False
- k += 1
- return True
-
-def span_inc(vec, i, j):
- k = i
- while k <= j:
- vec[k] += 1
- k += 1
-
-def span_dec(vec, i, j):
- k = i
- while k <= j:
- vec[k] -= 1
- k += 1
diff --git a/python/src/sa/str_map.pxi b/python/src/sa/str_map.pxi
deleted file mode 100644
index 3a8439a4..00000000
--- a/python/src/sa/str_map.pxi
+++ /dev/null
@@ -1,23 +0,0 @@
-cdef extern from "strmap.h":
- ctypedef struct StrMap
- StrMap* stringmap_new()
- void stringmap_delete(StrMap *vocab)
- int stringmap_index(StrMap *vocab, char *s)
- char* stringmap_word(StrMap *vocab, int i)
-
-cdef class StringMap:
- cdef StrMap *vocab
- cdef char *word(self, int i)
- cdef int index(self, char *s)
-
- def __cinit__(self):
- self.vocab = stringmap_new()
-
- def __dealloc__(self):
- stringmap_delete(self.vocab)
-
- cdef char *word(self, int i):
- return stringmap_word(self.vocab, i)
-
- cdef int index(self, char *s):
- return stringmap_index(self.vocab, s)
diff --git a/python/src/sa/strmap.cc b/python/src/sa/strmap.cc
deleted file mode 100644
index 5040477e..00000000
--- a/python/src/sa/strmap.cc
+++ /dev/null
@@ -1,232 +0,0 @@
-#include "strmap.h"
-
-#include <vector>
-#include <string>
-#include <tr1/unordered_map>
-#include <stdint.h>
-
-using namespace std;
-using namespace std::tr1;
-
-#undef HAVE_64_BITS
-
-#if INTPTR_MAX == INT32_MAX
-# define HAVE_64_BITS 0
-#elif INTPTR_MAX >= INT64_MAX
-# define HAVE_64_BITS 1
-#else
-# error "couldn't tell if HAVE_64_BITS from INTPTR_MAX INT32_MAX INT64_MAX"
-#endif
-
-typedef uintptr_t MurmurInt;
-
-// MurmurHash2, by Austin Appleby
-
-static const uint32_t DEFAULT_SEED=2654435769U;
-
-#if HAVE_64_BITS
-//MurmurInt MurmurHash(void const *key, int len, uint32_t seed=DEFAULT_SEED);
-
-inline uint64_t MurmurHash64( const void * key, int len, unsigned int seed=DEFAULT_SEED )
-{
- const uint64_t m = 0xc6a4a7935bd1e995ULL;
- const int r = 47;
-
- uint64_t h = seed ^ (len * m);
-
- const uint64_t * data = (const uint64_t *)key;
- const uint64_t * end = data + (len/8);
-
- while(data != end)
- {
- uint64_t k = *data++;
-
- k *= m;
- k ^= k >> r;
- k *= m;
-
- h ^= k;
- h *= m;
- }
-
- const unsigned char * data2 = (const unsigned char*)data;
-
- switch(len & 7)
- {
- case 7: h ^= uint64_t(data2[6]) << 48;
- case 6: h ^= uint64_t(data2[5]) << 40;
- case 5: h ^= uint64_t(data2[4]) << 32;
- case 4: h ^= uint64_t(data2[3]) << 24;
- case 3: h ^= uint64_t(data2[2]) << 16;
- case 2: h ^= uint64_t(data2[1]) << 8;
- case 1: h ^= uint64_t(data2[0]);
- h *= m;
- };
-
- h ^= h >> r;
- h *= m;
- h ^= h >> r;
-
- return h;
-}
-
-inline uint32_t MurmurHash32(void const *key, int len, uint32_t seed=DEFAULT_SEED)
-{
- return (uint32_t) MurmurHash64(key,len,seed);
-}
-
-inline MurmurInt MurmurHash(void const *key, int len, uint32_t seed=DEFAULT_SEED)
-{
- return MurmurHash64(key,len,seed);
-}
-
-#else
-// 32-bit
-
-// Note - This code makes a few assumptions about how your machine behaves -
-// 1. We can read a 4-byte value from any address without crashing
-// 2. sizeof(int) == 4
-inline uint32_t MurmurHash32 ( const void * key, int len, uint32_t seed=DEFAULT_SEED)
-{
- // 'm' and 'r' are mixing constants generated offline.
- // They're not really 'magic', they just happen to work well.
-
- const uint32_t m = 0x5bd1e995;
- const int r = 24;
-
- // Initialize the hash to a 'random' value
-
- uint32_t h = seed ^ len;
-
- // Mix 4 bytes at a time into the hash
-
- const unsigned char * data = (const unsigned char *)key;
-
- while(len >= 4)
- {
- uint32_t k = *(uint32_t *)data;
-
- k *= m;
- k ^= k >> r;
- k *= m;
-
- h *= m;
- h ^= k;
-
- data += 4;
- len -= 4;
- }
-
- // Handle the last few bytes of the input array
-
- switch(len)
- {
- case 3: h ^= data[2] << 16;
- case 2: h ^= data[1] << 8;
- case 1: h ^= data[0];
- h *= m;
- };
-
- // Do a few final mixes of the hash to ensure the last few
- // bytes are well-incorporated.
-
- h ^= h >> 13;
- h *= m;
- h ^= h >> 15;
-
- return h;
-}
-
-inline MurmurInt MurmurHash ( const void * key, int len, uint32_t seed=DEFAULT_SEED) {
- return MurmurHash32(key,len,seed);
-}
-
-// 64-bit hash for 32-bit platforms
-
-inline uint64_t MurmurHash64 ( const void * key, int len, uint32_t seed=DEFAULT_SEED)
-{
- const uint32_t m = 0x5bd1e995;
- const int r = 24;
-
- uint32_t h1 = seed ^ len;
- uint32_t h2 = 0;
-
- const uint32_t * data = (const uint32_t *)key;
-
- while(len >= 8)
- {
- uint32_t k1 = *data++;
- k1 *= m; k1 ^= k1 >> r; k1 *= m;
- h1 *= m; h1 ^= k1;
- len -= 4;
-
- uint32_t k2 = *data++;
- k2 *= m; k2 ^= k2 >> r; k2 *= m;
- h2 *= m; h2 ^= k2;
- len -= 4;
- }
-
- if(len >= 4)
- {
- uint32_t k1 = *data++;
- k1 *= m; k1 ^= k1 >> r; k1 *= m;
- h1 *= m; h1 ^= k1;
- len -= 4;
- }
-
- switch(len)
- {
- case 3: h2 ^= ((unsigned char*)data)[2] << 16;
- case 2: h2 ^= ((unsigned char*)data)[1] << 8;
- case 1: h2 ^= ((unsigned char*)data)[0];
- h2 *= m;
- };
-
- h1 ^= h2 >> 18; h1 *= m;
- h2 ^= h1 >> 22; h2 *= m;
- h1 ^= h2 >> 17; h1 *= m;
- h2 ^= h1 >> 19; h2 *= m;
-
- uint64_t h = h1;
-
- h = (h << 32) | h2;
-
- return h;
-}
-
-#endif
-//32bit
-
-struct MurmurHasher {
- size_t operator()(const string& s) const {
- return MurmurHash(s.c_str(), s.size());
- }
-};
-
-struct StrMap {
- StrMap() { keys_.reserve(10000); keys_.push_back("<bad0>"); map_[keys_[0]] = 0; }
- unordered_map<string, int, MurmurHasher> map_;
- vector<string> keys_;
-};
-
-StrMap* stringmap_new() {
- return new StrMap;
-}
-
-void stringmap_delete(StrMap *vocab) {
- delete vocab;
-}
-
-int stringmap_index(StrMap *vocab, char *s) {
- int& cell = vocab->map_[s];
- if (!cell) {
- cell = vocab->keys_.size();
- vocab->keys_.push_back(s);
- }
- return cell;
-}
-
-char* stringmap_word(StrMap *vocab, int i) {
- return const_cast<char *>(vocab->keys_[i].c_str());
-}
-
diff --git a/python/src/sa/strmap.h b/python/src/sa/strmap.h
deleted file mode 100644
index a218a4c0..00000000
--- a/python/src/sa/strmap.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _STRMAP_H_
-#define _STRMAP_H_
-
-#ifdef __cplusplus
- extern "C" {
-#else
- typedef struct StrMap StrMap; /* dummy type to stand in for class */
-#endif
-
-struct StrMap;
-
-StrMap* stringmap_new();
-void stringmap_delete(StrMap *vocab);
-int stringmap_index(StrMap *vocab, char *s);
-char* stringmap_word(StrMap *vocab, int i);
-
-#ifdef __cplusplus
- }
-#endif
-
-
-#endif
diff --git a/python/src/sa/suffix_array.pxi b/python/src/sa/suffix_array.pxi
deleted file mode 100644
index de4adcd9..00000000
--- a/python/src/sa/suffix_array.pxi
+++ /dev/null
@@ -1,250 +0,0 @@
-# Defines suffix arrays that can be directly written to/read from disk in binary format
-# Adam Lopez <alopez@cs.umd.edu>
-
-from libc.stdio cimport FILE, fclose, fopen
-
-cdef class SuffixArray:
- cdef DataArray darray
- cdef IntList sa
- cdef IntList ha
-
- def __cinit__(self, from_binary=None, from_text=None, side=None):
- self.darray = DataArray()
- self.sa = IntList()
- self.ha = IntList()
- if from_binary:
- self.read_binary(from_binary)
- elif from_text:
- self.read_text(from_text, side)
-
- def __getitem__(self, i):
- return self.sa.arr[i]
-
- def read_text(self, filename, side):
- '''Constructs suffix array using the algorithm
- of Larsson & Sadahkane (1999)'''
- cdef int V, N, i, j, h, a_i, n, current_run, skip
- cdef IntList isa, word_count
-
- self.darray = DataArray(from_text=filename, side=side, use_sent_id=True)
- N = len(self.darray)
- V = len(self.darray.id2word)
-
- self.sa = IntList(initial_len=N)
- self.ha = IntList(initial_len=V+1)
-
- isa = IntList(initial_len=N)
- word_count = IntList(initial_len=V+1)
-
- '''Step 1: bucket sort data'''
- cdef float sort_start_time = monitor_cpu()
- cdef float start_time = sort_start_time
- for i from 0 <= i < N:
- a_i = self.darray.data.arr[i]
- word_count.arr[a_i] = word_count.arr[a_i] + 1
-
- n = 0
- for i from 0 <= i < V+1:
- self.ha.arr[i] = n
- n = n + word_count.arr[i]
- word_count.arr[i] = 0
-
- for i from 0 <= i < N:
- a_i = self.darray.data.arr[i]
- self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i
- isa.arr[i] = self.ha.arr[a_i + 1] - 1 # bucket pointer is last index in bucket
- word_count.arr[a_i] = word_count.arr[a_i] + 1
-
- '''Determine size of initial runs'''
- current_run = 0
- for i from 0 <= i < V+1:
- if i < V and self.ha.arr[i+1] - self.ha.arr[i] == 1:
- current_run = current_run + 1
- else:
- if current_run > 0:
- self.sa.arr[self.ha.arr[i] - current_run] = -current_run
- current_run = 0
-
- logger.info(" Bucket sort took %f seconds", (monitor_cpu() - sort_start_time))
-
- '''Step 2: prefix-doubling sort'''
- h = 1
- while self.sa.arr[0] != -N:
- sort_start_time = monitor_cpu()
- logger.debug(" Refining, sort depth = %d", h)
- i = 0
- skip = 0
- while i < N:
- if self.sa.arr[i] < 0:
- skip = skip + self.sa.arr[i]
- i = i - self.sa.arr[i]
- else:
- if skip < 0:
- self.sa.arr[i+skip] = skip
- skip = 0
- j = isa.arr[self.sa.arr[i]]
- self.q3sort(i, j, h, isa)
- i = j+1
- if skip < 0:
- self.sa.arr[i+skip] = skip
- h = h * 2
- logger.debug(" Refinement took %f seconds", (monitor_cpu() - sort_start_time))
-
- '''Step 3: read off suffix array from inverse suffix array'''
- logger.info(" Finalizing sort...")
- for i from 0 <= i < N:
- j = isa.arr[i]
- self.sa.arr[j] = i
- logger.info("Suffix array construction took %f seconds", (monitor_cpu() - start_time))
-
- def q3sort(self, int i, int j, int h, IntList isa, pad=""):
- '''This is a ternary quicksort. It divides the array into
- three partitions: items less than the pivot, items equal
- to pivot, and items greater than pivot. The first and last
- of these partitions are then recursively sorted'''
- cdef int k, midpoint, pval, phead, ptail, tmp
-
- if j-i < -1:
- raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))
- if j-i == -1: # recursive base case -- empty interval
- return
- if (j-i == 0): # recursive base case -- singleton interval
- isa.arr[self.sa.arr[i]] = i
- self.sa.arr[i] = -1
- return
-
- # NOTE: choosing the first item as a pivot value resulted in
- # stack overflow for some very large buckets. I think there
- # is a natural bias towards order due the way the word ids are
- # assigned; thus this resulted in the range to the left of the
- # pivot being nearly empty. Therefore, choose the middle item.
- # If the method of assigning word_id's is changed, this method
- # may need to be reconsidered as well.
- midpoint = (i+j)/2
- pval = isa.arr[self.sa.arr[midpoint] + h]
- if i != midpoint:
- tmp = self.sa.arr[midpoint]
- self.sa.arr[midpoint] = self.sa.arr[i]
- self.sa.arr[i] = tmp
- phead = i
- ptail = i
-
- # find the three partitions. phead marks the first element
- # of the middle partition, and ptail marks the last element
- for k from i+1 <= k < j+1:
- if isa.arr[self.sa.arr[k] + h] < pval:
- if k > ptail+1:
- tmp = self.sa.arr[phead]
- self.sa.arr[phead] = self.sa.arr[k]
- self.sa.arr[k] = self.sa.arr[ptail+1]
- self.sa.arr[ptail+1] = tmp
- else: # k == ptail+1
- tmp = self.sa.arr[phead]
- self.sa.arr[phead] = self.sa.arr[k]
- self.sa.arr[k] = tmp
- phead = phead + 1
- ptail = ptail + 1
- else:
- if isa.arr[self.sa.arr[k] + h] == pval:
- if k > ptail+1:
- tmp = self.sa.arr[ptail+1]
- self.sa.arr[ptail+1] = self.sa.arr[k]
- self.sa.arr[k] = tmp
- ptail = ptail + 1
-
- # recursively sort smaller suffixes
- self.q3sort(i, phead-1, h, isa, pad+" ")
-
- # update suffixes with pivot value
- # corresponds to update_group function in Larsson & Sadakane
- for k from phead <= k < ptail+1:
- isa.arr[self.sa.arr[k]] = ptail
- if phead == ptail:
- self.sa.arr[phead] = -1
-
- # recursively sort larger suffixes
- self.q3sort(ptail+1, j, h, isa, pad+" ")
-
-
- def write_text(self, char* filename):
- self.darray.write_text(filename)
-
- def read_binary(self, char* filename):
- cdef FILE *f
- f = fopen(filename, "r")
- self.darray.read_handle(f)
- self.sa.read_handle(f)
- self.ha.read_handle(f)
- fclose(f)
-
- def write_binary(self, char* filename):
- cdef FILE* f
- f = fopen(filename, "w")
- self.darray.write_handle(f)
- self.sa.write_handle(f)
- self.ha.write_handle(f)
- fclose(f)
-
- def write_enhanced(self, char* filename):
- with open(filename, "w") as f:
- self.darray.write_enhanced_handle(f)
- for a_i in self.sa:
- f.write("%d " % a_i)
- f.write("\n")
- for w_i in self.ha:
- f.write("%d " % w_i)
- f.write("\n")
-
- cdef int __search_high(self, int word_id, int offset, int low, int high):
- cdef int midpoint
-
- if low >= high:
- return high
- midpoint = (high + low) / 2
- if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- return self.__search_high(word_id, offset, midpoint+1, high)
- else:
- return self.__search_high(word_id, offset, low, midpoint)
-
- cdef int __search_low(self, int word_id, int offset, int low, int high):
- cdef int midpoint
-
- if low >= high:
- return high
- midpoint = (high + low) / 2
- if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- return self.__search_low(word_id, offset, low, midpoint)
- else:
- return self.__search_low(word_id, offset, midpoint+1, high)
-
- cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint):
- return (self.__search_low(word_id, offset, low, midpoint),
- self.__search_high(word_id, offset, midpoint, high))
-
- cdef __lookup_helper(self, int word_id, int offset, int low, int high):
- cdef int midpoint
-
- if offset == 0:
- return (self.ha.arr[word_id], self.ha.arr[word_id+1])
- if low >= high:
- return None
-
- midpoint = (high + low) / 2
- if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:
- return self.__get_range(word_id, offset, low, high, midpoint)
- if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id:
- return self.__lookup_helper(word_id, offset, low, midpoint)
- else:
- return self.__lookup_helper(word_id, offset, midpoint+1, high)
-
- def lookup(self, word, int offset, int low, int high):
- cdef int wordid
- if low == -1:
- low = 0
- if high == -1:
- high = len(self.sa)
- if word in self.darray.word2id:
- word_id = self.darray.word2id[word]
- return self.__lookup_helper(word_id, offset, low, high)
- else:
- return None
diff --git a/python/src/sa/sym.pxi b/python/src/sa/sym.pxi
deleted file mode 100644
index f253aec0..00000000
--- a/python/src/sa/sym.pxi
+++ /dev/null
@@ -1,125 +0,0 @@
-from libc.string cimport strrchr, strstr, strcpy, strlen
-from libc.stdlib cimport malloc, realloc, strtol
-
-cdef int INDEX_SHIFT = 3
-cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1
-
-cdef class Alphabet:
- cdef readonly StringMap terminals, nonterminals
- cdef int first_nonterminal, last_nonterminal
- cdef dict id2sym
-
- def __cinit__(self):
- self.terminals = StringMap()
- self.nonterminals = StringMap()
- self.id2sym = {}
- self.first_nonterminal = -1
-
- def __dealloc__(self):
- pass
-
- cdef int isvar(self, int sym):
- return sym < 0
-
- cdef int isword(self, int sym):
- return sym >= 0
-
- cdef int getindex(self, int sym):
- return -sym & INDEX_MASK
-
- cdef int setindex(self, int sym, int ind):
- return -(-sym & ~INDEX_MASK | ind)
-
- cdef int clearindex(self, int sym):
- return -(-sym& ~INDEX_MASK)
-
- cdef int match(self, int sym1, int sym2):
- return self.clearindex(sym1) == self.clearindex(sym2);
-
- cdef char* tocat(self, int sym):
- return self.nonterminals.word((-sym >> INDEX_SHIFT)-1)
-
- cdef int fromcat(self, char *s):
- cdef int i
- i = self.nonterminals.index(s)
- if self.first_nonterminal == -1:
- self.first_nonterminal = i
- if i > self.last_nonterminal:
- self.last_nonterminal = i
- return -(i+1 << INDEX_SHIFT)
-
- cdef char* tostring(self, int sym):
- cdef int ind
- if self.isvar(sym):
- if sym in self.id2sym:
- return self.id2sym[sym]
- ind = self.getindex(sym)
- if ind > 0:
- self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind)
- else:
- self.id2sym[sym] = "[%s]" % self.tocat(sym)
- return self.id2sym[sym]
- else:
- return self.terminals.word(sym)
-
- cdef int fromstring(self, char *s, bint terminal):
- """Warning: this method is allowed to alter s."""
- cdef char *comma
- cdef int n
- n = strlen(s)
- cdef char *sep
- sep = strstr(s,"_SEP_")
- if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL:
- if terminal:
- s1 = "\\"+s
- return self.terminals.index(s1)
- s[n-1] = c'\0'
- s = s + 1
- comma = strrchr(s, c',')
- if comma != NULL:
- comma[0] = c'\0'
- return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10))
- else:
- return self.fromcat(s)
- else:
- return self.terminals.index(s)
-
-cdef Alphabet ALPHABET = Alphabet()
-
-cdef char* sym_tostring(int sym):
- return ALPHABET.tostring(sym)
-
-cdef char* sym_tocat(int sym):
- return ALPHABET.tocat(sym)
-
-cdef int sym_isvar(int sym):
- return ALPHABET.isvar(sym)
-
-cdef int sym_getindex(int sym):
- return ALPHABET.getindex(sym)
-
-cdef int sym_setindex(int sym, int id):
- return ALPHABET.setindex(sym, id)
-
-cdef int sym_fromstring(char* string, bint terminal):
- return ALPHABET.fromstring(string, terminal)
-
-def isvar(sym):
- return sym_isvar(sym)
-
-def make_lattice(words):
- word_ids = (sym_fromstring(word, True) for word in words)
- return tuple(((word, None, 1), ) for word in word_ids)
-
-def decode_lattice(lattice):
- return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc
- for arc in node for node in lattice)
-
-def decode_sentence(lattice):
- return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)
-
-def encode_words(words):
- return tuple(sym_fromstring(word, True) for word in words)
-
-def decode_words(syms):
- return tuple(sym_tostring(sym) for sym in syms) \ No newline at end of file
diff --git a/python/src/sa/veb.pxi b/python/src/sa/veb.pxi
deleted file mode 100644
index 40af3a68..00000000
--- a/python/src/sa/veb.pxi
+++ /dev/null
@@ -1,392 +0,0 @@
-"""This module implements a partial stratified tree (van Emde Boas, 1977).
-Only insert findsucc, __iter__, and __contains__ are implemented.
-Delete is currently not supported.
-There is very little error-checking in this code -- it is designed
-to be used in the limited situation described in Lopez (EMNLP-CoNLL 2007),
-which doesn't cover all of the possible ways that you could misuse it
-(e.g. trying to insert a key larger than the universe size)
-Other notes -- this code is really rather ugly C code masquerading as
-Pyrex/Python. Virtual function calls are bypassed by hand in several
-places for the sake of efficiency, and other Python niceties are
-removed for the same reason."""
-
-from libc.stdlib cimport malloc, free
-from libc.math cimport log, ceil
-from libc.string cimport memset
-
-cdef int MIN_BOTTOM_SIZE = 32
-cdef int MIN_BOTTOM_BITS = 5
-cdef int LOWER_MASK[32]
-
-cdef void _init_lower_mask():
- cdef unsigned i
- cdef int mask = 0
- for i in range(MIN_BOTTOM_SIZE):
- mask = (mask << 1) + 1
- LOWER_MASK[i] = mask
-
-_init_lower_mask()
-
-cdef struct _BitSet:
- long bitset
- int min_val
- int max_val
- int size
-
-
-cdef _BitSet* new_BitSet():
- cdef _BitSet* b
-
- b = <_BitSet*> malloc(sizeof(_BitSet))
- b.bitset = 0
- b.min_val = -1
- b.max_val = -1
- b.size = 0
- return b
-
-
-cdef int bitset_findsucc(_BitSet* b, int i):
- cdef int bitset, mask
- cdef int low, high, mid
-
- if b.max_val == -1 or i >= b.max_val:
- return -1
- if i < b.min_val:
- return b.min_val
-
- bitset = b.bitset & ~LOWER_MASK[i]
- low = i+1
- high = b.max_val+1
- while low < high-1:
- mid = (high + low)/2
- mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])
- if bitset & mask == 0:
- low = mid
- else:
- bitset = bitset & mask
- high = mid
- return low
-
-
-cdef int bitset_insert(_BitSet* b, int i):
- cdef int val
-
- val = 1 << i
- if b.bitset & val == 0:
- b.bitset = b.bitset | val
- if b.size == 0:
- b.min_val = i
- b.max_val = i
- else:
- if i < b.min_val:
- b.min_val = i
- if i > b.max_val:
- b.max_val = i
- b.size = b.size + 1
- return 1
- return 0
-
-
-cdef int bitset_contains(_BitSet* b, int i):
- cdef int val
-
- val = 1 << i
- if b.bitset & val == 0:
- return 0
- else:
- return 1
-
-
-cdef class BitSetIterator:
- cdef _BitSet* b
- cdef int next_val
-
- def __next__(self):
- cdef int ret_val
-
- if self.next_val == -1:
- raise StopIteration()
- ret_val = self.next_val
- self.next_val = bitset_findsucc(self.b, ret_val)
- return ret_val
-
-
-
-# This is a Python wrapper class to give access to the
-# (entirely C-implemented) _BitSet struct.
-# Very slow; use only for debugging
-cdef class BitSet:
-
- cdef _BitSet* b
-
- def __cinit__(self):
- self.b = new_BitSet()
-
- def __dealloc__(self):
- free(self.b)
-
- def __iter__(self):
- cdef BitSetIterator it
- it = BitSetIterator()
- it.b = self.b
- it.next_val = self.b.min_val
- return it
-
- def insert(self, i):
- return bitset_insert(self.b, i)
-
- def findsucc(self, i):
- return bitset_findsucc(self.b, i)
-
- def __str__(self):
- return dec2bin(self.b.bitset)+" ("+str(self.b.size)+","+str(self.b.min_val)+","+str(self.b.max_val)+")"
-
- def min(self):
- return self.b.min_val
-
- def max(self):
- return self.b.max_val
-
- def __len__(self):
- return self.b.size
-
- def __contains__(self, i):
- return bool(bitset_contains(self.b, i))
-
-
-cdef str dec2bin(long i):
- cdef str result = ""
- cdef unsigned d
- for d in range(MIN_BOTTOM_SIZE):
- if i & LOWER_MASK[0] == 0:
- result = "0"+result
- else:
- result = "1"+result
- i = i >> 1
- return result
-
-cdef struct _VEB:
- int top_universe_size
- int num_bottom_bits
- int max_val
- int min_val
- int size
- void* top
- void** bottom
-
-cdef _VEB* new_VEB(int n):
- cdef _VEB* veb
- cdef int num_bits, num_top_bits, i
-
- veb = <_VEB*> malloc(sizeof(_VEB))
-
- num_bits = int(ceil(log(n) / log(2)))
- veb.num_bottom_bits = num_bits/2
- if veb.num_bottom_bits < MIN_BOTTOM_BITS:
- veb.num_bottom_bits = MIN_BOTTOM_BITS
- veb.top_universe_size = (n >> veb.num_bottom_bits) + 1
-
- veb.bottom = <void**> malloc(veb.top_universe_size * sizeof(void*))
- memset(veb.bottom, 0, veb.top_universe_size * sizeof(void*))
-
- if veb.top_universe_size > MIN_BOTTOM_SIZE:
- veb.top = new_VEB(veb.top_universe_size)
- else:
- veb.top = new_BitSet()
-
- veb.max_val = -1
- veb.min_val = -1
- veb.size = 0
- return veb
-
-
-cdef int VEB_insert(_VEB* veb, int i):
- cdef _VEB* subv
- cdef _BitSet* subb
- cdef int a, b, tmp
-
- if veb.size == 0:
- veb.min_val = i
- veb.max_val = i
- elif i == veb.min_val or i == veb.max_val:
- return 0
- else:
- if i < veb.min_val:
- tmp = i
- i = veb.min_val
- veb.min_val = tmp
- a = i >> veb.num_bottom_bits
- b = i & LOWER_MASK[veb.num_bottom_bits-1]
- if veb.bottom[a] == NULL:
- if veb.top_universe_size > MIN_BOTTOM_SIZE:
- subv = <_VEB*> veb.top
- VEB_insert(subv, a)
- else:
- subb = <_BitSet*> veb.top
- bitset_insert(subb, a)
- if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits)
- else:
- veb.bottom[a] = new_BitSet()
- if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- subv = <_VEB*> veb.bottom[a]
- if VEB_insert(subv, b) == 0:
- return 0
- else:
- subb = <_BitSet*> veb.bottom[a]
- if bitset_insert(subb, b) == 0:
- return 0
-
- if i > veb.max_val:
- veb.max_val = i
- veb.size = veb.size + 1
- return 1
-
-
-cdef del_VEB(_VEB* veb):
- cdef int i
-
- if veb.top_universe_size > MIN_BOTTOM_SIZE:
- i = (<_VEB*> veb.top).min_val
- else:
- i = (<_BitSet*> veb.top).min_val
-
- while i != -1:
- if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- del_VEB(<_VEB*> veb.bottom[i])
- else:
- free(<_BitSet*> veb.bottom[i])
-
- if veb.top_universe_size > MIN_BOTTOM_SIZE:
- i = VEB_findsucc(<_VEB*> veb.top, i)
- else:
- i = bitset_findsucc(<_BitSet*> veb.top, i)
-
- if veb.top_universe_size > MIN_BOTTOM_SIZE:
- del_VEB(<_VEB*> veb.top)
- else:
- free(<_BitSet*> veb.top)
- free(veb.bottom)
- free(veb)
-
-
-cdef int VEB_findsucc(_VEB* veb, int i):
- cdef _VEB* subv
- cdef _BitSet* subb
- cdef int a, b, j, c, found
-
- if veb.max_val == -1 or i>=veb.max_val:
- return -1
- if i < veb.min_val:
- return veb.min_val
-
- a = i >> veb.num_bottom_bits
- b = i & LOWER_MASK[veb.num_bottom_bits-1]
- found = 0
- if veb.bottom[a] != NULL:
- if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- subv = <_VEB*> veb.bottom[a]
- if subv.max_val > b:
- j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b)
- found = 1
- else:
- subb = <_BitSet*> veb.bottom[a]
- if subb.max_val > b:
- j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)
- found = 1
- if found==0:
- if veb.top_universe_size > MIN_BOTTOM_SIZE:
- subv = <_VEB*> veb.top
- c = VEB_findsucc(subv, a)
- else:
- subb = <_BitSet*> veb.top
- c = bitset_findsucc(subb, a)
- if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- subv = <_VEB*> veb.bottom[c]
- j = (c << veb.num_bottom_bits) + subv.min_val
- else:
- subb = <_BitSet*> veb.bottom[c]
- j = (c << veb.num_bottom_bits) + subb.min_val
- return j
-
-
-cdef int VEB_contains(_VEB* veb, int i):
- cdef _VEB* subv
- cdef _BitSet* subb
- cdef int a, b
-
- if veb.size == 0 or i < veb.min_val or i > veb.max_val:
- return 0
-
- if veb.min_val == i:
- return 1
- else:
- if veb.size == 1:
- return 0
-
- a = i >> veb.num_bottom_bits
- b = i & LOWER_MASK[veb.num_bottom_bits-1]
- if veb.bottom[a] == NULL:
- return 0
- else:
- if veb.num_bottom_bits > MIN_BOTTOM_BITS:
- subv = <_VEB*> veb.bottom[a]
- return VEB_contains(subv, b)
- else:
- subb = <_BitSet*> veb.bottom[a]
- return bitset_contains(subb, b)
-
-
-cdef class VEBIterator:
- cdef _VEB* v
- cdef int next_val
-
- def __next__(self):
- cdef int ret_val
-
- if self.next_val == -1:
- raise StopIteration()
- ret_val = self.next_val
- self.next_val = VEB_findsucc(self.v, ret_val)
- return ret_val
-
-
-cdef class VEB:
- cdef _VEB* veb
- cdef int _findsucc(self, int i)
- cdef int _insert(self, int i)
- cdef int _first(self)
-
- def __cinit__(self, int size):
- self.veb = new_VEB(size)
-
- def __dealloc__(self):
- del_VEB(self.veb)
-
- def __iter__(self):
- cdef VEBIterator it
- it = VEBIterator()
- it.v = self.veb
- it.next_val = self.veb.min_val
- return it
-
- def insert(self, i):
- return VEB_insert(self.veb, i)
-
- cdef int _insert(self, int i):
- return VEB_insert(self.veb, i)
-
- def findsucc(self, i):
- return VEB_findsucc(self.veb, i)
-
- cdef int _first(self):
- return self.veb.min_val
-
- cdef int _findsucc(self, int i):
- return VEB_findsucc(self.veb, i)
-
- def __len__(self):
- return self.veb.size
-
- def __contains__(self, i):
- return VEB_contains(self.veb, i)