Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Ws Wiki" for change 
notification.

The following page has been changed by GeoffWinn:
http://wiki.apache.org/ws/Tuscany/TuscanyCpp/DesignNotes

------------------------------------------------------------------------------
- = Community Building =
+ = Logging =
  
- In the IRC chat of 18-Sep-2006 we discussed the prospects for M.Sc students 
to work on Tuscany related projects as part of their studies. This is certainly 
possible at Oxford and probably elsewhere. To make this work, we will need a 
description of each project that is sufficient to both persuade a student to 
choose this particular topic and also convince their supervisor that this is an 
appropriate part of their studies.
+ Logging is not mentioned in the V2.01 specification, however, a rudimentary 
logging capability is provided in the current implementation, using three 
classes.
  
- The following subjects were suggested on IRC.
+  * Log``Writer
  
-  * JSON databinding
+    This defines an abstract class with a single '''log''' method.
  
-  * XSLT integration
+  * Default``Log``Writer
  
-  * BPEL integration
+    Instantiates '''Log``Writer''' implementng a '''log''' method that writes 
to '''cout'''
  
-  * OpenJPA integration
+  * Logger
  
-  * JMS stuff
+    A class with a static pointer to a '''Log``writer''' object. When the 
class is loaded the pointer is initialized to a reference to an instance of 
'''Default``Log``Writer'''. '''Logger''' provides its own '''log''' and 
'''logArgs''' methods that use the '''log''' method of 
'''Default``Log``Writer'''
  
-  * Atom binding
+ In the current implementation, logging is seldom used.
  
-  * C++ DAS
+ = Conversion from C style strings to C++ style strings =
  
-  * XML DAS
+ = Debugging the XML parser =
  
-  * DAS with non-SDO data types
+ SDO uses the SAX parser provided by libxml2 to parse XML documents (and 
therefore XSD documents also). The SAX parser uses a callback mechanism to 
report XML events to its caller. These callback routines are supplied to the 
parser using a struct of type xmlSAXHandler, called SDOSAX2``Handler that is 
defined in SAX2``Parser.cpp
  
-  * Hessian binding
+ To watch the parsing of a file as it unfolds it is usually easiest to place 
breakpoints on the routines named in that struct.
  
-  * DAS implementation type
+ = Modifying the SDO Build to use the Apache stdcxx Standard C++ library =
  
- We need to decide which of these are our highest priorities and find 
volunteers to define the content.
+ stdcxx is an implementation of the C++ Standard Library provided by Apache. 
The website is at http://incubator.apache.org/stdcxx/. 
  
- Some background information that may help follows.
+ To build SDO using stdcxx rather than the native C++ library on Windows, the 
following modifications to the Microsoft Visual Studio .NET 2003 build 
environment are necessary. We assume that a source extract of stdcxx is already 
available in a directory called C:\Tuscany\stdcxx-4.1.3 (based on the version 
number of the current release at the time of writing). We also assume that 
debug and release versions of this library have been built in directories 
called C:\Tuscany\stdcxx-4.1.3\Debug and C:\Tuscany\stdcxx-4.1.3\Release. The 
process for building these is described later.
  
- == Example Synopsis ==
+ 1. Define an environment variable, STDCXX_HOME to identify the root of the 
source extract tree ie C:\Tuscany\stdcxx-4.1.3
  
- At Oxford, students are required to submit a 1 or 2 page summary of their 
project topic. Some of the content is specific to the particular student but a 
large part is a description of the project contents.
+ This is not strictly necessary but is convenient given how often we will 
refer to that location.
  
- The guidelines for students say the following.
+ 2. Add the stdcxx include directories to the appropriate search path. These 
directories are
  
- "Students may choose any topic that will allow them to demonstrate 
understanding of software engineering through the medium of a dissertation. The 
best way of doing this is usually to choose a topic related to one or more of 
the subjects taught on the Programme. Many students choose topics that are 
related to their current employment, allowing them to see how the ideas taught 
in the Programme may be applied alongside current practice.
+   $(STDCXX_HOME)\include
  
- There are three broad categories:
+   $(STDCXX_HOME)\include\ansi
  
-    1. Product-based
+   and either
  
-       -involving the application of software engineering techniques to the 
specification, analysis, design, development, or testing of a particular 
product. This product could be entirely fictitious, it could exist only as a 
part of another system, it could be hardware or software, but it must afford an 
opportunity to apply software engineering techniques.
+   $(STDCXX_HOME)\Debug\include\15d - for a debug build
  
-       Any technique or combination of techniques could be applied to—or 
around—this product. There might be a study of requirements, one or more 
specifications, some design work, some analysis, some programming, or some 
testing.
+   or
  
-       Examples include: an object-oriented design and implementation, with 
some accompanying analysis; the formal specification of a software component; a 
case study in requirements engineering.
+   $(STDCXX_HOME)\Release\include\12d - for a release build
  
+ For MSVC 7.1 these should be appended to the list found in Configuration 
Properties -> C/C++ -> General -> Additional Include Directories
-    2. Theory-based
-    3. Process-based
-       (Both omitted because they aren't relevant to us.)
  
- Most projects fall into the first category."
+ 3. Add environment variable definitions. These variables are
  
- For the proposal document itslef it goe son to say.
+   _RWSTD_USE_CONFIG
  
- "The work starts with a project proposal: about two pages of text including:
+   _RWSHARED
  
+   and _RWSTDDEBUG for a debug build
-    1. a description of the subject matter: product, theory, application area, 
or problem domain;
-    2. a brief account of the original contribution that the project work 
might be expected to make;
-    3. a plan, or outline, of the dissertation, explaining how it will 
demonstrate the student's understanding;
-    4. a list of resources that will be required; and
-    5. a suggested schedule of tasks and delivery dates."
  
- In my opinion we need to generate something that would cover point 1 at 
least, as well as recognising that under point 5 we have about 4-6 weeks of 
effort available and while we can't answer point 2 we should at least give the 
student something to work with.
+ 4. Add the stdcxx library directory to the appropriate search path. This 
directory is
  
+   $(STDCXX_HOME)\Debug\lib - for a debug build
+ 
+   and 
+ 
+   $(STDCXX_HOME)\Release\lib - for a release build
+ 
+ For MSVC 7.1 these should be appended to the list found in Configuration 
Properties -> Linker -> General -> Additional Library Directories
+ 
+ 5. Add the stdcxx library name as a dependency. The library name is
+ 
+   stdlib15d.lib - for a debug build
+ 
+   and
+ 
+   stdlib12d.lib - for a release build
+ 
+ For MSVC 7.1 these should be appended to the list found in Configuration 
Properties -> Linker -> Input -> Additional Dependencies
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to