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
|
#ifndef ICESPIDER_COMPILE_ROURTECOMPILER_H
#define ICESPIDER_COMPILE_ROURTECOMPILER_H
#include <boost/filesystem/path.hpp>
#include <visibility.h>
#include <vector>
#include <routes.h>
#include <Slice/Parser.h>
#include <Ice/BuiltinSequences.h>
namespace IceSpider {
namespace Compile {
class DLL_PUBLIC RouteCompiler {
public:
typedef std::map<std::string, Slice::UnitPtr> Units;
RouteCompiler();
RouteConfigurationPtr loadConfiguration(const boost::filesystem::path &) const;
Units loadUnits(RouteConfigurationPtr) const;
void applyDefaults(RouteConfigurationPtr, const Units & u) const;
void compile(const boost::filesystem::path & input, const boost::filesystem::path & output) const;
std::vector<boost::filesystem::path> searchPath;
private:
typedef std::map<std::string, int> Proxies;
void processConfiguration(FILE * output, RouteConfigurationPtr, const Units &) const;
void registerOutputSerializers(FILE * output, RoutePtr) const;
void releaseOutputSerializers(FILE * output, RoutePtr) const;
Proxies initializeProxies(FILE * output, RoutePtr) const;
void declareProxies(FILE * output, const Proxies &) const;
void addSingleOperation(FILE * output, RoutePtr, Slice::OperationPtr) const;
void addMashupOperations(FILE * output, RoutePtr, const Proxies &, const Units &) const;
typedef std::map<std::string, Slice::ParamDeclPtr> ParameterMap;
static ParameterMap findParameters(RoutePtr, const Units &);
static Slice::OperationPtr findOperation(const std::string &, const Units &);
static Slice::OperationPtr findOperation(const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq());
typedef std::pair<Slice::StructPtr, Slice::ClassDeclPtr> Type;
static Type findType(const std::string &, const Units &);
static Type findType(const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq());
};
}
}
#endif
|