From: prascle Date: Fri, 28 Jan 2005 09:55:45 +0000 (+0000) Subject: PR: update documentation X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=e5dd32f1b358b8b07863dddcd71e0a8109614b2f;p=modules%2Fyacs.git PR: update documentation --- diff --git a/doc/salome/KernelResources/kernel_resources-1.html b/doc/salome/KernelResources/kernel_resources-1.html index 6652dc450..562ffa05b 100644 --- a/doc/salome/KernelResources/kernel_resources-1.html +++ b/doc/salome/KernelResources/kernel_resources-1.html @@ -1,7 +1,7 @@ - + SALOME Kernel resources for developer: Trace and debug Utilities @@ -12,66 +12,84 @@ Previous Contents
-

1. Trace and debug Utilities

+

1. Trace and debug Utilities

During the development process, an execution log is useful to identify problems. This log contains messages, variables values, source files names and line numbers. It is recommended to verify assertions on variables values and if necessary, to stop the execution -at debug time, in order to validate all parts of code. -

1.1 Two modes: debug and release +at debug time, in order to validate all parts of code.

+ +

1.1 Two modes: debug and release

The goal of debug mode is to check as many features as possible during the early stages of the development process. The purpose of the utilities provided in SALOME is to help the developer to add detailed traces and check variables values, without writing a lot -of code. +of code.

+

When the code is assumed to be valid, the release mode optimizes execution, in terms of speed, memory, and display only user level -messages. +messages.

+

But, some informations must always be displayed in both modes: especially messages concerning environment or internal errors, with version identification. When an end user is confronted to such a message, he may refer to a configuration documentation or send the message to the people in charge of SALOME installation, or to the -development team, following the kind of error. -

1.2 C++ Macros for trace and debug +development team, following the kind of error.

+ +

1.2 C++ Macros for trace and debug

SALOME provides C++ macros for trace and debug. These macros -are in SALOME/src/utils/utilities.h and this file must be included -in C++ source. Some macros are activated only in debug mode, others -are always activated. To activate the debug mode, _DEBUG_ must be -defined, which is the case when SALOME Makefiles are generated from -configure, without options. When _DEBUG_ is undefined (release mode), -the debug mode macros are defined empty (they do nothing). So, when -switching from debug to release, it is possible (and recommended) -to let the macro calls unchanged in the source. -

All the macros writing on the standard output start by flushing -the standard error. At the end of the display those macros flush -the standard output. -

Two informations are systematically added in front of the information -displayed: +are in SALOME/src/SALOMELocalTrace/utilities.h and this file must +be included in C++ source. Some macros are activated only in debug +mode, others are always activated. To activate the debug mode, _DEBUG_ +must be defined, which is the case when SALOME Makefiles are generated +from configure, without options. When _DEBUG_ is undefined (release +mode: configure --disable-debug --enable-production), the debug mode +macros are defined empty (they do nothing). So, when switching from +debug to release, it is possible (and recommended) to let the macro +calls unchanged in the source.

+ +

All the macros generate trace messages, stored in a circular +buffer pool. A separate thread reads the messages in the buffer pool, +and, depending on options given at SALOME start, writes the messages +on the standard output, a file, or send them via CORBA, in case of +a multi machine configuration.

+ +

Three informations are systematically added in front of the information +displayed:

+

+

Macros defined in debug and release modes

INFOS_COMPILATION

-

The C++ macro INFOS_COMPILATION writes on the standard output -informations about the compiling process: +

The C++ macro INFOS_COMPILATION writes on the trace buffer pool +informations about the compiling process:

+

+

This macro INFOS_COMPILATION does not have any argument. Moreover, -it is defined in both compiling mode : _DEBUG_ and _RELEASE_. -

Example : +it is defined in both compiling mode : _DEBUG_ and _RELEASE_.

+ +

Example :

+

 #include "utilities.h"
@@ -81,12 +99,15 @@ int main(int argc , char **argv)
   ...
 }
 
+

INFOS(str)

In both compiling mode _DEBUG_ and _RELEASE_, The C++ macro INFOS -writes on the standard output the string which has been passed in -argument by the user. -

Example : +writes on the trace buffer pool the string which has been passed +in argument by the user.

+ +

Example :

+

 #include "utilities.h"
@@ -97,19 +118,39 @@ int main(int argc , char **argv)
   return 0; 
 }
 
-

displays : +

+

displays :

+

 main.cxx [5] : NORMAL END OF THE PROCESS
+
 
+

+

INTERRUPTION(str)

+ +

In both compiling mode _DEBUG_ and _RELEASE_, The C++ macro INTERRUPTION +writes on the trace buffer pool the string, with a special ABORT +type. When the thread in charge of collecting messages finds this +message, it terminates the application, after message treatment.

+ +

IMMEDIATE_ABORT(str)

+ +

In both compiling mode _DEBUG_ and _RELEASE_, The C++ macro IMMEDIATE_ABORT +writes the message immediately on standard error and exits the application. +Remaining messages not treated by the message collector thread are +lost.

+

Macros defined only in debug mode

MESSAGE(str)

In _DEBUG_ compiling mode only, the C++ macro MESSAGE writes -on the standard output the string which has been passed in argument -by the user. In _RELEASE_ compiling mode, this macro is blank. -

Example : +on the trace buffer pool the string which has been passed in argument +by the user. In _RELEASE_ compiling mode, this macro is blank.

+ +

Example :

+

 #include "utilities.h" 
@@ -126,19 +167,24 @@ int main(int argc , char **argv)
   return 0;
 }
 
-

displays : +

+

displays :

+

 - Trace main.cxx [8] : Salome
 - Trace main.cxx [12] : Aster and CASTEM
 
+

BEGIN_OF(func_name)

In _DEBUG_ compiling mode, The C++ macro BEGIN_OF appends the string "Begin of " to the one passed in argument by the -user and displays the result on the standard output. In _RELEASE_ -compiling mode, this macro is blank. -

Example : +user and displays the result on the trace buffer pool. In _RELEASE_ +compiling mode, this macro is blank.

+ +

Example :

+

 #include "utilities.h" 
@@ -148,18 +194,23 @@ int main(int argc , char **argv)
   return 0;
 }
 
-

displays : +

+

displays :

+

 - Trace main.cxx [3] : Begin of a.out
 
+

END_OF(func_name)

In _DEBUG_ compiling mode, The C++ macro END_OF appends the string "Normal end of " to the one passed in argument by the user -and displays the result on the standard output. In _RELEASE_ compiling -mode, this macro is blank. -

Example : +and displays the result on the trace buffer pool. In _RELEASE_ compiling +mode, this macro is blank.

+ +

Example :

+

 #include "utilities.h" 
@@ -169,17 +220,22 @@ int main(int argc , char **argv)
   return 0; 
 }
 
-

displays : +

+

displays :

+

 - Trace main.cxx [4] : Normal end of a.out
 
+

SCRUTE(var)

In _DEBUG_ compiling mode, The C++ macro SCRUTE displays its argument which is an application variable followed by the value of -the variable. In _RELEASE_ compiling mode, this macro is blank. -

Example : +the variable. In _RELEASE_ compiling mode, this macro is blank.

+ +

Example :

+

 #include "utilities.h"
@@ -190,19 +246,25 @@ int main(int argc , char **argv)
   return 0;
 }
 
-

displays : +

+

displays :

+

 - Trace main.cxx [5] : i=999
 
+

ASSERT(condition)

In _DEBUG_ compiling mode only, The C++ macro ASSERT checks the -expression passed in argument to be not NULL. If it is NULL the process -is stopped and the condition is written on the standard output. In -_RELEASE_ compiling mode, this macro is blank. N.B. : if ASSERT is -already defined, this macro is ignored. -

Example : +expression passed in argument to be not NULL. If it is NULL the condition +is written with the macro INTERRUPTION (see above). The process exits +after trace of this last message. In _RELEASE_ compiling mode, this +macro is blank. N.B. : if ASSERT is already defined, this macro is +ignored.

+ +

Example :

+

 #include "utilities.h" 
@@ -216,6 +278,7 @@ int k;
 ASSERT(k<10);
 cout << table[k];
 
+


Next Previous diff --git a/doc/salome/KernelResources/kernel_resources-2.html b/doc/salome/KernelResources/kernel_resources-2.html index 0557f1838..62acf8ca3 100644 --- a/doc/salome/KernelResources/kernel_resources-2.html +++ b/doc/salome/KernelResources/kernel_resources-2.html @@ -1,7 +1,7 @@ - + SALOME Kernel resources for developer: Exceptions @@ -12,9 +12,9 @@ Previous Contents
-

2. Exceptions

+

2. Exceptions

-

2.1 C++ exceptions: class SALOME_Exception +

2.1 C++ exceptions: class SALOME_Exception

definition

@@ -24,34 +24,46 @@ a message, with optional source file name and line number. This class is intended to serve as a base class for all kinds of exceptions SALOME code. All the exceptions derived from SALOME_Exception could be handled in a single catch, in which the message associated to -the exception is displayed, or sent to a log file. +the exception is displayed, or sent to a log file.

+

The class SALOME_Exception inherits its behavior from the STL -class exception. +class exception.

+

usage

The header SALOME/src/utils/utils_SALOME_Exception.hxx must be -included in the C++ source, when raised or trapped: -

#include "utils_SALOME_Exception.hxx" -

The SALOME_Exception constructor is: +included in the C++ source, when raised or trapped:

+ +

#include "utils_SALOME_Exception.hxx"

+ +

The SALOME_Exception constructor is:

+

 SALOME_Exception( const char *text,
                   const char *fileName=0, 
                   const unsigned int lineNumber=0 );
 
-

The exception is raised like this: +

+

The exception is raised like this:

+

 throw SALOME_Exception("my pertinent message");
 
-

or like this: +

+

or like this:

+

 throw SALOME_Exception(LOCALIZED("my pertinent message"));
 
+

where LOCALIZED is a macro provided with utils_SALOME_Exception.hxx -which gives file name and line number. -

The exception is handled like this: +which gives file name and line number.

+ +

The exception is handled like this:

+

 try
@@ -63,56 +75,71 @@ catch (const SALOME_Exception &ex)
     cerr << ex.what() <<endl;
   }
 
+

The what() method overrides the one defined in the STL exception -class. -

2.2 CORBA exceptions +class.

+ +

2.2 CORBA exceptions

definition

The idl SALOME_Exception provides a generic CORBA exception for SALOME, with an attribute that gives an exception type,a message, -plus optional source file name and line number. +plus optional source file name and line number.

+

This idl is intended to serve for all user CORBA exceptions raised in SALOME code, as IDL specification does not support exception inheritance. So, all the user CORBA exceptions from SALOME could be handled in -a single catch. -

The exception types defined in idl are: +a single catch.

+ +

The exception types defined in idl are:

+

-
COMM

CORBA communication problem, -

BAD_PARAM

Bad User parameters, -

INTERNAL_ERROR

application level problem (often irrecoverable). +

COMM

CORBA communication problem,

+
BAD_PARAM

Bad User parameters,

