File: EST_Relation.i

package info (click to toggle)
speech-tools 1%3A2.5.0-11
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 9,988 kB
  • sloc: cpp: 67,350; ansic: 12,174; sh: 4,055; java: 3,748; makefile: 1,111; lisp: 711; perl: 396; awk: 85; xml: 9
file content (146 lines) | stat: -rw-r--r-- 5,568 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*************************************************************************/
/*                                                                       */
/*                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);