14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* FILE: grph.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#include "sub_grph.h" 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectclass Graph 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectpublic: 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Graph (const char *name) 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int count= strlen(name); 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project title= new char [count+1]; 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project strcpy (title, name); 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project numSubGraph= 0; 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project subGraph= 0; 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project subIndex= 0; 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ~Graph() 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project delete [] subGraph; 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project delete [] subIndex; 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project delete [] title; 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int addSubGraph (SubGraph *subGraph); 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int getSubGraphIndex (SubGraph *subGraph); 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void BeginRule (SubGraph *subg); 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void EndRule (SubGraph *subg); 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void BeginItem (SubGraph *subg); 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void BeginItemRepeat (SubGraph *subg, int min_count, int max_count); 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AddRuleRef (SubGraph *subg, int ruleNo); 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AddLabel (SubGraph *subg, int labNo); 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void AddTag (SubGraph *subg, int tagNo); 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void EndItem (SubGraph *subg); 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void BeginOneOf (SubGraph *subg); 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void EndOneOf (SubGraph *subg); 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void BeginCount (SubGraph *subg, int minCount, int maxCount); 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void EndCount (SubGraph *subg); 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void BeginOptional (SubGraph *subg); 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void ExpandRules (SubGraph *subg); 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectprivate: 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int numSubGraph; 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project SubGraph **subGraph; 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int *subIndex; 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int getSubGraphIndex (int subId); 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *title; 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}; 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 75