00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MARSYAS_OUTPUT_JSON_H
00021 #define MARSYAS_OUTPUT_JSON_H
00022
00023 #include <string>
00024 #include <vector>
00025 #include "marostring.h"
00026
00027
00028 namespace Marsyas
00029 {
00037 class marsyas_EXPORT marojson : public marostring
00038 {
00039 private:
00040
00041 public:
00042 marojson();
00043 virtual ~marojson();
00044
00045 virtual void begin_marsystem(bool isComposite, std::string type, std::string name);
00046 virtual void end_marsystem(bool isComposite, std::string type, std::string name);
00047
00048 virtual void begin_controls(int num_controls);
00049 virtual void begin_control(std::string type, std::string name, std::string value, bool has_state);
00050 virtual void begin_control_links_in(int num_links);
00051 virtual void put_control_link_in(std::string abspath, std::string type, std::string name);
00052 virtual void end_control_links_in(int num_links);
00053 virtual void begin_control_links_out(int num_links);
00054 virtual void put_control_link_out(std::string abspath, std::string type, std::string name);
00055 virtual void end_control_links_out(int num_links);
00056 virtual void end_control(std::string type, std::string name, std::string value, bool has_state);
00057 virtual void end_controls(int num_controls);
00058
00059 virtual void begin_children(int num_children);
00060 virtual void end_children(int num_children);
00061
00062 virtual std::string str();
00063
00064 bool prettyPrint;
00065 std::string& smart_indent(std::string& str,
00066 const std::string& start, const std::string& end);
00067
00068 std::string& replace_between(std::string& str,
00069 const std::string &oldsubstr, const std::string &newsubstr,
00070 std::string::size_type from_pos, std::string::size_type to_pos);
00071
00072 std::string& replace_all(std::string& str,
00073 const std::string& oldsubstr, const std::string& newsubstr);
00074 };
00075
00076 }
00077
00078 #endif