147 lines
5.4 KiB
OpenEdge ABL
147 lines
5.4 KiB
OpenEdge ABL
/*************************************************************************/
|
|
/* */
|
|
/* Centre for Speech Technology Research */
|
|
/* (University of Edinburgh, UK) and */
|
|
/* Korin Richmond */
|
|
/* Copyright (c) 2003 */
|
|
/* All Rights Reserved. */
|
|
/* */
|
|
/* Permission is hereby granted, free of charge, to use and distribute */
|
|
/* this software and its documentation without restriction, including */
|
|
/* without limitation the rights to use, copy, modify, merge, publish, */
|
|
/* distribute, sublicense, and/or sell copies of this work, and to */
|
|
/* permit persons to whom this work is furnished to do so, subject to */
|
|
/* the following conditions: */
|
|
/* */
|
|
/* 1. The code must retain the above copyright notice, this list of */
|
|
/* conditions and the following disclaimer. */
|
|
/* 2. Any modifications must be clearly marked as such. */
|
|
/* 3. Original authors' names are not deleted. */
|
|
/* 4. The authors' names are not used to endorse or promote products */
|
|
/* derived from this software without specific prior written */
|
|
/* permission. */
|
|
/* */
|
|
/* THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK */
|
|
/* DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING */
|
|
/* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT */
|
|
/* SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE */
|
|
/* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES */
|
|
/* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN */
|
|
/* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, */
|
|
/* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF */
|
|
/* THIS SOFTWARE. */
|
|
/* */
|
|
/*************************************************************************/
|
|
/* Author : Korin Richmond */
|
|
/* Date : 14 Apr 2003 */
|
|
/* --------------------------------------------------------------------- */
|
|
/* */
|
|
/* Swig interface for EST_Relation class */
|
|
/* */
|
|
/*************************************************************************/
|
|
|
|
%module EST_Relation
|
|
%{
|
|
#include "ling_class/EST_Relation.h"
|
|
#include "ling_class/EST_Item.h"
|
|
%}
|
|
|
|
%include "EST_rw_status.i"
|
|
%include "EST_typemaps.i"
|
|
%import "EST_Item.i"
|
|
|
|
class EST_Relation
|
|
{
|
|
private:
|
|
EST_String p_name;
|
|
EST_Utterance *p_utt;
|
|
EST_Item *p_head;
|
|
EST_Item *p_tail;
|
|
|
|
static void node_tidy_up_val( int &k, EST_Val &v );
|
|
static void node_tidy_up( int &k, EST_Item *node );
|
|
|
|
void copy( const EST_Relation &r );
|
|
public:
|
|
|
|
EST_Relation();
|
|
EST_Relation( const char *name );
|
|
EST_Relation( const EST_Relation &r ) { copy(r); }
|
|
~EST_Relation();
|
|
|
|
EST_read_status load( const EST_String &filename,
|
|
const EST_String &type="esps" );
|
|
|
|
EST_write_status save(const EST_String &filename,
|
|
const EST_String &type,
|
|
bool evaluate_ff = false) const;
|
|
|
|
|
|
// Features which belong to the relation rather than its items
|
|
// EST_Features f;
|
|
|
|
// Evaluate the relation's feature functions
|
|
// void evaluate_features();
|
|
|
|
// Evaluate the feature functions of all the items in the relation
|
|
void evaluate_item_features();
|
|
|
|
// Clear the relation of items
|
|
void clear();
|
|
|
|
// Return the EST_Utterance to which this relation belongs
|
|
EST_Utterance *utt();
|
|
|
|
// Set the EST_Utterance to which this relation belongs
|
|
void set_utt( EST_Utterance *u );
|
|
|
|
// name of the relation
|
|
const EST_String &name() const;
|
|
|
|
// Return the head (first) item of the relation
|
|
EST_Item *head() const;
|
|
|
|
// Return the root item of the relation
|
|
EST_Item *root() const;
|
|
|
|
// Return the tail (last) item of the relation
|
|
EST_Item *tail() const;
|
|
|
|
EST_Item *first() const;
|
|
EST_Item *first_leaf() const;
|
|
EST_Item *last() const;
|
|
EST_Item *last_leaf() const;
|
|
|
|
EST_Item *append( EST_Item *si );
|
|
EST_Item *prepend( EST_Item *si );
|
|
|
|
// number of items in this relation
|
|
int length() const;
|
|
|
|
// return true if relation does not contain any items
|
|
int empty() const;
|
|
|
|
// remove EST_Item "item" from relation
|
|
void remove_item( EST_Item *item );
|
|
|
|
// remove all occurrences of feature "name" from relation's items
|
|
void remove_item_feature( const EST_String &name );
|
|
|
|
#ifdef HAVEITEMLISTOUT
|
|
%extend {
|
|
%newobject items;
|
|
inline void items( EST_Item **ITEMLISTOUT ){
|
|
*ITEMLISTOUT = self->first();
|
|
}
|
|
}
|
|
#endif
|
|
|
|
};
|
|
|
|
//inline bool operator==(const EST_Relation &a, const EST_Relation &b);
|
|
void copy_relation(const EST_Relation &from, EST_Relation &to);
|
|
|
|
|
|
|
|
|