147 lines
5.4 KiB
OpenEdge ABL
Raw Normal View History

2015-09-19 10:52:26 +02:00
/*************************************************************************/
/* */
/* 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);