14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* FILE: netw_arc.h 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * DATE MODIFIED: 31-Aug-07 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * DESCRIPTION: Part of the SREC graph compiler project source files. 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __netw_arc_h__ 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __netw_arc_h__ 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#undef assert 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define assert(X) 261bfedbd04122c0e177caf693423aabad3462d66dJack Palevich#include <cstdio> 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectclass GRXMLDoc; 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectclass NUANArc 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectpublic: 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project friend class SubGraph; 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Constructors */ 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Create arc with only input and output labels 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project NUANArc (int iLabel, int oLabel) 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project inputLabel= iLabel; 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project outputLabel= oLabel; 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project centre= -1; 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project left= -1; 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project right= -1; 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return; 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Create arc with full data 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project NUANArc (int iLabel, int oLabel, int from, int to) 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project inputLabel= iLabel; 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project outputLabel= oLabel; 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fromId= from; 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project toId= to; 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project left= -1; 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project right= -1; 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project centre= -1; 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return; 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Copy an arc 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project NUANArc (NUANArc *arcsrc) 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project inputLabel= arcsrc->inputLabel; 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project outputLabel= arcsrc->outputLabel; 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fromId= arcsrc->fromId; 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project toId= arcsrc->toId; 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project left= arcsrc->left; 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project right= arcsrc->right; 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project centre= arcsrc->centre; 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return; 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Create arc based on another arc 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project NUANArc (NUANArc *arcsrc, int offset, int startId, int newStartId, int endId, int newEndId) 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project inputLabel= arcsrc->inputLabel; 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project outputLabel= arcsrc->outputLabel; 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (arcsrc->fromId == startId && newStartId >= 0) 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fromId= newStartId; 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fromId= arcsrc->fromId + offset; 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (arcsrc->toId == endId && newEndId >= 0) 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project toId= newEndId; 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project toId= arcsrc->toId + offset; 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project left= -1; 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project right= -1; 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project centre= -1; 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return; 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Assign non-terminal vertices 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AssignFromId (int Id) 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fromId= Id; 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Assign non-terminal vertices 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AssignToId (int Id) 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project toId= Id; 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AssignInput (int Id) 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project inputLabel= Id; 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AssignOutput (int Id) 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project outputLabel= Id; 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Assign centre context 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AssignCentre (int centreData) { centre= centreData; }; 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Assign left context 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AssignLeft (int leftData) { left= leftData; }; 1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Assign right context 1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AssignRight (int rightData) { right= rightData; }; 1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Access functions */ 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Get input label 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int GetInput() { return inputLabel; }; 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Get output label 1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int GetOutput() { return outputLabel; }; 1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Get from Vertex 1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int GetFromId() { return fromId; }; 1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Get to Vertex 1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int GetToId() { return toId; }; 1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Get centre context 1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int GetCentre() { return centre; }; 1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Get left context 1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int GetLeft() { return left; }; 1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Get right context 1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int GetRight() { return right; }; 1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Transduction 1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int Transduce (int iLabel) 1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (inputLabel == iLabel) 1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return outputLabel; 1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Similarity checks 1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int Compare (NUANArc *test) 1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (fromId > test->fromId) 1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (fromId < test->fromId) 1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (toId > test->toId) 1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (toId < test->toId) 1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel > test->inputLabel) 1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel < test->inputLabel) 1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel > test->outputLabel) 1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel < test->outputLabel) 1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 0; 1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int CompareSymbol (NUANArc *test) 1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (inputLabel > test->inputLabel) 1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel < test->inputLabel) 1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel > test->outputLabel) 2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel < test->outputLabel) 2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 0; 2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int CompareReverse (NUANArc *test) 2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (toId > test->toId) 2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (toId < test->toId) 2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (fromId > test->fromId) 2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (fromId < test->fromId) 2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel > test->inputLabel) 2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel < test->inputLabel) 2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel > test->outputLabel) 2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel < test->outputLabel) 2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 0; 2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int CompareForMin (NUANArc *test) 2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (fromId > test->fromId) 2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (fromId < test->fromId) 2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel > test->inputLabel) 2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel < test->inputLabel) 2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel > test->outputLabel) 2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel < test->outputLabel) 2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (toId > test->toId) 2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (toId < test->toId) 2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 0; 2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int CompareWithContext (NUANArc *test) 2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (fromId > test->fromId) 2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (fromId < test->fromId) 2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (toId > test->toId) 2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (toId < test->toId) 2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel > test->inputLabel) 2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (inputLabel < test->inputLabel) 2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel > test->outputLabel) 2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (outputLabel < test->outputLabel) 2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (left > test->left) 2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (left < test->left) 2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (right > test->right) 2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 1; 2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (right < test->right) 2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return -1; 2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 0; 2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project bool IsSame (NUANArc *test) 2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (inputLabel == test->inputLabel && outputLabel == test->outputLabel && fromId == test->fromId && toId == test->toId) 2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return true; 2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return false; 2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project bool HasSameLabels (NUANArc *test) 2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (inputLabel == test->inputLabel && outputLabel == test->outputLabel) 2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return true; 2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return false; 2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project bool HasSameLabelsAndTo (NUANArc *test) 2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (inputLabel == test->inputLabel && outputLabel == test->outputLabel && toId == test->toId) 3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return true; 3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return false; 3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project bool HasSameLabelsAndFrom (NUANArc *test) 3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (inputLabel == test->inputLabel && outputLabel == test->outputLabel && fromId == test->fromId) 3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return true; 3104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 3114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return false; 3124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 3134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Print 3154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void Print() 3174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project printf ("%d %d %d %d (%d)\n", fromId, toId, inputLabel, outputLabel, centre); 3194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return; 3204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 3214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void PrintText() 3224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project printf ("%d %d %c %d (%d)\n", fromId, toId, inputLabel, outputLabel, centre); 3244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return; 3254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 3264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void Dump (GRXMLDoc &p_Doc ); 3284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectprotected: 3314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int inputLabel; /* input label */ 3324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int outputLabel; /* output label */ 3334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int fromId; /* from node */ 3344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int toId; /* to node */ 3354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int centre; /* left context */ 3364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int left; /* left context */ 3374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int right; /* right context */ 3384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}; 3394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif // __netw_arc_h__ 341