From: <hug...@li...> - 2010-05-26 21:07:15
|
details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/e5f76a7aa550 changeset: 4052:e5f76a7aa550 user: Florian Achleitner <flo...@gm...> date: Wed May 26 22:11:17 2010 +0200 description: - Basic design, run doxygen to get nice UML graphs and some basic docu. - First tryout of boost::regex, runs great! - simple tester (main.cpp) runs. details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/be1825396383 changeset: 4053:be1825396383 user: Florian Achleitner <flo...@gm...> date: Wed May 26 22:59:42 2010 +0200 description: add CmakeLists.txt from Thomas template. cmake build runs now. diffstat: src/Doxyfile | 35 ++- src/hugin_base/makefilelib/CMakeLists.txt | 26 +++ src/hugin_base/makefilelib/Comment.cpp | 26 +++ src/hugin_base/makefilelib/Comment.h | 53 ++++++ src/hugin_base/makefilelib/Doxyfile | 234 ++++++++++++++++++++++++++++ src/hugin_base/makefilelib/Filename.cpp | 29 +++ src/hugin_base/makefilelib/Filename.h | 33 +++ src/hugin_base/makefilelib/Makefile.cpp | 24 ++ src/hugin_base/makefilelib/Makefile.h | 29 +++ src/hugin_base/makefilelib/MakefileItem.cpp | 20 ++ src/hugin_base/makefilelib/MakefileItem.h | 38 ++++ src/hugin_base/makefilelib/Rule.cpp | 9 + src/hugin_base/makefilelib/Rule.h | 38 ++++ src/hugin_base/makefilelib/Variable.cpp | 9 + src/hugin_base/makefilelib/Variable.h | 44 +++++ src/hugin_base/makefilelib/VariableDef.cpp | 9 + src/hugin_base/makefilelib/VariableDef.h | 42 +++++ src/hugin_base/makefilelib/VariableRef.cpp | 9 + src/hugin_base/makefilelib/VariableRef.h | 43 +++++ src/hugin_base/makefilelib/main.cpp | 22 ++ 20 files changed, 757 insertions(+), 15 deletions(-) diffs (911 lines): diff -r c43fd725ca69 -r be1825396383 src/Doxyfile --- a/src/Doxyfile Thu May 20 11:38:11 2010 -0700 +++ b/src/Doxyfile Wed May 26 22:59:42 2010 +0200 @@ -42,15 +42,15 @@ # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO +EXTRACT_LOCAL_METHODS = YES HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO +INTERNAL_DOCS = YES CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES @@ -65,7 +65,7 @@ ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO +SHOW_DIRECTORIES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- @@ -99,7 +99,7 @@ #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- -SOURCE_BROWSER = NO +SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES @@ -116,9 +116,9 @@ #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html -HTML_FILE_EXTENSION = .shtml -HTML_HEADER = dox/headerFile -HTML_FOOTER = dox/footerFile +HTML_FILE_EXTENSION = .html +#HTML_HEADER = dox/headerFile +#HTML_FOOTER = dox/footerFile HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO @@ -129,8 +129,9 @@ TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO +GENERATE_TREEVIEW = YES TREEVIEW_WIDTH = 250 +USE_INLINE_TREES = YES #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- @@ -208,22 +209,26 @@ HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES -COLLABORATION_GRAPH = NO -UML_LOOK = NO +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = YES TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO +CALL_GRAPH = YES +CALLER_GRAPH = YES GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png -DOT_PATH = /sw/bin +DOT_PATH = /usr/bin/ DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 0 GENERATE_LEGEND = YES DOT_CLEANUP = YES +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- -SEARCHENGINE = NO +SEARCHENGINE = YES diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/CMakeLists.txt Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,26 @@ +SET(MAKEFILELIB_SRC Comment.cpp MakefileItem.cpp Variable.cpp VariableRef.cpp + Filename.cpp Makefile.cpp Rule.cpp VariableDef.cpp ) +SET(MAKEFILELIB_HEADER Comment.h Makefile.h Rule.h Variable.h Filename.h + MakefileItem.h VariableDef.h VariableRef.h) + + +IF (${HUGIN_SHARED_LIBS}) + add_library(makefilelib SHARED ${MAKEFILELIB_SRC} ${MAKEFILELIB_HEADER}) + set_target_properties(makefilelib PROPERTIES VERSION ${HUGIN_LIB_VERSION}) + IF(WIN32) + install(TARGETS makefilelib RUNTIME DESTINATION ${BINDIR}) + ELSE(WIN32) + install(TARGETS makefilelib DESTINATION ${LIBDIR}) + ENDIF(WIN32) +ELSE (${HUGIN_SHARED_LIBS}) + add_library(makefilelib STATIC ${MAKEFILELIB_SRC} ${MAKEFILELIB_HEADER}) +ENDIF (${HUGIN_SHARED_LIBS}) + +# additional libs +target_link_libraries(makefilelib boost_regex-mt) + + + +# tester executable +add_executable(test_makefilelib main.cpp) +target_link_libraries(test_makefilelib makefilelib) \ No newline at end of file diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Comment.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Comment.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,26 @@ +/** + * @file Comment.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "Comment.h" +#include <boost/regex.hpp> + +using namespace std; + +namespace makefile +{ + +static const string prefix("\n# "); + +/// \todo strip disallowed characters. +void Comment::print(ostream& os) +{ + static const boost::regex newline("[\n\r]"); + boost::regex_replace(text, newline, prefix); + os << prefix << boost::regex_replace(text, newline, prefix) << endl; +} + +} diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Comment.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Comment.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,53 @@ +/** + * @file Comment.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef COMMENT_H_ +#define COMMENT_H_ + +#include "MakefileItem.h" +#include <string> + +namespace makefile +{ +/** + * Encapsulates a Comment. + * Makefile comments are prefixed with # for every line. + * Currently only full line comments are supported. + */ +class Comment : public MakefileItem +{ + std::string text; + +public: + Comment() {} + + Comment(std::string s) : text(s) {} + + virtual ~Comment() { } + + std::string& getText() + { + return text; + } + + void setText(const std::string& s) + { + text = s; + } + + void appendLine(const std::string& line) + { + text.append("\n"); + text.append(line); + } + + virtual void print(std::ostream& os); +}; + +} + +#endif /* COMMENT_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Doxyfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Doxyfile Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,234 @@ +# Doxyfile 1.3.9.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = makefilelib +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = api-doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ./ +FILE_PATTERNS = *.h \ + *.c \ + *.cpp \ + *.hxx \ + *.cxx \ + *.dox +RECURSIVE = YES +EXCLUDE = foreign/ +EXCLUDE_SYMLINKS = YES +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +#HTML_HEADER = dox/headerFile +#HTML_FOOTER = dox/footerFile +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +USE_INLINE_TREES = YES +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = YES +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = YES +CALLER_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = /usr/bin/ +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Filename.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Filename.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,29 @@ +/** + * @file Filename.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "Filename.h" + +namespace makefile +{ + +Filename::Filename() +{ + // TODO Auto-generated constructor stub + +} + +Filename::~Filename() +{ + // TODO Auto-generated destructor stub +} + +void Filename::print(std::ostream& os) +{ + +} + +} diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Filename.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Filename.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,33 @@ +/** + * @file Filename.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef FILENAME_H_ +#define FILENAME_H_ + +/** + * + */ +#include "MakefileItem.h" + +namespace makefile +{ + +/** + * Encapsulates a filename handling platform specific issues like allowed characters. + */ +class Filename: public makefile::MakefileItem +{ +public: + Filename(); + virtual ~Filename(); + + virtual void print(std::ostream& os); +}; + +} + +#endif /* FILENAME_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Makefile.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Makefile.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,24 @@ +/** + * @file Makefile.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "Makefile.h" + +namespace makefile +{ + +Makefile::Makefile() +{ + // TODO Auto-generated constructor stub + +} + +Makefile::~Makefile() +{ + // TODO Auto-generated destructor stub +} + +} diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Makefile.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Makefile.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,29 @@ +/** + * @file Makefile.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef MAKEFILE_H_ +#define MAKEFILE_H_ + +/** + * + */ +namespace makefile +{ + +/** + * Container and Manager for all our \ref MakefileItem "MakefileItems". + */ +class Makefile +{ +public: + Makefile(); + virtual ~Makefile(); +}; + +} + +#endif /* MAKEFILE_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/MakefileItem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/MakefileItem.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,20 @@ +/** + * @file MakefileItem.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "MakefileItem.h" + +namespace makefile +{ + +std::ostream& operator<<(std::ostream& stream, MakefileItem& item) +{ + item.print(stream); + return stream; +} + + +} diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/MakefileItem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/MakefileItem.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,38 @@ +/** + * @file MakefileItem.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef MAKEFILEITEM_H_ +#define MAKEFILEITEM_H_ + +#include <ostream> + +namespace makefile +{ + +/** + * The virtual baseclass for all objects that appear in the Makefile. + * Subclasses must implement \ref print which allows us to write them to + * an ostream, like a string, nice :). + * The various implementations of \ref print have to take care of proper + * makefile compatible output. + */ +class MakefileItem +{ +public: + MakefileItem() {} + virtual ~MakefileItem() {} + + /// Write the items representation to an ostream in a makefile compatible way. + virtual void print(std::ostream& os)=0; + +}; + +std::ostream& operator<<(std::ostream& stream, MakefileItem& item); + +} + +#endif /* MAKEFILEITEM_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Rule.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Rule.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,9 @@ +/** + * @file Rule.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "Rule.h" + diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Rule.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Rule.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,38 @@ +/** + * @file Rule.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef RULE_H_ +#define RULE_H_ + +#include "MakefileItem.h" + +namespace makefile +{ + +/** + * Represents a makefile rule, including Prerequisite and Command. + * + */ +class Rule : public MakefileItem +{ +public: + Rule() + { + // TODO Auto-generated constructor stub + + } + virtual ~Rule() + { + // TODO Auto-generated destructor stub + } + + virtual void print(std::ostream& os); +}; + +} + +#endif /* RULE_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Variable.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Variable.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,9 @@ +/** + * @file Variable.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "Variable.h" + diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/Variable.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/Variable.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,44 @@ +/** + * @file Variable.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef VARIABLE_H_ +#define VARIABLE_H_ + +#include <string> + +namespace makefile +{ + +/** + * Holds name and value of a makefile variable. + * The \ref MakefileItem "MakefileItems" VariableRef and VariableDef refer are linked to one of + * these to know what they represent. + */ +class Variable +{ + std::string name, value; +public: + Variable() {} + Variable(std::string name_, std::string value_) + : name(name_), value(value_) {} + + const std::string& getName() + { + return name; + } + + const std::string& getValue() + { + return value; + } + + virtual ~Variable() {} +}; + +} + +#endif /* VARIABLE_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/VariableDef.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/VariableDef.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,9 @@ +/** + * @file VariableDef.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "VariableDef.h" + diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/VariableDef.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/VariableDef.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,42 @@ +/** + * @file VariableDef.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef VARIABLEDEF_H_ +#define VARIABLEDEF_H_ + +#include "MakefileItem.h" + +namespace makefile +{ +class Variable; + +/** + * Represents the Definition of a Variable in the makefile. On creation the object + * is bounded to a Variable. If an object of this type is \ref print ed + * it produces a Declaration to a Variable like \verbatim VAR=value \endverbatim + */ +class VariableDef : public MakefileItem +{ + const Variable& variable; +public: + VariableDef(Variable& var) + : variable(var) + { + // TODO Auto-generated constructor stub + + } + virtual ~VariableDef() + { + // TODO Auto-generated destructor stub + } + + virtual void print(std::ostream& os); +}; + +} + +#endif /* VARIABLEDEF_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/VariableRef.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/VariableRef.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,9 @@ +/** + * @file VariableRef.cpp + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include "VariableRef.h" + diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/VariableRef.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/VariableRef.h Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,43 @@ +/** + * @file VariableRef.h + * @brief + * Created on: May 25, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#ifndef VARIABLEREF_H_ +#define VARIABLEREF_H_ + +#include "MakefileItem.h" + +namespace makefile +{ +class Variable; + +/** + * Represents the Reference of a Variable in the makefile. On creation the object + * is bounded to a Variable. If an object of this type is \ref print ed + * it produces a Reference to a Variable like \verbatim $(VAR) \endverbatim + */ +class VariableRef : public MakefileItem +{ + const Variable& variable; +public: + VariableRef(Variable& var) + : variable(var) + { + // TODO Auto-generated constructor stub + + } + virtual ~VariableRef() + { + // TODO Auto-generated destructor stub + } + + virtual void print(std::ostream& os); + +}; + +} + +#endif /* VARIABLEREF_H_ */ diff -r c43fd725ca69 -r be1825396383 src/hugin_base/makefilelib/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hugin_base/makefilelib/main.cpp Wed May 26 22:59:42 2010 +0200 @@ -0,0 +1,22 @@ +/** + * @file main.cpp + * @brief + * Created on: May 21, 2010 + * @author Florian Achleitner <flo...@gm...> + */ + +#include <iostream> +#include "Comment.h" + +using namespace std; +using namespace makefile; + +int main(int argc, char *argv[]) +{ + Comment comment("First line"); + + comment.appendLine("second line"); + comment.appendLine("third line\nfourth\r line"); + cout << comment; + return 0; +} |