NCBI C++ ToolKit
Outerproduct_.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id$
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  */
27 
28 /// @file Outerproduct_.hpp
29 /// Data storage class.
30 ///
31 /// This file was generated by application DATATOOL
32 /// using the following specifications:
33 /// <a href="/IEB/ToolBox/CPP_DOC/lxr/source/src/objtools/eutils/efetch/pubmed_mathml3.xsd">pubmed_mathml3.xsd</a>
34 /// and additional tune-up parameters:
35 /// <a href="/IEB/ToolBox/CPP_DOC/lxr/source/src/objtools/eutils/efetch/pubmed_mathml3.def">pubmed_mathml3.def</a>
36 ///
37 /// ATTENTION:
38 /// Don't edit or commit this file into CVS as this file will
39 /// be overridden (by DATATOOL) without warning!
40 
41 #ifndef OBJTOOLS_EUTILS_EFETCH_OUTERPRODUCT_BASE_HPP
42 #define OBJTOOLS_EUTILS_EFETCH_OUTERPRODUCT_BASE_HPP
43 
44 // standard includes
45 #include <serial/serialbase.hpp>
46 
47 // generated includes
48 #include <string>
49 
51 
52 #ifndef BEGIN_objects_SCOPE
53 # define BEGIN_objects_SCOPE BEGIN_SCOPE(objects)
54 # define END_objects_SCOPE END_SCOPE(objects)
55 #endif
56 BEGIN_objects_SCOPE // namespace ncbi::objects::
57 
58 
59 // generated classes
60 
61 
62 /** @addtogroup dataspec_pubmed_mathml3
63  *
64  * @{
65  */
66 
67 /////////////////////////////////////////////////////////////////////////////
68 ///
69 /// COuterproduct_Base --
70 ///
71 
73 {
75 public:
76  // constructor
77  COuterproduct_Base(void);
78  // destructor
79  virtual ~COuterproduct_Base(void);
80 
81  // type info
83 
84  /////////////////////////////////////////////////////////////////////////////
85  ///
86  /// C_Attlist --
87  ///
88 
89  class C_Attlist : public CSerialObject
90  {
92  public:
93  // constructor
94  C_Attlist(void);
95  // destructor
96  ~C_Attlist(void);
97 
98  // type info
100 
101  // types
102  typedef string TId;
103  typedef string TXref;
104  typedef string TClass;
105  typedef string TStyle;
106  typedef string THref;
107  typedef string TEncoding;
108  typedef string TDefinitionURL;
109 
110  // member index
111  enum class E_memberIndex {
112  e__allMandatory = 0,
113  e_id,
114  e_xref,
115  e_class,
116  e_style,
117  e_href,
118  e_encoding,
120  };
122 
123  // getters
124  // setters
125 
126  /// Check if a value has been assigned to Id data member.
127  ///
128  /// Data member Id is optional;
129  /// its type is defined as 'typedef string TId'
130  /// @return
131  /// - true, if a value has been assigned.
132  /// - false, otherwise.
133  bool IsSetId(void) const;
134 
135  /// Check if it is safe to call GetId method.
136  ///
137  /// @return
138  /// - true, if the data member is getatable.
139  /// - false, otherwise.
140  bool CanGetId(void) const;
141 
142  /// Reset Id data member.
143  void ResetId(void);
144 
145  /// Get the Id member data.
146  ///
147  /// @return
148  /// Reference to the member data.
149  const TId& GetId(void) const;
150 
151  /// Assign a value to Id data member.
152  ///
153  /// @param value
154  /// Value to assign
155  void SetId(const TId& value);
156  void SetId(TId&& value);
157 
158  /// Assign a value to Id data member.
159  ///
160  /// @return
161  /// Reference to the data value.
162  TId& SetId(void);
163 
164  /// Check if a value has been assigned to Xref data member.
165  ///
166  /// Data member Xref is optional;
167  /// its type is defined as 'typedef string TXref'
168  /// @return
169  /// - true, if a value has been assigned.
170  /// - false, otherwise.
171  bool IsSetXref(void) const;
172 
173  /// Check if it is safe to call GetXref method.
174  ///
175  /// @return
176  /// - true, if the data member is getatable.
177  /// - false, otherwise.
178  bool CanGetXref(void) const;
179 
180  /// Reset Xref data member.
181  void ResetXref(void);
182 
183  /// Get the Xref member data.
184  ///
185  /// @return
186  /// Reference to the member data.
187  const TXref& GetXref(void) const;
188 
189  /// Assign a value to Xref data member.
190  ///
191  /// @param value
192  /// Value to assign
193  void SetXref(const TXref& value);
194  void SetXref(TXref&& value);
195 
196  /// Assign a value to Xref data member.
197  ///
198  /// @return
199  /// Reference to the data value.
200  TXref& SetXref(void);
201 
202  /// Check if a value has been assigned to Class data member.
203  ///
204  /// Data member Class is optional;
205  /// its type is defined as 'typedef string TClass'
206  /// @return
207  /// - true, if a value has been assigned.
208  /// - false, otherwise.
209  bool IsSetClass(void) const;
210 
211  /// Check if it is safe to call GetClass method.
212  ///
213  /// @return
214  /// - true, if the data member is getatable.
215  /// - false, otherwise.
216  bool CanGetClass(void) const;
217 
218  /// Reset Class data member.
219  void ResetClass(void);
220 
221  /// Get the Class member data.
222  ///
223  /// @return
224  /// Reference to the member data.
225  const TClass& GetClass(void) const;
226 
227  /// Assign a value to Class data member.
228  ///
229  /// @param value
230  /// Value to assign
231  void SetClass(const TClass& value);
232  void SetClass(TClass&& value);
233 
234  /// Assign a value to Class data member.
235  ///
236  /// @return
237  /// Reference to the data value.
238  TClass& SetClass(void);
239 
240  /// Check if a value has been assigned to Style data member.
241  ///
242  /// Data member Style is optional;
243  /// its type is defined as 'typedef string TStyle'
244  /// @return
245  /// - true, if a value has been assigned.
246  /// - false, otherwise.
247  bool IsSetStyle(void) const;
248 
249  /// Check if it is safe to call GetStyle method.
250  ///
251  /// @return
252  /// - true, if the data member is getatable.
253  /// - false, otherwise.
254  bool CanGetStyle(void) const;
255 
256  /// Reset Style data member.
257  void ResetStyle(void);
258 
259  /// Get the Style member data.
260  ///
261  /// @return
262  /// Reference to the member data.
263  const TStyle& GetStyle(void) const;
264 
265  /// Assign a value to Style data member.
266  ///
267  /// @param value
268  /// Value to assign
269  void SetStyle(const TStyle& value);
270  void SetStyle(TStyle&& value);
271 
272  /// Assign a value to Style data member.
273  ///
274  /// @return
275  /// Reference to the data value.
276  TStyle& SetStyle(void);
277 
278  /// Check if a value has been assigned to Href data member.
279  ///
280  /// Data member Href is optional;
281  /// its type is defined as 'typedef string THref'
282  /// @return
283  /// - true, if a value has been assigned.
284  /// - false, otherwise.
285  bool IsSetHref(void) const;
286 
287  /// Check if it is safe to call GetHref method.
288  ///
289  /// @return
290  /// - true, if the data member is getatable.
291  /// - false, otherwise.
292  bool CanGetHref(void) const;
293 
294  /// Reset Href data member.
295  void ResetHref(void);
296 
297  /// Get the Href member data.
298  ///
299  /// @return
300  /// Reference to the member data.
301  const THref& GetHref(void) const;
302 
303  /// Assign a value to Href data member.
304  ///
305  /// @param value
306  /// Value to assign
307  void SetHref(const THref& value);
308  void SetHref(THref&& value);
309 
310  /// Assign a value to Href data member.
311  ///
312  /// @return
313  /// Reference to the data value.
314  THref& SetHref(void);
315 
316  /// Check if a value has been assigned to Encoding data member.
317  ///
318  /// Data member Encoding is optional;
319  /// its type is defined as 'typedef string TEncoding'
320  /// @return
321  /// - true, if a value has been assigned.
322  /// - false, otherwise.
323  bool IsSetEncoding(void) const;
324 
325  /// Check if it is safe to call GetEncoding method.
326  ///
327  /// @return
328  /// - true, if the data member is getatable.
329  /// - false, otherwise.
330  bool CanGetEncoding(void) const;
331 
332  /// Reset Encoding data member.
333  void ResetEncoding(void);
334 
335  /// Get the Encoding member data.
336  ///
337  /// @return
338  /// Reference to the member data.
339  const TEncoding& GetEncoding(void) const;
340 
341  /// Assign a value to Encoding data member.
342  ///
343  /// @param value
344  /// Value to assign
345  void SetEncoding(const TEncoding& value);
346  void SetEncoding(TEncoding&& value);
347 
348  /// Assign a value to Encoding data member.
349  ///
350  /// @return
351  /// Reference to the data value.
352  TEncoding& SetEncoding(void);
353 
354  /// Check if a value has been assigned to DefinitionURL data member.
355  ///
356  /// Data member DefinitionURL is optional;
357  /// its type is defined as 'typedef string TDefinitionURL'
358  /// @return
359  /// - true, if a value has been assigned.
360  /// - false, otherwise.
361  bool IsSetDefinitionURL(void) const;
362 
363  /// Check if it is safe to call GetDefinitionURL method.
364  ///
365  /// @return
366  /// - true, if the data member is getatable.
367  /// - false, otherwise.
368  bool CanGetDefinitionURL(void) const;
369 
370  /// Reset DefinitionURL data member.
371  void ResetDefinitionURL(void);
372 
373  /// Get the DefinitionURL member data.
374  ///
375  /// @return
376  /// Reference to the member data.
377  const TDefinitionURL& GetDefinitionURL(void) const;
378 
379  /// Assign a value to DefinitionURL data member.
380  ///
381  /// @param value
382  /// Value to assign
385 
386  /// Assign a value to DefinitionURL data member.
387  ///
388  /// @return
389  /// Reference to the data value.
391 
392  /// Reset the whole object
393  void Reset(void);
394 
395 
396  private:
397  // Prohibit copy constructor and assignment operator
400 
401  // data
403  string m_Id;
404  string m_Xref;
405  string m_Class;
406  string m_Style;
407  string m_Href;
408  string m_Encoding;
410  };
411  // types
413 
414  // member index
415  enum class E_memberIndex {
416  e__allMandatory = 0,
417  e_Attlist,
419  };
421 
422  // getters
423  // setters
424 
425  /// Check if a value has been assigned to Attlist data member.
426  ///
427  /// Data member Attlist is mandatory;
428  /// its type is defined as 'typedef C_Attlist TAttlist'
429  /// @return
430  /// - true, if a value has been assigned.
431  /// - false, otherwise.
432  bool IsSetAttlist(void) const;
433 
434  /// Check if it is safe to call GetAttlist method.
435  ///
436  /// @return
437  /// - true, if the data member is getatable.
438  /// - false, otherwise.
439  bool CanGetAttlist(void) const;
440 
441  /// Reset Attlist data member.
442  void ResetAttlist(void);
443 
444  /// Get the Attlist member data.
445  ///
446  /// @return
447  /// Reference to the member data.
448  const TAttlist& GetAttlist(void) const;
449 
450  /// Assign a value to Attlist data member.
451  ///
452  /// @param value
453  /// Reference to value.
454  void SetAttlist(TAttlist& value);
455 
456  /// Assign a value to Attlist data member.
457  ///
458  /// @return
459  /// Reference to the data value.
460  TAttlist& SetAttlist(void);
461 
462  /// Check if a value has been assigned to Outerproduct data member.
463  ///
464  /// Data member Outerproduct is mandatory
465  /// @return
466  /// - true, if a value has been assigned.
467  /// - false, otherwise.
468  bool IsSetOuterproduct(void) const;
469 
470  /// Check if value of Outerproduct member is getatable.
471  ///
472  /// @return
473  /// - false; the data member of type 'NULL' has no value.
474  bool CanGetOuterproduct(void) const;
475 
476  /// Reset Outerproduct data member.
477  void ResetOuterproduct(void);
478 
479  /// Set NULL data member (assign 'NULL' value to Outerproduct data member).
480  void SetOuterproduct(void);
481 
482  /// Reset the whole object
483  virtual void Reset(void);
484 
485 
486 private:
487  // Prohibit copy constructor and assignment operator
490 
491  // data
494 };
495 
496 /* @} */
497 
498 
499 
500 
501 
502 ///////////////////////////////////////////////////////////
503 ///////////////////// inline methods //////////////////////
504 ///////////////////////////////////////////////////////////
505 inline
507 {
508  return ((m_set_State[0] & 0x3) != 0);
509 }
510 
511 inline
513 {
514  return IsSetId();
515 }
516 
517 inline
519 {
520  if (!CanGetId()) {
521  ThrowUnassigned(0);
522  }
523  return m_Id;
524 }
525 
526 inline
528 {
529  m_Id = value;
530  m_set_State[0] |= 0x3;
531 }
532 
533 inline
535 {
536  m_Id = std::forward<COuterproduct_Base::C_Attlist::TId>(value);
537  m_set_State[0] |= 0x3;
538 }
539 
540 inline
542 {
543 #ifdef _DEBUG
544  if (!IsSetId()) {
545  m_Id = UnassignedString();
546  }
547 #endif
548  m_set_State[0] |= 0x1;
549  return m_Id;
550 }
551 
552 inline
554 {
555  return ((m_set_State[0] & 0xc) != 0);
556 }
557 
558 inline
560 {
561  return IsSetXref();
562 }
563 
564 inline
566 {
567  if (!CanGetXref()) {
568  ThrowUnassigned(1);
569  }
570  return m_Xref;
571 }
572 
573 inline
575 {
576  m_Xref = value;
577  m_set_State[0] |= 0xc;
578 }
579 
580 inline
582 {
583  m_Xref = std::forward<COuterproduct_Base::C_Attlist::TXref>(value);
584  m_set_State[0] |= 0xc;
585 }
586 
587 inline
589 {
590 #ifdef _DEBUG
591  if (!IsSetXref()) {
592  m_Xref = UnassignedString();
593  }
594 #endif
595  m_set_State[0] |= 0x4;
596  return m_Xref;
597 }
598 
599 inline
601 {
602  return ((m_set_State[0] & 0x30) != 0);
603 }
604 
605 inline
607 {
608  return IsSetClass();
609 }
610 
611 inline
613 {
614  if (!CanGetClass()) {
615  ThrowUnassigned(2);
616  }
617  return m_Class;
618 }
619 
620 inline
622 {
623  m_Class = value;
624  m_set_State[0] |= 0x30;
625 }
626 
627 inline
629 {
630  m_Class = std::forward<COuterproduct_Base::C_Attlist::TClass>(value);
631  m_set_State[0] |= 0x30;
632 }
633 
634 inline
636 {
637 #ifdef _DEBUG
638  if (!IsSetClass()) {
639  m_Class = UnassignedString();
640  }
641 #endif
642  m_set_State[0] |= 0x10;
643  return m_Class;
644 }
645 
646 inline
648 {
649  return ((m_set_State[0] & 0xc0) != 0);
650 }
651 
652 inline
654 {
655  return IsSetStyle();
656 }
657 
658 inline
660 {
661  if (!CanGetStyle()) {
662  ThrowUnassigned(3);
663  }
664  return m_Style;
665 }
666 
667 inline
669 {
670  m_Style = value;
671  m_set_State[0] |= 0xc0;
672 }
673 
674 inline
676 {
677  m_Style = std::forward<COuterproduct_Base::C_Attlist::TStyle>(value);
678  m_set_State[0] |= 0xc0;
679 }
680 
681 inline
683 {
684 #ifdef _DEBUG
685  if (!IsSetStyle()) {
686  m_Style = UnassignedString();
687  }
688 #endif
689  m_set_State[0] |= 0x40;
690  return m_Style;
691 }
692 
693 inline
695 {
696  return ((m_set_State[0] & 0x300) != 0);
697 }
698 
699 inline
701 {
702  return IsSetHref();
703 }
704 
705 inline
707 {
708  if (!CanGetHref()) {
709  ThrowUnassigned(4);
710  }
711  return m_Href;
712 }
713 
714 inline
716 {
717  m_Href = value;
718  m_set_State[0] |= 0x300;
719 }
720 
721 inline
723 {
724  m_Href = std::forward<COuterproduct_Base::C_Attlist::THref>(value);
725  m_set_State[0] |= 0x300;
726 }
727 
728 inline
730 {
731 #ifdef _DEBUG
732  if (!IsSetHref()) {
733  m_Href = UnassignedString();
734  }
735 #endif
736  m_set_State[0] |= 0x100;
737  return m_Href;
738 }
739 
740 inline
742 {
743  return ((m_set_State[0] & 0xc00) != 0);
744 }
745 
746 inline
748 {
749  return IsSetEncoding();
750 }
751 
752 inline
754 {
755  if (!CanGetEncoding()) {
756  ThrowUnassigned(5);
757  }
758  return m_Encoding;
759 }
760 
761 inline
763 {
764  m_Encoding = value;
765  m_set_State[0] |= 0xc00;
766 }
767 
768 inline
770 {
771  m_Encoding = std::forward<COuterproduct_Base::C_Attlist::TEncoding>(value);
772  m_set_State[0] |= 0xc00;
773 }
774 
775 inline
777 {
778 #ifdef _DEBUG
779  if (!IsSetEncoding()) {
780  m_Encoding = UnassignedString();
781  }
782 #endif
783  m_set_State[0] |= 0x400;
784  return m_Encoding;
785 }
786 
787 inline
789 {
790  return ((m_set_State[0] & 0x3000) != 0);
791 }
792 
793 inline
795 {
796  return IsSetDefinitionURL();
797 }
798 
799 inline
801 {
802  if (!CanGetDefinitionURL()) {
803  ThrowUnassigned(6);
804  }
805  return m_DefinitionURL;
806 }
807 
808 inline
810 {
811  m_DefinitionURL = value;
812  m_set_State[0] |= 0x3000;
813 }
814 
815 inline
817 {
818  m_DefinitionURL = std::forward<COuterproduct_Base::C_Attlist::TDefinitionURL>(value);
819  m_set_State[0] |= 0x3000;
820 }
821 
822 inline
824 {
825 #ifdef _DEBUG
826  if (!IsSetDefinitionURL()) {
827  m_DefinitionURL = UnassignedString();
828  }
829 #endif
830  m_set_State[0] |= 0x1000;
831  return m_DefinitionURL;
832 }
833 
834 inline
836 {
837  return m_Attlist.NotEmpty();
838 }
839 
840 inline
842 {
843  return true;
844 }
845 
846 inline
848 {
849  if ( !m_Attlist ) {
850  const_cast<COuterproduct_Base*>(this)->ResetAttlist();
851  }
852  return (*m_Attlist);
853 }
854 
855 inline
857 {
858  if ( !m_Attlist ) {
859  ResetAttlist();
860  }
861  SetOuterproduct();
862  return (*m_Attlist);
863 }
864 
865 inline
867 {
868  return ((m_set_State[0] & 0xc) != 0);
869 }
870 
871 inline
873 {
874  return false;
875 }
876 
877 inline
879 {
880  m_set_State[0] &= ~0xc;
881 }
882 
883 inline
885 {
886  m_set_State[0] |= 0xc;
887 }
888 
889 ///////////////////////////////////////////////////////////
890 ////////////////// end of inline methods //////////////////
891 ///////////////////////////////////////////////////////////
892 
893 
894 
895 
896 
897 END_objects_SCOPE // namespace ncbi::objects::
898 
900 
901 
902 #endif // OBJTOOLS_EUTILS_EFETCH_OUTERPRODUCT_BASE_HPP
COuterproduct_Base –.
CRef –.
Definition: ncbiobj.hpp:618
Base class for all serializable objects.
Definition: serialbase.hpp:150
char value[7]
Definition: config.c:431
void ThrowUnassigned(TMemberIndex index) const
static string UnassignedString(void)
Definition: serialbase.hpp:175
uint32_t Uint4
4-byte (32-bit) unsigned integer
Definition: ncbitype.h:103
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
TDefinitionURL & SetDefinitionURL(void)
Assign a value to DefinitionURL data member.
TEncoding & SetEncoding(void)
Assign a value to Encoding data member.
bool CanGetClass(void) const
Check if it is safe to call GetClass method.
void Reset(void)
Reset the whole object.
void ResetId(void)
Reset Id data member.
bool CanGetStyle(void) const
Check if it is safe to call GetStyle method.
TStyle & SetStyle(void)
Assign a value to Style data member.
bool IsSetId(void) const
Check if a value has been assigned to Id data member.
const TClass & GetClass(void) const
Get the Class member data.
bool IsSetOuterproduct(void) const
Check if a value has been assigned to Outerproduct data member.
bool CanGetDefinitionURL(void) const
Check if it is safe to call GetDefinitionURL method.
void ResetXref(void)
Reset Xref data member.
void ResetClass(void)
Reset Class data member.
void ResetStyle(void)
Reset Style data member.
TId & SetId(void)
Assign a value to Id data member.
virtual void Reset(void)
Reset the whole object.
bool CanGetId(void) const
Check if it is safe to call GetId method.
COuterproduct_Base(const COuterproduct_Base &)
const TEncoding & GetEncoding(void) const
Get the Encoding member data.
void ResetEncoding(void)
Reset Encoding data member.
CRef< TAttlist > m_Attlist
THref & SetHref(void)
Assign a value to Href data member.
const TId & GetId(void) const
Get the Id member data.
bool IsSetStyle(void) const
Check if a value has been assigned to Style data member.
bool IsSetXref(void) const
Check if a value has been assigned to Xref data member.
bool CanGetXref(void) const
Check if it is safe to call GetXref method.
const TXref & GetXref(void) const
Get the Xref member data.
void ResetDefinitionURL(void)
Reset DefinitionURL data member.
void ResetHref(void)
Reset Href data member.
C_Attlist(const C_Attlist &)
TXref & SetXref(void)
Assign a value to Xref data member.
void SetOuterproduct(void)
Set NULL data member (assign 'NULL' value to Outerproduct data member).
bool IsSetAttlist(void) const
Check if a value has been assigned to Attlist data member.
bool CanGetHref(void) const
Check if it is safe to call GetHref method.
const TAttlist & GetAttlist(void) const
Get the Attlist member data.
virtual ~COuterproduct_Base(void)
void ResetOuterproduct(void)
Reset Outerproduct data member.
Tparent::CMemberIndex< E_memberIndex, 3 > TmemberIndex
const TDefinitionURL & GetDefinitionURL(void) const
Get the DefinitionURL member data.
bool IsSetDefinitionURL(void) const
Check if a value has been assigned to DefinitionURL data member.
bool CanGetEncoding(void) const
Check if it is safe to call GetEncoding method.
bool CanGetAttlist(void) const
Check if it is safe to call GetAttlist method.
C_Attlist & operator=(const C_Attlist &)
CSerialObject Tparent
bool IsSetHref(void) const
Check if a value has been assigned to Href data member.
TAttlist & SetAttlist(void)
Assign a value to Attlist data member.
const TStyle & GetStyle(void) const
Get the Style member data.
bool CanGetOuterproduct(void) const
Check if value of Outerproduct member is getatable.
Tparent::CMemberIndex< E_memberIndex, 8 > TmemberIndex
COuterproduct_Base & operator=(const COuterproduct_Base &)
const THref & GetHref(void) const
Get the Href member data.
bool IsSetEncoding(void) const
Check if a value has been assigned to Encoding data member.
void ResetAttlist(void)
Reset Attlist data member.
bool IsSetClass(void) const
Check if a value has been assigned to Class data member.
TClass & SetClass(void)
Assign a value to Class data member.
Modified on Tue Dec 05 02:15:30 2023 by modify_doxy.py rev. 669887