Started on the move back to a single executable. The backend programs are now a
[ragel.git] / rlgen-csharp / splitcodegen.h
blob8118643ce8f7c253caa174ee9d7965dffb008d53
1 /*
2 * Copyright 2006 Adrian Thurston <thurston@cs.queensu.ca>
3 */
5 /* This file is part of Ragel.
7 * Ragel is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * Ragel is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Ragel; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #ifndef _SPLITCODEGEN_H
23 #define _SPLITCODEGEN_H
25 #include "ipgotocodegen.h"
27 class CSharpSplitCodeGen : public CSharpIpGotoCodeGen
29 public:
30 CSharpSplitCodeGen( ostream &out ) : CSharpFsmCodeGen(out), CSharpIpGotoCodeGen(out) {}
32 bool ptOutLabelUsed;
34 std::ostream &PART_MAP();
35 std::ostream &EXIT_STATES( int partition );
36 std::ostream &PART_TRANS( int partition );
37 std::ostream &TRANS_GOTO( RedTransAp *trans, int level );
38 void GOTO_HEADER( RedStateAp *state, bool stateInPartition );
39 std::ostream &STATE_GOTOS( int partition );
40 std::ostream &PARTITION( int partition );
41 std::ostream &ALL_PARTITIONS();
42 void writeData();
43 void writeExec();
44 void writeParts();
46 void setLabelsNeeded( RedStateAp *fromState, GenInlineList *inlineList );
47 void setLabelsNeeded( RedStateAp *fromState, RedTransAp *trans );
48 void setLabelsNeeded();
50 int currentPartition;
53 #endif /* _SPLITCODEGEN_H */