1 /**********************************************************
2  * This file has been automatically created by "typemaker2"
3  * from the file "account_spec.xml".
4  * Please do not edit this file, all changes will be lost.
5  * Better edit the mentioned source file instead.
6  **********************************************************/
7 
8 #ifdef HAVE_CONFIG_H
9 # include <config.h>
10 #endif
11 
12 #include "./account_spec_p.h"
13 
14 #include <gwenhywfar/misc.h>
15 #include <gwenhywfar/debug.h>
16 
17 /* code headers */
18 
19 /* macro functions */
GWEN_LIST_FUNCTIONS(AB_ACCOUNT_SPEC,AB_AccountSpec)20 GWEN_LIST_FUNCTIONS(AB_ACCOUNT_SPEC, AB_AccountSpec)
21 GWEN_LIST2_FUNCTIONS(AB_ACCOUNT_SPEC, AB_AccountSpec)
22 
23 
24 AB_ACCOUNT_SPEC *AB_AccountSpec_new(void)
25 {
26   AB_ACCOUNT_SPEC *p_struct;
27 
28   GWEN_NEW_OBJECT(AB_ACCOUNT_SPEC, p_struct)
29   p_struct->_refCount=1;
30   GWEN_LIST_INIT(AB_ACCOUNT_SPEC, p_struct)
31   /* members */
32   p_struct->type=AB_AccountType_Unknown;
33   p_struct->uniqueId=0;
34   p_struct->backendName=NULL;
35   p_struct->ownerName=NULL;
36   p_struct->accountName=NULL;
37   p_struct->currency=NULL;
38   p_struct->memo=NULL;
39   p_struct->iban=NULL;
40   p_struct->bic=NULL;
41   p_struct->country=NULL;
42   p_struct->bankCode=NULL;
43   p_struct->bankName=NULL;
44   p_struct->branchId=NULL;
45   p_struct->accountNumber=NULL;
46   p_struct->subAccountNumber=NULL;
47   p_struct->transactionLimitsList=AB_TransactionLimits_List_new();
48   /* virtual functions */
49 
50   return p_struct;
51 }
52 
AB_AccountSpec_free(AB_ACCOUNT_SPEC * p_struct)53 void AB_AccountSpec_free(AB_ACCOUNT_SPEC *p_struct)
54 {
55   if (p_struct) {
56     assert(p_struct->_refCount);
57     if (p_struct->_refCount==1) {
58       GWEN_LIST_FINI(AB_ACCOUNT_SPEC, p_struct)
59       /* members */
60       free(p_struct->backendName);
61       p_struct->backendName=NULL;
62       free(p_struct->ownerName);
63       p_struct->ownerName=NULL;
64       free(p_struct->accountName);
65       p_struct->accountName=NULL;
66       free(p_struct->currency);
67       p_struct->currency=NULL;
68       free(p_struct->memo);
69       p_struct->memo=NULL;
70       free(p_struct->iban);
71       p_struct->iban=NULL;
72       free(p_struct->bic);
73       p_struct->bic=NULL;
74       free(p_struct->country);
75       p_struct->country=NULL;
76       free(p_struct->bankCode);
77       p_struct->bankCode=NULL;
78       free(p_struct->bankName);
79       p_struct->bankName=NULL;
80       free(p_struct->branchId);
81       p_struct->branchId=NULL;
82       free(p_struct->accountNumber);
83       p_struct->accountNumber=NULL;
84       free(p_struct->subAccountNumber);
85       p_struct->subAccountNumber=NULL;
86       AB_TransactionLimits_List_free(p_struct->transactionLimitsList);
87       p_struct->transactionLimitsList=NULL;
88       p_struct->_refCount=0;
89       GWEN_FREE_OBJECT(p_struct);
90     }
91     else
92       p_struct->_refCount--;
93   }
94 }
95 
AB_AccountSpec_Attach(AB_ACCOUNT_SPEC * p_struct)96 void AB_AccountSpec_Attach(AB_ACCOUNT_SPEC *p_struct)
97 {
98   assert(p_struct);
99   assert(p_struct->_refCount);
100   p_struct->_refCount++;
101 }
102 
AB_AccountSpec_dup(const AB_ACCOUNT_SPEC * p_src)103 AB_ACCOUNT_SPEC *AB_AccountSpec_dup(const AB_ACCOUNT_SPEC *p_src)
104 {
105   AB_ACCOUNT_SPEC *p_struct;
106 
107   assert(p_src);
108   p_struct=AB_AccountSpec_new();
109   /* member "type" */
110   p_struct->type=p_src->type;
111 
112   /* member "uniqueId" */
113   p_struct->uniqueId=p_src->uniqueId;
114 
115   /* member "backendName" */
116   if (p_struct->backendName) {
117     free(p_struct->backendName);
118     p_struct->backendName=NULL;
119     p_struct->backendName=NULL;
120   }
121   if (p_src->backendName) {
122     p_struct->backendName=strdup(p_src->backendName);
123   }
124 
125   /* member "ownerName" */
126   if (p_struct->ownerName) {
127     free(p_struct->ownerName);
128     p_struct->ownerName=NULL;
129     p_struct->ownerName=NULL;
130   }
131   if (p_src->ownerName) {
132     p_struct->ownerName=strdup(p_src->ownerName);
133   }
134 
135   /* member "accountName" */
136   if (p_struct->accountName) {
137     free(p_struct->accountName);
138     p_struct->accountName=NULL;
139     p_struct->accountName=NULL;
140   }
141   if (p_src->accountName) {
142     p_struct->accountName=strdup(p_src->accountName);
143   }
144 
145   /* member "currency" */
146   if (p_struct->currency) {
147     free(p_struct->currency);
148     p_struct->currency=NULL;
149     p_struct->currency=NULL;
150   }
151   if (p_src->currency) {
152     p_struct->currency=strdup(p_src->currency);
153   }
154 
155   /* member "memo" */
156   if (p_struct->memo) {
157     free(p_struct->memo);
158     p_struct->memo=NULL;
159     p_struct->memo=NULL;
160   }
161   if (p_src->memo) {
162     p_struct->memo=strdup(p_src->memo);
163   }
164 
165   /* member "iban" */
166   if (p_struct->iban) {
167     free(p_struct->iban);
168     p_struct->iban=NULL;
169     p_struct->iban=NULL;
170   }
171   if (p_src->iban) {
172     p_struct->iban=strdup(p_src->iban);
173   }
174 
175   /* member "bic" */
176   if (p_struct->bic) {
177     free(p_struct->bic);
178     p_struct->bic=NULL;
179     p_struct->bic=NULL;
180   }
181   if (p_src->bic) {
182     p_struct->bic=strdup(p_src->bic);
183   }
184 
185   /* member "country" */
186   if (p_struct->country) {
187     free(p_struct->country);
188     p_struct->country=NULL;
189     p_struct->country=NULL;
190   }
191   if (p_src->country) {
192     p_struct->country=strdup(p_src->country);
193   }
194 
195   /* member "bankCode" */
196   if (p_struct->bankCode) {
197     free(p_struct->bankCode);
198     p_struct->bankCode=NULL;
199     p_struct->bankCode=NULL;
200   }
201   if (p_src->bankCode) {
202     p_struct->bankCode=strdup(p_src->bankCode);
203   }
204 
205   /* member "bankName" */
206   if (p_struct->bankName) {
207     free(p_struct->bankName);
208     p_struct->bankName=NULL;
209     p_struct->bankName=NULL;
210   }
211   if (p_src->bankName) {
212     p_struct->bankName=strdup(p_src->bankName);
213   }
214 
215   /* member "branchId" */
216   if (p_struct->branchId) {
217     free(p_struct->branchId);
218     p_struct->branchId=NULL;
219     p_struct->branchId=NULL;
220   }
221   if (p_src->branchId) {
222     p_struct->branchId=strdup(p_src->branchId);
223   }
224 
225   /* member "accountNumber" */
226   if (p_struct->accountNumber) {
227     free(p_struct->accountNumber);
228     p_struct->accountNumber=NULL;
229     p_struct->accountNumber=NULL;
230   }
231   if (p_src->accountNumber) {
232     p_struct->accountNumber=strdup(p_src->accountNumber);
233   }
234 
235   /* member "subAccountNumber" */
236   if (p_struct->subAccountNumber) {
237     free(p_struct->subAccountNumber);
238     p_struct->subAccountNumber=NULL;
239     p_struct->subAccountNumber=NULL;
240   }
241   if (p_src->subAccountNumber) {
242     p_struct->subAccountNumber=strdup(p_src->subAccountNumber);
243   }
244 
245   /* member "transactionLimitsList" */
246   if (p_struct->transactionLimitsList) {
247     AB_TransactionLimits_List_free(p_struct->transactionLimitsList);
248     p_struct->transactionLimitsList=NULL;
249     p_struct->transactionLimitsList=NULL;
250   }
251   if (p_src->transactionLimitsList) {
252     p_struct->transactionLimitsList=AB_TransactionLimits_List_dup(p_src->transactionLimitsList);
253   }
254 
255   return p_struct;
256 }
257 
AB_AccountSpec_copy(AB_ACCOUNT_SPEC * p_struct,const AB_ACCOUNT_SPEC * p_src)258 AB_ACCOUNT_SPEC *AB_AccountSpec_copy(AB_ACCOUNT_SPEC *p_struct, const AB_ACCOUNT_SPEC *p_src)
259 {
260   assert(p_struct);
261   assert(p_src);
262   /* member "type" */
263   p_struct->type=p_src->type;
264 
265   /* member "uniqueId" */
266   p_struct->uniqueId=p_src->uniqueId;
267 
268   /* member "backendName" */
269   if (p_struct->backendName) {
270     free(p_struct->backendName);
271     p_struct->backendName=NULL;
272     p_struct->backendName=NULL;
273   }
274   if (p_src->backendName) {
275     p_struct->backendName=strdup(p_src->backendName);
276   }
277 
278   /* member "ownerName" */
279   if (p_struct->ownerName) {
280     free(p_struct->ownerName);
281     p_struct->ownerName=NULL;
282     p_struct->ownerName=NULL;
283   }
284   if (p_src->ownerName) {
285     p_struct->ownerName=strdup(p_src->ownerName);
286   }
287 
288   /* member "accountName" */
289   if (p_struct->accountName) {
290     free(p_struct->accountName);
291     p_struct->accountName=NULL;
292     p_struct->accountName=NULL;
293   }
294   if (p_src->accountName) {
295     p_struct->accountName=strdup(p_src->accountName);
296   }
297 
298   /* member "currency" */
299   if (p_struct->currency) {
300     free(p_struct->currency);
301     p_struct->currency=NULL;
302     p_struct->currency=NULL;
303   }
304   if (p_src->currency) {
305     p_struct->currency=strdup(p_src->currency);
306   }
307 
308   /* member "memo" */
309   if (p_struct->memo) {
310     free(p_struct->memo);
311     p_struct->memo=NULL;
312     p_struct->memo=NULL;
313   }
314   if (p_src->memo) {
315     p_struct->memo=strdup(p_src->memo);
316   }
317 
318   /* member "iban" */
319   if (p_struct->iban) {
320     free(p_struct->iban);
321     p_struct->iban=NULL;
322     p_struct->iban=NULL;
323   }
324   if (p_src->iban) {
325     p_struct->iban=strdup(p_src->iban);
326   }
327 
328   /* member "bic" */
329   if (p_struct->bic) {
330     free(p_struct->bic);
331     p_struct->bic=NULL;
332     p_struct->bic=NULL;
333   }
334   if (p_src->bic) {
335     p_struct->bic=strdup(p_src->bic);
336   }
337 
338   /* member "country" */
339   if (p_struct->country) {
340     free(p_struct->country);
341     p_struct->country=NULL;
342     p_struct->country=NULL;
343   }
344   if (p_src->country) {
345     p_struct->country=strdup(p_src->country);
346   }
347 
348   /* member "bankCode" */
349   if (p_struct->bankCode) {
350     free(p_struct->bankCode);
351     p_struct->bankCode=NULL;
352     p_struct->bankCode=NULL;
353   }
354   if (p_src->bankCode) {
355     p_struct->bankCode=strdup(p_src->bankCode);
356   }
357 
358   /* member "bankName" */
359   if (p_struct->bankName) {
360     free(p_struct->bankName);
361     p_struct->bankName=NULL;
362     p_struct->bankName=NULL;
363   }
364   if (p_src->bankName) {
365     p_struct->bankName=strdup(p_src->bankName);
366   }
367 
368   /* member "branchId" */
369   if (p_struct->branchId) {
370     free(p_struct->branchId);
371     p_struct->branchId=NULL;
372     p_struct->branchId=NULL;
373   }
374   if (p_src->branchId) {
375     p_struct->branchId=strdup(p_src->branchId);
376   }
377 
378   /* member "accountNumber" */
379   if (p_struct->accountNumber) {
380     free(p_struct->accountNumber);
381     p_struct->accountNumber=NULL;
382     p_struct->accountNumber=NULL;
383   }
384   if (p_src->accountNumber) {
385     p_struct->accountNumber=strdup(p_src->accountNumber);
386   }
387 
388   /* member "subAccountNumber" */
389   if (p_struct->subAccountNumber) {
390     free(p_struct->subAccountNumber);
391     p_struct->subAccountNumber=NULL;
392     p_struct->subAccountNumber=NULL;
393   }
394   if (p_src->subAccountNumber) {
395     p_struct->subAccountNumber=strdup(p_src->subAccountNumber);
396   }
397 
398   /* member "transactionLimitsList" */
399   if (p_struct->transactionLimitsList) {
400     AB_TransactionLimits_List_free(p_struct->transactionLimitsList);
401     p_struct->transactionLimitsList=NULL;
402     p_struct->transactionLimitsList=NULL;
403   }
404   if (p_src->transactionLimitsList) {
405     p_struct->transactionLimitsList=AB_TransactionLimits_List_dup(p_src->transactionLimitsList);
406   }
407 
408   return p_struct;
409 }
410 
AB_AccountSpec_GetType(const AB_ACCOUNT_SPEC * p_struct)411 int AB_AccountSpec_GetType(const AB_ACCOUNT_SPEC *p_struct)
412 {
413   assert(p_struct);
414   return p_struct->type;
415 }
416 
AB_AccountSpec_GetUniqueId(const AB_ACCOUNT_SPEC * p_struct)417 uint32_t AB_AccountSpec_GetUniqueId(const AB_ACCOUNT_SPEC *p_struct)
418 {
419   assert(p_struct);
420   return p_struct->uniqueId;
421 }
422 
AB_AccountSpec_GetBackendName(const AB_ACCOUNT_SPEC * p_struct)423 const char *AB_AccountSpec_GetBackendName(const AB_ACCOUNT_SPEC *p_struct)
424 {
425   assert(p_struct);
426   return p_struct->backendName;
427 }
428 
AB_AccountSpec_GetOwnerName(const AB_ACCOUNT_SPEC * p_struct)429 const char *AB_AccountSpec_GetOwnerName(const AB_ACCOUNT_SPEC *p_struct)
430 {
431   assert(p_struct);
432   return p_struct->ownerName;
433 }
434 
AB_AccountSpec_GetAccountName(const AB_ACCOUNT_SPEC * p_struct)435 const char *AB_AccountSpec_GetAccountName(const AB_ACCOUNT_SPEC *p_struct)
436 {
437   assert(p_struct);
438   return p_struct->accountName;
439 }
440 
AB_AccountSpec_GetCurrency(const AB_ACCOUNT_SPEC * p_struct)441 const char *AB_AccountSpec_GetCurrency(const AB_ACCOUNT_SPEC *p_struct)
442 {
443   assert(p_struct);
444   return p_struct->currency;
445 }
446 
AB_AccountSpec_GetMemo(const AB_ACCOUNT_SPEC * p_struct)447 const char *AB_AccountSpec_GetMemo(const AB_ACCOUNT_SPEC *p_struct)
448 {
449   assert(p_struct);
450   return p_struct->memo;
451 }
452 
AB_AccountSpec_GetIban(const AB_ACCOUNT_SPEC * p_struct)453 const char *AB_AccountSpec_GetIban(const AB_ACCOUNT_SPEC *p_struct)
454 {
455   assert(p_struct);
456   return p_struct->iban;
457 }
458 
AB_AccountSpec_GetBic(const AB_ACCOUNT_SPEC * p_struct)459 const char *AB_AccountSpec_GetBic(const AB_ACCOUNT_SPEC *p_struct)
460 {
461   assert(p_struct);
462   return p_struct->bic;
463 }
464 
AB_AccountSpec_GetCountry(const AB_ACCOUNT_SPEC * p_struct)465 const char *AB_AccountSpec_GetCountry(const AB_ACCOUNT_SPEC *p_struct)
466 {
467   assert(p_struct);
468   return p_struct->country;
469 }
470 
AB_AccountSpec_GetBankCode(const AB_ACCOUNT_SPEC * p_struct)471 const char *AB_AccountSpec_GetBankCode(const AB_ACCOUNT_SPEC *p_struct)
472 {
473   assert(p_struct);
474   return p_struct->bankCode;
475 }
476 
AB_AccountSpec_GetBankName(const AB_ACCOUNT_SPEC * p_struct)477 const char *AB_AccountSpec_GetBankName(const AB_ACCOUNT_SPEC *p_struct)
478 {
479   assert(p_struct);
480   return p_struct->bankName;
481 }
482 
AB_AccountSpec_GetBranchId(const AB_ACCOUNT_SPEC * p_struct)483 const char *AB_AccountSpec_GetBranchId(const AB_ACCOUNT_SPEC *p_struct)
484 {
485   assert(p_struct);
486   return p_struct->branchId;
487 }
488 
AB_AccountSpec_GetAccountNumber(const AB_ACCOUNT_SPEC * p_struct)489 const char *AB_AccountSpec_GetAccountNumber(const AB_ACCOUNT_SPEC *p_struct)
490 {
491   assert(p_struct);
492   return p_struct->accountNumber;
493 }
494 
AB_AccountSpec_GetSubAccountNumber(const AB_ACCOUNT_SPEC * p_struct)495 const char *AB_AccountSpec_GetSubAccountNumber(const AB_ACCOUNT_SPEC *p_struct)
496 {
497   assert(p_struct);
498   return p_struct->subAccountNumber;
499 }
500 
AB_AccountSpec_GetTransactionLimitsList(const AB_ACCOUNT_SPEC * p_struct)501 AB_TRANSACTION_LIMITS_LIST *AB_AccountSpec_GetTransactionLimitsList(const AB_ACCOUNT_SPEC *p_struct)
502 {
503   assert(p_struct);
504   return p_struct->transactionLimitsList;
505 }
506 
AB_AccountSpec_SetType(AB_ACCOUNT_SPEC * p_struct,int p_src)507 void AB_AccountSpec_SetType(AB_ACCOUNT_SPEC *p_struct, int p_src)
508 {
509   assert(p_struct);
510   p_struct->type=p_src;
511 }
512 
AB_AccountSpec_SetUniqueId(AB_ACCOUNT_SPEC * p_struct,uint32_t p_src)513 void AB_AccountSpec_SetUniqueId(AB_ACCOUNT_SPEC *p_struct, uint32_t p_src)
514 {
515   assert(p_struct);
516   p_struct->uniqueId=p_src;
517 }
518 
AB_AccountSpec_SetBackendName(AB_ACCOUNT_SPEC * p_struct,const char * p_src)519 void AB_AccountSpec_SetBackendName(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
520 {
521   assert(p_struct);
522   if (p_struct->backendName) {
523     free(p_struct->backendName);
524     p_struct->backendName=NULL;
525   }
526   if (p_src) {
527     p_struct->backendName=strdup(p_src);
528   }
529   else {
530     p_struct->backendName=NULL;
531   }
532 }
533 
AB_AccountSpec_SetOwnerName(AB_ACCOUNT_SPEC * p_struct,const char * p_src)534 void AB_AccountSpec_SetOwnerName(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
535 {
536   assert(p_struct);
537   if (p_struct->ownerName) {
538     free(p_struct->ownerName);
539     p_struct->ownerName=NULL;
540   }
541   if (p_src) {
542     p_struct->ownerName=strdup(p_src);
543   }
544   else {
545     p_struct->ownerName=NULL;
546   }
547 }
548 
AB_AccountSpec_SetAccountName(AB_ACCOUNT_SPEC * p_struct,const char * p_src)549 void AB_AccountSpec_SetAccountName(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
550 {
551   assert(p_struct);
552   if (p_struct->accountName) {
553     free(p_struct->accountName);
554     p_struct->accountName=NULL;
555   }
556   if (p_src) {
557     p_struct->accountName=strdup(p_src);
558   }
559   else {
560     p_struct->accountName=NULL;
561   }
562 }
563 
AB_AccountSpec_SetCurrency(AB_ACCOUNT_SPEC * p_struct,const char * p_src)564 void AB_AccountSpec_SetCurrency(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
565 {
566   assert(p_struct);
567   if (p_struct->currency) {
568     free(p_struct->currency);
569     p_struct->currency=NULL;
570   }
571   if (p_src) {
572     p_struct->currency=strdup(p_src);
573   }
574   else {
575     p_struct->currency=NULL;
576   }
577 }
578 
AB_AccountSpec_SetMemo(AB_ACCOUNT_SPEC * p_struct,const char * p_src)579 void AB_AccountSpec_SetMemo(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
580 {
581   assert(p_struct);
582   if (p_struct->memo) {
583     free(p_struct->memo);
584     p_struct->memo=NULL;
585   }
586   if (p_src) {
587     p_struct->memo=strdup(p_src);
588   }
589   else {
590     p_struct->memo=NULL;
591   }
592 }
593 
AB_AccountSpec_SetIban(AB_ACCOUNT_SPEC * p_struct,const char * p_src)594 void AB_AccountSpec_SetIban(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
595 {
596   assert(p_struct);
597   if (p_struct->iban) {
598     free(p_struct->iban);
599     p_struct->iban=NULL;
600   }
601   if (p_src) {
602     p_struct->iban=strdup(p_src);
603   }
604   else {
605     p_struct->iban=NULL;
606   }
607 }
608 
AB_AccountSpec_SetBic(AB_ACCOUNT_SPEC * p_struct,const char * p_src)609 void AB_AccountSpec_SetBic(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
610 {
611   assert(p_struct);
612   if (p_struct->bic) {
613     free(p_struct->bic);
614     p_struct->bic=NULL;
615   }
616   if (p_src) {
617     p_struct->bic=strdup(p_src);
618   }
619   else {
620     p_struct->bic=NULL;
621   }
622 }
623 
AB_AccountSpec_SetCountry(AB_ACCOUNT_SPEC * p_struct,const char * p_src)624 void AB_AccountSpec_SetCountry(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
625 {
626   assert(p_struct);
627   if (p_struct->country) {
628     free(p_struct->country);
629     p_struct->country=NULL;
630   }
631   if (p_src) {
632     p_struct->country=strdup(p_src);
633   }
634   else {
635     p_struct->country=NULL;
636   }
637 }
638 
AB_AccountSpec_SetBankCode(AB_ACCOUNT_SPEC * p_struct,const char * p_src)639 void AB_AccountSpec_SetBankCode(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
640 {
641   assert(p_struct);
642   if (p_struct->bankCode) {
643     free(p_struct->bankCode);
644     p_struct->bankCode=NULL;
645   }
646   if (p_src) {
647     p_struct->bankCode=strdup(p_src);
648   }
649   else {
650     p_struct->bankCode=NULL;
651   }
652 }
653 
AB_AccountSpec_SetBankName(AB_ACCOUNT_SPEC * p_struct,const char * p_src)654 void AB_AccountSpec_SetBankName(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
655 {
656   assert(p_struct);
657   if (p_struct->bankName) {
658     free(p_struct->bankName);
659     p_struct->bankName=NULL;
660   }
661   if (p_src) {
662     p_struct->bankName=strdup(p_src);
663   }
664   else {
665     p_struct->bankName=NULL;
666   }
667 }
668 
AB_AccountSpec_SetBranchId(AB_ACCOUNT_SPEC * p_struct,const char * p_src)669 void AB_AccountSpec_SetBranchId(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
670 {
671   assert(p_struct);
672   if (p_struct->branchId) {
673     free(p_struct->branchId);
674     p_struct->branchId=NULL;
675   }
676   if (p_src) {
677     p_struct->branchId=strdup(p_src);
678   }
679   else {
680     p_struct->branchId=NULL;
681   }
682 }
683 
AB_AccountSpec_SetAccountNumber(AB_ACCOUNT_SPEC * p_struct,const char * p_src)684 void AB_AccountSpec_SetAccountNumber(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
685 {
686   assert(p_struct);
687   if (p_struct->accountNumber) {
688     free(p_struct->accountNumber);
689     p_struct->accountNumber=NULL;
690   }
691   if (p_src) {
692     p_struct->accountNumber=strdup(p_src);
693   }
694   else {
695     p_struct->accountNumber=NULL;
696   }
697 }
698 
AB_AccountSpec_SetSubAccountNumber(AB_ACCOUNT_SPEC * p_struct,const char * p_src)699 void AB_AccountSpec_SetSubAccountNumber(AB_ACCOUNT_SPEC *p_struct, const char *p_src)
700 {
701   assert(p_struct);
702   if (p_struct->subAccountNumber) {
703     free(p_struct->subAccountNumber);
704     p_struct->subAccountNumber=NULL;
705   }
706   if (p_src) {
707     p_struct->subAccountNumber=strdup(p_src);
708   }
709   else {
710     p_struct->subAccountNumber=NULL;
711   }
712 }
713 
AB_AccountSpec_SetTransactionLimitsList(AB_ACCOUNT_SPEC * p_struct,AB_TRANSACTION_LIMITS_LIST * p_src)714 void AB_AccountSpec_SetTransactionLimitsList(AB_ACCOUNT_SPEC *p_struct, AB_TRANSACTION_LIMITS_LIST *p_src)
715 {
716   assert(p_struct);
717   if (p_struct->transactionLimitsList) {
718     AB_TransactionLimits_List_free(p_struct->transactionLimitsList);
719     p_struct->transactionLimitsList=NULL;
720   }
721   p_struct->transactionLimitsList=p_src;
722 }
723 
724 /* list1 functions */
AB_AccountSpec_List_dup(const AB_ACCOUNT_SPEC_LIST * p_src)725 AB_ACCOUNT_SPEC_LIST *AB_AccountSpec_List_dup(const AB_ACCOUNT_SPEC_LIST *p_src)
726 {
727   AB_ACCOUNT_SPEC_LIST *p_dest;
728   AB_ACCOUNT_SPEC *p_elem;
729 
730   assert(p_src);
731   p_dest=AB_AccountSpec_List_new();
732   p_elem=AB_AccountSpec_List_First(p_src);
733   while (p_elem) {
734     AB_ACCOUNT_SPEC *p_cpy;
735 
736     p_cpy=AB_AccountSpec_dup(p_elem);
737     AB_AccountSpec_List_Add(p_cpy, p_dest);
738     p_elem=AB_AccountSpec_List_Next(p_elem);
739   }
740 
741   return p_dest;
742 }
743 
AB_AccountSpec_ReadDb(AB_ACCOUNT_SPEC * p_struct,GWEN_DB_NODE * p_db)744 void AB_AccountSpec_ReadDb(AB_ACCOUNT_SPEC *p_struct, GWEN_DB_NODE *p_db)
745 {
746   assert(p_struct);
747   /* member "type" */
748   p_struct->type=GWEN_DB_GetIntValue(p_db, "type", 0, AB_AccountType_Unknown);
749 
750   /* member "uniqueId" */
751   p_struct->uniqueId=GWEN_DB_GetIntValue(p_db, "uniqueId", 0, 0);
752 
753   /* member "backendName" */
754   if (p_struct->backendName) {
755     free(p_struct->backendName);
756     p_struct->backendName=NULL;
757   }
758   {
759     const char *s;
760     s=GWEN_DB_GetCharValue(p_db, "backendName", 0, NULL);
761     if (s)
762       p_struct->backendName=strdup(s);
763   }
764   if (p_struct->backendName==NULL) {
765     p_struct->backendName=NULL;
766   }
767 
768   /* member "ownerName" */
769   if (p_struct->ownerName) {
770     free(p_struct->ownerName);
771     p_struct->ownerName=NULL;
772   }
773   {
774     const char *s;
775     s=GWEN_DB_GetCharValue(p_db, "ownerName", 0, NULL);
776     if (s)
777       p_struct->ownerName=strdup(s);
778   }
779   if (p_struct->ownerName==NULL) {
780     p_struct->ownerName=NULL;
781   }
782 
783   /* member "accountName" */
784   if (p_struct->accountName) {
785     free(p_struct->accountName);
786     p_struct->accountName=NULL;
787   }
788   {
789     const char *s;
790     s=GWEN_DB_GetCharValue(p_db, "accountName", 0, NULL);
791     if (s)
792       p_struct->accountName=strdup(s);
793   }
794   if (p_struct->accountName==NULL) {
795     p_struct->accountName=NULL;
796   }
797 
798   /* member "currency" */
799   if (p_struct->currency) {
800     free(p_struct->currency);
801     p_struct->currency=NULL;
802   }
803   {
804     const char *s;
805     s=GWEN_DB_GetCharValue(p_db, "currency", 0, NULL);
806     if (s)
807       p_struct->currency=strdup(s);
808   }
809   if (p_struct->currency==NULL) {
810     p_struct->currency=NULL;
811   }
812 
813   /* member "memo" */
814   if (p_struct->memo) {
815     free(p_struct->memo);
816     p_struct->memo=NULL;
817   }
818   {
819     const char *s;
820     s=GWEN_DB_GetCharValue(p_db, "memo", 0, NULL);
821     if (s)
822       p_struct->memo=strdup(s);
823   }
824   if (p_struct->memo==NULL) {
825     p_struct->memo=NULL;
826   }
827 
828   /* member "iban" */
829   if (p_struct->iban) {
830     free(p_struct->iban);
831     p_struct->iban=NULL;
832   }
833   {
834     const char *s;
835     s=GWEN_DB_GetCharValue(p_db, "iban", 0, NULL);
836     if (s)
837       p_struct->iban=strdup(s);
838   }
839   if (p_struct->iban==NULL) {
840     p_struct->iban=NULL;
841   }
842 
843   /* member "bic" */
844   if (p_struct->bic) {
845     free(p_struct->bic);
846     p_struct->bic=NULL;
847   }
848   {
849     const char *s;
850     s=GWEN_DB_GetCharValue(p_db, "bic", 0, NULL);
851     if (s)
852       p_struct->bic=strdup(s);
853   }
854   if (p_struct->bic==NULL) {
855     p_struct->bic=NULL;
856   }
857 
858   /* member "country" */
859   if (p_struct->country) {
860     free(p_struct->country);
861     p_struct->country=NULL;
862   }
863   {
864     const char *s;
865     s=GWEN_DB_GetCharValue(p_db, "country", 0, NULL);
866     if (s)
867       p_struct->country=strdup(s);
868   }
869   if (p_struct->country==NULL) {
870     p_struct->country=NULL;
871   }
872 
873   /* member "bankCode" */
874   if (p_struct->bankCode) {
875     free(p_struct->bankCode);
876     p_struct->bankCode=NULL;
877   }
878   {
879     const char *s;
880     s=GWEN_DB_GetCharValue(p_db, "bankCode", 0, NULL);
881     if (s)
882       p_struct->bankCode=strdup(s);
883   }
884   if (p_struct->bankCode==NULL) {
885     p_struct->bankCode=NULL;
886   }
887 
888   /* member "bankName" */
889   if (p_struct->bankName) {
890     free(p_struct->bankName);
891     p_struct->bankName=NULL;
892   }
893   {
894     const char *s;
895     s=GWEN_DB_GetCharValue(p_db, "bankName", 0, NULL);
896     if (s)
897       p_struct->bankName=strdup(s);
898   }
899   if (p_struct->bankName==NULL) {
900     p_struct->bankName=NULL;
901   }
902 
903   /* member "branchId" */
904   if (p_struct->branchId) {
905     free(p_struct->branchId);
906     p_struct->branchId=NULL;
907   }
908   {
909     const char *s;
910     s=GWEN_DB_GetCharValue(p_db, "branchId", 0, NULL);
911     if (s)
912       p_struct->branchId=strdup(s);
913   }
914   if (p_struct->branchId==NULL) {
915     p_struct->branchId=NULL;
916   }
917 
918   /* member "accountNumber" */
919   if (p_struct->accountNumber) {
920     free(p_struct->accountNumber);
921     p_struct->accountNumber=NULL;
922   }
923   {
924     const char *s;
925     s=GWEN_DB_GetCharValue(p_db, "accountNumber", 0, NULL);
926     if (s)
927       p_struct->accountNumber=strdup(s);
928   }
929   if (p_struct->accountNumber==NULL) {
930     p_struct->accountNumber=NULL;
931   }
932 
933   /* member "subAccountNumber" */
934   if (p_struct->subAccountNumber) {
935     free(p_struct->subAccountNumber);
936     p_struct->subAccountNumber=NULL;
937   }
938   {
939     const char *s;
940     s=GWEN_DB_GetCharValue(p_db, "subAccountNumber", 0, NULL);
941     if (s)
942       p_struct->subAccountNumber=strdup(s);
943   }
944   if (p_struct->subAccountNumber==NULL) {
945     p_struct->subAccountNumber=NULL;
946   }
947 
948   /* member "transactionLimitsList" */
949   if (p_struct->transactionLimitsList) {
950     AB_TransactionLimits_List_free(p_struct->transactionLimitsList);
951     p_struct->transactionLimitsList=NULL;
952   }
953   {
954     GWEN_DB_NODE *dbSource;
955     dbSource=GWEN_DB_GetGroup(p_db, GWEN_PATH_FLAGS_NAMEMUSTEXIST, "transactionLimitsList");
956     if (dbSource) {
957       AB_TRANSACTION_LIMITS_LIST *t;
958       GWEN_DB_NODE *dbT;
959       t=AB_TransactionLimits_List_new();
960       dbT=GWEN_DB_FindFirstGroup(dbSource, "element");
961       while (dbT) {
962         AB_TRANSACTION_LIMITS *elem;
963         elem=AB_TransactionLimits_fromDb(dbT);
964         if (elem)
965           AB_TransactionLimits_List_Add(elem, t);
966         dbT=GWEN_DB_FindNextGroup(dbT, "element");
967       }
968       p_struct->transactionLimitsList=t;
969     }
970     else
971       p_struct->transactionLimitsList=AB_TransactionLimits_List_new();
972   }
973   if (p_struct->transactionLimitsList==NULL) {
974     p_struct->transactionLimitsList=AB_TransactionLimits_List_new();
975   }
976 
977 }
978 
AB_AccountSpec_WriteDb(const AB_ACCOUNT_SPEC * p_struct,GWEN_DB_NODE * p_db)979 int AB_AccountSpec_WriteDb(const AB_ACCOUNT_SPEC *p_struct, GWEN_DB_NODE *p_db)
980 {
981   int p_rv;
982 
983   assert(p_struct);
984   /* member "type" */
985   p_rv=GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "type", p_struct->type);
986   if (p_rv<0) {
987     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
988     return p_rv;
989   }
990 
991   /* member "uniqueId" */
992   p_rv=GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "uniqueId", p_struct->uniqueId);
993   if (p_rv<0) {
994     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
995     return p_rv;
996   }
997 
998   /* member "backendName" */
999   if (p_struct->backendName)
1000     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "backendName", p_struct->backendName);
1001   else {
1002     GWEN_DB_DeleteVar(p_db, "backendName");
1003     p_rv=0;
1004   }
1005   if (p_rv<0) {
1006     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1007     return p_rv;
1008   }
1009 
1010   /* member "ownerName" */
1011   if (p_struct->ownerName)
1012     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "ownerName", p_struct->ownerName);
1013   else {
1014     GWEN_DB_DeleteVar(p_db, "ownerName");
1015     p_rv=0;
1016   }
1017   if (p_rv<0) {
1018     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1019     return p_rv;
1020   }
1021 
1022   /* member "accountName" */
1023   if (p_struct->accountName)
1024     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "accountName", p_struct->accountName);
1025   else {
1026     GWEN_DB_DeleteVar(p_db, "accountName");
1027     p_rv=0;
1028   }
1029   if (p_rv<0) {
1030     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1031     return p_rv;
1032   }
1033 
1034   /* member "currency" */
1035   if (p_struct->currency)
1036     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "currency", p_struct->currency);
1037   else {
1038     GWEN_DB_DeleteVar(p_db, "currency");
1039     p_rv=0;
1040   }
1041   if (p_rv<0) {
1042     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1043     return p_rv;
1044   }
1045 
1046   /* member "memo" */
1047   if (p_struct->memo)
1048     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "memo", p_struct->memo);
1049   else {
1050     GWEN_DB_DeleteVar(p_db, "memo");
1051     p_rv=0;
1052   }
1053   if (p_rv<0) {
1054     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1055     return p_rv;
1056   }
1057 
1058   /* member "iban" */
1059   if (p_struct->iban)
1060     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "iban", p_struct->iban);
1061   else {
1062     GWEN_DB_DeleteVar(p_db, "iban");
1063     p_rv=0;
1064   }
1065   if (p_rv<0) {
1066     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1067     return p_rv;
1068   }
1069 
1070   /* member "bic" */
1071   if (p_struct->bic)
1072     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "bic", p_struct->bic);
1073   else {
1074     GWEN_DB_DeleteVar(p_db, "bic");
1075     p_rv=0;
1076   }
1077   if (p_rv<0) {
1078     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1079     return p_rv;
1080   }
1081 
1082   /* member "country" */
1083   if (p_struct->country)
1084     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "country", p_struct->country);
1085   else {
1086     GWEN_DB_DeleteVar(p_db, "country");
1087     p_rv=0;
1088   }
1089   if (p_rv<0) {
1090     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1091     return p_rv;
1092   }
1093 
1094   /* member "bankCode" */
1095   if (p_struct->bankCode)
1096     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "bankCode", p_struct->bankCode);
1097   else {
1098     GWEN_DB_DeleteVar(p_db, "bankCode");
1099     p_rv=0;
1100   }
1101   if (p_rv<0) {
1102     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1103     return p_rv;
1104   }
1105 
1106   /* member "bankName" */
1107   if (p_struct->bankName)
1108     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "bankName", p_struct->bankName);
1109   else {
1110     GWEN_DB_DeleteVar(p_db, "bankName");
1111     p_rv=0;
1112   }
1113   if (p_rv<0) {
1114     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1115     return p_rv;
1116   }
1117 
1118   /* member "branchId" */
1119   if (p_struct->branchId)
1120     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "branchId", p_struct->branchId);
1121   else {
1122     GWEN_DB_DeleteVar(p_db, "branchId");
1123     p_rv=0;
1124   }
1125   if (p_rv<0) {
1126     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1127     return p_rv;
1128   }
1129 
1130   /* member "accountNumber" */
1131   if (p_struct->accountNumber)
1132     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "accountNumber", p_struct->accountNumber);
1133   else {
1134     GWEN_DB_DeleteVar(p_db, "accountNumber");
1135     p_rv=0;
1136   }
1137   if (p_rv<0) {
1138     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1139     return p_rv;
1140   }
1141 
1142   /* member "subAccountNumber" */
1143   if (p_struct->subAccountNumber)
1144     p_rv=GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "subAccountNumber", p_struct->subAccountNumber);
1145   else {
1146     GWEN_DB_DeleteVar(p_db, "subAccountNumber");
1147     p_rv=0;
1148   }
1149   if (p_rv<0) {
1150     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1151     return p_rv;
1152   }
1153 
1154   /* member "transactionLimitsList" */
1155   {
1156     if (p_struct->transactionLimitsList) {
1157       GWEN_DB_NODE *dbDest;
1158       AB_TRANSACTION_LIMITS *elem;
1159       dbDest=GWEN_DB_GetGroup(p_db, GWEN_DB_FLAGS_OVERWRITE_GROUPS, "transactionLimitsList");
1160       assert(dbDest);
1161       p_rv=0;
1162       elem=AB_TransactionLimits_List_First(p_struct->transactionLimitsList);
1163       while (elem) {
1164         GWEN_DB_NODE *dbElem;
1165         dbElem=GWEN_DB_GetGroup(dbDest, GWEN_PATH_FLAGS_CREATE_GROUP, "element");
1166         assert(dbElem);
1167         p_rv=AB_TransactionLimits_toDb(elem, dbElem);
1168         if (p_rv<0) {
1169           DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", p_rv);
1170           break;
1171         }
1172         elem=AB_TransactionLimits_List_Next(elem);
1173       }
1174     }
1175     else
1176       p_rv=0;
1177   }
1178   if (p_rv<0) {
1179     DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
1180     return p_rv;
1181   }
1182 
1183   return 0;
1184 }
1185 
AB_AccountSpec_fromDb(GWEN_DB_NODE * p_db)1186 AB_ACCOUNT_SPEC *AB_AccountSpec_fromDb(GWEN_DB_NODE *p_db)
1187 {
1188   AB_ACCOUNT_SPEC *p_struct;
1189   p_struct=AB_AccountSpec_new();
1190   AB_AccountSpec_ReadDb(p_struct, p_db);
1191   return p_struct;
1192 }
1193 
AB_AccountSpec_toDb(const AB_ACCOUNT_SPEC * p_struct,GWEN_DB_NODE * p_db)1194 int AB_AccountSpec_toDb(const AB_ACCOUNT_SPEC *p_struct, GWEN_DB_NODE *p_db)
1195 {
1196   return AB_AccountSpec_WriteDb(p_struct, p_db);
1197 }
1198 
AB_AccountSpec_ReadXml(AB_ACCOUNT_SPEC * p_struct,GWEN_XMLNODE * p_db)1199 void AB_AccountSpec_ReadXml(AB_ACCOUNT_SPEC *p_struct, GWEN_XMLNODE *p_db)
1200 {
1201   assert(p_struct);
1202   /* member "type" */
1203   p_struct->type=GWEN_XMLNode_GetIntValue(p_db, "type", AB_AccountType_Unknown);
1204 
1205   /* member "uniqueId" */
1206   p_struct->uniqueId=GWEN_XMLNode_GetIntValue(p_db, "uniqueId", 0);
1207 
1208   /* member "backendName" */
1209   if (p_struct->backendName) {
1210     free(p_struct->backendName);
1211     p_struct->backendName=NULL;
1212   }
1213   {
1214     const char *s;
1215     s=GWEN_XMLNode_GetCharValue(p_db, "backendName", NULL);
1216     if (s)
1217       p_struct->backendName=strdup(s);
1218   }
1219   if (p_struct->backendName==NULL) {  /* preset member "backendName" if empty */
1220     p_struct->backendName=NULL;
1221   }
1222 
1223   /* member "ownerName" */
1224   if (p_struct->ownerName) {
1225     free(p_struct->ownerName);
1226     p_struct->ownerName=NULL;
1227   }
1228   {
1229     const char *s;
1230     s=GWEN_XMLNode_GetCharValue(p_db, "ownerName", NULL);
1231     if (s)
1232       p_struct->ownerName=strdup(s);
1233   }
1234   if (p_struct->ownerName==NULL) {  /* preset member "ownerName" if empty */
1235     p_struct->ownerName=NULL;
1236   }
1237 
1238   /* member "accountName" */
1239   if (p_struct->accountName) {
1240     free(p_struct->accountName);
1241     p_struct->accountName=NULL;
1242   }
1243   {
1244     const char *s;
1245     s=GWEN_XMLNode_GetCharValue(p_db, "accountName", NULL);
1246     if (s)
1247       p_struct->accountName=strdup(s);
1248   }
1249   if (p_struct->accountName==NULL) {  /* preset member "accountName" if empty */
1250     p_struct->accountName=NULL;
1251   }
1252 
1253   /* member "currency" */
1254   if (p_struct->currency) {
1255     free(p_struct->currency);
1256     p_struct->currency=NULL;
1257   }
1258   {
1259     const char *s;
1260     s=GWEN_XMLNode_GetCharValue(p_db, "currency", NULL);
1261     if (s)
1262       p_struct->currency=strdup(s);
1263   }
1264   if (p_struct->currency==NULL) {  /* preset member "currency" if empty */
1265     p_struct->currency=NULL;
1266   }
1267 
1268   /* member "memo" */
1269   if (p_struct->memo) {
1270     free(p_struct->memo);
1271     p_struct->memo=NULL;
1272   }
1273   {
1274     const char *s;
1275     s=GWEN_XMLNode_GetCharValue(p_db, "memo", NULL);
1276     if (s)
1277       p_struct->memo=strdup(s);
1278   }
1279   if (p_struct->memo==NULL) {  /* preset member "memo" if empty */
1280     p_struct->memo=NULL;
1281   }
1282 
1283   /* member "iban" */
1284   if (p_struct->iban) {
1285     free(p_struct->iban);
1286     p_struct->iban=NULL;
1287   }
1288   {
1289     const char *s;
1290     s=GWEN_XMLNode_GetCharValue(p_db, "iban", NULL);
1291     if (s)
1292       p_struct->iban=strdup(s);
1293   }
1294   if (p_struct->iban==NULL) {  /* preset member "iban" if empty */
1295     p_struct->iban=NULL;
1296   }
1297 
1298   /* member "bic" */
1299   if (p_struct->bic) {
1300     free(p_struct->bic);
1301     p_struct->bic=NULL;
1302   }
1303   {
1304     const char *s;
1305     s=GWEN_XMLNode_GetCharValue(p_db, "bic", NULL);
1306     if (s)
1307       p_struct->bic=strdup(s);
1308   }
1309   if (p_struct->bic==NULL) {  /* preset member "bic" if empty */
1310     p_struct->bic=NULL;
1311   }
1312 
1313   /* member "country" */
1314   if (p_struct->country) {
1315     free(p_struct->country);
1316     p_struct->country=NULL;
1317   }
1318   {
1319     const char *s;
1320     s=GWEN_XMLNode_GetCharValue(p_db, "country", NULL);
1321     if (s)
1322       p_struct->country=strdup(s);
1323   }
1324   if (p_struct->country==NULL) {  /* preset member "country" if empty */
1325     p_struct->country=NULL;
1326   }
1327 
1328   /* member "bankCode" */
1329   if (p_struct->bankCode) {
1330     free(p_struct->bankCode);
1331     p_struct->bankCode=NULL;
1332   }
1333   {
1334     const char *s;
1335     s=GWEN_XMLNode_GetCharValue(p_db, "bankCode", NULL);
1336     if (s)
1337       p_struct->bankCode=strdup(s);
1338   }
1339   if (p_struct->bankCode==NULL) {  /* preset member "bankCode" if empty */
1340     p_struct->bankCode=NULL;
1341   }
1342 
1343   /* member "bankName" */
1344   if (p_struct->bankName) {
1345     free(p_struct->bankName);
1346     p_struct->bankName=NULL;
1347   }
1348   {
1349     const char *s;
1350     s=GWEN_XMLNode_GetCharValue(p_db, "bankName", NULL);
1351     if (s)
1352       p_struct->bankName=strdup(s);
1353   }
1354   if (p_struct->bankName==NULL) {  /* preset member "bankName" if empty */
1355     p_struct->bankName=NULL;
1356   }
1357 
1358   /* member "branchId" */
1359   if (p_struct->branchId) {
1360     free(p_struct->branchId);
1361     p_struct->branchId=NULL;
1362   }
1363   {
1364     const char *s;
1365     s=GWEN_XMLNode_GetCharValue(p_db, "branchId", NULL);
1366     if (s)
1367       p_struct->branchId=strdup(s);
1368   }
1369   if (p_struct->branchId==NULL) {  /* preset member "branchId" if empty */
1370     p_struct->branchId=NULL;
1371   }
1372 
1373   /* member "accountNumber" */
1374   if (p_struct->accountNumber) {
1375     free(p_struct->accountNumber);
1376     p_struct->accountNumber=NULL;
1377   }
1378   {
1379     const char *s;
1380     s=GWEN_XMLNode_GetCharValue(p_db, "accountNumber", NULL);
1381     if (s)
1382       p_struct->accountNumber=strdup(s);
1383   }
1384   if (p_struct->accountNumber==NULL) {  /* preset member "accountNumber" if empty */
1385     p_struct->accountNumber=NULL;
1386   }
1387 
1388   /* member "subAccountNumber" */
1389   if (p_struct->subAccountNumber) {
1390     free(p_struct->subAccountNumber);
1391     p_struct->subAccountNumber=NULL;
1392   }
1393   {
1394     const char *s;
1395     s=GWEN_XMLNode_GetCharValue(p_db, "subAccountNumber", NULL);
1396     if (s)
1397       p_struct->subAccountNumber=strdup(s);
1398   }
1399   if (p_struct->subAccountNumber==NULL) {  /* preset member "subAccountNumber" if empty */
1400     p_struct->subAccountNumber=NULL;
1401   }
1402 
1403   /* member "transactionLimitsList" */
1404   if (p_struct->transactionLimitsList) {
1405     AB_TransactionLimits_List_free(p_struct->transactionLimitsList);
1406     p_struct->transactionLimitsList=NULL;
1407   }
1408   {
1409     GWEN_XMLNODE *dbSource;
1410     dbSource=GWEN_XMLNode_FindFirstTag(p_db, "transactionLimitsList", NULL, NULL);
1411     if (dbSource) {
1412       AB_TRANSACTION_LIMITS_LIST *t;
1413       GWEN_XMLNODE *dbT;
1414       t=AB_TransactionLimits_List_new();
1415       dbT=GWEN_XMLNode_FindFirstTag(dbSource, "element", NULL, NULL);
1416       while (dbT) {
1417         AB_TRANSACTION_LIMITS *elem;
1418         elem=AB_TransactionLimits_fromXml(dbT);
1419         if (elem)
1420           AB_TransactionLimits_List_Add(elem, t);
1421         dbT=GWEN_XMLNode_FindNextTag(dbT, "element", NULL, NULL);
1422       }
1423       p_struct->transactionLimitsList=t;
1424     }
1425     else
1426       p_struct->transactionLimitsList=AB_TransactionLimits_List_new();
1427   }
1428   if (p_struct->transactionLimitsList==NULL) {  /* preset member "transactionLimitsList" if empty */
1429     p_struct->transactionLimitsList=AB_TransactionLimits_List_new();
1430   }
1431 
1432 }
1433 
AB_AccountSpec_WriteXml(const AB_ACCOUNT_SPEC * p_struct,GWEN_XMLNODE * p_db)1434 void AB_AccountSpec_WriteXml(const AB_ACCOUNT_SPEC *p_struct, GWEN_XMLNODE *p_db)
1435 {
1436   assert(p_struct);
1437   /* member "type" */
1438   GWEN_XMLNode_SetIntValue(p_db, "type", p_struct->type);
1439 
1440   /* member "uniqueId" */
1441   GWEN_XMLNode_SetIntValue(p_db, "uniqueId", p_struct->uniqueId);
1442 
1443   /* member "backendName" */
1444   GWEN_XMLNode_SetCharValue(p_db, "backendName", p_struct->backendName);
1445 
1446   /* member "ownerName" */
1447   GWEN_XMLNode_SetCharValue(p_db, "ownerName", p_struct->ownerName);
1448 
1449   /* member "accountName" */
1450   GWEN_XMLNode_SetCharValue(p_db, "accountName", p_struct->accountName);
1451 
1452   /* member "currency" */
1453   GWEN_XMLNode_SetCharValue(p_db, "currency", p_struct->currency);
1454 
1455   /* member "memo" */
1456   GWEN_XMLNode_SetCharValue(p_db, "memo", p_struct->memo);
1457 
1458   /* member "iban" */
1459   GWEN_XMLNode_SetCharValue(p_db, "iban", p_struct->iban);
1460 
1461   /* member "bic" */
1462   GWEN_XMLNode_SetCharValue(p_db, "bic", p_struct->bic);
1463 
1464   /* member "country" */
1465   GWEN_XMLNode_SetCharValue(p_db, "country", p_struct->country);
1466 
1467   /* member "bankCode" */
1468   GWEN_XMLNode_SetCharValue(p_db, "bankCode", p_struct->bankCode);
1469 
1470   /* member "bankName" */
1471   GWEN_XMLNode_SetCharValue(p_db, "bankName", p_struct->bankName);
1472 
1473   /* member "branchId" */
1474   GWEN_XMLNode_SetCharValue(p_db, "branchId", p_struct->branchId);
1475 
1476   /* member "accountNumber" */
1477   GWEN_XMLNode_SetCharValue(p_db, "accountNumber", p_struct->accountNumber);
1478 
1479   /* member "subAccountNumber" */
1480   GWEN_XMLNode_SetCharValue(p_db, "subAccountNumber", p_struct->subAccountNumber);
1481 
1482   /* member "transactionLimitsList" */
1483   {
1484     if (p_struct->transactionLimitsList) {
1485       GWEN_XMLNODE *dbDest;
1486       AB_TRANSACTION_LIMITS *elem;
1487       dbDest=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "transactionLimitsList");
1488       elem=AB_TransactionLimits_List_First(p_struct->transactionLimitsList);
1489       while (elem) {
1490         GWEN_XMLNODE *dbElem;
1491         dbElem=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "element");
1492         assert(dbElem);
1493         AB_TransactionLimits_toXml(elem, dbElem);
1494         GWEN_XMLNode_AddChild(dbDest, dbElem);
1495         elem=AB_TransactionLimits_List_Next(elem);
1496       }
1497       GWEN_XMLNode_AddChild(p_db, dbDest);
1498     }
1499   }
1500 
1501 }
1502 
AB_AccountSpec_toXml(const AB_ACCOUNT_SPEC * p_struct,GWEN_XMLNODE * p_db)1503 void AB_AccountSpec_toXml(const AB_ACCOUNT_SPEC *p_struct, GWEN_XMLNODE *p_db)
1504 {
1505   AB_AccountSpec_WriteXml(p_struct, p_db);
1506 }
1507 
AB_AccountSpec_fromXml(GWEN_XMLNODE * p_db)1508 AB_ACCOUNT_SPEC *AB_AccountSpec_fromXml(GWEN_XMLNODE *p_db)
1509 {
1510   AB_ACCOUNT_SPEC *p_struct;
1511   p_struct=AB_AccountSpec_new();
1512   AB_AccountSpec_ReadXml(p_struct, p_db);
1513   return p_struct;
1514 }
1515 
AB_AccountSpec_List_GetByUniqueId(const AB_ACCOUNT_SPEC_LIST * p_list,uint32_t p_cmp)1516 AB_ACCOUNT_SPEC *AB_AccountSpec_List_GetByUniqueId(const AB_ACCOUNT_SPEC_LIST *p_list, uint32_t p_cmp)
1517 {
1518   AB_ACCOUNT_SPEC *p_struct;
1519 
1520   assert(p_list);
1521   p_struct = AB_AccountSpec_List_First(p_list);
1522   while (p_struct) {
1523     int p_rv;
1524 
1525     if (p_struct->uniqueId==p_cmp)
1526       p_rv=0;
1527     else if (p_cmp<p_struct->uniqueId)
1528       p_rv=-1;
1529     else
1530       p_rv=1;
1531     if (p_rv == 0)
1532       return p_struct;
1533     p_struct = AB_AccountSpec_List_Next(p_struct);
1534   }
1535   return NULL;
1536 }
1537 
AB_AccountSpec_Matches(const AB_ACCOUNT_SPEC * a,const char * backendName,const char * country,const char * bankId,const char * accountNumber,const char * subAccountId,const char * iban,const char * currency,int ty)1538 int AB_AccountSpec_Matches(const AB_ACCOUNT_SPEC *a, const char *backendName, const char *country, const char *bankId,
1539                            const char *accountNumber, const char *subAccountId, const char *iban, const char *currency, int ty)
1540 {
1541   const char *lbackendName;
1542   const char *lcountry;
1543   const char *lbankId;
1544   const char *laccountNumber;
1545   const char *lsubAccountId;
1546   const char *liban;
1547   const char *lcurrency;
1548   int lty;
1549   if (!backendName)
1550     backendName="*";
1551   if (!country)
1552     country="*";
1553   if (!bankId)
1554     bankId="*";
1555   if (!accountNumber)
1556     accountNumber="*";
1557   if (!subAccountId)
1558     subAccountId="*";
1559   if (!iban)
1560     iban="*";
1561   if (!currency)
1562     currency="*";
1563   if (ty>=AB_AccountType_Last)
1564     ty=AB_AccountType_Unknown;
1565   lbackendName=AB_AccountSpec_GetBackendName(a);
1566   lcountry=AB_AccountSpec_GetCountry(a);
1567   lbankId=AB_AccountSpec_GetBankCode(a);
1568   laccountNumber=AB_AccountSpec_GetAccountNumber(a);
1569   lsubAccountId=AB_AccountSpec_GetSubAccountNumber(a);
1570   liban=AB_AccountSpec_GetIban(a);
1571   lcurrency=AB_AccountSpec_GetCurrency(a);
1572   lty=AB_AccountSpec_GetType(a);
1573   if (!lcountry)
1574     lcountry="";
1575   if (!lbankId)
1576     lbankId="";
1577   if (!laccountNumber)
1578     laccountNumber="";
1579   if (!lsubAccountId)
1580     lsubAccountId="";
1581   if (!liban)
1582     liban="";
1583   if (!lcurrency)
1584     lcurrency="";
1585   if (lty>=AB_AccountType_Last || lty <=AB_AccountType_Unknown)
1586     lty=AB_AccountType_Unknown;
1587   if ((-1!=GWEN_Text_ComparePattern(lbackendName, backendName, 0)) &&
1588       (-1!=GWEN_Text_ComparePattern(lcountry, country, 0)) && (-1!=GWEN_Text_ComparePattern(lbankId, bankId, 0)) &&
1589       (-1!=GWEN_Text_ComparePattern(laccountNumber, accountNumber, 0)) &&
1590       (-1!=GWEN_Text_ComparePattern(lsubAccountId, subAccountId, 0)) && (-1!=GWEN_Text_ComparePattern(liban, iban, 0)) &&
1591       (-1!=GWEN_Text_ComparePattern(lcurrency, currency, 0)) && ((ty==AB_AccountType_Unknown) || (ty==lty)))
1592     return 1;
1593   return 0;
1594 }
AB_AccountSpec_List__FindInternal(AB_ACCOUNT_SPEC * a,const char * backendName,const char * country,const char * bankId,const char * accountNumber,const char * subAccountId,const char * iban,const char * currency,int ty)1595 AB_ACCOUNT_SPEC *AB_AccountSpec_List__FindInternal(AB_ACCOUNT_SPEC *a, const char *backendName, const char *country,
1596                                                    const char *bankId, const char *accountNumber, const char *subAccountId, const char *iban, const char *currency,
1597                                                    int ty)
1598 {
1599   if (!backendName)
1600     backendName="*";
1601   if (!country)
1602     country="*";
1603   if (!bankId)
1604     bankId="*";
1605   if (!accountNumber)
1606     accountNumber="*";
1607   if (!subAccountId)
1608     subAccountId="*";
1609   if (!iban)
1610     iban="*";
1611   if (!currency)
1612     currency="*";
1613   if (ty>=AB_AccountType_Last)
1614     ty=AB_AccountType_Unknown;
1615   while (a) {
1616     const char *lbackendName;
1617     lbackendName=AB_AccountSpec_GetBackendName(a);
1618     if (!(lbackendName && *lbackendName)) {
1619       DBG_ERROR(AQBANKING_LOGDOMAIN, "Account: %s/%s/%s: No backend, ignoring", AB_AccountSpec_GetCountry(a),
1620                 AB_AccountSpec_GetBankCode(a), AB_AccountSpec_GetAccountNumber(a));
1621     }
1622     else {
1623       int rv;
1624       rv=AB_AccountSpec_Matches(a, backendName, country, bankId, accountNumber, subAccountId, iban, currency, ty);
1625       if (rv==1)
1626         break;
1627     }
1628     a=AB_AccountSpec_List_Next(a);
1629   } /* while */ return a;
1630 }
AB_AccountSpec_List_FindFirst(const AB_ACCOUNT_SPEC_LIST * al,const char * backendName,const char * country,const char * bankId,const char * accountNumber,const char * subAccountId,const char * iban,const char * currency,int ty)1631 AB_ACCOUNT_SPEC *AB_AccountSpec_List_FindFirst(const AB_ACCOUNT_SPEC_LIST *al, const char *backendName,
1632                                                const char *country, const char *bankId, const char *accountNumber, const char *subAccountId, const char *iban,
1633                                                const char *currency, int ty)
1634 {
1635   AB_ACCOUNT_SPEC *a;
1636   if (AB_AccountSpec_List_GetCount(al)==0) {
1637     DBG_INFO(AQBANKING_LOGDOMAIN, "No accounts");
1638     return NULL;
1639   }
1640   a=AB_AccountSpec_List_First(al);
1641   assert(a);
1642   return AB_AccountSpec_List__FindInternal(a, backendName, country, bankId, accountNumber, subAccountId, iban, currency,
1643                                            ty);
1644 }
AB_AccountSpec_List_FindNext(AB_ACCOUNT_SPEC * a,const char * backendName,const char * country,const char * bankId,const char * accountNumber,const char * subAccountId,const char * iban,const char * currency,int ty)1645 AB_ACCOUNT_SPEC *AB_AccountSpec_List_FindNext(AB_ACCOUNT_SPEC *a, const char *backendName, const char *country,
1646                                               const char *bankId, const char *accountNumber, const char *subAccountId, const char *iban, const char *currency,
1647                                               int ty)
1648 {
1649   assert(a);
1650   a=AB_AccountSpec_List_Next(a);
1651   if (a==NULL) {
1652     DBG_INFO(AQBANKING_LOGDOMAIN, "No more account specs");
1653     return NULL;
1654   }
1655   return AB_AccountSpec_List__FindInternal(a, backendName, country, bankId, accountNumber, subAccountId, iban, currency,
1656                                            ty);
1657 }
AB_AccountSpec_GetTransactionLimitsForCommand(const AB_ACCOUNT_SPEC * st,int cmd)1658 AB_TRANSACTION_LIMITS *AB_AccountSpec_GetTransactionLimitsForCommand(const AB_ACCOUNT_SPEC *st, int cmd)
1659 {
1660   assert(st);
1661   if (st->transactionLimitsList)
1662     return AB_TransactionLimits_List_GetByCommand(st->transactionLimitsList, cmd);
1663   return NULL;
1664 }
AB_AccountSpec_AddTransactionLimits(AB_ACCOUNT_SPEC * st,AB_TRANSACTION_LIMITS * l)1665 void AB_AccountSpec_AddTransactionLimits(AB_ACCOUNT_SPEC *st, AB_TRANSACTION_LIMITS *l)
1666 {
1667   assert(st);
1668   assert(l);
1669   if (NULL==st->transactionLimitsList)
1670     st->transactionLimitsList=AB_TransactionLimits_List_new();
1671   AB_TransactionLimits_List_Add(l, st->transactionLimitsList);
1672 }
1673 
1674 /* code headers */
1675 
1676