From 4373ba6a600785db93b97afb5daa53dc14a17d19 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sun, 25 Jan 2015 21:58:34 +0100 Subject: added parse, link and include functions to Project --- src/core/model/Project.hpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'src/core/model/Project.hpp') diff --git a/src/core/model/Project.hpp b/src/core/model/Project.hpp index 2c50f49..4743454 100644 --- a/src/core/model/Project.hpp +++ b/src/core/model/Project.hpp @@ -90,6 +90,78 @@ public: */ Project(Manager &mgr, Registry ®istry); + /** + * Parses a file with the given Logger in an empty ParserScope. This + * function is meant to be called by the top-level (e.g. a main function) + * and not by other parsers. These should use the link and include methods + * instead. + * + * @param path is the path of the file that should be parsed. + * @param mimetype is the mimetype of the resource that should be parsed + * (may be empty, in which case the mimetype is deduced from the file + * extension). + * @param rel is a "relation string" supplied by the user which specifies + * the relationship of the specified resource. May be empty, in which case + * the relation is deduced from the supported types and the types of the + * parser for the given mimetype. + * @param supportedTypes contains the types of the returned Node the caller + * can deal with. Note that only the types the parser claims to return are + * checked, not the actual result. + * @param logger is the logger that should be used + * @return the parsed node or nullptr if something goes wrong. + */ + Rooted parse(const std::string &path, const std::string mimetype, + const std::string rel, RttiSet &supportedTypes, + Logger &logger); + + /** + * Parses a file with ParserContext and an empty ParserScope. The parsed + * object graph of files that are parsed using the "link" function is + * cached (in contrast to the "include" function). + * + * @param ctx is the ParserContext that should be passed to the underlying + * parser. The scope in the ParserContext will be exchanged. + * @param path is the path of the file that should be parsed. + * @param mimetype is the mimetype of the resource that should be parsed + * (may be empty, in which case the mimetype is deduced from the file + * extension). + * @param rel is a "relation string" supplied by the user which specifies + * the relationship of the specified resource. May be empty, in which case + * the relation is deduced from the supported types and the types of the + * parser for the given mimetype. + * @param supportedTypes contains the types of the returned Node the caller + * can deal with. Note that only the types the parser claims to return are + * checked, not the actual result. + * @return the parsed node or nullptr if something goes wrong. + */ + Rooted link(ParserContext &ctx, const std::string &path, + const std::string mimetype, const std::string rel, + RttiSet &supportedTypes); + + /** + * Parses a file with ParserContext and the current ParserScope. In contrast + * to the "link" function, include() does not cache the parsed node (as it + * depends on the current ParserScope). + * + * @param ctx is the ParserContext that should be passed to the underlying + * parser. The scope in the ParserContext will be exchanged. + * @param path is the path of the file that should be parsed. + * @param mimetype is the mimetype of the resource that should be parsed + * (may be empty, in which case the mimetype is deduced from the file + * extension). + * @param rel is a "relation string" supplied by the user which specifies + * the relationship of the specified resource. May be empty, in which case + * the relation is deduced from the supported types and the types of the + * parser for the given mimetype. + * @param supportedTypes contains the types of the returned Node the caller + * can deal with. Note that only the types the parser claims to return are + * checked, not the actual result. + * @return the parsed node or nullptr if something goes wrong. + */ + Rooted include(ParserContext &ctx, const std::string &path, + const std::string mimetype, const std::string rel, + RttiSet &supportedTypes); + /** * Returns a reference to the internal system typesystem. * -- cgit v1.2.3