1 | <HTML><HEAD><META content="text/html; charset=utf8" http-equiv="Content-Type"><SCRIPT language="JavaScript" src="resources/script.js" type="text/javascript"></SCRIPT><TITLE>FAQs for Contributors</TITLE></HEAD><BODY alink="#ff0000" bgcolor="#ffffff" leftmargin="4" link="#0000ff" marginheight="4" marginwidth="4" text="#000000" topmargin="4" vlink="#0000aa"><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" height="60" rowspan="3" valign="top" width="135"><IMG border="0" height="60" hspace="0" src="resources/logo.gif" vspace="0" width="135"></TD><TD align="left" colspan="4" height="5" valign="top" width="456"><IMG border="0" height="5" hspace="0" src="resources/line.gif" vspace="0" width="456"></TD><TD align="left" height="60" rowspan="3" valign="top" width="29"><IMG border="0" height="60" hspace="0" src="resources/right.gif" vspace="0" width="29"></TD></TR><TR><TD align="left" bgcolor="#0086b2" colspan="4" height="35" valign="top" width="456"><IMG alt="" border="0" height="35" hspace="0" src="graphics/faq-contributing-header.jpg" vspace="0" width="456"></TD></TR><TR><TD align="left" height="20" valign="top" width="168"><IMG border="0" height="20" hspace="0" src="resources/bottom.gif" vspace="0" width="168"></TD><TD align="left" height="20" valign="top" width="96"><A href="http://xml.apache.org/" onMouseOut="rolloverOff('xml');" onMouseOver="rolloverOn('xml');" target="new"><IMG alt="http://xml.apache.org/" border="0" height="20" hspace="0" name="xml" onLoad="rolloverLoad('xml','resources/button-xml-hi.gif','resources/button-xml-lo.gif');" src="resources/button-xml-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.apache.org/" onMouseOut="rolloverOff('asf');" onMouseOver="rolloverOn('asf');" target="new"><IMG alt="http://www.apache.org/" border="0" height="20" hspace="0" name="asf" onLoad="rolloverLoad('asf','resources/button-asf-hi.gif','resources/button-asf-lo.gif');" src="resources/button-asf-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.w3.org/" onMouseOut="rolloverOff('w3c');" onMouseOver="rolloverOn('w3c');" target="new"><IMG alt="http://www.w3.org/" border="0" height="20" hspace="0" name="w3c" onLoad="rolloverLoad('w3c','resources/button-w3c-hi.gif','resources/button-w3c-lo.gif');" src="resources/button-w3c-lo.gif" vspace="0" width="96"></A></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" valign="top" width="120"><IMG border="0" height="14" hspace="0" src="resources/join.gif" vspace="0" width="120"><BR>
|
---|
2 |
|
---|
3 |
|
---|
4 | <A href="../index.html" onMouseOut="rolloverOff('side-ext-2');" onMouseOver="rolloverOn('side-ext-2');"><IMG alt="Home" border="0" height="12" hspace="0" name="side-ext-2" onLoad="rolloverLoad('side-ext-2','graphics/ext-2-label-2.jpg','graphics/ext-2-label-3.jpg');" src="graphics/ext-2-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
5 |
|
---|
6 |
|
---|
7 |
|
---|
8 | <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
|
---|
9 |
|
---|
10 | <A href="index.html" onMouseOut="rolloverOff('side-index');" onMouseOver="rolloverOn('side-index');"><IMG alt="Readme" border="0" height="12" hspace="0" name="side-index" onLoad="rolloverLoad('side-index','graphics/index-label-2.jpg','graphics/index-label-3.jpg');" src="graphics/index-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
11 | <A href="releases.html" onMouseOut="rolloverOff('side-releases');" onMouseOver="rolloverOn('side-releases');"><IMG alt="Release Info" border="0" height="12" hspace="0" name="side-releases" onLoad="rolloverLoad('side-releases','graphics/releases-label-2.jpg','graphics/releases-label-3.jpg');" src="graphics/releases-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
12 |
|
---|
13 |
|
---|
14 |
|
---|
15 |
|
---|
16 |
|
---|
17 |
|
---|
18 | <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
|
---|
19 |
|
---|
20 | <A href="install.html" onMouseOut="rolloverOff('side-install');" onMouseOver="rolloverOn('side-install');"><IMG alt="Installation" border="0" height="12" hspace="0" name="side-install" onLoad="rolloverLoad('side-install','graphics/install-label-2.jpg','graphics/install-label-3.jpg');" src="graphics/install-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
21 | <A href="http://xml.apache.org/xerces-c/download.cgi" onMouseOut="rolloverOff('side-ext-18');" onMouseOver="rolloverOn('side-ext-18');"><IMG alt="Download" border="0" height="12" hspace="0" name="side-ext-18" onLoad="rolloverLoad('side-ext-18','graphics/ext-18-label-2.jpg','graphics/ext-18-label-3.jpg');" src="graphics/ext-18-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
22 | <A href="build.html" onMouseOut="rolloverOff('side-build');" onMouseOver="rolloverOn('side-build');"><IMG alt="Build Instructions" border="0" height="12" hspace="0" name="side-build" onLoad="rolloverLoad('side-build','graphics/build-label-2.jpg','graphics/build-label-3.jpg');" src="graphics/build-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
23 |
|
---|
24 |
|
---|
25 |
|
---|
26 |
|
---|
27 | <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
|
---|
28 |
|
---|
29 | <A href="faqs.html" onMouseOut="rolloverOff('side-faqs');" onMouseOver="rolloverOn('side-faqs');"><IMG alt="FAQs" border="0" height="12" hspace="0" name="side-faqs" onLoad="rolloverLoad('side-faqs','graphics/faqs-label-2.jpg','graphics/faqs-label-3.jpg');" src="graphics/faqs-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
30 |
|
---|
31 | <A href="samples.html" onMouseOut="rolloverOff('side-samples');" onMouseOver="rolloverOn('side-samples');"><IMG alt="Samples" border="0" height="12" hspace="0" name="side-samples" onLoad="rolloverLoad('side-samples','graphics/samples-label-2.jpg','graphics/samples-label-3.jpg');" src="graphics/samples-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
32 |
|
---|
33 |
|
---|
34 |
|
---|
35 |
|
---|
36 |
|
---|
37 |
|
---|
38 |
|
---|
39 |
|
---|
40 |
|
---|
41 |
|
---|
42 |
|
---|
43 |
|
---|
44 |
|
---|
45 |
|
---|
46 |
|
---|
47 |
|
---|
48 | <A href="api.html" onMouseOut="rolloverOff('side-api');" onMouseOver="rolloverOn('side-api');"><IMG alt="API Docs" border="0" height="12" hspace="0" name="side-api" onLoad="rolloverLoad('side-api','graphics/api-label-2.jpg','graphics/api-label-3.jpg');" src="graphics/api-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
49 |
|
---|
50 | <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
|
---|
51 |
|
---|
52 | <A href="ApacheDOMC++Binding.html" onMouseOut="rolloverOff('side-ext-68');" onMouseOver="rolloverOn('side-ext-68');"><IMG alt="DOM C++ Binding" border="0" height="12" hspace="0" name="side-ext-68" onLoad="rolloverLoad('side-ext-68','graphics/ext-68-label-2.jpg','graphics/ext-68-label-3.jpg');" src="graphics/ext-68-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
53 |
|
---|
54 | <A href="program.html" onMouseOut="rolloverOff('side-program');" onMouseOver="rolloverOn('side-program');"><IMG alt="Programming" border="0" height="12" hspace="0" name="side-program" onLoad="rolloverLoad('side-program','graphics/program-label-2.jpg','graphics/program-label-3.jpg');" src="graphics/program-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
55 |
|
---|
56 |
|
---|
57 |
|
---|
58 |
|
---|
59 |
|
---|
60 |
|
---|
61 |
|
---|
62 |
|
---|
63 | <A href="migrate.html" onMouseOut="rolloverOff('side-migrate');" onMouseOver="rolloverOn('side-migrate');"><IMG alt="Migration Guide" border="0" height="12" hspace="0" name="side-migrate" onLoad="rolloverLoad('side-migrate','graphics/migrate-label-2.jpg','graphics/migrate-label-3.jpg');" src="graphics/migrate-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
64 |
|
---|
65 |
|
---|
66 | <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
|
---|
67 |
|
---|
68 | <A href="feedback.html" onMouseOut="rolloverOff('side-feedback');" onMouseOver="rolloverOn('side-feedback');"><IMG alt="Feedback" border="0" height="12" hspace="0" name="side-feedback" onLoad="rolloverLoad('side-feedback','graphics/feedback-label-2.jpg','graphics/feedback-label-3.jpg');" src="graphics/feedback-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
69 | <A href="bug-report.html" onMouseOut="rolloverOff('side-bug-report');" onMouseOver="rolloverOn('side-bug-report');"><IMG alt="Bug-Reporting" border="0" height="12" hspace="0" name="side-bug-report" onLoad="rolloverLoad('side-bug-report','graphics/bug-report-label-2.jpg','graphics/bug-report-label-3.jpg');" src="graphics/bug-report-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
70 | <A href="pdf.html" onMouseOut="rolloverOff('side-pdf');" onMouseOver="rolloverOn('side-pdf');"><IMG alt="PDF Document" border="0" height="12" hspace="0" name="side-pdf" onLoad="rolloverLoad('side-pdf','graphics/pdf-label-2.jpg','graphics/pdf-label-3.jpg');" src="graphics/pdf-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
71 |
|
---|
72 | <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
|
---|
73 |
|
---|
74 |
|
---|
75 | <A href="http://xml.apache.org/websrc/cvsweb.cgi/xml-xerces/c/" onMouseOut="rolloverOff('side-ext-100');" onMouseOver="rolloverOn('side-ext-100');"><IMG alt="CVS Repository" border="0" height="12" hspace="0" name="side-ext-100" onLoad="rolloverLoad('side-ext-100','graphics/ext-100-label-2.jpg','graphics/ext-100-label-3.jpg');" src="graphics/ext-100-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
76 |
|
---|
77 |
|
---|
78 | <A href="http://marc.theaimsgroup.com/?l=xerces-c-dev" onMouseOut="rolloverOff('side-ext-102');" onMouseOver="rolloverOn('side-ext-102');"><IMG alt="Mail Archive" border="0" height="12" hspace="0" name="side-ext-102" onLoad="rolloverLoad('side-ext-102','graphics/ext-102-label-2.jpg','graphics/ext-102-label-3.jpg');" src="graphics/ext-102-label-3.jpg" vspace="0" width="120"></A><BR>
|
---|
79 |
|
---|
80 |
|
---|
81 | <IMG border="0" height="14" hspace="0" src="resources/close.gif" vspace="0" width="120"><BR></TD><TD align="left" valign="top" width="500"><TABLE border="0" cellpadding="3" cellspacing="0"><TR><TD><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Questions</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif"><UL><LI><A href="#faq-1">Submitting Patches</A></LI><LI><A href="#faq-2">Release Policy</A></LI><LI><A href="#faq-3">Coding Conventions</A></LI></UL></FONT></TD></TR></TABLE><BR><BR><A name="faq-1"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>I have a problem and I think I know how to fix it. How can I
|
---|
82 | communicate my ideas to the Xerces team?
|
---|
83 | </B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
|
---|
84 | <P>To maximize the probability that your ideas will grab the
|
---|
85 | attention of one of the Xerces developers who knows about the
|
---|
86 | area of the parser you're concerned with, you should follow
|
---|
87 | these steps:
|
---|
88 | </P>
|
---|
89 | <OL>
|
---|
90 | <LI>Check out and build the most recent Xerces code. For
|
---|
91 | instructions on how to do this, see <A href="http://xml.apache.org/cvs.html">Apache XML Project CVS
|
---|
92 | Information</A>. If you do this, you can confirm that your
|
---|
93 | bug still exists and has not been fixed since the last
|
---|
94 | release.
|
---|
95 | </LI>
|
---|
96 | <LI>
|
---|
97 | Write up your bug report as per the instructions described in
|
---|
98 | the <A href="bug-report.html">Bug-Reporting</A> page.
|
---|
99 | </LI>
|
---|
100 | <LI>
|
---|
101 | Describe why your solution works.
|
---|
102 | </LI>
|
---|
103 | <LI>
|
---|
104 | Prepare a patch to fix Xerces code. To do this, when you
|
---|
105 | have applied your changes to a local copy of the most
|
---|
106 | recent xerces source code, do <CODE><FONT face="courier, monospaced">cvs diff -u
|
---|
107 | file</FONT></CODE> for each file you've changed.
|
---|
108 | Keep in mind the coding quidelines for Xerces-C++ as
|
---|
109 | described below.
|
---|
110 | </LI>
|
---|
111 | <LI>
|
---|
112 | Zip (or tar) up your patches. If you send them in the
|
---|
113 | body of a message or bug report they are very difficult to
|
---|
114 | apply.
|
---|
115 | </LI>
|
---|
116 | <LI>
|
---|
117 | Submit a bug report on <A href="http://nagoya.apache.org/jira">Jira</A>,
|
---|
118 | the Apache bug database. Pick the product "Xerces-C++"
|
---|
119 | (remembering to attach your patches and test code)
|
---|
120 | or, if you think your patch might need some discussion,
|
---|
121 | post it to the xerces-c-dev list.
|
---|
122 | </LI>
|
---|
123 | </OL>
|
---|
124 | </FONT></TD></TR></TABLE><BR><A name="faq-2"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>What are the release policies for Xerces-C++?
|
---|
125 | </B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
|
---|
126 | <P>The informal release policies for Xerces-C++ are (using a versioning of version.release.modification):</P>
|
---|
127 | <UL>
|
---|
128 | <LI>We don't try to enforce binary compatibility between new versions and releases.</LI>
|
---|
129 | <LI>New versions and releases will be delivered when a certain number of bug fixes/new features have been added
|
---|
130 | (as decided by the committers) or when a dependent product, such as XALAN, wants to ship a new release that uses new Xerces features.</LI>
|
---|
131 | <LI>New modification levels will almost never be issued, the only exception is a showstopper bug encountered within
|
---|
132 | a release. if no commit has been made on the trunk which would result in binary incompatibility, and no commit has been made that is not thought to
|
---|
133 | be release-quality, then the modification release can be created by tagging the trunk; otherwise, a branch (new release) will need to be created and the show stopper
|
---|
134 | fixed there.</LI>
|
---|
135 | <LI>Any normal bug is fixed only in the HEAD branch (latest development code).</LI>
|
---|
136 | </UL>
|
---|
137 |
|
---|
138 | <P>The specific source and binary compatibility objectives for these release policies and the corresponding allowed source changes are:</P>
|
---|
139 | <UL>
|
---|
140 | <LI>x.x.x to x.x.y: the API is the same to ensure binary compatibility.</LI>
|
---|
141 | <UL>
|
---|
142 | <LI>To maintain binary compatibility the allowed source code changes are:</LI>
|
---|
143 | <UL>
|
---|
144 | <LI>Add new non-virtual functions.</LI>
|
---|
145 | <LI>Add new classes.</LI>
|
---|
146 | <LI>Add new STATIC data members.</LI>
|
---|
147 | </UL>
|
---|
148 | <LI>To maintain binary compatibility you cannot:</LI>
|
---|
149 | <UL>
|
---|
150 | <LI>Add new virtual functions as this will change the layout of the virtual function table.</LI>
|
---|
151 | <LI>Change the order of virtual functions in the class declaration.</LI>
|
---|
152 | <LI>Change the signature of a function (including adding additional parameters with defaults).</LI>
|
---|
153 | <LI>Change the access specifier (private/public/protected) on functions or data members as this may be part of the signature with some compilers.</LI>
|
---|
154 | <LI>Add new data members to a class (other than STATIC members).</LI>
|
---|
155 | <LI>Change the order of data members in the class declaration (other than STATIC members).</LI>
|
---|
156 | <LI>Change the class hierarchy (other than adding new classes).</LI>
|
---|
157 | </UL>
|
---|
158 | <LI>Methods that are deprecated should be marked with the JavaDoc tag @deprecated in the header file.</LI>
|
---|
159 | </UL>
|
---|
160 | <LI>x.x.x to x.y.z: the API is source code compatible but not binary compatible (a recompilation of an application that uses the public headers of Xerces-C++ should work).</LI>
|
---|
161 | <UL>
|
---|
162 | <LI>This means that to maintain release to release source code compatibility the signature of public methods can only be
|
---|
163 | changed by adding default parameters.</LI>
|
---|
164 | <LI>Signatures of private and protected methods can be changed and/or removed.</LI>
|
---|
165 | <LI>Methods that are deprecated should be marked with the JavaDoc tag @deprecated in the header file.</LI>
|
---|
166 | </UL>
|
---|
167 | <LI>x.x.x to a.b.c: the API may not be source code compatible and is not binary compatible (a recompilation of an application using Xerces-C++ may fail).</LI>
|
---|
168 | <UL>
|
---|
169 | <LI>In this situation, a separate branch of the code will be created so that bug fixes may be applied to the last version.</LI>
|
---|
170 | <LI>Deprecated methods may be removed. Deprecated methods that are removed should be documented in the migration information (migration.xml).</LI>
|
---|
171 | </UL>
|
---|
172 | </UL>
|
---|
173 | </FONT></TD></TR></TABLE><BR><A name="faq-3"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>What are the coding conventions for Xerces-C++?
|
---|
174 | </B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
|
---|
175 | <P>As with any coding effort, there are always arguments over what coding conventions to use. Everyone thinks
|
---|
176 | that they have the best style which leads to the entire source tree looking different. This causes consternation
|
---|
177 | as well as eye fatigue on subsequent developers that need to maintain the code. Therefore, we are going to
|
---|
178 | make an attempt at defining some basic coding conventions for Xerces-C++. When committing files or providing
|
---|
179 | patches please keep them in mind:</P>
|
---|
180 | <OL>
|
---|
181 | <LI>All classes should have a constructor, destructor, assignment operator and copy constructor to
|
---|
182 | avoid compiler generated default versions of these.</LI>
|
---|
183 | <UL>
|
---|
184 | <LI>If a class contains only static methods, only a private constructor is required.</LI>
|
---|
185 | <LI>If a class contains any virtual methods, the destructor should be virtual.</LI>
|
---|
186 | <LI>If a class has a public or protected constructor, it should declare private assignment operator
|
---|
187 | and copy constructor which are not implemented (unless of course you need either of these).</LI>
|
---|
188 | </UL>
|
---|
189 |
|
---|
190 | <LI>If you add a catch(...) block be sure to add the following block
|
---|
191 | <CODE><FONT face="courier, monospaced">
|
---|
192 | catch(const OutOfMemoryException&)
|
---|
193 | {
|
---|
194 | throw;
|
---|
195 | }
|
---|
196 | </FONT></CODE> so the OutOfMemory condition does not get absorbed.</LI>
|
---|
197 |
|
---|
198 | <LI>If you change the serialization format (by adding something to be serialized or removing something that
|
---|
199 | was serialized) increment the XERCES_GRAMMAR_SERIALIZATION_LEVEL constant in XercesVersion.hpp.</LI>
|
---|
200 |
|
---|
201 | <LI>If a class allocates memory or is instantiated with new then it should inherit from XMemory.</LI>
|
---|
202 |
|
---|
203 | <LI>Use a tab size of 4 and insert them as spaces instead of keeping tabs.</LI>
|
---|
204 |
|
---|
205 | <LI>The code is written to be platform independent. Platform specific code should only be in the
|
---|
206 | util/Platforms, util/Transcoders, util/MsgLoaders, and util/NetAccessors directories.</LI>
|
---|
207 |
|
---|
208 | <LI>The header file name and the source file name should both be named corresponding to the primary
|
---|
209 | class they contain. For example class StringPool should be in the header file StringPool.hpp and in
|
---|
210 | the source file StringPool.cpp.</LI>
|
---|
211 |
|
---|
212 | <LI>In general, code should be documented with comments. Use JavaDoc tags to describe methods.</LI>
|
---|
213 | </OL>
|
---|
214 | </FONT></TD></TR></TABLE><BR></TD></TR></TABLE></TD></TR></TABLE><BR><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD bgcolor="#0086b2"><IMG height="1" src="images/dot.gif" width="1"></TD></TR><TR><TD align="center"><FONT color="#0086b2" size="-1"><I>
|
---|
215 | Copyright © 1999-2004 The Apache Software Foundation.
|
---|
216 | All Rights Reserved.
|
---|
217 | </I></FONT></TD></TR></TABLE></BODY></HTML> |
---|