+
INTERNAL_ERROR

application level problem (often irrecoverable).

+
+

CORBA system and user exceptions already defined in the packages -used within SALOME, such as OmniORB exceptions, must be handled separately. +used within SALOME, such as OmniORB exceptions, must be handled separately.

+

usage

CORBA servant, C++

The CORBA Server header for SALOME_Exception and a macro to throw -the exception are provided with the header SALOME/src/Utils/Utils_CorbaException.hxx: +the exception are provided with the header SALOME/src/Utils/Utils_CorbaException.hxx:

+

 #include "Utils_CorbaException.hxx"
 
+

The exception is raised with a macro which appends file name -and line number. +and line number.

+

 if (myStudyName.size() == 0)
    THROW_SALOME_CORBA_EXCEPTION("No Study Name given", \
                                 SALOME::BAD_PARAM);
 
+

CORBA Client, GUI Qt C++

The CORBA Client header for SALOME_Exception and a Qt function -header that displays a message box are provided in SALOME/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx: +header that displays a message box are provided in SALOME/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx:

+

 #include "SALOMEGUI_QtCatchCorbaException.hxx"
 
-

A typical exchange with a CORBA Servant will be: +

+

A typical exchange with a CORBA Servant will be:

+

 try
@@ -123,12 +150,15 @@ catch (const SALOME::SALOME_Exception & S_ex)
   {
     QtCatchCorbaException(S_ex);
   }
+
 
+

CORBA Client, C++, without GUI

Nothing specific has been provided to the developer yet. See the idl or the Qt function SALOMEGUI_QtCatchCorbaException.hxx to -see how to get the information given by the exception object. +see how to get the information given by the exception object.

+
Next Previous diff --git a/doc/salome/KernelResources/kernel_resources-3.html b/doc/salome/KernelResources/kernel_resources-3.html index 64cdedde5..27f61e78f 100644 --- a/doc/salome/KernelResources/kernel_resources-3.html +++ b/doc/salome/KernelResources/kernel_resources-3.html @@ -1,7 +1,7 @@ - + SALOME Kernel resources for developer: Miscellaneous tools @@ -11,9 +11,9 @@ Next Previous Contents
-

3. Miscellaneous tools

+

3. Miscellaneous tools

-

3.1 Singleton +

3.1 Singleton

Definition

@@ -21,14 +21,17 @@ Next

A singleton is an application data which is created and deleted only once at the end of the application process. The C++ compiler allows the user to create a static singleton data before the first -executable statement. They are deleted after the last statement execution. +executable statement. They are deleted after the last statement execution.

+

The SINGLETON_ template class deals with dynamic singleton. It is useful for functor objects. For example, an object that connects the application to a system at creation and disconnects the application -at deletion. +at deletion.

+

Usage

-

To create a single instance a POINT object : +

To create a single instance a POINT object :

+

 # include "Utils_SINGLETON.hxx"
@@ -36,11 +39,13 @@ at deletion.
 POINT *ptrPoint=SINGLETON_<POINT>::Instance() ; 
 assert(ptrPoint!=NULL) ;
 
+

No need to delete ptrPoint. Deletion is achieved automatically at exit. If the user tries to create more than one singleton by using the class method SINGLETON_<TYPE>::Instance(), the pointer is returned with the same value even if this is done in different -functions (threads ?). +functions (threads ?).

+

 POINT *p1=SINGLETON_<POINT>::Instance() ;
@@ -48,9 +53,11 @@ POINT *p1=SINGLETON_<POINT>::Instance() ;
 POINT *p2=SINGLETON_<POINT>::Instance() ; 
 assert(p1==p2)
 
+

Design description

-

Here are the principles features of the singleton design : +

Here are the principles features of the singleton design :

+

-

-

+

+ + +
Next Previous diff --git a/doc/salome/KernelResources/kernel_resources.html b/doc/salome/KernelResources/kernel_resources.html index 6a11ac423..e3819dc56 100644 --- a/doc/salome/KernelResources/kernel_resources.html +++ b/doc/salome/KernelResources/kernel_resources.html @@ -1,7 +1,7 @@ - + SALOME Kernel resources for developer @@ -14,11 +14,11 @@ Contents

SALOME Kernel resources for developer

-

Antoine Yessayan, Paul Rascle

Version 0.1 January 16, 2002 -


+

Antoine Yessayan, Paul Rascle

Version 0.2 January 28, 2005 +
ABSTRACT
-


+
This document describes the development environment for C++ and Python. Makefiles generation and usage are introduced in another document: "using the SALOME configuration and building system environment". @@ -32,21 +32,21 @@ Contents

1. Trace and debug Utilities

2. Exceptions

3. Miscellaneous tools


