|
From: <got...@us...> - 2009-07-28 08:21:51
|
Revision: 268
http://scstudio.svn.sourceforge.net/scstudio/?rev=268&view=rev
Author: gotthardp
Date: 2009-07-28 08:21:28 +0000 (Tue, 28 Jul 2009)
Log Message:
-----------
ExportFormatter interface enhanced to identify selected msc and specify prerequisites.
Modified Paths:
--------------
trunk/src/check/boundedness/universal_boundedness_checker.cpp
trunk/src/check/localchoice/local_choice_checker.cpp
trunk/src/check/order/fifo_checker.cpp
trunk/src/check/race/race_checker.cpp
trunk/src/data/Z120/z120.h
trunk/src/data/Z120/z120_save.cpp
trunk/src/data/checker.h
trunk/src/data/formatter.h
trunk/tests/checker_test.cpp
trunk/tests/engmann_test.cpp
trunk/tests/z120_test.cpp
Added Paths:
-----------
trunk/src/data/prerequisite_check.h
Modified: trunk/src/check/boundedness/universal_boundedness_checker.cpp
===================================================================
--- trunk/src/check/boundedness/universal_boundedness_checker.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/check/boundedness/universal_boundedness_checker.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -108,7 +108,7 @@
Checker::PreconditionList UniversalBoundednessChecker::get_preconditions(MscPtr msc) const
{
Checker::PreconditionList result;
- result.push_back(CheckerPrecondition(L"Unique Instance Names", PP_RECOMMENDED));
+ result.push_back(PrerequisiteCheck(L"Unique Instance Names", PrerequisiteCheck::PP_RECOMMENDED));
return result;
}
Modified: trunk/src/check/localchoice/local_choice_checker.cpp
===================================================================
--- trunk/src/check/localchoice/local_choice_checker.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/check/localchoice/local_choice_checker.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -227,9 +227,9 @@
Checker::PreconditionList LocalChoiceChecker::get_preconditions(MscPtr msc) const
{
Checker::PreconditionList result;
- result.push_back(CheckerPrecondition(L"Unique Instance Names", PP_RECOMMENDED));
+ result.push_back(PrerequisiteCheck(L"Unique Instance Names", PrerequisiteCheck::PP_RECOMMENDED));
return result;
}
-// $Id$
\ No newline at end of file
+// $Id$
Modified: trunk/src/check/order/fifo_checker.cpp
===================================================================
--- trunk/src/check/order/fifo_checker.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/check/order/fifo_checker.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -26,7 +26,7 @@
Checker::PreconditionList FifoChecker::get_preconditions(MscPtr msc) const
{
Checker::PreconditionList result;
- result.push_back(CheckerPrecondition(L"Acyclic", PP_REQUIRED));
+ result.push_back(PrerequisiteCheck(L"Acyclic", PrerequisiteCheck::PP_REQUIRED));
return result;
}
Modified: trunk/src/check/race/race_checker.cpp
===================================================================
--- trunk/src/check/race/race_checker.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/check/race/race_checker.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -247,12 +247,12 @@
HMscPtr hmsc = boost::dynamic_pointer_cast<HMsc>(msc);
if(hmsc != NULL)
{
- result.push_back(CheckerPrecondition(L"Deadlock Free", PP_REQUIRED));
- result.push_back(CheckerPrecondition(L"Livelock Free", PP_REQUIRED));
+ result.push_back(PrerequisiteCheck(L"Deadlock Free", PrerequisiteCheck::PP_REQUIRED));
+ result.push_back(PrerequisiteCheck(L"Livelock Free", PrerequisiteCheck::PP_REQUIRED));
}
- result.push_back(CheckerPrecondition(L"Acyclic", PP_REQUIRED));
- result.push_back(CheckerPrecondition(L"FIFO", PP_REQUIRED));
+ result.push_back(PrerequisiteCheck(L"Acyclic", PrerequisiteCheck::PP_REQUIRED));
+ result.push_back(PrerequisiteCheck(L"FIFO", PrerequisiteCheck::PP_REQUIRED));
return result;
}
Modified: trunk/src/data/Z120/z120.h
===================================================================
--- trunk/src/data/Z120/z120.h 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/data/Z120/z120.h 2009-07-28 08:21:28 UTC (rev 268)
@@ -44,8 +44,12 @@
//! import MSC document
virtual MscPtr load_msc(const std::string &filename);
#endif
+ //! Returns a list of preconditions for this format.
+ virtual PreconditionList get_preconditions(MscPtr msc) const;
+
//! export MSC document
- virtual int save_msc(std::ostream& stream, const std::wstring &name, const std::vector<MscPtr>& msc);
+ virtual int save_msc(std::ostream& stream, const std::wstring &name,
+ const MscPtr& selected_msc, const std::vector<MscPtr>& msc = std::vector<MscPtr>());
protected:
int save_msc(std::ostream& stream, const MscPtr& msc);
Modified: trunk/src/data/Z120/z120_save.cpp
===================================================================
--- trunk/src/data/Z120/z120_save.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/data/Z120/z120_save.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -83,8 +83,16 @@
std::wstring m_name;
};
-int Z120::save_msc(std::ostream& stream, const std::wstring &name, const std::vector<MscPtr>& msc)
+ExportFormatter::PreconditionList Z120::get_preconditions(MscPtr msc) const
{
+ ExportFormatter::PreconditionList result;
+ // no preconditions
+ return result;
+}
+
+int Z120::save_msc(std::ostream& stream, const std::wstring &name,
+ const MscPtr& selected_msc, const std::vector<MscPtr>& msc)
+{
int result = 0; // error count
stream << "mscdocument " << VALID_NAME(name) << ";" << std::endl;
@@ -92,6 +100,7 @@
// list of MSC to be printed
// new references may be added to m_printing by save_hmsc()
+ m_printing.push_back(selected_msc);
std::copy(msc.begin(), msc.end(), std::back_inserter(m_printing));
for(std::list<MscPtr>::const_iterator pos = m_printing.begin();
Modified: trunk/src/data/checker.h
===================================================================
--- trunk/src/data/checker.h 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/data/checker.h 2009-07-28 08:21:28 UTC (rev 268)
@@ -25,6 +25,7 @@
#include <boost/shared_ptr.hpp>
#include "data/msc.h"
+#include "data/prerequisite_check.h"
class ChannelMapper;
class Checker;
@@ -49,24 +50,8 @@
*/
virtual std::wstring get_property_name() const = 0;
- enum PreconditionPriority
- {
- PP_REQUIRED, //! error if not satisfied
- PP_RECOMMENDED, //! warning if not satisfied
- PP_DISREGARDED //! may not be satisfied
- };
-
- struct CheckerPrecondition
- {
- CheckerPrecondition(const std::wstring& name, PreconditionPriority prio)
- : property_name(name), priority(prio)
- { }
-
- std::wstring property_name;
- PreconditionPriority priority;
- };
//! List of properties that must be satisfied before executing the check.
- typedef std::vector<CheckerPrecondition> PreconditionList;
+ typedef std::vector<PrerequisiteCheck> PreconditionList;
/**
* Returns a list of preconditions for the check.
Modified: trunk/src/data/formatter.h
===================================================================
--- trunk/src/data/formatter.h 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/src/data/formatter.h 2009-07-28 08:21:28 UTC (rev 268)
@@ -23,6 +23,7 @@
#include "data/msc.h"
#include "data/reporter.h"
+#include "data/prerequisite_check.h"
#if defined(_MSC_VER)
// FIXME: to be removed once the Formatter has some implementation in a .cpp file
@@ -54,8 +55,15 @@
class ExportFormatter
{
public:
+ //! List of properties that must be satisfied before executing the export.
+ typedef std::vector<PrerequisiteCheck> PreconditionList;
+
+ //! Returns a list of preconditions for this format.
+ virtual PreconditionList get_preconditions(MscPtr msc) const = 0;
+
//! export MSC document
- virtual int save_msc(std::ostream& stream, const std::wstring &name, const std::vector<MscPtr>& msc) = 0;
+ virtual int save_msc(std::ostream& stream, const std::wstring &name,
+ const MscPtr& selected_msc, const std::vector<MscPtr>& msc = std::vector<MscPtr>()) = 0;
};
typedef boost::shared_ptr<ExportFormatter> ExportFormatterPtr;
Added: trunk/src/data/prerequisite_check.h
===================================================================
--- trunk/src/data/prerequisite_check.h (rev 0)
+++ trunk/src/data/prerequisite_check.h 2009-07-28 08:21:28 UTC (rev 268)
@@ -0,0 +1,43 @@
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2009 Petr Gotthard <pet...@ce...>
+ *
+ * $Id$
+ */
+
+#ifndef _PREQUISITE_CHECK_H
+#define _PREQUISITE_CHECK_H
+
+#include <string>
+
+struct PrerequisiteCheck
+{
+ enum Priority
+ {
+ PP_REQUIRED, //! error if not satisfied
+ PP_RECOMMENDED, //! warning if not satisfied
+ PP_DISREGARDED //! may not be satisfied
+ };
+
+ PrerequisiteCheck(const std::wstring& name, Priority prio)
+ : property_name(name), priority(prio)
+ { }
+
+ std::wstring property_name;
+ Priority priority;
+};
+
+#endif /* _PREQUISITE_CHECK_H */
+
+// $Id$
Property changes on: trunk/src/data/prerequisite_check.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/tests/checker_test.cpp
===================================================================
--- trunk/tests/checker_test.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/tests/checker_test.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -150,9 +150,7 @@
else
std::cout << "OK: " << argv[3] << " violated " << argv[2] << ", should be violated" << std::endl;
- std::vector<MscPtr> results;
- results.push_back(result);
- z120.save_msc(std::cout, L"counter_example", results);
+ z120.save_msc(std::cout, L"counter_example", result);
}
}
catch(...)
Modified: trunk/tests/engmann_test.cpp
===================================================================
--- trunk/tests/engmann_test.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/tests/engmann_test.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -33,8 +33,12 @@
StreamReportPrinter printer(std::wcerr);
engmann.set_printer(&printer);
- std::vector<MscPtr> msc;
- msc.push_back(engmann.load_msc(argv[1]));
+ MscPtr msc = engmann.load_msc(argv[1]);
+ if(msc == NULL)
+ {
+ std::cerr << "ERROR: Syntax error in " << argv[1] << std::endl;
+ return 1;
+ }
Z120 z120;
z120.save_msc(std::cout, TOWSTRING(argv[1]), msc);
Modified: trunk/tests/z120_test.cpp
===================================================================
--- trunk/tests/z120_test.cpp 2009-07-27 21:29:18 UTC (rev 267)
+++ trunk/tests/z120_test.cpp 2009-07-28 08:21:28 UTC (rev 268)
@@ -53,10 +53,8 @@
StreamReportPrinter printer(std::wcerr);
z120.set_printer(&printer);
- std::vector<MscPtr> msc;
- MscPtr my_msc = z120.load_msc(argv[1]);
-
- if(my_msc == NULL)
+ MscPtr msc = z120.load_msc(argv[1]);
+ if(msc == NULL)
{
std::cerr << "ERROR: Syntax error in " << argv[1] << std::endl;
return 1;
@@ -65,7 +63,6 @@
char *path = strdup(argv[1]);
char *filename = extract_filename(path);
- msc.push_back(my_msc);
z120.save_msc(std::cout, TOWSTRING(filename), msc);
free(path);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|