the Literals API in Haskell no longer offers the sentence as an argument to the callbacks. It is just as easy to save the sentence in a closure and by doing that we save the repeated round about from C to Haskell strings

This commit is contained in:
krasimir
2016-05-11 11:10:22 +00:00
parent 9abc6aadde
commit 86c5423275
5 changed files with 14 additions and 17 deletions

View File

@@ -4,9 +4,7 @@
typedef struct {
PgfLiteralCallback callback;
PgfExprProb* (*match)(PgfLiteralCallback* self,
size_t lin_idx,
GuString sentence, size_t* poffset,
PgfExprProb* (*match)(size_t lin_idx, size_t* poffset,
GuPool *out_pool);
GuFinalizer fin;
} HSPgfLiteralCallback;
@@ -48,7 +46,7 @@ hspgf_match_callback(PgfLiteralCallback* self, PgfConcr* concr,
size_t hs_offset =
hspgf_offset2hs(sentence, *poffset);
PgfExprProb* ep =
callback->match(self, lin_idx, sentence, &hs_offset, out_pool);
callback->match(lin_idx, &hs_offset, out_pool);
*poffset = hspgf_hs2offset(sentence, hs_offset);
return ep;