/*************************************************************************/
/* Copyright (c) 2004                                                    */
/*        Daniel Sleator, David Temperley, and John Lafferty             */
/* Copyright (c) 2014 Linas Vepstas                                      */
/* All rights reserved                                                   */
/*                                                                       */
/* Use of the link grammar parsing system is subject to the terms of the */
/* license set forth in the LICENSE file included with this software.    */
/* This license allows free redistribution and use in source and binary  */
/* forms, with or without modification, subject to certain conditions.   */
/*                                                                       */
/*************************************************************************/
/**********************************************************************
  Calling paradigm:
   . call post_process_new() with the handle of a knowledge set. This
     returns a handle, used for all subsequent calls to post-process.
   . Do for each sentence:
       - Do for each generated linkage of a sentence:
             + call post_process_scan_linkage()
       - Do for each generated linkage of a sentence:
             + call do_post_process()
       - Call post_process_free()
***********************************************************************/

#ifndef _POSTPROCESS_H_
#define _POSTPROCESS_H_

#include "api-types.h"
#include "link-includes.h"

typedef struct PP_data_s PP_data;

Postprocessor * post_process_new(pp_knowledge *);
void post_process_free(Postprocessor *);

void post_process_lkgs(Sentence, Parse_Options);

void     do_post_process(Postprocessor *, Linkage, bool);
void     post_process_free_data(PP_data * ppd);
bool     post_process_match(const char *, const char *);  /* utility function */

void compute_domain_names(Linkage);
void linkage_free_pp_domains(Linkage);

#endif
