DCL 4.0
Loading...
Searching...
No Matches
TextTemplate.h
Go to the documentation of this file.
1#ifndef __DCL_TEXT_TEMPLATE_H__
2#define __DCL_TEXT_TEMPLATE_H__ 20060104
3
4#ifndef __DCL_OBJECT_H__
5#include <dcl/Object.h>
6#endif
7#ifndef __DCL_ARRAY_H__
8#include <dcl/Array.h>
9#endif
10#ifndef __DCL_SQL_H__
11#include <dcl/SQL.h> // class SQLFields
12#endif
13
14/* sub block
15<!-- BEGIN name -->
16<!-- END name -->
17*/
18
19__DCL_BEGIN_NAMESPACE
20
21class DCLCAPI TextTemplate : public Object
22{
23 DECLARE_CLASSINFO(TextTemplate)
24public:
25 virtual ~TextTemplate();
26 TextTemplate();
27 TextTemplate(const TextTemplate& _src);
28 TextTemplate(const String& _text);
29
30 TextTemplate& operator = (const TextTemplate& _src);
31
32 void parse(const String& _text);
33
34 // _name ==> _filename, insert sub template
35 void parse(const String& _name, const String& _text);
36
37 void clear();
38
39 void reset();
40
41 void erase(const char_t* _name);
42
43 // RETURN : assigned count
44 int assign(const char_t* _name, const String& _value);
45 int assign(const char_t* _name, const TextTemplate& _template);
46 int assign(const char_t* _name);
47 int assign(const StringStringArray& _nameToValues);
48 int assign(_CONST SQLFields& _fields, const String& _fieldIsNullValue);
49
50 int append(const char_t* _name, const String& _value);
51 int append(const char_t* _name, const TextTemplate& _template);
52 int append(const char_t* _name);
53 int append(const StringStringArray& _nameToValues);
54 int append(_CONST SQLFields& _fields, const String& _fieldIsNullValue);
55
56#ifdef __DCL_DEBUG
57 void showEmptyName(bool _show, bool _withSubTemplate);
58#endif
59 void printTo(Writer& out) const
61
62 // REF sub Template Object, _name이 없으면 비어있는 객체 리턴
63 TextTemplate& operator [] (const String& _name);
64 // _name이 있으면 객체의 주소, 없으면 NULL
65 TextTemplate* atP(const String& _name) const;
66 bool exists(const String& _name, bool bSubTemplate = true) const;
67
68protected:
69 // override members
70 virtual String onSQLFieldValue(_CONST SQLField& _field, const String& _fieldIsNullValue);
71
72protected:
75#ifdef __DCL_DEBUG
76 bool __showEmptyName;
77#endif
78
79 // sub 템플릿을 분할할하고 parseHelper를 호출하여
80 // 분할된 블럭에서 sub 템플릿을 구성한다.
81 // char_t* psz : parse는 regex를 사용한다. regexec는 NULL 종료
82 // 문자열을 사용하기 때문에 parse 중간에 데이터를 NULL 종결 문자열로
83 // 만들어서 처리한다.
84 void parseHelper(const char_t* _begin, const char_t* _end);
85 void parse(const char_t* _begin, const char_t* _end);
86
87 int append(const char_t* _name, const String& _value, bool _clearExists);
88 int append(const char_t* _name, const TextTemplate& _template, bool _clearExists);
89 int append(const StringStringArray& _nameToValues, bool _clearExists);
90 int append(_CONST SQLFields& _fields, const String& _fieldIsNullValue, bool _clearExists);
91};
92
94{
95 _template.printTo(out);
96 return out;
97}
98
99inline int TextTemplate::assign(const char_t* _name, const String& _value)
100{
101 return append(_name, _value, true);
102}
103
104inline int TextTemplate::assign(const char_t* _name, const TextTemplate& _template)
105{
106 return append(_name, _template, true);
107}
108
109inline int TextTemplate::assign(const char_t* _name)
110{
111 return append(_name, (*this)[_name], true);
112}
113
114inline int TextTemplate::assign(const StringStringArray& _nameToValues)
115{
116 return append(_nameToValues, true);
117}
118
119inline int TextTemplate::assign(_CONST SQLFields& _fields, const String& _fieldIsNullValue)
120{
121 return append(_fields, _fieldIsNullValue, true);
122}
123
124inline int TextTemplate::append(const char_t* _name, const String& _value)
125{
126 return append(_name, _value, false);
127}
128
129inline int TextTemplate::append(const char_t* _name, const TextTemplate& _template)
130{
131 return append(_name, _template, false);
132}
133
134inline int TextTemplate::append(const char_t* _name)
135{
136 return append(_name, (*this)[_name], false);
137}
138
139inline int TextTemplate::append(const StringStringArray& _nameToValues)
140{
141 return append(_nameToValues, false);
142}
143
144inline int TextTemplate::append(_CONST SQLFields& _fields, const String& _fieldIsNullValue)
145{
146 return append(_fields, _fieldIsNullValue, false);
147}
148
149__DCL_END_NAMESPACE
150
151#endif // __DCL_TEXT_TEMPLATE_H__
#define DCLCAPI
Definition Config.h:100
wchar_t char_t
Definition Config.h:275
#define _CONST
Definition Config.h:353
#define __DCL_THROWS1(e)
Definition Config.h:167
#define DECLARE_CLASSINFO(class_name)
Definition Object.h:210
void CharsetConvertException *__fields clear()
DCLCAPI Writer & operator<<(Writer &out, TextTemplate &_template)
Object()
Definition Object.cpp:183
Definition SQL.h:48
virtual String onSQLFieldValue(_CONST SQLField &_field, const String &_fieldIsNullValue)
void * __textList
void * __subTemplateMap
void parseHelper(const char_t *_begin, const char_t *_end)