1 #ifndef CLS_3_TAGS_VERBATIM_STRING_HPP
2 #define CLS_3_TAGS_VERBATIM_STRING_HPP
3 
4 //! \file
5 //! \brief ��� ��� ������������� (verbatim) �����.
6 
7 #include <string.h>
8 #include <cls_3/tags/h/tag.hpp>
9 
10 namespace cls_3
11 {
12 
13 namespace tags
14 {
15 
16 //
17 // tag_verbatim_string_t
18 //
19 
20 //! ����� ���� ��� ������������� (verbatim) �����.
21 /*!
22 ��. ����� \ref cls_3__syntax__basic__tokens
23 */
24 class tag_verbatim_string_t :
25 	public tag_t {
26 	public :
27 		tag_verbatim_string_t(
28 			const std::string &name,
29 			bool mandatory
30 		);
31 
32 		tag_verbatim_string_t(
33 			tag_t &owner,
34 			const std::string &name,
35 			bool mandatory
36 		);
37 
38 		virtual ~tag_verbatim_string_t();
39 
40 		virtual void
41 		on_start( const parser_context_info_t &parser_context_info );
42 
43 		virtual void
44 		on_finish( const parser_context_info_t &parser_context_info );
45 
46 		virtual void
47 		on_tok_nonspace(
48 			const parser_context_info_t &parser_context_info,
49 			const std::string &tok_value
50 		);
51 
52 		virtual void
53 		on_tok_string(
54 			const parser_context_info_t &parser_context_info,
55 			const std::string &tok_value
56 		);
57 
58 		virtual void
59 		on_tok_verbatim_string(
60 			const parser_context_info_t &parser_context_info,
61 			const std::string &start_marker,
62 			const std::string &tok_contents,
63 			const std::string &end_marker
64 		);
65 
66 		virtual bool
67 		is_mandatory() const;
68 
69 		virtual bool
70 		is_defined() const;
71 
72 		virtual void
73 		reset();
74 
75 		//! ������� �������� ����.
76 		/*!
77 		������������ ���������� ������������� ������.
78 		\attention ������������ �������� �� �������� �������������� �����������
79 		������ � ����� verbatim-������ ( � ������� �� ���������� ��������������
80 		������� on_format() ).
81 		*/
82 		const std::string &
83 		query_value() const;
84 
85 		//! ���������� �������� ����.
86 		/*! \since v.2.6.4 */
87 		void
88 		make_defined(
89 			const std::string &start_marker,
90 			const std::string &contents,
91 			const std::string &end_marker
92 		);
93 
94 	protected :
95 		std::string m_value;
96 		std::string m_start_marker;
97 		std::string m_end_marker;
98 		bool m_is_mandatory;
99 		bool m_is_defined;
100 
101 		//! �������������� ������������ ��������.
102 		/*!
103 		��������������� �������� ������������� � ���������� cls - ������������
104 		�������������� ����������� ������ � ����� ���� ( ��.
105 		\ref cls_3__syntax__basic__tokens ).
106 		*/
107 		virtual void
108 		on_format( tag_formatter_t &fmt );
109 };
110 
111 } // namespace tags
112 
113 } /* namespace cls_3 */
114 
115 #endif
116