this->header = NULL;
}
-modelCDMBlackBox::modelCDMBlackBox(const std::string& hName, const std::string& path, const int& level)
+modelCDMBlackBox::modelCDMBlackBox(modelCDMIProjectTreeNode* parent, const std::string& path, const std::string& name, const int& level)
{
- this->name = hName.substr(2, hName.size()-4);
+ std::cout << "creating black box: " + name + " in " + path + "\n";
+ this->parent = parent;
+ this->name = name;
this->path = path;
this->level = level;
this->type = wxDIR_DIRS;
this->source = NULL;
this->header = NULL;
- std::string pathHeader = path + "/" + "bb" + this->name + ".h";
+ std::string pathHeader = path + CDMUtilities::SLASH + "bb" + this->name + ".h";
std::ifstream confFile;
confFile.open((pathHeader).c_str());
modelCDMBlackBox::~modelCDMBlackBox()
{
+ this->header = NULL;
+ this->source = NULL;
}
const std::string& modelCDMBlackBox::GetNameBlackBox() const
bool modelCDMBlackBox::SetAuthors(const std::string& authors, std::string*& result)
{
std::vector<std::string> words;
- CDMUtilities::splitter::split(words, authors, ",\"\n", CDMUtilities::splitter::no_empties);
+ CDMUtilities::splitter::split(words, authors, "/\\\"\n", CDMUtilities::splitter::no_empties);
std::string authorsReal = words[0];
- for (int i = 1; i < words.size(); i++)
+ for (int i = 1; i < (int)(words.size()); i++)
{
- authorsReal += "/" + words[i];
+ authorsReal += "," + words[i];
}
//opening original header
in.close();
out.close();
//delete old file and rename new file
- std::string renameCommand = "mv " + pathHeader + ".tmp " + pathHeader;
+#ifdef _WIN32
+ std::string renameCommand = "move /Y \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#else
+ std::string renameCommand = "mv \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#endif
+
if(system(renameCommand.c_str()))
{
result = new std::string("An error occurred while running '" + renameCommand + "'.");
)
{
std::vector<std::string> words;
- CDMUtilities::splitter::split(words, categories, "\"", CDMUtilities::splitter::no_empties);
- std::string catsReal = words[0];
- for (int i = 1; i < words.size(); i++)
- {
- catsReal += "-" + words[i];
- }
-
- //opening original header
- std::string pathHeader = this->header->GetPath();
- std::ifstream in(pathHeader.c_str());
- if( !in.is_open())
- {
- result = new std::string(pathHeader + " file failed to open.");
- return false;
- }
- //opening temporal header
- std::ofstream out((pathHeader + ".tmp").c_str());
- if( !out.is_open())
- {
- result = new std::string(pathHeader + ".tmp file failed to open.");
- return false;
- }
- //copying contents from original to temporal and making changes
- std::string reading;
- while (getline(in, reading, '('))
- {
- CDMUtilities::splitter::split(words, reading, "\n ", CDMUtilities::splitter::no_empties);
- if(words[words.size() - 1] == "BBTK_CATEGORY")
- {
- out << reading << "(\"" << catsReal << "\")";
- getline(in, reading, ')');
- }
- else
- {
- out << reading;
- if (!in.eof())
- out << "(";
- }
- }
- in.close();
- out.close();
- //delete old file and rename new file
- std::string renameCommand = "mv " + pathHeader + ".tmp " + pathHeader;
- if(system(renameCommand.c_str()))
- {
- result = new std::string("An error occurred while running '" + renameCommand + "'.");
- return false;
- }
-
- this->categories = catsReal;
- return true;
+ CDMUtilities::splitter::split(words, categories, "\"\\/", CDMUtilities::splitter::no_empties);
+ std::string catsReal = words[0];
+ for (int i = 1; i < (int)(words.size()); i++)
+ {
+ catsReal += "," + words[i];
+ }
+
+ //opening original header
+ std::string pathHeader = this->header->GetPath();
+ std::ifstream in(pathHeader.c_str());
+ if( !in.is_open())
+ {
+ result = new std::string(pathHeader + " file failed to open.");
+ return false;
+ }
+ //opening temporal header
+ std::ofstream out((pathHeader + ".tmp").c_str());
+ if( !out.is_open())
+ {
+ result = new std::string(pathHeader + ".tmp file failed to open.");
+ return false;
+ }
+ //copying contents from original to temporal and making changes
+ std::string reading;
+ while (getline(in, reading, '('))
+ {
+ CDMUtilities::splitter::split(words, reading, "\n ", CDMUtilities::splitter::no_empties);
+ if(words[words.size() - 1] == "BBTK_CATEGORY")
+ {
+ out << reading << "(\"" << catsReal << "\")";
+ getline(in, reading, ')');
+ }
+ else
+ {
+ out << reading;
+ if (!in.eof())
+ out << "(";
+ }
+ }
+ in.close();
+ out.close();
+ //delete old file and rename new file
+#ifdef _WIN32
+ std::string renameCommand = "move /Y \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#else
+ std::string renameCommand = "mv \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#endif
+
+ if(system(renameCommand.c_str()))
+ {
+ result = new std::string("An error occurred while running '" + renameCommand + "'.");
+ return false;
+ }
+
+ this->categories = catsReal;
+ return true;
}
bool modelCDMBlackBox::SetDescription(
)
{
std::vector<std::string> words;
- CDMUtilities::splitter::split(words, description, "\"", CDMUtilities::splitter::no_empties);
+ CDMUtilities::splitter::split(words, description, "\"\n\\/", CDMUtilities::splitter::no_empties);
std::string descReal = words[0];
- for (int i = 1; i < words.size(); i++)
+ for (int i = 1; i < (int)(words.size()); i++)
{
- descReal += "\\\"" + words[i];
+ descReal += "-" + words[i];
}
//opening original header
in.close();
out.close();
//delete old file and rename new file
- std::string renameCommand = "mv " + pathHeader + ".tmp " + pathHeader;
+#ifdef _WIN32
+ std::string renameCommand = "move /Y \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#else
+ std::string renameCommand = "mv \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#endif
if(system(renameCommand.c_str()))
{
result = new std::string("An error occurred while running '" + renameCommand + "'.");
const bool modelCDMBlackBox::Refresh(std::string*& result)
{
- //TODO: implement method
+ std::cout << "refreshing black box: " << this->nameBlackBox << std::endl;
+ std::string pathHeader = path + CDMUtilities::SLASH + "bb" + this->name + ".h";
+
+ std::ifstream confFile;
+ confFile.open((pathHeader).c_str());
+ std::string word;
+
+ if(!confFile.is_open())
+ return false;
+
+ while(confFile.is_open() && !confFile.eof())
+ {
+ //get BBTK's
+ std::getline(confFile,word,'(');
+ std::vector<std::string> wordBits;
+ CDMUtilities::splitter::split(wordBits,word," \n",CDMUtilities::splitter::no_empties);
+
+ if(wordBits[wordBits.size()-1] == "BBTK_NAME")
+ {
+ std::getline(confFile,word,'"');
+ std::getline(confFile,word,'"');
+ this->nameBlackBox = word;
+ }
+ else if(wordBits[wordBits.size()-1] == "BBTK_AUTHOR")
+ {
+ std::getline(confFile,word,'"');
+ std::getline(confFile,word,'"');
+ this->authors = word;
+ }
+ else if(wordBits[wordBits.size()-1] == "BBTK_DESCRIPTION")
+ {
+ std::getline(confFile,word,'"');
+ std::getline(confFile,word,'"');
+ this->description = word;
+ }
+ else if(wordBits[wordBits.size()-1] == "BBTK_CATEGORY")
+ {
+ std::getline(confFile,word,'"');
+ std::getline(confFile,word,'"');
+ this->categories = word;
+ if (this->categories == "")
+ this->categories = "empty";
+ }
+ }
+ confFile.close();
return true;
}