source: translator/Designators/Processor.h@ 643a2e1

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay gc_noraii jacob/cs343-translation jenkins-sandbox memory new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new string with_gc
Last change on this file since 643a2e1 was 51b73452, checked in by Peter A. Buhr <pabuhr@…>, 11 years ago

initial commit

  • Property mode set to 100644
File size: 2.1 KB
Line 
1#include "SynTree/Declaration.h"
2#include "SynTree/Expression.h"
3#include "SynTree/Type.h"
4#include "ResolvExpr/AlternativeFinder.h"
5
6#include <vector>
7#include <string>
8#include <list>
9#include <map>
10
11namespace Designators {
12 class Matcher;
13 class GenSym;
14
15 template < class OutputIterator > bool extractNames( std::list< DeclarationWithType * > &, OutputIterator );
16 template < class OutputIterator > bool extractNames( Expression *, OutputIterator, Matcher );
17 void check_alternative( FunctionType *, ResolvExpr::AltList & );
18 ObjectDecl *extractTupleV( Matcher, TupleExpr *names );
19 bool fixDesignations( ResolvExpr::AlternativeFinder &finder, Expression *designation );
20 DeclarationWithType *gensym( GenSym &, DeclarationWithType * );
21
22 class GenSym {
23 public:
24 GenSym( std::string prefix = "" ) : gensym_count(0) {}
25 GenSym( GenSym &other ) { gensym_count = other.gensym_count; }
26
27// std::string get_symbol() { }
28 private:
29 std::string prefix;
30 int gensym_count;
31 };
32
33 // template< typename Key >
34 class Matcher {
35 public:
36 typedef std::vector< std::string >::iterator iterator;
37
38 Matcher( const std::list< DeclarationWithType * > & );
39 ~Matcher() {}
40
41 template< class OutputIterator > bool get_reorderedCall( OutputIterator );
42 template< class InputIterator > bool add(InputIterator, InputIterator, ResolvExpr::Alternative &);
43 template< class InputIterator, class OutputIterator > bool slice(InputIterator begin, InputIterator end, OutputIterator );
44 //std::vector<std::string> &get_order() const { return order; }
45
46 iterator begin() { return order.begin(); }
47 iterator end() { return order.end(); }
48
49 //Expression *operator[]( int idx ) { return table( order[ idx ] ); }
50 private:
51 std::map< std::string, int > table;
52 std::vector<std::string> order;
53 std::vector<DeclarationWithType *> declarations;
54 std::vector<ResolvExpr::Alternative *> alternatives;
55 };
56 // void pruneAlternatives( Expression *expr, ResolvExpr::AlternativeFinder & );
57
58} // namespace Designators
59
60/*
61 Local Variables:
62 mode: c++
63 End:
64*/
Note: See TracBrowser for help on using the repository browser.