#define CDMUTILITIES_H_
#include<iostream>
+#include<vector>
#include<cstddef>
namespace CDMUtilities
/**
* Path slash
*/
- #ifdef _WIN32
- // ------ Windows
- static std::string SLASH = "\\";
- #elif __APPLE__
- // ------ Apple
- static std::string SLASH = "/";
- #else
- static std::string SLASH = "/";
- #endif
+#ifdef _WIN32
+ // ------ Windows
+ static std::string SLASH = "\\";
+#elif __APPLE__
+ // ------ Apple
+ static std::string SLASH = "/";
+#else
+ static std::string SLASH = "/";
+#endif
/**
* Text editor program
/**
* Terminal program
*/
- #ifdef _WIN32
- // ------ Windows
- static std::string TERMINAL = "start cmd.exe";
- #elif __APPLE__
- // ------ Apple
- //TODO: implementation for apple
- #else
- static std::string TERMINAL = "gnome-terminal";
- #endif
+#ifdef _WIN32
+ // ------ Windows
+ static std::string TERMINAL = "start cmd.exe";
+#elif __APPLE__
+ // ------ Apple
+ //TODO: implementation for apple
+#else
+ static std::string TERMINAL = "gnome-terminal";
+#endif
+#ifndef _WIN32
+ /**
+ * Build Command
+ */
+ static std::string BUILD_COMMAND = "make";
+#endif
/**
* Structure that handles the split method for c++
const typename Container::value_type& s,
const typename Container::value_type& delimiters,
empties_t empties = empties_ok
- );
+ )
+ {
+ result.clear();
+ size_t current;
+ size_t next = -1;
+ do
+ {
+ if (empties == no_empties)
+ {
+ next = s.find_first_not_of(delimiters, next + 1);
+ if (next == Container::value_type::npos)
+ {
+ break;
+ }
+ next -= 1;
+ }
+ current = next + 1;
+ next = s.find_first_of(delimiters, current);
+ result.push_back(s.substr(current, next - current));
+ }
+ while (next != Container::value_type::npos);
+ return result;
+ }
};
/**
* @return line stringified.
*/
std::string stringify(const std::string& line);
+
+ //CMakeLists file handling
+ /**
+ * Type definition for the value of a syntax element for CMakeLists files
+ */
+ typedef std::vector<std::string> cmdValue;
+
+ /**
+ * Type definition for the type of a syntax element for CMakeLists files
+ */
+ typedef std::string cmdType;
+
+ /**
+ * Type definition for syntax elements of a CMakeLists file
+ */
+ typedef std::pair<cmdType,cmdValue> syntaxElement;
+
+ /**
+ * Type definition for describing a CMakeLists file content
+ */
+ typedef std::vector<syntaxElement> CMLFile;
+
+ /**
+ * Reads a file as string and returns the read data.
+ * @param file_path Full path of the CMakeLists file.
+ * @return A string with the contents of the given file.
+ */
+ std::string readFile(const std::string& file_path);
+ /**
+ * Writes the given string into a file and returns whether the operation is successful.
+ * @param file_path Full path of the CMakeLists file.
+ * @param st string to write.
+ * @return True if the operation was successful.
+ */
+ bool writeFile(const std::string& file_path, const std::string& st);
+
+ /**
+ * Reads a CMakeLists file and returns the read data.
+ * @param file_path Full path of the CMakeLists file.
+ * @return A CMLFile with the contents of the given file.
+ */
+ CMLFile readCMLFile(const std::string& file_path);
+
+ /**
+ * Writes the given data into specified CMakeLists file.
+ * @param file_path Full path of the CMakeLists file.
+ * @param data CMakeLists data.
+ * @return True if the operation was successful.
+ */
+ bool writeCMLFile(const std::string& file_path, const CMLFile& data);
+
+ /**
+ * @param st Strips all space character at the beginning and at the end of the string.
+ */
+ void normalizeStr(std::string& st);
+
};
#endif /* CDMUTILITIES_H_ */