* Inline methods in StateClass

This commit is contained in:
Matthew Honnibal 2015-06-29 01:06:28 +02:00
parent a02fd3af5d
commit 3bb5876c5a
2 changed files with 60 additions and 92 deletions

View File

@ -41,45 +41,80 @@ cdef class StateClass:
if (i + self._b_i) >= self.length: if (i + self._b_i) >= self.length:
return -1 return -1
return self._buffer[self._b_i + i] return self._buffer[self._b_i + i]
cdef int H(self, int i) nogil cdef inline const TokenC* S_(self, int i) nogil:
return self.safe_get(self.S(i))
cdef inline const TokenC* B_(self, int i) nogil:
return self.safe_get(self.B(i))
cdef inline const TokenC* H_(self, int i) nogil:
return self.safe_get(self.H(i))
cdef inline const TokenC* E_(self, int i) nogil:
return self.safe_get(self.E(i))
cdef inline const TokenC* L_(self, int i, int idx) nogil:
return self.safe_get(self.L(i, idx))
cdef inline const TokenC* R_(self, int i, int idx) nogil:
return self.safe_get(self.R(i, idx))
cdef inline const TokenC* safe_get(self, int i) nogil:
if i < 0 or i >= self.length:
return &self._empty_token
else:
return &self._sent[i]
cdef inline int H(self, int i) nogil:
if i < 0 or i >= self.length:
return -1
return self._sent[i].head + i
cdef int E(self, int i) nogil cdef int E(self, int i) nogil
cdef int R(self, int i, int idx) nogil
cdef int L(self, int i, int idx) nogil cdef int L(self, int i, int idx) nogil
cdef int R(self, int i, int idx) nogil
cdef const TokenC* S_(self, int i) nogil cdef inline bint empty(self) nogil:
cdef const TokenC* B_(self, int i) nogil return self._s_i <= 0
cdef const TokenC* H_(self, int i) nogil cdef inline bint eol(self) nogil:
cdef const TokenC* E_(self, int i) nogil return self.buffer_length() == 0
cdef const TokenC* L_(self, int i, int idx) nogil cdef inline bint at_break(self) nogil:
cdef const TokenC* R_(self, int i, int idx) nogil return self._break != -1
cdef const TokenC* safe_get(self, int i) nogil cdef inline bint is_final(self) nogil:
return self.stack_depth() <= 0 and self._b_i >= self.length
cdef bint empty(self) nogil cdef inline bint has_head(self, int i) nogil:
return self.safe_get(i).head != 0
cdef bint entity_is_open(self) nogil
cdef bint eol(self) nogil cdef inline int n_L(self, int i) nogil:
return self.safe_get(i).l_kids
cdef bint at_break(self) nogil
cdef bint is_final(self) nogil cdef inline int n_R(self, int i) nogil:
return self.safe_get(i).r_kids
cdef bint has_head(self, int i) nogil cdef inline bint stack_is_connected(self) nogil:
return False
cdef int n_L(self, int i) nogil cdef inline bint entity_is_open(self) nogil:
if self._e_i < 1:
return False
return self._ents[self._e_i-1].end == -1
cdef int n_R(self, int i) nogil cdef inline int stack_depth(self) nogil:
return self._s_i
cdef bint stack_is_connected(self) nogil cdef inline int buffer_length(self) nogil:
if self._break != -1:
cdef int stack_depth(self) nogil return self._break - self._b_i
else:
cdef int buffer_length(self) nogil return self.length - self._b_i
cdef void push(self) nogil cdef void push(self) nogil

View File

@ -34,11 +34,6 @@ cdef class StateClass:
self._buffer[i] = i self._buffer[i] = i
self._empty_token.lex = &EMPTY_LEXEME self._empty_token.lex = &EMPTY_LEXEME
cdef int H(self, int i) nogil:
if i < 0 or i >= self.length:
return -1
return self._sent[i].head + i
cdef int E(self, int i) nogil: cdef int E(self, int i) nogil:
if self._e_i <= 0 or self._e_i >= self.length: if self._e_i <= 0 or self._e_i >= self.length:
return 0 return 0
@ -96,68 +91,6 @@ cdef class StateClass:
ptr -= 1 ptr -= 1
return -1 return -1
cdef const TokenC* S_(self, int i) nogil:
return self.safe_get(self.S(i))
cdef const TokenC* B_(self, int i) nogil:
return self.safe_get(self.B(i))
cdef const TokenC* H_(self, int i) nogil:
return self.safe_get(self.H(i))
cdef const TokenC* E_(self, int i) nogil:
return self.safe_get(self.E(i))
cdef const TokenC* L_(self, int i, int idx) nogil:
return self.safe_get(self.L(i, idx))
cdef const TokenC* R_(self, int i, int idx) nogil:
return self.safe_get(self.R(i, idx))
cdef const TokenC* safe_get(self, int i) nogil:
if i < 0 or i >= self.length:
return &self._empty_token
else:
return &self._sent[i]
cdef bint empty(self) nogil:
return self._s_i <= 0
cdef bint eol(self) nogil:
return self.buffer_length() == 0
cdef bint at_break(self) nogil:
return self._break != -1
cdef bint is_final(self) nogil:
return self.stack_depth() <= 0 and self._b_i >= self.length
cdef bint has_head(self, int i) nogil:
return self.safe_get(i).head != 0
cdef int n_L(self, int i) nogil:
return self.safe_get(i).l_kids
cdef int n_R(self, int i) nogil:
return self.safe_get(i).r_kids
cdef bint stack_is_connected(self) nogil:
return False
cdef bint entity_is_open(self) nogil:
if self._e_i < 1:
return False
return self._ents[self._e_i-1].end == -1
cdef int stack_depth(self) nogil:
return self._s_i
cdef int buffer_length(self) nogil:
if self._break != -1:
return self._break - self._b_i
else:
return self.length - self._b_i
cdef void push(self) nogil: cdef void push(self) nogil:
if self.B(0) != -1: if self.B(0) != -1:
self._stack[self._s_i] = self.B(0) self._stack[self._s_i] = self.B(0)