Next diff --git a/doc/salome/KernelResources/kernel_resources.lyx b/doc/salome/KernelResources/kernel_resources.lyx index d696300b2..2c5935eab 100644 --- a/doc/salome/KernelResources/kernel_resources.lyx +++ b/doc/salome/KernelResources/kernel_resources.lyx @@ -1,5 +1,5 @@ -#LyX 1.1 created this file. For more info see http://www.lyx.org/ -\lyxformat 218 +#LyX 1.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 221 \textclass linuxdoc \language english \inputencoding default @@ -11,6 +11,8 @@ \paperpackage a4 \use_geometry 0 \use_amsmath 0 +\use_natbib 0 +\use_numerical_citations 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 @@ -30,7 +32,7 @@ SALOME Kernel resources for developer Antoine Yessayan, Paul Rascle \layout Date -Version 0.1 January 16, 2002 +Version 0.2 January 28, 2005 \layout Abstract ABSTRACT @@ -98,7 +100,7 @@ C++ Macros for trace and debug SALOME provides C++ macros for trace and debug. These macros are in \family typewriter -SALOME/src/utils/utilities.h +SALOME/src/SALOMELocalTrace/utilities.h \family default and this file must be included in C++ source. Some macros are activated only in debug mode, others are always activated. @@ -112,18 +114,26 @@ _DEBUG_ \family typewriter _DEBUG_ \family default - is undefined (release mode), the debug mode macros are defined empty (they - do nothing). + is undefined (release mode: +\family typewriter +configure --disable-debug --enable-production +\family default +), the debug mode macros are defined empty (they do nothing). So, when switching from debug to release, it is possible (and recommended) to let the macro calls unchanged in the source. \layout Standard -All the macros writing on the standard output start by flushing the standard - error. - At the end of the display those macros flush the standard output. +All the macros generate trace messages, stored in a circular buffer pool. + A separate thread reads the messages in the buffer pool, and, depending + on options given at SALOME start, writes the messages on the standard output, + a file, or send them via CORBA, in case of a multi machine configuration. \layout Standard -Two informations are systematically added in front of the information displayed: +Three informations are systematically added in front of the information + displayed: +\layout Itemize + +the thread number from which the message come from; \layout Itemize the name of the source file in which the macros is set; @@ -142,7 +152,7 @@ The C++ macro \family typewriter INFOS_COMPILATION \family default - writes on the standard output informations about the compiling process: + writes on the trace buffer pool informations about the compiling process: \layout Itemize @@ -208,7 +218,7 @@ _RELEASE_ \family typewriter INFOS \family default - writes on the standard output the string which has been passed in argument + writes on the trace buffer pool the string which has been passed in argument by the user. \layout Standard @@ -241,6 +251,53 @@ displays : \layout Verbatim main.cxx [5] : NORMAL END OF THE PROCESS +\layout Verbatim + +\layout Paragraph + + +\family roman +INTERRUPTION(str) +\layout Standard + +In both compiling mode +\family typewriter +_DEBUG_ +\family default + and +\family typewriter +_RELEASE_ +\family default +, The C++ macro +\family typewriter +INTERRUPTION +\family default + writes on the trace buffer pool the string, with a special +\family typewriter +ABORT +\family default + type. + When the thread in charge of collecting messages finds this message, it + terminates the application, after message treatment. +\layout Paragraph + +IMMEDIATE_ABORT(str) +\layout Standard + +In both compiling mode +\family typewriter +_DEBUG_ +\family default + and +\family typewriter +_RELEASE_ +\family default +, The C++ macro +\family typewriter +IMMEDIATE_ABORT +\family default + writes the message immediately on standard error and exits the application. + Remaining messages not treated by the message collector thread are lost. \layout Subsubsection Macros defined only in debug mode @@ -257,7 +314,7 @@ _DEBUG_ \family typewriter MESSAGE \family default - writes on the standard output the string which has been passed in argument + writes on the trace buffer pool the string which has been passed in argument by the user. In \family typewriter @@ -335,7 +392,7 @@ BEGIN_OF "Begin of " \family default to the one passed in argument by the user and displays the result on the - standard output. + trace buffer pool. In \family typewriter _RELEASE_ @@ -386,7 +443,7 @@ END_OF "Normal end of " \family default to the one passed in argument by the user and displays the result on the - standard output. + trace buffer pool. In \family typewriter _RELEASE_ @@ -483,8 +540,12 @@ _DEBUG_ ASSERT \family default checks the expression passed in argument to be not NULL. - If it is NULL the process is stopped and the condition is written on the - standard output. + If it is NULL the condition is written with the macro +\family typewriter +INTERRUPTION +\family default + (see above). + The process exits after trace of this last message. In \family typewriter _RELEASE_ diff --git a/doc/salome/kernel_resources.pdf b/doc/salome/kernel_resources.pdf index 35924a77e..b29cb2c04 100644 Binary files a/doc/salome/kernel_resources.pdf and b/doc/salome/kernel_resources.pdf differ diff --git a/doc/salome/kernel_resources.ps b/doc/salome/kernel_resources.ps index 7e2116598..cb78b16ba 100644 --- a/doc/salome/kernel_resources.ps +++ b/doc/salome/kernel_resources.ps @@ -9,7 +9,7 @@ %DVIPSCommandLine: dvips -t letter -o kernel_resources.ps %+ kernel_resources.dvi %DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2002.01.17:1829 +%DVIPSSource: TeX output 2005.01.28:1211 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -87,211 +87,212 @@ C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE 6C14FCA36C14F8A26C14F06C14E06C14C0000114006C5BEB1FF01F1F7BA42A>15 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc ectt1000 10 79 -/Fc 79 126 df<121FEA3F80EA7FC0EAFFE0B0EA7FC0AEEA1F00C7FCA7121FEA3F80EA7F -C0EAFFE0A5EA7FC0EA3F80EA1F000B3470B32C>33 D<003C131E007F137F481480A66C14 -00A6007E7FA6003E133EA3003C131E001C131C191977B32C>I<0107131C90380F803EA8 -011F137EEC007CA4003FB612E0B712F8A43A003E00F800A2EB7E01017C5BA8EBFC0301F8 -5BA2B712F8A4003F15E03A01F007C000A30003130F01E05BA86C486CC7FC25337DB22C> -I38 -D<143814FC13011303EB07F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F -5B485AA2123F90C7FCA25A127EA312FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F -12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB07F8EB03FC130113001438164272B92C> -40 D<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB -07E0A214F01303A214F81301A314FC1300AC130114F8A3130314F0A2130714E0A2EB0FC0 -131F1480133F14005B13FE485A485A485A485AEA3FC0485A48C7FC5A5A1270164279B92C ->II<147014F8AF00 -3FB612E0B712F8A4C700F8C7FCB0147025267DAB2C>II<007FB512F0B612F8A36C14F01D0579942C>I<121FEA3F80EA7FC0EAFFE0 -A5EA7FC0EA3F80EA1F000B0B708A2C>I<1507ED0F80A2151F16005D153E157E157CA215 -FC5D14015D14035D14075D140F5D141F92C7FC5C143EA2147E147C14FC5C13015C13035C -13075C130F5C131F91C8FC5B133EA2137E137C13FC5B12015B12035B12075B120F5B121F -90C9FCA25A123E127E127C12FC5AA2127021417BB92C>II<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C -1F1200B3AE007FB512E0B612F0A36C14E01C3477B32C>IIII<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090 -B512E015F8819038FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07 -E0A4123C127EB4FC150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80F -FC6CB55A6C5C000114C06C6C90C7FCEB0FF823347CB22C>I56 DI<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0 -EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>II<1502ED0F80151F -157F15FF913803FE00EC0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80 -000390C8FCEA07FCEA1FF8EA3FE0EAFF8090C9FCA27FEA3FE0EA1FF8EA07FC6CB4FCC67F -EB3FE06D7EEB07FC6D7E903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157F151F -150FED0200212A7BAD2C>I<007FB612F0B712F8A36C15F0CAFCA8007FB612F0B712F8A3 -6C15F025127DA12C>I<122012F87EB4FC7FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D -7EEB07FC6D7E903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157FA215FF913803 -FE00EC0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07 -FCEA1FF8EA3FE0EAFF8090C9FC12FC5A1220212A7BAD2C>I<14FE497EA4497FA214EFA2 -130781A214C7A2010F7FA314C390381F83F0A590383F01F8A490387E00FCA549137E90B5 -12FEA34880A29038F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE -6C15FC497E27347EB32C>65 D<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED -07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039 -F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF000 -7FB612E016C0B712806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9013F -13FD4913FFEBFF813901FE007F4848131FD807F0130F1507485A491303485A150148C7FC -A25A007EEC00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14 -F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F001 -00138025357DB32C>I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED -1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150F -ED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007F -B612F0B712F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A -91C8FCA5163C167EA8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA3 -7ED803F0C7FCA716781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5 -FC805C7E26337EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC481307 -3803FC01497E4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FC -A212FE5AA8913803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F -120F6D137F6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7 -FC26357DB32C>II<007FB512F8B612FC -A36C14F839000FC000B3B3A5007FB512F8B612FCA36C14F81E3379B22C>I75 D<387FFFE0B57EA36C5BD803F0C8FCB3 -AE16F0ED01F8A8007FB6FCB7FCA36C15F025337DB22C>IIII<007FB512 -C0B612F88115FF6C15802603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F0 -1507A2ED0FE0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B -25337EB22C>II<387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E -151FA26F7EA64B5AA2153F4BC7FCEC01FE140790B55A5D15E081819038E007FCEC01FE14 -00157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C ->I<90381FF80790B5EA0F804814CF000714FF5A381FF01F383FC003497E48C7FC007E14 -7F00FE143F5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EB -FFC06C14F06C6C7F01077F9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A2007814 -0712FCA56CEC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F8 -3F13C0D8700790C7FC23357CB32C>I<007FB612FCB712FEA43AFC007E007EA70078153C -C71400B3AF90383FFFFCA2497F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A3 -6C496C13C03B03F00001F800B3AF6D130300015DA26D130700005D6D130F017F495A6D6C -485AECE0FF6DB5C7FC6D5B010313F86D5B9038003F802B3480B22C>I87 D<3A3FFF03FFE0484913F0 -148714076C6D13E03A01F800FE007F0000495A13FE017E5BEB7F03013F5B1487011F5B14 -CF010F5B14FF6D5BA26D90C7FCA26D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7 -EC87F0EB3F83EC03F8EB7F01017E7FEBFE00497F0001147E49137F000380491480151FD8 -7FFEEBFFFC6D5AB514FE6C15FC497E27337EB22C>II<003FB612C04815E0A4007EC7EA1FC0ED -3F80A2ED7F00157E15FE4A5A003C5CC712034A5AA24A5A4A5AA24A5A4AC7FCA214FE495A -A2495A495AA2495A495AA2495A49C8FCA213FE485AA24848EB03C049EB07E01207485A5B -121F485AA248C7FCB7FCA46C15C023337CB22C>I<387FFFFCB512FEA314FC00FCC7FCB3 -B3B3B512FC14FEA36C13FC17416FB92C>I<127012F8A27E127C127E123E123F7EA27F12 -0F7F12077F12037F12017F12007F137C137E133EA2133F7F80130F801307801303801301 -80130080147C147E143EA2143F8081140F81140781140381140181140081157CA2157E15 -3E153F811680150FA2ED070021417BB92C>I<387FFFFCB512FEA37EC7127EB3B3B3387F -FFFEB5FCA36C13FC17417DB92C>I<007FB6FCB71280A46C150021067B7D2C>95 -D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8 -127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F -14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C> -97 DI<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E -4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F0039 -07FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>IIII -II< -1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007F -B512FCB612FEA36C14FC1F3479B32C>I107 D<387FFFE0B57EA37EEA0003B3B3A5007F -B61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD8 -7FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B3 -3B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397F -F01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B -5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>II<397FF01FE0 -39FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F8 -5BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE0 -9138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B2736 -7FA32C>I114 -D<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F1400 -13F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00 -FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC -0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0 -A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I< -3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7 -FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C -15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2017E13FC -013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA2 -6D5A147C27247EA32C>II<3A3FFF03 -FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E09038 -0FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB -0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514 -FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0 -000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F -815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E14 -7CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA -07E027367EA32C>I<003FB612E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF004A5A00 -3C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC495AEB0FF0495A495A495A49C8FC4848 -EB01E04848EB03F0485A485A485A485A485AB7FCA46C15E024247DA32C>I<15FF020713 -80141F147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A49C8FC6D -7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13FF6E1380141F1407020013002141 -7BB92C>I125 D E +%DVIPSBitmapFont: Fc ectt1000 10 80 +/Fc 80 126 df<007FB512F0B612F8A36C14F01D0579942C>21 D<121FEA3F80EA7FC0EA +FFE0B0EA7FC0AEEA1F00C7FCA7121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B34 +70B32C>33 D<003C131E007F137F481480A66C1400A6007E7FA6003E133EA3003C131E00 +1C131C191977B32C>I<0107131C90380F803EA8011F137EEC007CA4003FB612E0B712F8 +A43A003E00F800A2EB7E01017C5BA8EBFC0301F85BA2B712F8A4003F15E03A01F007C000 +A30003130F01E05BA86C486CC7FC25337DB22C>I38 D<143814FC13011303EB07F8EB0FF0EB1FC0EB +3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A127EA312FE5AAC7E +127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB +07F8EB03FC130113001438164272B92C>40 D<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E +6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314FC1300AC1301 +14F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A485A485A485AEA +3FC0485A48C7FC5A5A1270164279B92C>II<147014F8AF003FB612E0B712F8A4C700F8C7FCB0147025267DAB +2C>II<007FB512F0B612F8A36C14F01D +0579942C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>I<1507ED +0F80A2151F16005D153E157E157CA215FC5D14015D14035D14075D140F5D141F92C7FC5C +143EA2147E147C14FC5C13015C13035C13075C130F5C131F91C8FC5B133EA2137E137C13 +FC5B12015B12035B12075B120F5B121F90C9FCA25A123E127E127C12FC5AA2127021417B +B92C>II<1307497EA2131FA2133F13 +7F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14E01C3477 +B32C>IIII<000FB512FE4880 +A35D0180C8FCADEB83FE90389FFF8090B512E015F8819038FE03FE9038F000FF01C07F49 +EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C127EB4FC150F16C0A248141F007EEC3F +80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C5C000114C06C6C90C7FCEB0FF82334 +7CB22C>I56 DI<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA +3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>I< +EA0F80EA1FC0EA3FE0EA7FF0A5EA3FE0EA1FC0EA0F80C7FCAEEA0F80EA1FE0EA3FF0EA7F +F8A213FCA3123F121F120F120013F8A21201EA03F01207EA1FE0EA7FC0EAFF80130012FC +12700E3071A32C>I<1502ED0F80151F157F15FF913803FE00EC0FFCEC1FF0EC7FE0ECFF +80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA3FE0EAFF8090C9FC +A27FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E903800FF80EC7FE0EC1F +F0EC0FFCEC03FE913800FF80157F151F150FED0200212A7BAD2C>I<007FB612F0B712F8 +A36C15F0CAFCA8007FB612F0B712F8A36C15F025127DA12C>I<122012F87EB4FC7FEA3F +E0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E903800FF80EC7FE0EC1FF0EC0FFC +EC03FE913800FF80157FA215FF913803FE00EC0FFCEC1FF0EC7FE0ECFF80D903FEC7FC49 +5AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA3FE0EAFF8090C9FC12FC5A1220212A +7BAD2C>I<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C390381F83F0A590 +383F01F8A490387E00FCA549137E90B512FEA34880A29038F8003FA34848EB1F80A40007 +15C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>65 +D<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0 +A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501 +ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016C0B712806CECFE +0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FFEBFF813901FE00 +7F4848131FD807F0130F1507485A491303485A150148C7FCA25A007EEC00F01600A212FE +5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F +6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F00100138025357DB32C>I<007F +B5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F01503 +16F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC +03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712F8A37E3903F000 +01A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB6 +12FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7FCA716781600A5 +15F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26337EB22C>I<90 +3901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC01497E4848137F4848 +133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA8913803FFF84A13 +FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F6C7E6C6C13FF6D +5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB32C>II<007FB512F8B612FCA36C14F839000FC000B3B3A5 +007FB512F8B612FCA36C14F81E3379B22C>I75 D<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A8007FB6FCB7 +FCA36C15F025337DB22C>IIII<007FB512C0B612F88115FF6C15802603 +F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90 +B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>II< +387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4B +C7FCEC01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D8 +7FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>I<90381FF80790B5EA0F80 +4814CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F +00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F90 +38007FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F +806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357C +B32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA249 +7F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F800 +B3AF6D130300015DA26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B01 +0313F86D5B9038003F802B3480B22C>I87 D<3A3FFF03FFE0484913F0148714076C6D13E03A01F800 +FE007F0000495A13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7 +FCA26D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01 +017E7FEBFE00497F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15 +FC497E27337EB22C>II<003FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A +003C5CC712034A5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA249 +5A49C8FCA213FE485AA24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C +15C023337CB22C>I<387FFFFCB512FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17 +416FB92C>I<127012F8A27E127C127E123E123F7EA27F120F7F12077F12037F12017F12 +007F137C137E133EA2133F7F80130F80130780130380130180130080147C147E143EA214 +3F8081140F81140781140381140181140081157CA2157E153E153F811680150FA2ED0700 +21417BB92C>I<387FFFFCB512FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC17417DB9 +2C>I<007FB6FCB71280A46C150021067B7D2C>95 D<3801FFF0000713FE001F6D7E15E0 +48809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F +48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15 +FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>97 DI<903803FFE0011F13F801 +7F13FE48B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2 +127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0 +010390C7FC21247AA32C>IIIIII<1307EB1FC0A2497EA36D5AA20107C7FC +90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F3479B32C> +I107 D<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C158022337BB22C>I< +3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07FE1FFC3E01FCEBF8 +3F496C487E01F013E001E013C0A301C01380B33B7FFC3FF87FF0027F13FFD8FFFE6D13F8 +D87FFC4913F0023F137F2D2481A32C>I<397FF01FE039FFF87FFC9038F9FFFE01FB7F6C +B6FC00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C +01E0140029247FA32C>II<397FF01FE039FFF8FFF801FB13FE90B6FC6C15800001 +9038F07FC09138801FE091380007F049EB03F85BED01FC491300A216FE167EA816FE6D14 +FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC091B51280160001FB5B01F813 +F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I114 D<90387FF8700003B512F8120F5A5A387F +C00F387E00034813015AA36CEB00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0 +C66C13F8010113FCEB0007EC00FE0078147F00FC143F151F7EA26C143F6D133E6D13FE90 +38F007FC90B5FC15F815E000F8148039701FFC0020247AA32C>I<131E133FA9007FB6FC +B71280A36C1500D8003FC8FCB1ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6DB5128016 +0001035B6D13F89038003FE0232E7EAD2C>I<3A7FF003FF80486C487FA3007F7F0001EB +000FB3A3151FA2153F6D137F3900FE03FF90B7FC6D15807F6D13CF902603FE0713002924 +7FA32C>I<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00011500A2 +6D5B0000143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA2 +14C701075BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>II<3A3FFF03FFF048018713F8A36C010313F03A00FC00 +7E005D90387E01F8013F5BEB1F83EC87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D +5A147C14FE130180903803EF80903807CFC0EB0FC7EC83E090381F01F0013F7FEB7E0001 +7C137C49137E0001803A7FFF01FFFC1483B514FE6C15FC140127247EA32C>I<3A7FFF01 +FFFCB5008113FE148314816C010113FC3A03E0000F806C7E151F6D140012005D6D133E13 +7C017E137E013E137CA2013F13FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C013 +0114F75DEB00FFA292C7FC80A2143EA2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87 +E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA07E027367EA32C>I<003FB612E04815F0 +A4007EC7EA1FE0ED3FC0ED7F80EDFF004A5A003C495AC7485A4A5A4A5A4A5A4A5A4AC7FC +EB01FC495AEB0FF0495A495A495A49C8FC4848EB01E04848EB03F0485A485A485A485A48 +5AB7FCA46C15E024247DA32C>I<15FF02071380141F147F91B512004913C04AC7FCEB03 +F85CB31307EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B380EB01FE +ECFFC06D13FF6E1380141F14070200130021417BB92C>I125 +D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fd ecbx1200 12 36 /Fd 36 121 df<160C161EB3B0007FBB1280BC12C0A26C1A80C9001ECAFCB3B0160C4A4A @@ -439,128 +440,131 @@ F0017F13FC3901FC07FF2603F003138048486C13C0496C13E0EA0FF86D14F0487EA66C48 804AC7FC14F090C9FCA7EB03FE90381FFFE0017F13F89038FE07FC9038F003FFD9C00113 80496C13C090C7FC000E15E0C8127F16F0A216F8A3121FEA3FC0487E12FF7FA316F05B15 FFD87F8014E0007EC713C0003E5B003F4913806C6C481300390FF01FFE6CB512F8000114 -E06C6C1380D90FF8C7FC25377BB530>53 D<123C123EEA3FE090B71280A41700485D5E5E -5E5EA2007CC7EA0FC000784A5A4BC7FC00F8147E485C5D14014A5AC7485A4A5AA24A5A14 -3F4AC8FCA214FEA213015C1303A21307A2130F5CA2131FA5133FA96D5A6D5A6D5A29397B -B730>55 D65 -DII< -B87E17F817FF18C028007FF8000713F09338007FF8EF1FFE717E050313807113C0A27113 -E0F07FF0A2F03FF8A219FC181FA219FEA419FFAC19FEA419FC183FA219F8187F19F0F0FF -E0A24D13C04D13804D1300EF1FFEEF7FFC933807FFF0B912C095C7FC17FC178040397DB8 -49>IIII73 D76 DIIIIIII<003FB91280A4D9F800EBF003D87FC09238007FC049 -161F007EC7150FA2007C1707A200781703A400F818E0481701A4C892C7FCB3AE010FB7FC -A43B387DB742>II<007FB9FCBA1280A36C1800 -3905786A4A>95 D97 D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC91 -38FE03FFDAF00013804AEB7FC00280EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FC -A3EE1FF8A217F06E133F6EEB7FE06E14C0903AFDF001FF80903AF8FC07FE009039F03FFF -F8D9E00F13E0D9C00390C7FC2F3A7EB935>I<903801FFC0010F13FC017F13FFD9FF8013 -802603FE0013C048485AEA0FF8121F13F0123F6E13804848EB7F00151C92C7FC12FFA912 -7FA27F123FED01E06C7E15036C6CEB07C06C6C14806C6C131FC69038C07E006DB45A010F -13F00101138023257DA42A>II<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F -484814C0001FEC1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127F -A36C7E1678121F6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F -13FC010113E025257DA42C>II<161FD907FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF8 -01131F48486C138F003F15CF4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C -6C4890C7FC3907FE07FE48B512F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B5 -12F8EDFF8016E06C15F86C816C815A001F81393FC0000F48C8138048157F5A163FA36C15 -7F6C16006D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F0 -2B377DA530>I<13FFB5FCA412077EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01 -138014784A7E4A14C05CA25CA291C7FCB3A3B5D8FC3F13FFA4303A7DB935>II<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>108 D<01FED97FE0EB0FFC00 -FF902601FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00903887801F -000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB500 -83B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C01 -1380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435> -I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D7E -A2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A6C -6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039FF01 -FF80B5000F13F0023F13FC9138FE07FFDAF00113800003496C13C00280EB7FE091C713F0 -EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0DAF003 -13809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357EA435> -I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138807F -80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>114 D<90383FF0383903FFFE -F8000F13FF381FC00F383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C -13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE140700F0130114007E15 -7E7E157C6C14FC6C14F8EB80019038F007F090B512C000F8140038E01FF81F257DA426> -I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80 -F014816CEBC3E090383FFFC06D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFF -A4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F00103 -138030257DA435>III -II +E06C6C1380D90FF8C7FC25377BB530>53 D<49B47E010F13F0013F13FC9038FE01FF3A01 +F8007F804848EB3FC04848EB1FE0150F484814F01507121FA27F7F7F6D130F01FF14E014 +C09138E01FC06CEBF83F9138FE7F806C9038FFFE005D6C14F06C14FC6C14FF6D14806D14 +C090B612E0D803FD14F02607F07F13F848487E261FC00F13FC383F8003007F010013FE90 +C7127F151F00FE140715031501A21500A216FC7E6C14016D14F86C6C13036DEB07F06C6C +EB0FE0D80FFEEB7FC00003B61200C614FC013F13F00103138027377CB530>56 +D65 DIIIIII73 +D76 DII< +EDFFF8020FEBFF80027F14F0903A01FFC01FFC010790380007FFD91FFC010113C0D93FF0 +6D6C7E49486E7E49486E7E48496E7E48834890C86C7EA248486F1380A248486F13C0A200 +3F18E0A348486F13F0A400FF18F8AC007F18F06D5DA3003F18E0A26D5D001F18C0A26C6C +4B13806C18006E5C6C6D4A5A6C5F6C6D4A5A6D6C4A5AD93FFC49485A6DB401075B0107D9 +C01F90C7FC010190B512FC6D6C14F0020F1480020001F8C8FC3D3B7BB948>IIIII<003FB91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA200 +7C1707A200781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>II<007FB9FCBA1280A36C18003905786A4A>95 +D97 D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF000 +13804AEB7FC00280EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F0 +6E133F6EEB7FE06E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9 +C00390C7FC2F3A7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C0 +48485AEA0FF8121F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01 +E06C7E15036C6CEB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023 +257DA42A>I +I<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC +1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F +6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025 +257DA42C>II<161FD907FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C13 +8F003F15CF4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907 +FE07FE48B512F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E0 +6C15F86C816C815A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C +6C495AD81FF0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I< +13FFB5FCA412077EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A +14C05CA25CA291C7FCB3A3B5D8FC3F13FFA4303A7DB935>II<13FFB5 +FCA412077EB3B3ACB512FCA4163A7DB91B>108 D<01FED97FE0EB0FFC00FF902601FFFC +90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00903887801F000749DACF00 +7F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB50083B512F0A44C +257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C01138000071378 +0003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435>I<903801FFC0 +010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D7EA2003F814913 +03007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A6C6C49 +5A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039FF01FF80B5000F13 +F0023F13FC9138FE07FFDAF00113800003496C13C00280EB7FE091C713F0EE3FF8A2EE1F +FCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0DAF00313809139FC07 +FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357EA435>I<9038FE03F0 +00FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138807F80ED3F00150C +92C7FC91C8FCB3A2B512FEA422257EA427>114 D<90383FF0383903FFFEF8000F13FF38 +1FC00F383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C13FCECFF806C +14C06C14F06C14F81203C614FC131F9038007FFE140700F0130114007E157E7E157C6C14 +FC6C14F8EB80019038F007F090B512C000F8140038E01FF81F257DA426>I<130FA55BA4 +5BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80F014816CEBC3 +E090383FFFC06D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFFA4000714016C +80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F00103138030257DA4 +35>IIIII E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff ecbx1440 14.4 24 @@ -764,17 +768,15 @@ F0130013F8023C5C0001017C147EED01F813FC027814FE0000D9F8005BA24A13FC017C5D 075C130FA2495A1220D8383FC8FCEA3FFEA25B5BEA0FE023367FA426>I E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh ecrm1000 10 70 -/Fh 70 123 df27 DII<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B12 -0F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C -7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40 +12C0A32A3B7FBA2E>I<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485A +A212075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F1207 +7F1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2 5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<1530B3A8B912FCA2C800 @@ -1069,7 +1071,7 @@ letter 1 0 bop 0 201 a Fi(SALOME)54 b(Kernel)g(resources)f(fo)l(r)g(develop)t (er)p 0 315 3900 24 v 0 428 a Fh(An)n(toine)28 b(Y)-7 b(essa)n(y)n(an,)25 b(P)n(aul)j(Rascle)1735 b(V)-7 b(ersion)27 -b(0.1)g(Jan)n(uary)e(16,)i(2002)0 734 y Fg(This)33 b(do)r(cument)g +b(0.2)g(Jan)n(uary)e(28,)i(2005)0 734 y Fg(This)33 b(do)r(cument)g (describ)r(es)g(the)g(development)f(environment)g(fo)n(r)i(C++)e(and)h (Python.)53 b(Mak)n(e\034les)32 b(generation)g(and)h(usage)0 848 y(a)n(re)40 b(intro)r(duced)f(in)h(another)g(do)r(cument:)61 @@ -1105,7 +1107,7 @@ g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(5)315 3101 y(2.1.2)94 b(usage)79 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)134 b(5)125 3257 y(2.2)83 b(CORBA)28 b(exceptions)f(.)41 +(.)h(.)134 b(6)125 3257 y(2.2)83 b(CORBA)28 b(exceptions)f(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)134 b(6)315 3414 y(2.2.1)94 b(de\034nition)67 @@ -1116,13 +1118,13 @@ b(usage)79 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)0 3810 y Fe(3)77 b(Miscellaneous)29 b(to)s(ols)2919 -b(7)125 3966 y Fh(3.1)83 b(Singleton)c(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h +b(8)125 3966 y Fh(3.1)83 b(Singleton)c(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)f(.)h(.)f(.)h(.)134 b(7)315 4123 y(3.1.1)94 b(De\034nition)50 +(.)f(.)h(.)f(.)h(.)134 b(8)315 4123 y(3.1.1)94 b(De\034nition)50 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f -(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)315 4279 y(3.1.2)94 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(8)315 4279 y(3.1.2)94 b(Usage)63 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 @@ -1164,280 +1166,302 @@ b(When)32 b(an)g(end)g(user)f(is)g(confron)n(ted)g(to)h(suc)n(h)f(a)h (eople)f(in)g(c)n(harge)e(of)i(SALOME)h(installation,)0 1366 y(or)i(to)g(the)h(dev)n(elopmen)n(t)f(team,)h(follo)n(wing)e(the)i (kind)g(of)f(error.)0 1658 y Fd(1.2)112 b(C++)38 b(Macros)g(for)f -(trace)g(and)i(debug)0 1868 y Fh(SALOME)23 b(pro)n(vides)d(C++)h -(macros)g(for)g(trace)h(and)f(debug.)35 b(These)22 b(macros)e(are)i(in) -g Fc(SALOME/src/utils)o(/u)o(ti)o(lit)o(ie)o(s.)o(h)0 -1981 y Fh(and)30 b(this)h(\034le)g(m)n(ust)g(b)r(e)g(included)g(in)g -(C++)f(source.)45 b(Some)30 b(macros)f(are)h(activ)-5 -b(ated)30 b(only)g(in)h(debug)g(mo)r(de,)g(others)f(are)0 -2095 y(alw)n(a)n(ys)c(activ)-5 b(ated.)37 b(T)-7 b(o)27 -b(activ)-5 b(ate)28 b(the)g(debug)f(mo)r(de,)h Fc(_DEBUG_)d -Fh(m)n(ust)j(b)r(e)g(de\034ned,)g(whic)n(h)g(is)g(the)g(case)f(when)h -(SALOME)0 2208 y(Mak)n(e\034les)k(are)g(generated)f(from)i -(con\034gure,)g(without)g(options.)53 b(When)33 b Fc(_DEBUG_)d -Fh(is)j(unde\034ned)g(\(release)f(mo)r(de\),)j(the)0 -2322 y(debug)c(mo)r(de)h(macros)d(are)i(de\034ned)h(empt)n(y)f(\(they)h -(do)f(nothing\).)48 b(So,)32 b(when)g(switc)n(hing)f(from)g(debug)g(to) -g(release,)g(it)h(is)0 2436 y(p)r(ossible)27 b(\(and)h(recommended\))f -(to)g(let)h(the)g(macro)f(calls)f(unc)n(hanged)h(in)h(the)g(source.)0 -2592 y(All)23 b(the)h(macros)d(writing)i(on)f(the)i(standard)e(output)h -(start)g(b)n(y)f(\035ushing)h(the)g(standard)f(error.)34 -b(A)n(t)23 b(the)g(end)h(of)f(the)g(displa)n(y)0 2706 -y(those)k(macros)f(\035ush)i(the)g(standard)e(output.)0 -2862 y(T)-7 b(w)n(o)27 b(informations)f(are)h(systematically)f(added)i -(in)g(fron)n(t)f(of)g(the)h(information)f(displa)n(y)n(ed:)125 -3102 y Fb(\017)41 b Fh(the)28 b(name)f(of)g(the)h(source)f(\034le)g(in) -h(whic)n(h)g(the)g(macros)e(is)h(set;)125 3282 y Fb(\017)41 -b Fh(the)28 b(line)f(n)n(um)n(b)r(er)h(of)f(the)h(source)e(\034le)i(at) -g(whic)n(h)f(the)h(macro)e(is)i(set.)0 3554 y Fe(1.2.1)94 -b(Macros)32 b(de\034ned)f(in)g(debug)h(and)g(release)f(mo)s(des)0 -3764 y(INF)m(OS_COMPILA)-8 b(TION)84 b Fh(The)30 b(C++)f(macro)g -Fc(INFOS_COMPILATIO)o(N)24 b Fh(writes)30 b(on)g(the)g(standard)f -(output)i(infor-)0 3878 y(mations)c(ab)r(out)h(the)f(compiling)h(pro)r -(cess:)125 4117 y Fb(\017)41 b Fh(the)28 b(name)f(of)g(the)h(compiler)f -(:)37 b Fc(g++,)42 b(KCC,)g(CC,)g(pgCC)p Fh(;)125 4297 -y Fb(\017)f Fh(the)28 b(date)f(and)g(the)h(time)g(of)g(the)g(compiling) -f(pro)r(cessing)f(pro)r(cess.)0 4537 y(This)35 b(macro)f -Fc(INFOS_COMPILATIO)o(N)29 b Fh(do)r(es)35 b(not)g(ha)n(v)n(e)f(an)n(y) -g(argumen)n(t.)58 b(Moreo)n(v)n(er,)35 b(it)g(is)g(de\034ned)h(in)f(b)r -(oth)h(compiling)0 4650 y(mo)r(de)28 b(:)37 b Fc(_DEBUG_)24 -b Fh(and)k Fc(_RELEASE_)p Fh(.)0 4807 y(Example)g(:)0 -5046 y Fc(#include)40 b("utilities.h")0 5160 y(int)i(main\(int)e(argc)i -(,)i(char)d(**argv\))0 5274 y({)87 5387 y(INFOS_COMPILATIO)o(N;)p -eop +(trace)g(and)i(debug)0 1868 y Fh(SALOME)119 b(pro)n(vides)e(C++)h +(macros)f(for)i(trace)f(and)g(debug.)310 b(These)119 +b(macros)e(are)h(in)0 1981 y Fc(SALOME/src/SALOM)o(EL)o(oca)o(lT)o(ra)o +(ce/)o(ut)o(il)o(iti)o(es)o(.h)44 b Fh(and)50 b(this)g(\034le)h(m)n +(ust)f(b)r(e)g(included)h(in)g(C++)e(source.)103 b(Some)0 +2095 y(macros)22 b(are)g(activ)-5 b(ated)23 b(only)g(in)g(debug)h(mo)r +(de,)g(others)e(are)h(alw)n(a)n(ys)e(activ)-5 b(ated.)35 +b(T)-7 b(o)23 b(activ)-5 b(ate)23 b(the)h(debug)f(mo)r(de,)h +Fc(_DEBUG_)0 2208 y Fh(m)n(ust)i(b)r(e)h(de\034ned,)g(whic)n(h)f(is)h +(the)f(case)g(when)g(SALOME)h(Mak)n(e\034les)e(are)h(generated)f(from)h +(con\034gure,)f(without)i(options.)0 2322 y(When)g Fc(_DEBUG_)c +Fh(is)j(unde\034ned)h(\(release)f(mo)r(de:)36 b Fc(configure)k +(\025disable-debug)d(\025enable-producti)o(on)p Fh(\),)21 +b(the)26 b(debug)0 2436 y(mo)r(de)i(macros)e(are)h(de\034ned)h(empt)n +(y)g(\(they)h(do)e(nothing\).)38 b(So,)28 b(when)g(switc)n(hing)g(from) +f(debug)h(to)g(release,)e(it)j(is)e(p)r(ossible)0 2549 +y(\(and)h(recommended\))f(to)g(let)h(the)g(macro)e(calls)h(unc)n +(hanged)g(in)h(the)g(source.)0 2706 y(All)21 b(the)g(macros)e(generate) +g(trace)h(messages,)h(stored)e(in)i(a)g(circular)e(bu\033er)i(p)r(o)r +(ol.)34 b(A)21 b(separate)e(thread)h(reads)g(the)h(messages)0 +2819 y(in)27 b(the)g(bu\033er)f(p)r(o)r(ol,)h(and,)g(dep)r(ending)g(on) +f(options)g(giv)n(en)f(at)i(SALOME)g(start,)f(writes)g(the)h(messages)e +(on)h(the)h(standard)0 2933 y(output,)h(a)f(\034le,)h(or)f(send)g(them) +h(via)f(CORBA,)h(in)g(case)e(of)i(a)f(m)n(ulti)h(mac)n(hine)f +(con\034guration.)0 3089 y(Three)g(informations)g(are)f(systematically) +h(added)g(in)h(fron)n(t)f(of)g(the)h(information)f(displa)n(y)n(ed:)125 +3329 y Fb(\017)41 b Fh(the)28 b(thread)f(n)n(um)n(b)r(er)g(from)g(whic) +n(h)h(the)f(message)g(come)g(from;)125 3509 y Fb(\017)41 +b Fh(the)28 b(name)f(of)g(the)h(source)f(\034le)g(in)h(whic)n(h)g(the)g +(macros)e(is)h(set;)125 3689 y Fb(\017)41 b Fh(the)28 +b(line)f(n)n(um)n(b)r(er)h(of)f(the)h(source)e(\034le)i(at)g(whic)n(h)f +(the)h(macro)e(is)i(set.)0 3961 y Fe(1.2.1)94 b(Macros)32 +b(de\034ned)f(in)g(debug)h(and)g(release)f(mo)s(des)0 +4171 y(INF)m(OS_COMPILA)-8 b(TION)84 b Fh(The)28 b(C++)g(macro)g +Fc(INFOS_COMPILATI)o(ON)22 b Fh(writes)29 b(on)f(the)h(trace)f +(bu\033er)h(p)r(o)r(ol)g(infor-)0 4285 y(mations)e(ab)r(out)h(the)f +(compiling)h(pro)r(cess:)125 4525 y Fb(\017)41 b Fh(the)28 +b(name)f(of)g(the)h(compiler)f(:)37 b Fc(g++,)42 b(KCC,)g(CC,)g(pgCC)p +Fh(;)125 4705 y Fb(\017)f Fh(the)28 b(date)f(and)g(the)h(time)g(of)g +(the)g(compiling)f(pro)r(cessing)f(pro)r(cess.)0 4944 +y(This)35 b(macro)f Fc(INFOS_COMPILATIO)o(N)29 b Fh(do)r(es)35 +b(not)g(ha)n(v)n(e)f(an)n(y)g(argumen)n(t.)58 b(Moreo)n(v)n(er,)35 +b(it)g(is)g(de\034ned)h(in)f(b)r(oth)h(compiling)0 5058 +y(mo)r(de)28 b(:)37 b Fc(_DEBUG_)24 b Fh(and)k Fc(_RELEASE_)p +Fh(.)0 5214 y(Example)g(:)p eop %%Page: 3 3 3 2 bop 0 -167 3900 5 v 0 -200 a Fe(1.)73 b(T)-8 b(race)34 -b(and)e(debug)f(Utilities)2644 b Fh(3)87 162 y Fc(...)0 -275 y(})0 548 y Fe(INF)m(OS\(str\))83 b Fh(In)39 b(b)r(oth)f(compiling) -g(mo)r(de)g Fc(_DEBUG_)d Fh(and)j Fc(_RELEASE_)p Fh(,)f(The)h(C++)g -(macro)e Fc(INFOS)g Fh(writes)i(on)g(the)0 661 y(standard)27 -b(output)h(the)g(string)e(whic)n(h)i(has)f(b)r(een)h(passed)f(in)g -(argumen)n(t)g(b)n(y)g(the)h(user.)0 818 y(Example)g(:)0 -1057 y Fc(#include)40 b("utilities.h")0 1171 y(int)i(main\(int)e(argc)i -(,)i(char)d(**argv\))0 1285 y({)87 1398 y(...)87 1512 -y(INFOS\("NORMAL)d(END)43 b(OF)f(THE)h(PROCESS"\);)87 -1625 y(return)e(0;)0 1739 y(})0 1978 y Fh(displa)n(ys)26 -b(:)0 2218 y Fc(main.cxx)40 b([5])i(:)i(NORMAL)d(END)h(OF)h(THE)f -(PROCESS)0 2490 y Fe(1.2.2)94 b(Macros)32 b(de\034ned)f(only)g(in)h -(debug)f(mo)s(de)0 2701 y(MESSA)m(GE\(str\))83 b Fh(In)19 -b Fc(_DEBUG_)d Fh(compiling)j(mo)r(de)g(only)-7 b(,)20 -b(the)f(C++)g(macro)e Fc(MESSAGE)f Fh(writes)j(on)f(the)i(standard)e -(output)0 2814 y(the)34 b(string)g(whic)n(h)g(has)f(b)r(een)i(passed)e -(in)i(argumen)n(t)e(b)n(y)g(the)i(user.)56 b(In)34 b -Fc(_RELEASE_)c Fh(compiling)k(mo)r(de,)i(this)e(macro)f(is)0 -2928 y(blank.)0 3084 y(Example)28 b(:)0 3324 y Fc(#include)40 -b("utilities.h")0 3437 y(#include)g()0 3551 y(using)h -(namespace)f(std;)0 3664 y(int)i(main\(int)e(argc)i(,)i(char)d -(**argv\))0 3778 y({)87 3892 y(...)87 4005 y(const)h(char)f(*str)h(=)i -("Salome";)87 4119 y(MESSAGE\(str\);)87 4232 y(...)e(const)g(string)f -(st;)87 4346 y(st)i(=)g("Aster";)87 4459 y(MESSAGE\(c_str\(st)o(+")37 -b(and)42 b(CASTEM"\)\);)87 4573 y(return)f(0;)0 4687 -y(})0 4926 y Fh(displa)n(ys)26 b(:)0 5166 y Fc(-)43 b(Trace)f(main.cxx) -e([8])i(:)h(Salome)0 5279 y(-)g(Trace)f(main.cxx)e([12])i(:)h(Aster)e -(and)i(CASTEM)p eop +b(and)e(debug)f(Utilities)2644 b Fh(3)0 162 y Fc(#include)40 +b("utilities.h")0 275 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0 +389 y({)87 502 y(INFOS_COMPILATIO)o(N;)87 616 y(...)0 +730 y(})0 1002 y Fe(INF)m(OS\(str\))83 b Fh(In)23 b(b)r(oth)g +(compiling)f(mo)r(de)h Fc(_DEBUG_)d Fh(and)i Fc(_RELEASE_)p +Fh(,)e(The)j(C++)f(macro)f Fc(INFOS)f Fh(writes)j(on)f(the)h(trace)0 +1116 y(bu\033er)28 b(p)r(o)r(ol)f(the)h(string)f(whic)n(h)g(has)g(b)r +(een)h(passed)f(in)h(argumen)n(t)e(b)n(y)i(the)g(user.)0 +1272 y(Example)g(:)0 1512 y Fc(#include)40 b("utilities.h")0 +1625 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0 +1739 y({)87 1852 y(...)87 1966 y(INFOS\("NORMAL)d(END)43 +b(OF)f(THE)h(PROCESS"\);)87 2080 y(return)e(0;)0 2193 +y(})0 2433 y Fh(displa)n(ys)26 b(:)0 2672 y Fc(main.cxx)40 +b([5])i(:)i(NORMAL)d(END)h(OF)h(THE)f(PROCESS)0 3058 +y Fe(INTERR)m(UPTION\(str\))84 b Fh(In)72 b(b)r(oth)h(compiling)e(mo)r +(de)i Fc(_DEBUG_)c Fh(and)j Fc(_RELEASE_)p Fh(,)80 b(The)72 +b(C++)f(macro)0 3172 y Fc(INTERRUPTION)34 b Fh(writes)k(on)g(the)h +(trace)f(bu\033er)g(p)r(o)r(ol)h(the)g(string,)h(with)g(a)e(sp)r(ecial) +g Fc(ABORT)e Fh(t)n(yp)r(e.)71 b(When)39 b(the)g(thread)0 +3285 y(in)28 b(c)n(harge)e(of)h(collecting)g(messages)f(\034nds)i(this) +f(message,)g(it)h(terminates)f(the)h(application,)f(after)g(message)f +(treatmen)n(t.)0 3558 y Fe(IMMEDIA)-8 b(TE_ABOR)g(T\(str\))83 +b Fh(In)48 b(b)r(oth)f(compiling)g(mo)r(de)h Fc(_DEBUG_)c +Fh(and)j Fc(_RELEASE_)p Fh(,)i(The)e(C++)f(macro)0 3672 +y Fc(IMMEDIATE_ABORT)29 b Fh(writes)35 b(the)g(message)f(immediately)h +(on)g(standard)f(error)f(and)i(exits)g(the)h(application.)59 +b(Remain-)0 3785 y(ing)27 b(messages)f(not)i(treated)f(b)n(y)g(the)h +(message)e(collector)g(thread)h(are)g(lost.)0 4058 y +Fe(1.2.2)94 b(Macros)32 b(de\034ned)f(only)g(in)h(debug)f(mo)s(de)0 +4268 y(MESSA)m(GE\(str\))83 b Fh(In)32 b Fc(_DEBUG_)e +Fh(compiling)i(mo)r(de)g(only)-7 b(,)33 b(the)g(C++)f(macro)f +Fc(MESSAGE)e Fh(writes)j(on)g(the)g(trace)g(bu\033er)0 +4381 y(p)r(o)r(ol)d(the)g(string)f(whic)n(h)h(has)f(b)r(een)i(passed)e +(in)h(argumen)n(t)e(b)n(y)i(the)g(user.)40 b(In)29 b +Fc(_RELEASE_)d Fh(compiling)i(mo)r(de,)h(this)g(macro)0 +4495 y(is)e(blank.)0 4652 y(Example)h(:)0 4891 y Fc(#include)40 +b("utilities.h")0 5005 y(#include)g()0 5118 y(using)h +(namespace)f(std;)0 5232 y(int)i(main\(int)e(argc)i(,)i(char)d +(**argv\))0 5345 y({)p eop %%Page: 4 4 4 3 bop 0 -167 3900 5 v 0 -200 a Fe(1.)73 b(T)-8 b(race)34 -b(and)e(debug)f(Utilities)2644 b Fh(4)0 162 y Fe(BEGIN_OF\(func_name\)) -82 b Fh(In)28 b Fc(_DEBUG_)c Fh(compiling)i(mo)r(de,)i(The)f(C++)f -(macro)g Fc(BEGIN_OF)d Fh(app)r(ends)k(the)h(string)0 -275 y Fc("Begin)41 b(of)i(")27 b Fh(to)g(the)h(one)e(passed)h(in)g -(argumen)n(t)g(b)n(y)g(the)g(user)g(and)g(displa)n(ys)f(the)i(result)f -(on)g(the)g(standard)g(output.)37 b(In)0 389 y Fc(_RELEASE_)24 -b Fh(compiling)j(mo)r(de,)h(this)g(macro)e(is)h(blank.)0 -545 y(Example)h(:)0 751 y Fc(#include)40 b("utilities.h")0 -865 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0 -978 y({)87 1092 y(BEGIN_OF\(argv[0])o(\);)87 1205 y(return)g(0;)0 -1319 y(})0 1524 y Fh(displa)n(ys)26 b(:)0 1730 y Fc(-)43 -b(Trace)f(main.cxx)e([3])i(:)h(Begin)f(of)g(a.out)0 1997 -y Fe(END_OF\(func_name\))82 b Fh(In)47 b Fc(_DEBUG_)c +b(and)e(debug)f(Utilities)2644 b Fh(4)87 162 y Fc(...)87 +275 y(const)42 b(char)f(*str)h(=)i("Salome";)87 389 y(MESSAGE\(str\);) +87 502 y(...)e(const)g(string)f(st;)87 616 y(st)i(=)g("Aster";)87 +730 y(MESSAGE\(c_str\(st)o(+")37 b(and)42 b(CASTEM"\)\);)87 +843 y(return)f(0;)0 957 y(})0 1192 y Fh(displa)n(ys)26 +b(:)0 1428 y Fc(-)43 b(Trace)f(main.cxx)e([8])i(:)h(Salome)0 +1541 y(-)g(Trace)f(main.cxx)e([12])i(:)h(Aster)e(and)i(CASTEM)0 +1813 y Fe(BEGIN_OF\(func_name\))82 b Fh(In)28 b Fc(_DEBUG_)c +Fh(compiling)i(mo)r(de,)i(The)f(C++)f(macro)g Fc(BEGIN_OF)d +Fh(app)r(ends)k(the)h(string)0 1927 y Fc("Begin)41 b(of)i(")26 +b Fh(to)h(the)g(one)f(passed)g(in)h(argumen)n(t)e(b)n(y)i(the)g(user)f +(and)g(displa)n(ys)g(the)h(result)f(on)h(the)g(trace)f(bu\033er)g(p)r +(o)r(ol.)37 b(In)0 2040 y Fc(_RELEASE_)24 b Fh(compiling)j(mo)r(de,)h +(this)g(macro)e(is)h(blank.)0 2197 y(Example)h(:)0 2432 +y Fc(#include)40 b("utilities.h")0 2546 y(int)i(main\(int)e(argc)i(,)i +(char)d(**argv\))0 2659 y({)87 2773 y(BEGIN_OF\(argv[0])o(\);)87 +2886 y(return)g(0;)0 3000 y(})0 3235 y Fh(displa)n(ys)26 +b(:)0 3471 y Fc(-)43 b(Trace)f(main.cxx)e([3])i(:)h(Begin)f(of)g(a.out) +0 3743 y Fe(END_OF\(func_name\))82 b Fh(In)47 b Fc(_DEBUG_)c Fh(compiling)i(mo)r(de,)51 b(The)46 b(C++)f(macro)f Fc(END_OF)g -Fh(app)r(ends)i(the)g(string)0 2110 y Fc("Normal)41 b(end)h(of)h(")38 -b Fh(to)h(the)h(one)f(passed)f(in)h(argumen)n(t)g(b)n(y)f(the)i(user)e -(and)h(displa)n(ys)f(the)i(result)f(on)g(the)g(standard)0 -2224 y(output.)e(In)28 b Fc(_RELEASE_)c Fh(compiling)j(mo)r(de,)h(this) -g(macro)e(is)h(blank.)0 2380 y(Example)h(:)0 2586 y Fc(#include)40 -b("utilities.h")0 2700 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0 -2813 y({)87 2927 y(END_OF\(argv[0]\);)87 3040 y(return)g(0;)0 -3154 y(})0 3360 y Fh(displa)n(ys)26 b(:)0 3565 y Fc(-)43 -b(Trace)f(main.cxx)e([4])i(:)h(Normal)e(end)i(of)f(a.out)0 -3832 y Fe(SCR)m(UTE\(v)-5 b(ar\))84 b Fh(In)30 b Fc(_DEBUG_)c -Fh(compiling)j(mo)r(de,)h(The)f(C++)f(macro)g Fc(SCRUTE)f -Fh(displa)n(ys)h(its)h(argumen)n(t)f(whic)n(h)h(is)g(an)0 -3946 y(application)21 b(v)-5 b(ariable)22 b(follo)n(w)n(ed)f(b)n(y)h -(the)g(v)-5 b(alue)22 b(of)g(the)h(v)-5 b(ariable.)34 -b(In)22 b Fc(_RELEASE_)d Fh(compiling)j(mo)r(de,)h(this)f(macro)f(is)h -(blank.)0 4102 y(Example)28 b(:)0 4308 y Fc(#include)40 -b("utilities.h")0 4421 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0 -4535 y({)87 4648 y(const)h(int)g(i=999;)87 4762 y(if\()g(i)i(>)f(0)g -(\))g(SCRUTE\(i\))d(;)j(i=i+1;)87 4875 y(return)e(0;)0 -4989 y(})0 5195 y Fh(displa)n(ys)26 b(:)0 5400 y Fc(-)43 -b(Trace)f(main.cxx)e([5])i(:)h(i=999)p eop +Fh(app)r(ends)i(the)g(string)0 3856 y Fc("Normal)41 b(end)h(of)h(")32 +b Fh(to)g(the)i(one)e(passed)g(in)h(argumen)n(t)e(b)n(y)h(the)h(user)f +(and)h(displa)n(ys)e(the)i(result)g(on)f(the)h(trace)f(bu\033er)0 +3970 y(p)r(o)r(ol.)37 b(In)27 b Fc(_RELEASE_)d Fh(compiling)j(mo)r(de,) +h(this)g(macro)e(is)i(blank.)0 4126 y(Example)g(:)0 4362 +y Fc(#include)40 b("utilities.h")0 4475 y(int)i(main\(int)e(argc)i(,)i +(char)d(**argv\))0 4589 y({)87 4702 y(END_OF\(argv[0]\);)87 +4816 y(return)g(0;)0 4929 y(})0 5165 y Fh(displa)n(ys)26 +b(:)0 5400 y Fc(-)43 b(Trace)f(main.cxx)e([4])i(:)h(Normal)e(end)i(of)f +(a.out)p eop %%Page: 5 5 5 4 bop 0 -167 3900 5 v 0 -200 a Fe(2.)73 b(Exceptions)3255 -b Fh(5)0 162 y Fe(ASSER)-8 b(T\(condition\))82 b Fh(In)33 -b Fc(_DEBUG_)c Fh(compiling)i(mo)r(de)i(only)-7 b(,)33 -b(The)f(C++)f(macro)g Fc(ASSERT)e Fh(c)n(hec)n(ks)i(the)i(expression)0 -275 y(passed)23 b(in)h(argumen)n(t)f(to)g(b)r(e)i(not)e(NULL.)i(If)f -(it)g(is)g(NULL)g(the)g(pro)r(cess)f(is)g(stopp)r(ed)h(and)g(the)g -(condition)g(is)f(written)h(on)g(the)0 389 y(standard)30 -b(output.)47 b(In)31 b Fc(_RELEASE_)c Fh(compiling)j(mo)r(de,)i(this)f -(macro)e(is)i(blank.)46 b(N.B.)31 b(:)43 b(if)32 b Fc(ASSERT)c -Fh(is)i(already)g(de\034ned,)0 502 y(this)e(macro)e(is)i(ignored.)0 -659 y(Example)g(:)0 898 y Fc(#include)40 b("utilities.h")0 -1012 y(...)0 1126 y(const)h(char)h(*ptrS)g(=)h(fonc\(\);)0 -1239 y(ASSERT\(ptrS!=NUL)o(L\))o(;)0 1353 y(cout)f(<<)h -(strlen\(ptrS\);)0 1466 y(float)e(table[10];)0 1580 y(int)h(k;)0 -1693 y(...)0 1807 y(ASSERT\(k<10\);)0 1921 y(cout)g(<<)h(table[k];)0 -2259 y Ff(2)131 b(Exceptions)0 2516 y Fd(2.1)112 b(C++)38 -b(exceptions:)49 b(class)38 b(SALOME_Exception)0 2727 -y Fe(2.1.1)94 b(de\034nition)0 2937 y Fh(The)30 b(class)f -Fc(SALOME_Exceptio)o(n)24 b Fh(pro)n(vides)k(a)h(generic)g(metho)r(d)h -(to)g(send)f(a)h(message,)f(with)h(optional)f(source)f(\034le)i(name)0 -3050 y(and)g(line)g(n)n(um)n(b)r(er.)43 b(This)30 b(class)f(is)h(in)n -(tended)g(to)g(serv)n(e)e(as)h(a)h(base)f(class)g(for)g(all)h(kinds)g -(of)g(exceptions)f(SALOME)h(co)r(de.)0 3164 y(All)25 -b(the)g(exceptions)e(deriv)n(ed)h(from)g Fc(SALOME_Exception)18 -b Fh(could)24 b(b)r(e)h(handled)f(in)h(a)f(single)f(catc)n(h,)i(in)g -(whic)n(h)f(the)h(message)0 3277 y(asso)r(ciated)h(to)i(the)g -(exception)f(is)g(displa)n(y)n(ed,)g(or)f(sen)n(t)i(to)f(a)g(log)g -(\034le.)0 3434 y(The)h(class)e Fc(SALOME_Exception)21 -b Fh(inherits)28 b(its)f(b)r(eha)n(vior)f(from)i(the)g(STL)f(class)g -(exception.)0 3706 y Fe(2.1.2)94 b(usage)0 3916 y Fh(The)26 -b(header)g Fc(SALOME/src/util)o(s/)o(uti)o(ls)o(_S)o(ALO)o(ME)o(_E)o -(xce)o(pt)o(io)o(n.h)o(xx)20 b Fh(m)n(ust)26 b(b)r(e)h(included)f(in)h -(the)f(C++)g(source,)f(when)0 4030 y(raised)h(or)h(trapp)r(ed:)0 -4187 y Fc(#include)40 b("utils_SALOME_Ex)o(cep)o(ti)o(on)o(.hx)o(x")0 -4343 y Fh(The)28 b Fc(SALOME_Exceptio)o(n)21 b Fh(constructor)26 -b(is:)0 4582 y Fc(SALOME_Exception)o(\()37 b(const)42 -b(char)g(*text,)784 4696 y(const)g(char)g(*fileName=0,)784 -4810 y(const)g(unsigned)e(int)i(lineNumber=0)d(\);)0 -5049 y Fh(The)28 b(exception)f(is)g(raised)g(lik)n(e)g(this:)0 -5289 y Fc(throw)41 b(SALOME_Exception\()o("m)o(y)d(pertinent)h -(message"\);)p eop +b Fh(5)0 162 y Fe(SCR)m(UTE\(v)-5 b(ar\))84 b Fh(In)30 +b Fc(_DEBUG_)c Fh(compiling)j(mo)r(de,)h(The)f(C++)f(macro)g +Fc(SCRUTE)f Fh(displa)n(ys)h(its)h(argumen)n(t)f(whic)n(h)h(is)g(an)0 +275 y(application)21 b(v)-5 b(ariable)22 b(follo)n(w)n(ed)f(b)n(y)h +(the)g(v)-5 b(alue)22 b(of)g(the)h(v)-5 b(ariable.)34 +b(In)22 b Fc(_RELEASE_)d Fh(compiling)j(mo)r(de,)h(this)f(macro)f(is)h +(blank.)0 432 y(Example)28 b(:)0 671 y Fc(#include)40 +b("utilities.h")0 785 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0 +898 y({)87 1012 y(const)h(int)g(i=999;)87 1126 y(if\()g(i)i(>)f(0)g(\)) +g(SCRUTE\(i\))d(;)j(i=i+1;)87 1239 y(return)e(0;)0 1353 +y(})0 1592 y Fh(displa)n(ys)26 b(:)0 1832 y Fc(-)43 b(Trace)f(main.cxx) +e([5])i(:)h(i=999)0 2104 y Fe(ASSER)-8 b(T\(condition\))82 +b Fh(In)33 b Fc(_DEBUG_)c Fh(compiling)i(mo)r(de)i(only)-7 +b(,)33 b(The)f(C++)f(macro)g Fc(ASSERT)e Fh(c)n(hec)n(ks)i(the)i +(expression)0 2218 y(passed)c(in)h(argumen)n(t)e(to)h(b)r(e)h(not)g +(NULL.)g(If)g(it)g(is)f(NULL)h(the)g(condition)g(is)f(written)h(with)g +(the)g(macro)e Fc(INTERRUPTION)0 2331 y Fh(\(see)f(ab)r(o)n(v)n(e\).)36 +b(The)27 b(pro)r(cess)f(exits)h(after)f(trace)h(of)g(this)g(last)g +(message.)35 b(In)28 b Fc(_RELEASE_)23 b Fh(compiling)k(mo)r(de,)g +(this)g(macro)f(is)0 2445 y(blank.)37 b(N.B.)27 b(:)37 +b(if)28 b Fc(ASSERT)e Fh(is)h(already)f(de\034ned,)i(this)g(macro)e(is) +i(ignored.)0 2601 y(Example)g(:)0 2841 y Fc(#include)40 +b("utilities.h")0 2955 y(...)0 3068 y(const)h(char)h(*ptrS)g(=)h +(fonc\(\);)0 3182 y(ASSERT\(ptrS!=NUL)o(L\))o(;)0 3295 +y(cout)f(<<)h(strlen\(ptrS\);)0 3409 y(float)e(table[10];)0 +3522 y(int)h(k;)0 3636 y(...)0 3750 y(ASSERT\(k<10\);)0 +3863 y(cout)g(<<)h(table[k];)0 4201 y Ff(2)131 b(Exceptions)0 +4459 y Fd(2.1)112 b(C++)38 b(exceptions:)49 b(class)38 +b(SALOME_Exception)0 4669 y Fe(2.1.1)94 b(de\034nition)0 +4879 y Fh(The)30 b(class)f Fc(SALOME_Exceptio)o(n)24 +b Fh(pro)n(vides)k(a)h(generic)g(metho)r(d)h(to)g(send)f(a)h(message,)f +(with)h(optional)f(source)f(\034le)i(name)0 4993 y(and)g(line)g(n)n(um) +n(b)r(er.)43 b(This)30 b(class)f(is)h(in)n(tended)g(to)g(serv)n(e)e(as) +h(a)h(base)f(class)g(for)g(all)h(kinds)g(of)g(exceptions)f(SALOME)h(co) +r(de.)0 5106 y(All)25 b(the)g(exceptions)e(deriv)n(ed)h(from)g +Fc(SALOME_Exception)18 b Fh(could)24 b(b)r(e)h(handled)f(in)h(a)f +(single)f(catc)n(h,)i(in)g(whic)n(h)f(the)h(message)0 +5220 y(asso)r(ciated)h(to)i(the)g(exception)f(is)g(displa)n(y)n(ed,)g +(or)f(sen)n(t)i(to)f(a)g(log)g(\034le.)0 5376 y(The)h(class)e +Fc(SALOME_Exception)21 b Fh(inherits)28 b(its)f(b)r(eha)n(vior)f(from)i +(the)g(STL)f(class)g(exception.)p eop %%Page: 6 6 6 5 bop 0 -167 3900 5 v 0 -200 a Fe(2.)73 b(Exceptions)3255 -b Fh(6)0 162 y(or)27 b(lik)n(e)g(this:)0 401 y Fc(throw)41 -b(SALOME_Exception\()o(LO)o(CAL)o(IZ)o(ED)o(\("m)o(y)c(pertinent)j -(message"\)\);)0 641 y Fh(where)24 b(LOCALIZED)h(is)f(a)h(macro)e(pro)n -(vided)g(with)j Fc(utils_SALOME_Ex)o(ce)o(pti)o(on)o(.h)o(xx)18 -b Fh(whic)n(h)25 b(giv)n(es)e(\034le)i(name)f(and)h(line)0 -754 y(n)n(um)n(b)r(er.)0 911 y(The)j(exception)f(is)g(handled)h(lik)n -(e)f(this:)0 1150 y Fc(try)87 1264 y({)174 1377 y(...)87 -1491 y(})0 1605 y(catch)41 b(\(const)g(SALOME_Exception)c(&ex\))87 -1718 y({)174 1832 y(cerr)42 b(<<)h(ex.what\(\))d(<::)o(In)o(st)o(anc)o(e\()o(\))c(;)0 952 y(assert\(ptrPoint!)o(=N)o -(ULL)o(\))g(;)0 1191 y Fh(No)27 b(need)g(to)g(delete)g(ptrP)n(oin)n(t.) +b(to)s(ols)2901 b Fh(8)0 162 y Ff(3)131 b(Miscellaneous)45 +b(to)t(ols)0 419 y Fd(3.1)112 b(Singleton)0 629 y Fe(3.1.1)94 +b(De\034nition)0 839 y Fh(A)37 b(singleton)g(is)g(an)g(application)f +(data)h(whic)n(h)g(is)g(created)f(and)h(deleted)h(only)f(once)f(at)h +(the)h(end)f(of)g(the)h(application)0 953 y(pro)r(cess.)63 +b(The)36 b(C++)g(compiler)g(allo)n(ws)f(the)i(user)f(to)h(create)e(a)h +(static)h(singleton)f(data)g(b)r(efore)g(the)h(\034rst)g(executable)0 +1067 y(statemen)n(t.)g(They)27 b(are)g(deleted)h(after)f(the)h(last)f +(statemen)n(t)h(execution.)0 1223 y(The)g Fc(SINGLETON_)23 +b Fh(template)28 b(class)e(deals)h(with)h(dynamic)f(singleton.)36 +b(It)28 b(is)f(useful)h(for)f(functor)g(ob)5 b(jects.)37 +b(F)-7 b(or)27 b(example,)0 1337 y(an)g(ob)5 b(ject)27 +b(that)h(connects)f(the)g(application)g(to)g(a)g(system)g(at)g +(creation)g(and)g(disconnects)f(the)i(application)f(at)g(deletion.)0 +1609 y Fe(3.1.2)94 b(Usage)0 1819 y Fh(T)-7 b(o)27 b(create)g(a)g +(single)g(instance)g(a)g(POINT)h(ob)5 b(ject)28 b(:)0 +2059 y Fc(#)43 b(include)e("Utils_SINGLETO)o(N.h)o(xx)o(")0 +2172 y(...)0 2286 y(POINT)g(*ptrPoint=SINGLET)o(ON)o(_::)o(In)o(st)o(anc)o(e\()o(\))c(;)0 2400 y(assert\(ptrPoint!)o(=N)o +(ULL)o(\))g(;)0 2639 y Fh(No)27 b(need)g(to)g(delete)g(ptrP)n(oin)n(t.) 37 b(Deletion)27 b(is)g(ac)n(hiev)n(ed)f(automatically)g(at)h(exit.)37 b(If)27 b(the)h(user)e(tries)h(to)g(create)f(more)g(than)0 -1305 y(one)e(singleton)g(b)n(y)g(using)f(the)i(class)e(metho)r(d)i +2753 y(one)e(singleton)g(b)n(y)g(using)f(the)i(class)e(metho)r(d)i Fc(SINGLETON_)p Fa(<)p Fc(TYPE)p Fa(>)o Fc(::I)o(ns)o(ta)o(nce)o(\(\))o Fh(,)19 b(the)25 b(p)r(oin)n(ter)f(is)g(returned)g(with)h(the)0 -1419 y(same)i(v)-5 b(alue)27 b(ev)n(en)g(if)i(this)e(is)h(done)f(in)h -(di\033eren)n(t)g(functions)f(\(threads)h(?\).)0 1658 +2866 y(same)i(v)-5 b(alue)27 b(ev)n(en)g(if)i(this)e(is)h(done)f(in)h +(di\033eren)n(t)g(functions)f(\(threads)h(?\).)0 3106 y Fc(POINT)41 b(*p1=SINGLETON_:)o(:I)o(ns)o(tan)o(ce)o -(\(\))c(;)0 1772 y(...)0 1885 y(POINT)k(*p2=SINGLETON_:)o -(:I)o(ns)o(tan)o(ce)o(\(\))c(;)0 1999 y(assert\(p1==p2\))0 -2271 y Fe(3.1.3)94 b(Design)30 b(description)0 2482 y +(\(\))c(;)0 3219 y(...)0 3333 y(POINT)k(*p2=SINGLETON_:)o +(:I)o(ns)o(tan)o(ce)o(\(\))c(;)0 3446 y(assert\(p1==p2\))0 +3719 y Fe(3.1.3)94 b(Design)30 b(description)0 3929 y Fh(Here)d(are)g(the)h(principles)f(features)g(of)g(the)h(singleton)f -(design)g(:)125 2721 y Fb(\017)41 b Fh(the)28 b(user)f(creates)g(an)g +(design)g(:)125 4169 y Fb(\017)41 b Fh(the)28 b(user)f(creates)g(an)g (ob)5 b(ject)28 b(of)g(class)f Fc(TYPE)f Fh(b)n(y)i(using)f(the)i (class)e(metho)r(d)h Fc(SINGLETON_)p Fa(<)p Fc(TYPE)p -Fa(>)o Fc(::)o(In)o(sta)o(nc)o(e\()o(\))208 2835 y Fh(whic)n(h)f +Fa(>)o Fc(::)o(In)o(sta)o(nc)o(e\()o(\))208 4282 y Fh(whic)n(h)f (returns)g(a)g(p)r(oin)n(ter)g(to)h(the)g(single)f(ob)5 -b(ject)27 b(;)125 3015 y Fb(\017)41 b Fh(to)27 b(create)g(an)g(ob)5 +b(ject)27 b(;)125 4462 y Fb(\017)41 b Fh(to)27 b(create)g(an)g(ob)5 b(ject,)27 b Fc(SINGLETON_)p Fa(<)p Fc(TYPE)p Fa(>)o Fc(::I)o(ns)o(tan)o(ce)o(\(\))21 b Fh(uses)27 b(the)h(default)g -(constructor)e(of)i(class)e Fc(TYPE)g Fh(;)125 3195 y +(constructor)e(of)i(class)e Fc(TYPE)g Fh(;)125 4642 y Fb(\017)41 b Fh(at)31 b(the)h(same)g(time,)h(this)f(class)f(metho)r(d)h (creates)f(a)g(destructor)g(ob)5 b(ject)31 b(whic)n(h)h(is)g(added)f -(to)h(the)g(generic)f(list)h(of)208 3308 y(destructor)26 +(to)h(the)g(generic)f(list)h(of)208 4756 y(destructor)26 b(ob)5 b(jects)27 b(to)h(b)r(e)g(executed)f(at)g(the)h(end)g(of)g(the)g -(application)f(\()p Fc(atexit)p Fh(\))e(;)125 3488 y +(application)f(\()p Fc(atexit)p Fh(\))e(;)125 4936 y Fb(\017)41 b Fh(at)30 b(the)h(end)f(of)h(the)f(application)g(pro)r (cess)f(all)h(the)h(deletions)f(are)g(p)r(erformed)f(b)n(y)i(the)f -Fc(Nettoyage\(\))c Fh(C)31 b(function)208 3602 y(whic)n(h)c(executes)g +Fc(Nettoyage\(\))c Fh(C)31 b(function)208 5049 y(whic)n(h)c(executes)g (the)h(destruction)f(ob)5 b(jects)27 b(end)h(then)g(deletes)g(the)g (destructions)f(ob)5 b(jects)27 b(themselv)n(es)g(;)125 -3782 y Fb(\017)41 b Fh(the)23 b Fc(Nettoyage\(\))c Fh(C)k(function)g -(using)g(atexit\(\))g(C)h(function)f(is)g(em)n(b)r(edded)h(in)f(a)g -(static)f(single)h(ob)5 b(ject)23 b Fc(ATEXIT_\(\))p -Fh(.)p eop +5229 y Fb(\017)41 b Fh(the)20 b Fc(Nettoyage\(\))c Fh(C)41 +b(function)21 b(using)f(atexit\(\))h(C)40 b(function)21 +b(is)f(em)n(b)r(edded)h(in)g(a)f(static)g(single)g(ob)5 +b(ject)20 b Fc(ATEXIT_\(\))p Fh(.)p eop %%Trailer end userdict /end-hook known{end-hook}if