|
1 /* |
|
2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: SyncML command struct implementations. |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 // ------------------------------------------------------------------------------------------------ |
|
20 // Includes |
|
21 // ------------------------------------------------------------------------------------------------ |
|
22 |
|
23 #include "smldtd.h" |
|
24 #include "smlsyncmltags.h" |
|
25 #include "smlmetinfdtd.h" |
|
26 #include "smldevinfdtd.h" |
|
27 #include "WBXMLSyncMLParser.h" |
|
28 #include "WBXMLParserError.h" |
|
29 |
|
30 // ------------------------------------------------------------------------------------------------ |
|
31 // Macros |
|
32 // ------------------------------------------------------------------------------------------------ |
|
33 #define CHECK_NO_DUPLICATE(a) if( a ) { User::Leave(KErrParserErrorInvalidDocument); } |
|
34 |
|
35 // ------------------------------------------------------------------------------------------------ |
|
36 // Helper functions |
|
37 // ------------------------------------------------------------------------------------------------ |
|
38 CXMLElement* AddPCDataL( SmlPcdataListPtr_t* aList ) |
|
39 { |
|
40 SmlPcdataListPtr_t itemL = new (ELeave) SmlPcdataList_t(); |
|
41 CleanupStack::PushL(itemL); |
|
42 itemL->data = new (ELeave) SmlPcdata_t(); |
|
43 GenericListAddL(aList, itemL); |
|
44 CleanupStack::Pop(); // itemL |
|
45 return itemL->data; |
|
46 } |
|
47 |
|
48 // ------------------------------------------------------------------------------------------------ |
|
49 CXMLElement* AddItemL( SmlItemListPtr_t* aList ) |
|
50 { |
|
51 SmlItemListPtr_t itemL = new (ELeave) SmlItemList_t(); |
|
52 CleanupStack::PushL(itemL); |
|
53 itemL->item = new (ELeave) SmlItem_t(); |
|
54 GenericListAddL(aList, itemL); |
|
55 CleanupStack::Pop(); // itemL |
|
56 return itemL->item; |
|
57 } |
|
58 |
|
59 // ------------------------------------------------------------------------------------------------ |
|
60 CXMLElement* AddMapItemL( SmlMapItemListPtr_t* aList ) |
|
61 { |
|
62 SmlMapItemListPtr_t itemL = new (ELeave) SmlMapItemList_t(); |
|
63 CleanupStack::PushL(itemL); |
|
64 itemL->mapItem = new (ELeave) SmlMapItem_t(); |
|
65 GenericListAddL(aList, itemL); |
|
66 CleanupStack::Pop(); // itemL |
|
67 return itemL->mapItem; |
|
68 } |
|
69 |
|
70 // ------------------------------------------------------------------------------------------------ |
|
71 CXMLElement* AddSourceListL( SmlSourceListPtr_t* aList ) |
|
72 { |
|
73 SmlSourceListPtr_t itemL = new (ELeave) SmlSourceList_t(); |
|
74 CleanupStack::PushL(itemL); |
|
75 itemL->source = new (ELeave) SmlSource_t(); |
|
76 GenericListAddL(aList, itemL); |
|
77 CleanupStack::Pop(); // itemL |
|
78 return itemL->source; |
|
79 } |
|
80 |
|
81 // ------------------------------------------------------------------------------------------------ |
|
82 CXMLElement* AddTargetRefL( SmlTargetRefListPtr_t* aList ) |
|
83 { |
|
84 SmlTargetRefListPtr_t itemL = new (ELeave) SmlTargetRefList_t(); |
|
85 CleanupStack::PushL(itemL); |
|
86 itemL->targetRef = new (ELeave) SmlPcdata_t(); |
|
87 GenericListAddL(aList, itemL); |
|
88 CleanupStack::Pop(); // itemL |
|
89 return itemL->targetRef; |
|
90 } |
|
91 |
|
92 // ------------------------------------------------------------------------------------------------ |
|
93 CXMLElement* AddSourceRefL( SmlSourceRefListPtr_t* aList ) |
|
94 { |
|
95 SmlSourceRefListPtr_t itemL = new (ELeave) SmlSourceRefList_t(); |
|
96 CleanupStack::PushL(itemL); |
|
97 itemL->sourceRef = new (ELeave) SmlPcdata_t(); |
|
98 GenericListAddL(aList, itemL); |
|
99 CleanupStack::Pop(); // itemL |
|
100 return itemL->sourceRef; |
|
101 } |
|
102 |
|
103 // ------------------------------------------------------------------------------------------------ |
|
104 LOCAL_D TBool CreateBasicCommandL( CXMLElement*& aElement, TUint8 aTag ) |
|
105 { |
|
106 aElement = 0; |
|
107 switch( aTag ) |
|
108 { |
|
109 case EMap: |
|
110 aElement = new (ELeave) SmlMap_t(); |
|
111 return ETrue; |
|
112 |
|
113 case EAlert: |
|
114 aElement = new (ELeave) SmlAlert_t(); |
|
115 return ETrue; |
|
116 |
|
117 case EAtomic: |
|
118 aElement = new (ELeave) SmlAtomic_t(SML_PE_ATOMIC_START); |
|
119 return ETrue; |
|
120 |
|
121 case EAdd: |
|
122 case ECopy: |
|
123 case EDelete: |
|
124 case EReplace: |
|
125 case EMove: |
|
126 aElement = new (ELeave) SmlCopy_t(); |
|
127 return ETrue; |
|
128 |
|
129 case EGet: |
|
130 case EPut: |
|
131 aElement = new (ELeave) SmlGet_t(); |
|
132 return ETrue; |
|
133 |
|
134 case EExec: |
|
135 aElement = new (ELeave) SmlExec_t(); |
|
136 return ETrue; |
|
137 |
|
138 case EResults: |
|
139 aElement = new (ELeave) SmlResults_t(); |
|
140 return ETrue; |
|
141 |
|
142 case ESearch: |
|
143 aElement = new (ELeave) SmlSearch_t(); |
|
144 return ETrue; |
|
145 |
|
146 case ESequence: |
|
147 aElement = new (ELeave) SmlSequence_t(SML_PE_SEQUENCE_START); |
|
148 return ETrue; |
|
149 |
|
150 case EStatus: |
|
151 aElement = new (ELeave) SmlStatus_t(); |
|
152 return ETrue; |
|
153 |
|
154 case ESync: |
|
155 aElement = new (ELeave) SmlSync_t(); |
|
156 return ETrue; |
|
157 |
|
158 default: |
|
159 break; |
|
160 } |
|
161 return EFalse; |
|
162 } |
|
163 |
|
164 // ------------------------------------------------------------------------------------------------ |
|
165 // sml_pcdata_s |
|
166 // ------------------------------------------------------------------------------------------------ |
|
167 EXPORT_C sml_pcdata_s::sml_pcdata_s( const SmlPcdataType_t aType, const SmlPcdataExtension_t aExt ) |
|
168 : contentType(aType), extension(aExt) |
|
169 { |
|
170 } |
|
171 |
|
172 // ------------------------------------------------------------------------------------------------ |
|
173 EXPORT_C sml_pcdata_s::sml_pcdata_s() : contentType(SML_PCDATA_OPAQUE), extension(SML_EXT_UNDEFINED) |
|
174 { |
|
175 } |
|
176 |
|
177 // ------------------------------------------------------------------------------------------------ |
|
178 EXPORT_C sml_pcdata_s::~sml_pcdata_s() |
|
179 { |
|
180 FreeContent(); |
|
181 } |
|
182 |
|
183 // ------------------------------------------------------------------------------------------------ |
|
184 EXPORT_C void sml_pcdata_s::FreeContent() |
|
185 { |
|
186 if( extension == SML_EXT_METINF ) |
|
187 { |
|
188 delete SmlMetInfMetInfPtr_t(content); |
|
189 } |
|
190 else if( extension == SML_EXT_DEVINFPROP ) |
|
191 { |
|
192 delete SmlDevInfPropertyListPtr_t(content); |
|
193 } |
|
194 else |
|
195 { |
|
196 delete content; |
|
197 } |
|
198 content = 0; |
|
199 } |
|
200 |
|
201 // ------------------------------------------------------------------------------------------------ |
|
202 EXPORT_C void sml_pcdata_s::SetDataL( const TDesC8& aData ) |
|
203 { |
|
204 FreeContent(); |
|
205 length = aData.Length(); |
|
206 content = User::AllocL(length); |
|
207 Mem::Copy(content, aData.Ptr(), length); |
|
208 } |
|
209 |
|
210 // ------------------------------------------------------------------------------------------------ |
|
211 EXPORT_C TPtrC8 sml_pcdata_s::Data() const |
|
212 { |
|
213 return TPtrC8((TUint8*)content, length); |
|
214 } |
|
215 |
|
216 // ------------------------------------------------------------------------------------------------ |
|
217 EXPORT_C void sml_pcdata_s::TruncateL( TInt aConsumed ) |
|
218 { |
|
219 HBufC8* buffer = TPtrC8((TUint8*)content + aConsumed, length - aConsumed).AllocLC(); |
|
220 SetDataL(*buffer); |
|
221 CleanupStack::PopAndDestroy(); // buffer |
|
222 } |
|
223 |
|
224 // ------------------------------------------------------------------------------------------------ |
|
225 // sml_pcdata_list_s |
|
226 // ------------------------------------------------------------------------------------------------ |
|
227 EXPORT_C sml_pcdata_list_s::sml_pcdata_list_s() |
|
228 { |
|
229 } |
|
230 |
|
231 // ------------------------------------------------------------------------------------------------ |
|
232 EXPORT_C sml_pcdata_list_s::~sml_pcdata_list_s() |
|
233 { |
|
234 delete data; |
|
235 } |
|
236 |
|
237 // ------------------------------------------------------------------------------------------------ |
|
238 // sml_chal_s |
|
239 // ------------------------------------------------------------------------------------------------ |
|
240 EXPORT_C sml_chal_s::sml_chal_s() |
|
241 { |
|
242 delete meta; |
|
243 } |
|
244 |
|
245 // ------------------------------------------------------------------------------------------------ |
|
246 EXPORT_C sml_chal_s::~sml_chal_s() |
|
247 { |
|
248 delete meta; |
|
249 } |
|
250 |
|
251 // ------------------------------------------------------------------------------------------------ |
|
252 CXMLElement* sml_chal_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
253 { |
|
254 switch( aTag ) |
|
255 { |
|
256 case EMeta: |
|
257 CHECK_NO_DUPLICATE(meta); |
|
258 meta = new (ELeave) SmlPcdata_t( /*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
259 meta->contentType = SML_PCDATA_EXTENSION; |
|
260 meta->extension = SML_EXT_METINF; |
|
261 return meta; |
|
262 |
|
263 default: |
|
264 User::Leave(KWBXMLParserErrorInvalidTag); |
|
265 } |
|
266 return 0; |
|
267 } |
|
268 |
|
269 // ------------------------------------------------------------------------------------------------ |
|
270 // sml_cred_s |
|
271 // ------------------------------------------------------------------------------------------------ |
|
272 EXPORT_C sml_cred_s::sml_cred_s() |
|
273 { |
|
274 } |
|
275 |
|
276 // ------------------------------------------------------------------------------------------------ |
|
277 EXPORT_C sml_cred_s::~sml_cred_s() |
|
278 { |
|
279 delete data; |
|
280 delete meta; |
|
281 } |
|
282 |
|
283 // ------------------------------------------------------------------------------------------------ |
|
284 CXMLElement* sml_cred_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
285 { |
|
286 switch( aTag ) |
|
287 { |
|
288 case EData: |
|
289 CHECK_NO_DUPLICATE(data); |
|
290 data = new (ELeave) SmlPcdata_t(); |
|
291 return data; |
|
292 |
|
293 case EMeta: |
|
294 CHECK_NO_DUPLICATE(meta) |
|
295 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
296 meta->contentType = SML_PCDATA_EXTENSION; |
|
297 meta->extension = SML_EXT_METINF; |
|
298 return meta; |
|
299 |
|
300 default: |
|
301 User::Leave(KWBXMLParserErrorInvalidTag); |
|
302 } |
|
303 return 0; |
|
304 } |
|
305 |
|
306 // 1.2 CHANGES: new common use elements |
|
307 // ------------------------------------------------------------------------------------------------ |
|
308 // sml_field_or_record_s |
|
309 // ------------------------------------------------------------------------------------------------ |
|
310 EXPORT_C sml_field_or_record_s::sml_field_or_record_s() |
|
311 { |
|
312 } |
|
313 |
|
314 // ------------------------------------------------------------------------------------------------ |
|
315 EXPORT_C sml_field_or_record_s::~sml_field_or_record_s() |
|
316 { |
|
317 delete item; |
|
318 } |
|
319 |
|
320 // ------------------------------------------------------------------------------------------------ |
|
321 CXMLElement* sml_field_or_record_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
322 { |
|
323 switch( aTag ) |
|
324 { |
|
325 case EItem: |
|
326 CHECK_NO_DUPLICATE(item); |
|
327 item = new (ELeave) SmlItem_t(); |
|
328 return item; |
|
329 |
|
330 default: |
|
331 User::Leave(KWBXMLParserErrorInvalidTag); |
|
332 } |
|
333 return 0; |
|
334 } |
|
335 |
|
336 |
|
337 // ------------------------------------------------------------------------------------------------ |
|
338 // sml_filter_s |
|
339 // ------------------------------------------------------------------------------------------------ |
|
340 EXPORT_C sml_filter_s::sml_filter_s() |
|
341 { |
|
342 } |
|
343 |
|
344 // ------------------------------------------------------------------------------------------------ |
|
345 EXPORT_C sml_filter_s::~sml_filter_s() |
|
346 { |
|
347 delete meta; |
|
348 delete field; |
|
349 delete record; |
|
350 delete filterType; |
|
351 } |
|
352 |
|
353 // ------------------------------------------------------------------------------------------------ |
|
354 CXMLElement* sml_filter_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
355 { |
|
356 switch( aTag ) |
|
357 { |
|
358 case EMeta: |
|
359 CHECK_NO_DUPLICATE(meta); |
|
360 meta = new (ELeave) SmlPcdata_t(); |
|
361 meta->contentType = SML_PCDATA_EXTENSION; |
|
362 meta->extension = SML_EXT_METINF; |
|
363 return meta; |
|
364 |
|
365 case EField: |
|
366 CHECK_NO_DUPLICATE(field); |
|
367 field = new (ELeave) SmlField_t(); |
|
368 return field; |
|
369 |
|
370 case ERecord: |
|
371 CHECK_NO_DUPLICATE(record); |
|
372 record = new (ELeave) SmlRecord_t(); |
|
373 return record; |
|
374 |
|
375 case EFilterType: |
|
376 CHECK_NO_DUPLICATE(filterType); |
|
377 filterType = new (ELeave) SmlPcdata_t(); |
|
378 return filterType; |
|
379 |
|
380 default: |
|
381 User::Leave(KWBXMLParserErrorInvalidTag); |
|
382 } |
|
383 return 0; |
|
384 } |
|
385 // Changes end |
|
386 |
|
387 // 1.2 CHANGES: Source & Target divided to their own structs |
|
388 |
|
389 // ------------------------------------------------------------------------------------------------ |
|
390 // sml_source_s |
|
391 // ------------------------------------------------------------------------------------------------ |
|
392 EXPORT_C sml_source_s::sml_source_s() |
|
393 { |
|
394 } |
|
395 |
|
396 // ------------------------------------------------------------------------------------------------ |
|
397 EXPORT_C sml_source_s::~sml_source_s() |
|
398 { |
|
399 delete locURI; |
|
400 delete locName; |
|
401 } |
|
402 |
|
403 // ------------------------------------------------------------------------------------------------ |
|
404 CXMLElement* sml_source_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
405 { |
|
406 switch( aTag ) |
|
407 { |
|
408 case ELocURI: |
|
409 CHECK_NO_DUPLICATE(locURI); |
|
410 locURI = new (ELeave) SmlPcdata_t(); |
|
411 return locURI; |
|
412 |
|
413 case ELocName: |
|
414 CHECK_NO_DUPLICATE(locName); |
|
415 locName = new (ELeave) SmlPcdata_t(); |
|
416 return locName; |
|
417 |
|
418 default: |
|
419 User::Leave(KWBXMLParserErrorInvalidTag); |
|
420 } |
|
421 return 0; |
|
422 } |
|
423 |
|
424 // ------------------------------------------------------------------------------------------------ |
|
425 // sml_target_s |
|
426 // ------------------------------------------------------------------------------------------------ |
|
427 EXPORT_C sml_target_s::sml_target_s() |
|
428 { |
|
429 } |
|
430 |
|
431 // ------------------------------------------------------------------------------------------------ |
|
432 EXPORT_C sml_target_s::~sml_target_s() |
|
433 { |
|
434 delete locURI; |
|
435 delete locName; |
|
436 delete filter; |
|
437 } |
|
438 |
|
439 // ------------------------------------------------------------------------------------------------ |
|
440 CXMLElement* sml_target_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
441 { |
|
442 switch( aTag ) |
|
443 { |
|
444 case ELocURI: |
|
445 CHECK_NO_DUPLICATE(locURI); |
|
446 locURI = new (ELeave) SmlPcdata_t(); |
|
447 return locURI; |
|
448 |
|
449 case ELocName: |
|
450 CHECK_NO_DUPLICATE(locName); |
|
451 locName = new (ELeave) SmlPcdata_t(); |
|
452 return locName; |
|
453 |
|
454 case EFilter: |
|
455 CHECK_NO_DUPLICATE(filter); |
|
456 filter = new (ELeave) SmlFilter_t(); |
|
457 return filter; |
|
458 |
|
459 default: |
|
460 User::Leave(KWBXMLParserErrorInvalidTag); |
|
461 } |
|
462 return 0; |
|
463 } |
|
464 // Changes end |
|
465 |
|
466 // ------------------------------------------------------------------------------------------------ |
|
467 // sml_source_list_s |
|
468 // ------------------------------------------------------------------------------------------------ |
|
469 EXPORT_C sml_source_list_s::sml_source_list_s() |
|
470 { |
|
471 } |
|
472 |
|
473 // ------------------------------------------------------------------------------------------------ |
|
474 EXPORT_C sml_source_list_s::~sml_source_list_s() |
|
475 { |
|
476 delete source; |
|
477 } |
|
478 |
|
479 //1.2 CHANGES: Source & Target parent |
|
480 // ------------------------------------------------------------------------------------------------ |
|
481 // sml_source_or_target_parent_s |
|
482 // ------------------------------------------------------------------------------------------------ |
|
483 EXPORT_C sml_source_or_target_parent_s::sml_source_or_target_parent_s() |
|
484 { |
|
485 } |
|
486 |
|
487 // ------------------------------------------------------------------------------------------------ |
|
488 EXPORT_C sml_source_or_target_parent_s::~sml_source_or_target_parent_s() |
|
489 { |
|
490 delete locURI; |
|
491 } |
|
492 |
|
493 // ------------------------------------------------------------------------------------------------ |
|
494 CXMLElement* sml_source_or_target_parent_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
495 { |
|
496 switch( aTag ) |
|
497 { |
|
498 case ELocURI: |
|
499 CHECK_NO_DUPLICATE(locURI); |
|
500 locURI = new (ELeave) SmlPcdata_t(); |
|
501 return locURI; |
|
502 |
|
503 default: |
|
504 User::Leave(KWBXMLParserErrorInvalidTag); |
|
505 } |
|
506 return 0; |
|
507 } |
|
508 // Changes end |
|
509 |
|
510 |
|
511 // ------------------------------------------------------------------------------------------------ |
|
512 // sml_sync_hdr_s |
|
513 // ------------------------------------------------------------------------------------------------ |
|
514 EXPORT_C sml_sync_hdr_s::sml_sync_hdr_s() |
|
515 { |
|
516 } |
|
517 |
|
518 // ------------------------------------------------------------------------------------------------ |
|
519 EXPORT_C sml_sync_hdr_s::~sml_sync_hdr_s() |
|
520 { |
|
521 delete version; |
|
522 delete proto; |
|
523 delete sessionID; |
|
524 delete msgID; |
|
525 delete target; |
|
526 delete source; |
|
527 delete respURI; |
|
528 delete cred; |
|
529 delete meta; |
|
530 } |
|
531 |
|
532 // ------------------------------------------------------------------------------------------------ |
|
533 CXMLElement* sml_sync_hdr_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
534 { |
|
535 switch( aTag ) |
|
536 { |
|
537 case EVerDTD: |
|
538 CHECK_NO_DUPLICATE(version); |
|
539 version = new (ELeave) SmlPcdata_t(); |
|
540 return version; |
|
541 |
|
542 case EVerProto: |
|
543 CHECK_NO_DUPLICATE(proto); |
|
544 proto = new (ELeave) SmlPcdata_t(); |
|
545 return proto; |
|
546 |
|
547 case ESessionID: |
|
548 CHECK_NO_DUPLICATE(sessionID); |
|
549 sessionID = new (ELeave) SmlPcdata_t(); |
|
550 return sessionID; |
|
551 |
|
552 case EMsgID: |
|
553 CHECK_NO_DUPLICATE(msgID); |
|
554 msgID = new (ELeave) SmlPcdata_t(); |
|
555 return msgID; |
|
556 |
|
557 case ETarget: |
|
558 CHECK_NO_DUPLICATE(target); |
|
559 target = new (ELeave) SmlTarget_t(); |
|
560 return target; |
|
561 |
|
562 case ESource: |
|
563 CHECK_NO_DUPLICATE(source); |
|
564 source = new (ELeave) SmlSource_t(); |
|
565 return source; |
|
566 |
|
567 case ERespURI: |
|
568 CHECK_NO_DUPLICATE(respURI); |
|
569 respURI = new (ELeave) SmlPcdata_t(); |
|
570 return respURI; |
|
571 |
|
572 case ECred: |
|
573 CHECK_NO_DUPLICATE(cred); |
|
574 cred = new (ELeave) SmlCred_t(); |
|
575 return cred; |
|
576 |
|
577 case EMeta: |
|
578 CHECK_NO_DUPLICATE(meta); |
|
579 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
580 meta->contentType = SML_PCDATA_EXTENSION; |
|
581 meta->extension = SML_EXT_METINF; |
|
582 return meta; |
|
583 |
|
584 case ENoResp: |
|
585 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
586 flags |= SmlNoResp_f; |
|
587 break; |
|
588 |
|
589 default: |
|
590 User::Leave(KWBXMLParserErrorInvalidTag); |
|
591 } |
|
592 return 0; |
|
593 } |
|
594 |
|
595 // ------------------------------------------------------------------------------------------------ |
|
596 CXMLElement::TAction sml_sync_hdr_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
597 { |
|
598 switch( aTag ) |
|
599 { |
|
600 case ESyncHdr: |
|
601 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlStartMessageFuncL(this); |
|
602 return EPopAndDestroy; |
|
603 |
|
604 case ENoResp: |
|
605 return ENone; |
|
606 |
|
607 default: |
|
608 User::Leave(KWBXMLParserErrorInvalidTag); |
|
609 } |
|
610 |
|
611 return EPop; |
|
612 } |
|
613 |
|
614 // ------------------------------------------------------------------------------------------------ |
|
615 TBool sml_sync_hdr_s::NeedsCleanup() const |
|
616 { |
|
617 return ETrue; |
|
618 } |
|
619 |
|
620 // ------------------------------------------------------------------------------------------------ |
|
621 // sml_item_s |
|
622 // ------------------------------------------------------------------------------------------------ |
|
623 EXPORT_C sml_item_s::sml_item_s() |
|
624 { |
|
625 } |
|
626 |
|
627 // ------------------------------------------------------------------------------------------------ |
|
628 EXPORT_C sml_item_s::~sml_item_s() |
|
629 { |
|
630 delete target; |
|
631 delete source; |
|
632 delete sourceParent; |
|
633 delete targetParent; |
|
634 delete meta; |
|
635 delete data; |
|
636 } |
|
637 |
|
638 // ------------------------------------------------------------------------------------------------ |
|
639 CXMLElement* sml_item_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
640 { |
|
641 switch( aTag ) |
|
642 { |
|
643 case ETarget: |
|
644 CHECK_NO_DUPLICATE(target); |
|
645 target = new (ELeave) SmlTarget_t(); |
|
646 return target; |
|
647 |
|
648 case ESource: |
|
649 CHECK_NO_DUPLICATE(source); |
|
650 source = new (ELeave) SmlSource_t(); |
|
651 return source; |
|
652 |
|
653 // 1.2 CHANGES: SourceParent and TargetParent added |
|
654 case ESourceParent: |
|
655 CHECK_NO_DUPLICATE(sourceParent); |
|
656 sourceParent = new (ELeave) SmlSourceParent_t(); |
|
657 return sourceParent; |
|
658 |
|
659 case ETargetParent: |
|
660 CHECK_NO_DUPLICATE(targetParent); |
|
661 targetParent = new (ELeave) SmlTargetParent_t(); |
|
662 return targetParent; |
|
663 // End Changes |
|
664 |
|
665 case EMeta: |
|
666 CHECK_NO_DUPLICATE(meta); |
|
667 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
668 meta->contentType = SML_PCDATA_EXTENSION; |
|
669 meta->extension = SML_EXT_METINF; |
|
670 return meta; |
|
671 |
|
672 case EData: |
|
673 CHECK_NO_DUPLICATE(data); |
|
674 data = new (ELeave) SmlPcdata_t(); |
|
675 return data; |
|
676 |
|
677 case EMoreData: |
|
678 CHECK_NO_DUPLICATE(flags & SmlMoreData_f); |
|
679 flags |= SmlMoreData_f; |
|
680 break; |
|
681 |
|
682 default: |
|
683 User::Leave(KWBXMLParserErrorInvalidTag); |
|
684 } |
|
685 return 0; |
|
686 } |
|
687 |
|
688 // ------------------------------------------------------------------------------------------------ |
|
689 CXMLElement::TAction sml_item_s::EndElementL( TAny* /*aCallbacks*/, TUint8 aTag ) |
|
690 { |
|
691 if( aTag == EMoreData ) |
|
692 { |
|
693 return ENone; |
|
694 } |
|
695 return EPop; |
|
696 } |
|
697 |
|
698 // ------------------------------------------------------------------------------------------------ |
|
699 // sml_item_list_s |
|
700 // ------------------------------------------------------------------------------------------------ |
|
701 EXPORT_C sml_item_list_s::sml_item_list_s() |
|
702 { |
|
703 } |
|
704 |
|
705 // ------------------------------------------------------------------------------------------------ |
|
706 EXPORT_C sml_item_list_s::~sml_item_list_s() |
|
707 { |
|
708 delete item; |
|
709 } |
|
710 |
|
711 // ------------------------------------------------------------------------------------------------ |
|
712 // sml_generic_s |
|
713 // ------------------------------------------------------------------------------------------------ |
|
714 EXPORT_C sml_generic_s::sml_generic_s() |
|
715 { |
|
716 } |
|
717 |
|
718 // ------------------------------------------------------------------------------------------------ |
|
719 EXPORT_C sml_generic_s::~sml_generic_s() |
|
720 { |
|
721 delete cmdID; |
|
722 delete cred; |
|
723 delete meta; |
|
724 GenericListDelete( itemList ); |
|
725 } |
|
726 |
|
727 // ------------------------------------------------------------------------------------------------ |
|
728 CXMLElement* sml_generic_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
729 { |
|
730 switch( aTag ) |
|
731 { |
|
732 case ECmdID: |
|
733 CHECK_NO_DUPLICATE(cmdID); |
|
734 cmdID = new (ELeave) SmlPcdata_t(); |
|
735 return cmdID; |
|
736 |
|
737 case ECred: |
|
738 CHECK_NO_DUPLICATE(cred); |
|
739 cred = new (ELeave) SmlCred_t(); |
|
740 return cred; |
|
741 |
|
742 case EMeta: |
|
743 CHECK_NO_DUPLICATE(meta); |
|
744 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
745 meta->contentType = SML_PCDATA_EXTENSION; |
|
746 meta->extension = SML_EXT_METINF; |
|
747 return meta; |
|
748 |
|
749 case ENoResp: |
|
750 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
751 flags |= SmlNoResp_f; |
|
752 break; |
|
753 |
|
754 case EArchive: |
|
755 CHECK_NO_DUPLICATE(flags & SmlArchive_f); |
|
756 flags |= SmlArchive_f; |
|
757 break; |
|
758 |
|
759 case ESftDel: |
|
760 CHECK_NO_DUPLICATE(flags & SmlSftDel_f); |
|
761 flags |= SmlSftDel_f; |
|
762 break; |
|
763 |
|
764 case EItem: |
|
765 return AddItemL(&itemList); |
|
766 |
|
767 default: |
|
768 User::Leave(KWBXMLParserErrorInvalidTag); |
|
769 } |
|
770 return 0; |
|
771 } |
|
772 |
|
773 // ------------------------------------------------------------------------------------------------ |
|
774 CXMLElement::TAction sml_generic_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
775 { |
|
776 switch( aTag ) |
|
777 { |
|
778 case EAdd: |
|
779 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlAddCmdFuncL(this); |
|
780 return EPopAndDestroy; |
|
781 |
|
782 case ECopy: |
|
783 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlCopyCmdFuncL(this); |
|
784 return EPopAndDestroy; |
|
785 |
|
786 case EDelete: |
|
787 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlDeleteCmdFuncL(this); |
|
788 return EPopAndDestroy; |
|
789 |
|
790 case EReplace: |
|
791 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlReplaceCmdFuncL(this); |
|
792 return EPopAndDestroy; |
|
793 |
|
794 case EMove: |
|
795 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlMoveCmdFuncL(this); |
|
796 return EPopAndDestroy; |
|
797 |
|
798 case ENoResp: |
|
799 case EArchive: |
|
800 case ESftDel: |
|
801 return ENone; |
|
802 |
|
803 default: |
|
804 User::Leave(KWBXMLParserErrorInvalidTag); |
|
805 } |
|
806 |
|
807 return EPop; |
|
808 } |
|
809 |
|
810 // ------------------------------------------------------------------------------------------------ |
|
811 TBool sml_generic_s::NeedsCleanup() const |
|
812 { |
|
813 return ETrue; |
|
814 } |
|
815 |
|
816 // ------------------------------------------------------------------------------------------------ |
|
817 // sml_alert_s |
|
818 // ------------------------------------------------------------------------------------------------ |
|
819 EXPORT_C sml_alert_s::sml_alert_s() |
|
820 { |
|
821 } |
|
822 |
|
823 // ------------------------------------------------------------------------------------------------ |
|
824 EXPORT_C sml_alert_s::~sml_alert_s() |
|
825 { |
|
826 delete cmdID; |
|
827 delete cred; |
|
828 delete data; |
|
829 // FOTA |
|
830 delete correlator; |
|
831 // FOTA end |
|
832 GenericListDelete( itemList ); |
|
833 } |
|
834 |
|
835 // ------------------------------------------------------------------------------------------------ |
|
836 CXMLElement* sml_alert_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
837 { |
|
838 switch( aTag ) |
|
839 { |
|
840 case ECmdID: |
|
841 CHECK_NO_DUPLICATE(cmdID); |
|
842 cmdID = new (ELeave) SmlPcdata_t(); |
|
843 return cmdID; |
|
844 |
|
845 case ENoResp: |
|
846 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
847 flags |= SmlNoResp_f; |
|
848 break; |
|
849 |
|
850 case ECred: |
|
851 CHECK_NO_DUPLICATE(cred); |
|
852 cred = new (ELeave) SmlCred_t(); |
|
853 return cred; |
|
854 |
|
855 case EData: |
|
856 CHECK_NO_DUPLICATE(data); |
|
857 data = new (ELeave) SmlPcdata_t(); |
|
858 return data; |
|
859 // FOTA |
|
860 case ECorrelator: |
|
861 CHECK_NO_DUPLICATE(correlator); |
|
862 correlator = new (ELeave) SmlPcdata_t(); |
|
863 return correlator; |
|
864 // FOTA end |
|
865 |
|
866 case EItem: |
|
867 return AddItemL(&itemList); |
|
868 |
|
869 default: |
|
870 User::Leave(KWBXMLParserErrorInvalidTag); |
|
871 } |
|
872 return 0; |
|
873 } |
|
874 |
|
875 // ------------------------------------------------------------------------------------------------ |
|
876 CXMLElement::TAction sml_alert_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
877 { |
|
878 switch( aTag ) |
|
879 { |
|
880 case EAlert: |
|
881 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlAlertCmdFuncL(this); |
|
882 return EPopAndDestroy; |
|
883 |
|
884 case ENoResp: |
|
885 return ENone; |
|
886 |
|
887 default: |
|
888 User::Leave(KWBXMLParserErrorInvalidTag); |
|
889 } |
|
890 |
|
891 return EPop; |
|
892 } |
|
893 |
|
894 // ------------------------------------------------------------------------------------------------ |
|
895 TBool sml_alert_s::NeedsCleanup() const |
|
896 { |
|
897 return ETrue; |
|
898 } |
|
899 |
|
900 // ------------------------------------------------------------------------------------------------ |
|
901 // sml_atomic_s |
|
902 // ------------------------------------------------------------------------------------------------ |
|
903 EXPORT_C sml_atomic_s::sml_atomic_s( SmlProtoElement_t aType ) |
|
904 { |
|
905 elementType = aType; |
|
906 } |
|
907 |
|
908 // ------------------------------------------------------------------------------------------------ |
|
909 EXPORT_C sml_atomic_s::~sml_atomic_s() |
|
910 { |
|
911 delete cmdID; |
|
912 delete meta; |
|
913 } |
|
914 |
|
915 // ------------------------------------------------------------------------------------------------ |
|
916 CXMLElement* sml_atomic_s::BeginElementL( TUint8 aTag, const TXMLElementParams& aParams ) |
|
917 { |
|
918 switch( aTag ) |
|
919 { |
|
920 case ECmdID: |
|
921 CHECK_NO_DUPLICATE(cmdID); |
|
922 cmdID = new (ELeave) SmlPcdata_t(); |
|
923 return cmdID; |
|
924 |
|
925 case ENoResp: |
|
926 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
927 flags |= SmlNoResp_f; |
|
928 break; |
|
929 |
|
930 case EMeta: |
|
931 CHECK_NO_DUPLICATE(meta); |
|
932 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
933 meta->contentType = SML_PCDATA_EXTENSION; |
|
934 meta->extension = SML_EXT_METINF; |
|
935 return meta; |
|
936 |
|
937 default: |
|
938 CXMLElement* e; |
|
939 if( CreateBasicCommandL(e, aTag) ) |
|
940 { |
|
941 if( this->elementType == SML_PE_ATOMIC_START ) |
|
942 { |
|
943 this->elementType = SML_PE_ATOMIC_END; |
|
944 ((MWBXMLSyncMLCallbacks*)aParams.Callbacks())->smlStartAtomicFuncL(this); |
|
945 } |
|
946 else if( this->elementType == SML_PE_SEQUENCE_START ) |
|
947 { |
|
948 this->elementType = SML_PE_SEQUENCE_END; |
|
949 ((MWBXMLSyncMLCallbacks*)aParams.Callbacks())->smlStartSequenceFuncL(this); |
|
950 } |
|
951 } |
|
952 else |
|
953 { |
|
954 User::Leave(KWBXMLParserErrorInvalidTag); |
|
955 } |
|
956 return e; |
|
957 } |
|
958 return 0; |
|
959 } |
|
960 |
|
961 // ------------------------------------------------------------------------------------------------ |
|
962 CXMLElement::TAction sml_atomic_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
963 { |
|
964 switch( aTag ) |
|
965 { |
|
966 case EAtomic: |
|
967 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlEndAtomicFuncL(); |
|
968 return EPopAndDestroy; |
|
969 |
|
970 case ESequence: |
|
971 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlEndSequenceFuncL(); |
|
972 return EPopAndDestroy; |
|
973 |
|
974 case ENoResp: |
|
975 return ENone; |
|
976 |
|
977 default: |
|
978 User::Leave(KWBXMLParserErrorInvalidTag); |
|
979 } |
|
980 |
|
981 return EPop; |
|
982 } |
|
983 |
|
984 // ------------------------------------------------------------------------------------------------ |
|
985 TBool sml_atomic_s::NeedsCleanup() const |
|
986 { |
|
987 return ETrue; |
|
988 } |
|
989 |
|
990 // ------------------------------------------------------------------------------------------------ |
|
991 // sml_sync_s |
|
992 // ------------------------------------------------------------------------------------------------ |
|
993 |
|
994 |
|
995 EXPORT_C sml_sync_s::sml_sync_s() |
|
996 { |
|
997 elementType = SML_PE_SYNC_START; |
|
998 } |
|
999 |
|
1000 // ------------------------------------------------------------------------------------------------ |
|
1001 EXPORT_C sml_sync_s::~sml_sync_s() |
|
1002 { |
|
1003 delete cmdID; |
|
1004 delete cred; |
|
1005 delete target; |
|
1006 delete source; |
|
1007 delete meta; |
|
1008 delete noc; |
|
1009 } |
|
1010 |
|
1011 // ------------------------------------------------------------------------------------------------ |
|
1012 CXMLElement* sml_sync_s::BeginElementL( TUint8 aTag, const TXMLElementParams& aParams ) |
|
1013 { |
|
1014 switch( aTag ) |
|
1015 { |
|
1016 case ECmdID: |
|
1017 CHECK_NO_DUPLICATE(cmdID); |
|
1018 cmdID = new (ELeave) SmlPcdata_t(); |
|
1019 return cmdID; |
|
1020 |
|
1021 case ENoResp: |
|
1022 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
1023 flags |= SmlNoResp_f; |
|
1024 break; |
|
1025 |
|
1026 case ECred: |
|
1027 CHECK_NO_DUPLICATE(cred); |
|
1028 cred = new (ELeave) SmlCred_t(); |
|
1029 return cred; |
|
1030 |
|
1031 case ETarget: |
|
1032 CHECK_NO_DUPLICATE(target); |
|
1033 target = new (ELeave) SmlTarget_t(); |
|
1034 return target; |
|
1035 |
|
1036 case ESource: |
|
1037 CHECK_NO_DUPLICATE(source); |
|
1038 source = new (ELeave) SmlSource_t(); |
|
1039 return source; |
|
1040 |
|
1041 case EMeta: |
|
1042 CHECK_NO_DUPLICATE(meta); |
|
1043 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
1044 meta->contentType = SML_PCDATA_EXTENSION; |
|
1045 meta->extension = SML_EXT_METINF; |
|
1046 return meta; |
|
1047 |
|
1048 case ENumberOfChanges: |
|
1049 CHECK_NO_DUPLICATE(noc); |
|
1050 noc = new (ELeave) SmlPcdata_t(); |
|
1051 return noc; |
|
1052 |
|
1053 default: |
|
1054 CXMLElement* e; |
|
1055 if( CreateBasicCommandL(e, aTag) ) |
|
1056 { |
|
1057 if( this->elementType == SML_PE_SYNC_START ) |
|
1058 { |
|
1059 this->elementType = SML_PE_SYNC_END; |
|
1060 ((MWBXMLSyncMLCallbacks*)aParams.Callbacks())->smlStartSyncFuncL(this); |
|
1061 } |
|
1062 } |
|
1063 else |
|
1064 { |
|
1065 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1066 } |
|
1067 return e; |
|
1068 } |
|
1069 return 0; |
|
1070 } |
|
1071 |
|
1072 // ------------------------------------------------------------------------------------------------ |
|
1073 CXMLElement::TAction sml_sync_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1074 { |
|
1075 switch( aTag ) |
|
1076 { |
|
1077 case ESync: |
|
1078 // If Sync element did not contain any commands -> call startsync and then end sync |
|
1079 if( this->elementType == SML_PE_SYNC_START ) |
|
1080 { |
|
1081 this->elementType = SML_PE_SYNC_END; |
|
1082 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlStartSyncFuncL(this); |
|
1083 } |
|
1084 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlEndSyncFuncL(); |
|
1085 return EPopAndDestroy; |
|
1086 |
|
1087 case ENoResp: |
|
1088 return ENone; |
|
1089 |
|
1090 default: |
|
1091 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1092 } |
|
1093 |
|
1094 return EPop; |
|
1095 } |
|
1096 |
|
1097 // ------------------------------------------------------------------------------------------------ |
|
1098 TBool sml_sync_s::NeedsCleanup() const |
|
1099 { |
|
1100 return ETrue; |
|
1101 } |
|
1102 |
|
1103 // ------------------------------------------------------------------------------------------------ |
|
1104 // sml_exec_s |
|
1105 // ------------------------------------------------------------------------------------------------ |
|
1106 EXPORT_C sml_exec_s::sml_exec_s() |
|
1107 { |
|
1108 } |
|
1109 |
|
1110 // ------------------------------------------------------------------------------------------------ |
|
1111 EXPORT_C sml_exec_s::~sml_exec_s() |
|
1112 { |
|
1113 delete cmdID; |
|
1114 delete cred; |
|
1115 delete meta; |
|
1116 // FOTA |
|
1117 delete correlator; |
|
1118 // FOTA end |
|
1119 delete item; |
|
1120 } |
|
1121 |
|
1122 // ------------------------------------------------------------------------------------------------ |
|
1123 CXMLElement* sml_exec_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1124 { |
|
1125 switch( aTag ) |
|
1126 { |
|
1127 case ECmdID: |
|
1128 CHECK_NO_DUPLICATE(cmdID); |
|
1129 cmdID = new (ELeave) SmlPcdata_t(); |
|
1130 return cmdID; |
|
1131 |
|
1132 case ENoResp: |
|
1133 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
1134 flags |= SmlNoResp_f; |
|
1135 break; |
|
1136 |
|
1137 case ECred: |
|
1138 CHECK_NO_DUPLICATE(cred); |
|
1139 cred = new (ELeave) SmlCred_t(); |
|
1140 return cred; |
|
1141 |
|
1142 case EMeta: |
|
1143 CHECK_NO_DUPLICATE(meta); |
|
1144 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
1145 meta->contentType = SML_PCDATA_EXTENSION; |
|
1146 meta->extension = SML_EXT_METINF; |
|
1147 return meta; |
|
1148 // FOTA |
|
1149 case ECorrelator: |
|
1150 CHECK_NO_DUPLICATE(correlator); |
|
1151 correlator = new (ELeave) SmlPcdata_t(); |
|
1152 return correlator; |
|
1153 // FOTA end |
|
1154 |
|
1155 case EItem: |
|
1156 CHECK_NO_DUPLICATE(item); |
|
1157 item = new (ELeave) SmlItem_t(); |
|
1158 return item; |
|
1159 |
|
1160 default: |
|
1161 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1162 } |
|
1163 return 0; |
|
1164 } |
|
1165 |
|
1166 // ------------------------------------------------------------------------------------------------ |
|
1167 CXMLElement::TAction sml_exec_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1168 { |
|
1169 switch( aTag ) |
|
1170 { |
|
1171 case EExec: |
|
1172 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlExecCmdFuncL(this); |
|
1173 return EPopAndDestroy; |
|
1174 |
|
1175 case ENoResp: |
|
1176 return ENone; |
|
1177 |
|
1178 default: |
|
1179 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1180 } |
|
1181 |
|
1182 return EPop; |
|
1183 } |
|
1184 |
|
1185 // ------------------------------------------------------------------------------------------------ |
|
1186 TBool sml_exec_s::NeedsCleanup() const |
|
1187 { |
|
1188 return ETrue; |
|
1189 } |
|
1190 |
|
1191 // ------------------------------------------------------------------------------------------------ |
|
1192 // sml_get_put_s |
|
1193 // ------------------------------------------------------------------------------------------------ |
|
1194 EXPORT_C sml_get_put_s::sml_get_put_s() |
|
1195 { |
|
1196 } |
|
1197 |
|
1198 // ------------------------------------------------------------------------------------------------ |
|
1199 EXPORT_C sml_get_put_s::~sml_get_put_s() |
|
1200 { |
|
1201 delete cmdID; |
|
1202 delete lang; |
|
1203 delete cred; |
|
1204 delete meta; |
|
1205 GenericListDelete( itemList ); |
|
1206 } |
|
1207 |
|
1208 // ------------------------------------------------------------------------------------------------ |
|
1209 CXMLElement* sml_get_put_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1210 { |
|
1211 switch( aTag ) |
|
1212 { |
|
1213 case ECmdID: |
|
1214 CHECK_NO_DUPLICATE(cmdID); |
|
1215 cmdID = new (ELeave) SmlPcdata_t(); |
|
1216 return cmdID; |
|
1217 |
|
1218 case ENoResp: |
|
1219 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
1220 flags |= SmlNoResp_f; |
|
1221 break; |
|
1222 |
|
1223 case ELang: |
|
1224 CHECK_NO_DUPLICATE(lang); |
|
1225 lang = new (ELeave) SmlPcdata_t(); |
|
1226 return lang; |
|
1227 |
|
1228 case ECred: |
|
1229 CHECK_NO_DUPLICATE(cred); |
|
1230 cred = new (ELeave) SmlCred_t(); |
|
1231 return cred; |
|
1232 |
|
1233 case EMeta: |
|
1234 CHECK_NO_DUPLICATE(meta); |
|
1235 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
1236 meta->contentType = SML_PCDATA_EXTENSION; |
|
1237 meta->extension = SML_EXT_METINF; |
|
1238 return meta; |
|
1239 |
|
1240 case EItem: |
|
1241 return AddItemL(&itemList); |
|
1242 |
|
1243 default: |
|
1244 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1245 } |
|
1246 return 0; |
|
1247 } |
|
1248 |
|
1249 // ------------------------------------------------------------------------------------------------ |
|
1250 CXMLElement::TAction sml_get_put_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1251 { |
|
1252 switch( aTag ) |
|
1253 { |
|
1254 case EGet: |
|
1255 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlGetCmdFuncL(this); |
|
1256 return EPopAndDestroy; |
|
1257 |
|
1258 case EPut: |
|
1259 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlPutCmdFuncL(this); |
|
1260 return EPopAndDestroy; |
|
1261 |
|
1262 case ENoResp: |
|
1263 return ENone; |
|
1264 |
|
1265 default: |
|
1266 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1267 } |
|
1268 |
|
1269 return EPop; |
|
1270 } |
|
1271 |
|
1272 // ------------------------------------------------------------------------------------------------ |
|
1273 TBool sml_get_put_s::NeedsCleanup() const |
|
1274 { |
|
1275 return ETrue; |
|
1276 } |
|
1277 |
|
1278 // ------------------------------------------------------------------------------------------------ |
|
1279 // sml_map_item_s |
|
1280 // ------------------------------------------------------------------------------------------------ |
|
1281 EXPORT_C sml_map_item_s::sml_map_item_s() |
|
1282 { |
|
1283 } |
|
1284 |
|
1285 // ------------------------------------------------------------------------------------------------ |
|
1286 EXPORT_C sml_map_item_s::~sml_map_item_s() |
|
1287 { |
|
1288 delete source; |
|
1289 delete target; |
|
1290 } |
|
1291 |
|
1292 // ------------------------------------------------------------------------------------------------ |
|
1293 CXMLElement* sml_map_item_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1294 { |
|
1295 switch( aTag ) |
|
1296 { |
|
1297 case ETarget: |
|
1298 CHECK_NO_DUPLICATE(target); |
|
1299 target = new (ELeave) SmlTarget_t(); |
|
1300 return target; |
|
1301 |
|
1302 case ESource: |
|
1303 CHECK_NO_DUPLICATE(source); |
|
1304 source = new (ELeave) SmlSource_t(); |
|
1305 return source; |
|
1306 |
|
1307 default: |
|
1308 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1309 } |
|
1310 return 0; |
|
1311 } |
|
1312 |
|
1313 // ------------------------------------------------------------------------------------------------ |
|
1314 // sml_map_item_list_s |
|
1315 // ------------------------------------------------------------------------------------------------ |
|
1316 EXPORT_C sml_map_item_list_s::sml_map_item_list_s() |
|
1317 { |
|
1318 } |
|
1319 |
|
1320 // ------------------------------------------------------------------------------------------------ |
|
1321 EXPORT_C sml_map_item_list_s::~sml_map_item_list_s() |
|
1322 { |
|
1323 delete mapItem; |
|
1324 } |
|
1325 |
|
1326 // ------------------------------------------------------------------------------------------------ |
|
1327 // sml_map_s |
|
1328 // ------------------------------------------------------------------------------------------------ |
|
1329 EXPORT_C sml_map_s::sml_map_s() |
|
1330 { |
|
1331 } |
|
1332 |
|
1333 // ------------------------------------------------------------------------------------------------ |
|
1334 EXPORT_C sml_map_s::~sml_map_s() |
|
1335 { |
|
1336 delete cmdID; |
|
1337 delete target; |
|
1338 delete source; |
|
1339 delete cred; |
|
1340 delete meta; |
|
1341 GenericListDelete( mapItemList ); |
|
1342 } |
|
1343 |
|
1344 // ------------------------------------------------------------------------------------------------ |
|
1345 CXMLElement* sml_map_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1346 { |
|
1347 switch( aTag ) |
|
1348 { |
|
1349 case ECmdID: |
|
1350 CHECK_NO_DUPLICATE(cmdID); |
|
1351 cmdID = new (ELeave) SmlPcdata_t(); |
|
1352 return cmdID; |
|
1353 |
|
1354 case ETarget: |
|
1355 CHECK_NO_DUPLICATE(target); |
|
1356 target = new (ELeave) SmlTarget_t(); |
|
1357 return target; |
|
1358 |
|
1359 case ESource: |
|
1360 CHECK_NO_DUPLICATE(source); |
|
1361 source = new (ELeave) SmlSource_t(); |
|
1362 return source; |
|
1363 |
|
1364 case ECred: |
|
1365 CHECK_NO_DUPLICATE(cred); |
|
1366 cred = new (ELeave) SmlCred_t(); |
|
1367 return cred; |
|
1368 |
|
1369 case EMeta: |
|
1370 CHECK_NO_DUPLICATE(meta); |
|
1371 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
1372 meta->contentType = SML_PCDATA_EXTENSION; |
|
1373 meta->extension = SML_EXT_METINF; |
|
1374 return meta; |
|
1375 |
|
1376 case EMapItem: |
|
1377 return AddMapItemL(&mapItemList); |
|
1378 |
|
1379 default: |
|
1380 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1381 } |
|
1382 return 0; |
|
1383 } |
|
1384 |
|
1385 // ------------------------------------------------------------------------------------------------ |
|
1386 CXMLElement::TAction sml_map_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1387 { |
|
1388 switch( aTag ) |
|
1389 { |
|
1390 case EMap: |
|
1391 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlMapCmdFuncL(this); |
|
1392 return EPopAndDestroy; |
|
1393 |
|
1394 default: |
|
1395 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1396 } |
|
1397 |
|
1398 return EPop; |
|
1399 } |
|
1400 |
|
1401 // ------------------------------------------------------------------------------------------------ |
|
1402 TBool sml_map_s::NeedsCleanup() const |
|
1403 { |
|
1404 return ETrue; |
|
1405 } |
|
1406 |
|
1407 // ------------------------------------------------------------------------------------------------ |
|
1408 // sml_results_s |
|
1409 // ------------------------------------------------------------------------------------------------ |
|
1410 EXPORT_C sml_results_s::sml_results_s() |
|
1411 { |
|
1412 } |
|
1413 |
|
1414 // ------------------------------------------------------------------------------------------------ |
|
1415 EXPORT_C sml_results_s::~sml_results_s() |
|
1416 { |
|
1417 delete cmdID; |
|
1418 delete msgRef; |
|
1419 delete cmdRef; |
|
1420 delete meta; |
|
1421 delete targetRef; |
|
1422 delete sourceRef; |
|
1423 GenericListDelete( itemList ); |
|
1424 } |
|
1425 |
|
1426 // ------------------------------------------------------------------------------------------------ |
|
1427 CXMLElement* sml_results_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1428 { |
|
1429 switch( aTag ) |
|
1430 { |
|
1431 case ECmdID: |
|
1432 CHECK_NO_DUPLICATE(cmdID); |
|
1433 cmdID = new (ELeave) SmlPcdata_t(); |
|
1434 return cmdID; |
|
1435 |
|
1436 case EMsgRef: |
|
1437 CHECK_NO_DUPLICATE(msgRef); |
|
1438 msgRef = new (ELeave) SmlPcdata_t(); |
|
1439 return msgRef; |
|
1440 |
|
1441 case ECmdRef: |
|
1442 CHECK_NO_DUPLICATE(cmdRef); |
|
1443 cmdRef = new (ELeave) SmlPcdata_t(); |
|
1444 return cmdRef; |
|
1445 |
|
1446 case ETargetRef: |
|
1447 CHECK_NO_DUPLICATE(targetRef); |
|
1448 targetRef = new (ELeave) SmlPcdata_t(); |
|
1449 return targetRef; |
|
1450 |
|
1451 case ESourceRef: |
|
1452 CHECK_NO_DUPLICATE(sourceRef); |
|
1453 sourceRef = new (ELeave) SmlPcdata_t(); |
|
1454 return sourceRef; |
|
1455 |
|
1456 case EMeta: |
|
1457 CHECK_NO_DUPLICATE(meta); |
|
1458 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
1459 meta->contentType = SML_PCDATA_EXTENSION; |
|
1460 meta->extension = SML_EXT_METINF; |
|
1461 return meta; |
|
1462 |
|
1463 case EItem: |
|
1464 return AddItemL(&itemList); |
|
1465 |
|
1466 default: |
|
1467 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1468 } |
|
1469 return 0; |
|
1470 } |
|
1471 |
|
1472 // ------------------------------------------------------------------------------------------------ |
|
1473 CXMLElement::TAction sml_results_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1474 { |
|
1475 switch( aTag ) |
|
1476 { |
|
1477 case EResults: |
|
1478 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlResultsCmdFuncL(this); |
|
1479 return EPopAndDestroy; |
|
1480 |
|
1481 default: |
|
1482 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1483 } |
|
1484 |
|
1485 return EPop; |
|
1486 } |
|
1487 |
|
1488 // ------------------------------------------------------------------------------------------------ |
|
1489 TBool sml_results_s::NeedsCleanup() const |
|
1490 { |
|
1491 return ETrue; |
|
1492 } |
|
1493 |
|
1494 // ------------------------------------------------------------------------------------------------ |
|
1495 // sml_search_s |
|
1496 // ------------------------------------------------------------------------------------------------ |
|
1497 EXPORT_C sml_search_s::sml_search_s() |
|
1498 { |
|
1499 } |
|
1500 |
|
1501 // ------------------------------------------------------------------------------------------------ |
|
1502 EXPORT_C sml_search_s::~sml_search_s() |
|
1503 { |
|
1504 delete cmdID; |
|
1505 delete cred; |
|
1506 delete target; |
|
1507 GenericListDelete( sourceList ); |
|
1508 delete lang; |
|
1509 delete meta; |
|
1510 delete data; |
|
1511 } |
|
1512 |
|
1513 // ------------------------------------------------------------------------------------------------ |
|
1514 CXMLElement* sml_search_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1515 { |
|
1516 switch( aTag ) |
|
1517 { |
|
1518 case ECmdID: |
|
1519 CHECK_NO_DUPLICATE(cmdID); |
|
1520 cmdID = new (ELeave) SmlPcdata_t(); |
|
1521 return cmdID; |
|
1522 |
|
1523 case ENoResp: |
|
1524 CHECK_NO_DUPLICATE(flags & SmlNoResp_f); |
|
1525 flags |= SmlNoResp_f; |
|
1526 break; |
|
1527 |
|
1528 case ENoResults: |
|
1529 CHECK_NO_DUPLICATE(flags & SmlNoResults_f); |
|
1530 flags |= SmlNoResults_f; |
|
1531 break; |
|
1532 |
|
1533 case ECred: |
|
1534 CHECK_NO_DUPLICATE(cred); |
|
1535 cred = new (ELeave) SmlCred_t(); |
|
1536 return cred; |
|
1537 |
|
1538 case ETarget: |
|
1539 CHECK_NO_DUPLICATE(target); |
|
1540 target = new (ELeave) SmlTarget_t(); |
|
1541 return target; |
|
1542 |
|
1543 case ESource: |
|
1544 return AddSourceListL(&sourceList); |
|
1545 |
|
1546 case ELang: |
|
1547 CHECK_NO_DUPLICATE(lang); |
|
1548 lang = new (ELeave) SmlPcdata_t(); |
|
1549 return lang; |
|
1550 |
|
1551 case EMeta: |
|
1552 CHECK_NO_DUPLICATE(meta); |
|
1553 meta = new (ELeave) SmlPcdata_t(/*SML_PCDATA_EXTENSION, SML_EXT_METINF*/); |
|
1554 meta->contentType = SML_PCDATA_EXTENSION; |
|
1555 meta->extension = SML_EXT_METINF; |
|
1556 return meta; |
|
1557 |
|
1558 case EData: |
|
1559 CHECK_NO_DUPLICATE(data); |
|
1560 data = new (ELeave) SmlPcdata_t(); |
|
1561 return data; |
|
1562 |
|
1563 default: |
|
1564 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1565 } |
|
1566 return 0; |
|
1567 } |
|
1568 |
|
1569 // ------------------------------------------------------------------------------------------------ |
|
1570 CXMLElement::TAction sml_search_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1571 { |
|
1572 switch( aTag ) |
|
1573 { |
|
1574 case ESearch: |
|
1575 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlSearchCmdFuncL(this); |
|
1576 return EPopAndDestroy; |
|
1577 |
|
1578 case ENoResp: |
|
1579 case ENoResults: |
|
1580 return ENone; |
|
1581 |
|
1582 |
|
1583 default: |
|
1584 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1585 } |
|
1586 |
|
1587 return EPop; |
|
1588 } |
|
1589 |
|
1590 // ------------------------------------------------------------------------------------------------ |
|
1591 TBool sml_search_s::NeedsCleanup() const |
|
1592 { |
|
1593 return ETrue; |
|
1594 } |
|
1595 |
|
1596 // ------------------------------------------------------------------------------------------------ |
|
1597 // sml_target_ref_list_s |
|
1598 // ------------------------------------------------------------------------------------------------ |
|
1599 EXPORT_C sml_target_ref_list_s::sml_target_ref_list_s() |
|
1600 { |
|
1601 } |
|
1602 |
|
1603 // ------------------------------------------------------------------------------------------------ |
|
1604 EXPORT_C sml_target_ref_list_s::~sml_target_ref_list_s() |
|
1605 { |
|
1606 delete targetRef; |
|
1607 } |
|
1608 |
|
1609 // ------------------------------------------------------------------------------------------------ |
|
1610 // sml_source_ref_list_s |
|
1611 // ------------------------------------------------------------------------------------------------ |
|
1612 EXPORT_C sml_source_ref_list_s::sml_source_ref_list_s() |
|
1613 { |
|
1614 } |
|
1615 |
|
1616 // ------------------------------------------------------------------------------------------------ |
|
1617 EXPORT_C sml_source_ref_list_s::~sml_source_ref_list_s() |
|
1618 { |
|
1619 delete sourceRef; |
|
1620 } |
|
1621 |
|
1622 // ------------------------------------------------------------------------------------------------ |
|
1623 // sml_status_s |
|
1624 // ------------------------------------------------------------------------------------------------ |
|
1625 EXPORT_C sml_status_s::sml_status_s() |
|
1626 { |
|
1627 } |
|
1628 |
|
1629 // ------------------------------------------------------------------------------------------------ |
|
1630 EXPORT_C sml_status_s::~sml_status_s() |
|
1631 { |
|
1632 delete cmdID; |
|
1633 delete msgRef; |
|
1634 delete cmdRef; |
|
1635 delete cmd; |
|
1636 GenericListDelete( targetRefList ); |
|
1637 GenericListDelete( sourceRefList ); |
|
1638 delete cred; |
|
1639 delete chal; |
|
1640 delete data; |
|
1641 |
|
1642 GenericListDelete( itemList ); |
|
1643 } |
|
1644 |
|
1645 // ------------------------------------------------------------------------------------------------ |
|
1646 CXMLElement* sml_status_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1647 { |
|
1648 switch( aTag ) |
|
1649 { |
|
1650 case ECmdID: |
|
1651 CHECK_NO_DUPLICATE(cmdID); |
|
1652 cmdID = new (ELeave) SmlPcdata_t(); |
|
1653 return cmdID; |
|
1654 |
|
1655 case EMsgRef: |
|
1656 CHECK_NO_DUPLICATE(msgRef); |
|
1657 msgRef = new (ELeave) SmlPcdata_t(); |
|
1658 return msgRef; |
|
1659 |
|
1660 case ECmdRef: |
|
1661 CHECK_NO_DUPLICATE(cmdRef); |
|
1662 cmdRef = new (ELeave) SmlPcdata_t(); |
|
1663 return cmdRef; |
|
1664 |
|
1665 case ECmd: |
|
1666 CHECK_NO_DUPLICATE(cmd); |
|
1667 cmd = new (ELeave) SmlPcdata_t(); |
|
1668 return cmd; |
|
1669 |
|
1670 case ETargetRef: |
|
1671 return AddTargetRefL(&targetRefList); |
|
1672 |
|
1673 case ESourceRef: |
|
1674 return AddSourceRefL(&sourceRefList); |
|
1675 |
|
1676 case ECred: |
|
1677 CHECK_NO_DUPLICATE(cred); |
|
1678 cred = new (ELeave) SmlCred_t(); |
|
1679 return cred; |
|
1680 |
|
1681 case EChal: |
|
1682 CHECK_NO_DUPLICATE(chal); |
|
1683 chal = new (ELeave) SmlChal_t(); |
|
1684 return chal; |
|
1685 |
|
1686 case EData: |
|
1687 CHECK_NO_DUPLICATE(data); |
|
1688 data = new (ELeave) SmlPcdata_t(); |
|
1689 return data; |
|
1690 |
|
1691 case EItem: |
|
1692 return AddItemL(&itemList); |
|
1693 |
|
1694 default: |
|
1695 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1696 } |
|
1697 return 0; |
|
1698 } |
|
1699 |
|
1700 // ------------------------------------------------------------------------------------------------ |
|
1701 CXMLElement::TAction sml_status_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1702 { |
|
1703 switch( aTag ) |
|
1704 { |
|
1705 case EStatus: |
|
1706 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlStatusCmdFuncL(this); |
|
1707 return EPopAndDestroy; |
|
1708 |
|
1709 default: |
|
1710 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1711 } |
|
1712 |
|
1713 return EPop; |
|
1714 } |
|
1715 |
|
1716 // ------------------------------------------------------------------------------------------------ |
|
1717 TBool sml_status_s::NeedsCleanup() const |
|
1718 { |
|
1719 return ETrue; |
|
1720 } |
|
1721 |
|
1722 // ------------------------------------------------------------------------------------------------ |
|
1723 // sml_syncml_s |
|
1724 // ------------------------------------------------------------------------------------------------ |
|
1725 EXPORT_C CXMLElement* sml_syncml_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1726 { |
|
1727 switch( aTag ) |
|
1728 { |
|
1729 case ESyncHdr: |
|
1730 return new (ELeave) SmlSyncHdr_t(); |
|
1731 |
|
1732 case ESyncBody: |
|
1733 return new (ELeave) SmlSyncBody_t(); |
|
1734 |
|
1735 default: |
|
1736 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1737 } |
|
1738 return 0; |
|
1739 } |
|
1740 |
|
1741 // ------------------------------------------------------------------------------------------------ |
|
1742 EXPORT_C CXMLElement::TAction sml_syncml_s::EndElementL( TAny* /*aCallbacks*/, TUint8 /*aTag*/ ) |
|
1743 { |
|
1744 return EPopAndDestroy; |
|
1745 } |
|
1746 |
|
1747 // ------------------------------------------------------------------------------------------------ |
|
1748 EXPORT_C TBool sml_syncml_s::NeedsCleanup() const |
|
1749 { |
|
1750 return ETrue; |
|
1751 } |
|
1752 |
|
1753 // ------------------------------------------------------------------------------------------------ |
|
1754 // sml_syncml_body_s |
|
1755 // ------------------------------------------------------------------------------------------------ |
|
1756 CXMLElement* sml_syncml_body_s::BeginElementL( TUint8 aTag, const TXMLElementParams& /*aParams*/ ) |
|
1757 { |
|
1758 switch( aTag ) |
|
1759 { |
|
1760 case EFinal: |
|
1761 CHECK_NO_DUPLICATE(flags & SmlFinal_f); |
|
1762 flags |= SmlFinal_f; |
|
1763 break; |
|
1764 |
|
1765 default: |
|
1766 CXMLElement* e; |
|
1767 if( !CreateBasicCommandL(e, aTag) ) |
|
1768 { |
|
1769 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1770 } |
|
1771 return e; |
|
1772 } |
|
1773 return 0; |
|
1774 } |
|
1775 |
|
1776 // ------------------------------------------------------------------------------------------------ |
|
1777 CXMLElement::TAction sml_syncml_body_s::EndElementL( TAny* aCallbacks, TUint8 aTag ) |
|
1778 { |
|
1779 switch( aTag ) |
|
1780 { |
|
1781 case ESyncBody: |
|
1782 ((MWBXMLSyncMLCallbacks*)aCallbacks)->smlEndMessageFuncL((this->flags & SmlFinal_f) != 0); |
|
1783 return EPopAndDestroy; |
|
1784 |
|
1785 case EFinal: |
|
1786 return ENone; |
|
1787 |
|
1788 default: |
|
1789 User::Leave(KWBXMLParserErrorInvalidTag); |
|
1790 } |
|
1791 |
|
1792 return EPop; |
|
1793 } |
|
1794 |
|
1795 // ------------------------------------------------------------------------------------------------ |
|
1796 TBool sml_syncml_body_s::NeedsCleanup() const |
|
1797 { |
|
1798 return ETrue; |
|
1799 } |