Difference between revisions of "FR/Documentation/LanguageCpp"
SergeMoutou (Talk | contribs) m (→Types) |
SergeMoutou (Talk | contribs) m (→Types) |
||
Line 1: | Line 1: | ||
Le but de ce chapitre est d'expliquer les particularités du langage C++ dans un environnement UNO et pas d'expliquer ce qu'est le C++. | Le but de ce chapitre est d'expliquer les particularités du langage C++ dans un environnement UNO et pas d'expliquer ce qu'est le C++. | ||
− | = Types= | + | =Le langage C++ et UNO= |
+ | Le but de ce chapitre est d'expliquer les particularités du langage C++ dans l'environnement UNO et non de fournir des connaissances en C++ traditionnel. Pour dire les choses autrement je veux donner les fondement de C++ et UNO pour nous permettre de commencer. | ||
+ | |||
+ | L'apprentissage de C++ peut se faire à l'aide de livres électroniques malheuresement en anglais [http://www.smart2help.com/e-books/ here]. | ||
+ | |||
+ | == Notre exemple de départ : un binaire exécutable == | ||
+ | |||
+ | Nous allons partir d'un exemple du SDK. L'objectif de l'exemple présenté est de créer un exécutable qui interragit avec OpenOffice.org. On peut imaginer deux types d'interactions : une interaction directe avec OpenOffice.org ou une interaction avec les librairies partagées d'OpenOffice. Nous nous intéresserons au second cas pour lequel le fichier makefile est plus simple. La librairie dynamique partagée est cppuhelper.uno.so (cppuhelper.uno.dll sous Windows). Le premier cas sera examiné plus tard. | ||
+ | |||
+ | Je suppose (je ne connais personne de l'équipe de développement du SDK) que cet exemple est fourni pour montrer le programme le plus simple qui peut être réalisé avec le SDK. C'est l'exemple Lifetime : voir dans le répertoire “<OpenOffice.org1.1_SDK>/examples/DevelopersGuide/ProfUNO/Lifetime” | ||
+ | |||
+ | Avant de lancer l'exemple, il vous faudra positionner votre environnement pour pouvoir créer un programme UNO. Ce qui est requis comme information dépend de la plateforme que vous utilisez. Nous montrons ci-dessous comment les choses se passent sous LINUX. Pour tester cet exemple nous avons simplement à lancer le makefile : | ||
+ | {{Documentation/Linux| | ||
+ | <pre> | ||
+ | cd <OpenOffice.org1.1_SDK> | ||
+ | ./setsdkenv_unix | ||
+ | cd examples/DevelopersGuide/ProfUNO/Lifetime | ||
+ | make | ||
+ | make ProfUnoLifetime.runexe | ||
+ | </pre> | ||
+ | }} | ||
+ | |||
+ | La dernière ligne de commande lance seulement le binaire exécutable “ProfUnoLifetime” qui interagit avec cpphelper.uno.so (cppuhelper.uno.dll sous Windows) même si OpenOffice.org n'est pas lancé. Cet exemple crée et dispose un objet UNO sans plus avec des constructeurs et destructeurs qui affichent un message correspondant. Sa taille étant réduite, nous donnons son code source maintenant : | ||
+ | <source lang="cpp"> | ||
+ | // Listing 1 Premier Exemple (du SDK) | ||
+ | // C++ | ||
+ | #include <stdio.h> | ||
+ | #include <cppuhelper/weak.hxx> | ||
+ | |||
+ | class MyOWeakObject : public ::cppu::OWeakObject | ||
+ | { | ||
+ | public: | ||
+ | MyOWeakObject() { fprintf( stdout, "constructed\n" ); } | ||
+ | ~MyOWeakObject() { fprintf( stdout, "destructed\n" ); } | ||
+ | }; | ||
+ | |||
+ | |||
+ | void simple_object_creation_and_destruction() | ||
+ | { | ||
+ | // create the UNO object | ||
+ | com::sun::star::uno::XInterface * p = new MyOWeakObject(); | ||
+ | |||
+ | // acquire it, refcount becomes one | ||
+ | p->acquire(); | ||
+ | |||
+ | fprintf( stdout, "before release\n" ); | ||
+ | |||
+ | // release it, refcount drops to zero | ||
+ | p->release(); | ||
+ | |||
+ | fprintf( stdout, "after release\n" ); | ||
+ | } | ||
+ | |||
+ | |||
+ | int main( char * argv[] ) | ||
+ | { | ||
+ | simple_object_creation_and_destruction(); | ||
+ | return 0; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | Les deux méthodes acquire et release seront rencontrées et détaillées plus tard. Ce qu'elles font exactement n'est pas important non plus pour le moment. Cet exemple nous rappelle aussi comment on écrit des classes qui h"ritent d'autres classes et comment instancier la classe. | ||
+ | |||
+ | Tous les listings de ce chapitre pourront être réalisés (et compilés) uniquement en changeant le code source de cet exemple sans en changer de nom, ce qui permet de garder le même makefile. | ||
+ | |||
+ | |||
+ | == Types== | ||
Les types UNO sont répertoriés dans le tableau ci-dessous : | Les types UNO sont répertoriés dans le tableau ci-dessous : | ||
; Types UNO | ; Types UNO |
Revision as of 15:35, 2 July 2008
Le but de ce chapitre est d'expliquer les particularités du langage C++ dans un environnement UNO et pas d'expliquer ce qu'est le C++.
Le langage C++ et UNO
Le but de ce chapitre est d'expliquer les particularités du langage C++ dans l'environnement UNO et non de fournir des connaissances en C++ traditionnel. Pour dire les choses autrement je veux donner les fondement de C++ et UNO pour nous permettre de commencer.
L'apprentissage de C++ peut se faire à l'aide de livres électroniques malheuresement en anglais here.
Notre exemple de départ : un binaire exécutable
Nous allons partir d'un exemple du SDK. L'objectif de l'exemple présenté est de créer un exécutable qui interragit avec OpenOffice.org. On peut imaginer deux types d'interactions : une interaction directe avec OpenOffice.org ou une interaction avec les librairies partagées d'OpenOffice. Nous nous intéresserons au second cas pour lequel le fichier makefile est plus simple. La librairie dynamique partagée est cppuhelper.uno.so (cppuhelper.uno.dll sous Windows). Le premier cas sera examiné plus tard.
Je suppose (je ne connais personne de l'équipe de développement du SDK) que cet exemple est fourni pour montrer le programme le plus simple qui peut être réalisé avec le SDK. C'est l'exemple Lifetime : voir dans le répertoire “<OpenOffice.org1.1_SDK>/examples/DevelopersGuide/ProfUNO/Lifetime”
Avant de lancer l'exemple, il vous faudra positionner votre environnement pour pouvoir créer un programme UNO. Ce qui est requis comme information dépend de la plateforme que vous utilisez. Nous montrons ci-dessous comment les choses se passent sous LINUX. Pour tester cet exemple nous avons simplement à lancer le makefile : Template:Documentation/Linux
La dernière ligne de commande lance seulement le binaire exécutable “ProfUnoLifetime” qui interagit avec cpphelper.uno.so (cppuhelper.uno.dll sous Windows) même si OpenOffice.org n'est pas lancé. Cet exemple crée et dispose un objet UNO sans plus avec des constructeurs et destructeurs qui affichent un message correspondant. Sa taille étant réduite, nous donnons son code source maintenant :
// Listing 1 Premier Exemple (du SDK) // C++ #include <stdio.h> #include <cppuhelper/weak.hxx> class MyOWeakObject : public ::cppu::OWeakObject { public: MyOWeakObject() { fprintf( stdout, "constructed\n" ); } ~MyOWeakObject() { fprintf( stdout, "destructed\n" ); } }; void simple_object_creation_and_destruction() { // create the UNO object com::sun::star::uno::XInterface * p = new MyOWeakObject(); // acquire it, refcount becomes one p->acquire(); fprintf( stdout, "before release\n" ); // release it, refcount drops to zero p->release(); fprintf( stdout, "after release\n" ); } int main( char * argv[] ) { simple_object_creation_and_destruction(); return 0; }
Les deux méthodes acquire et release seront rencontrées et détaillées plus tard. Ce qu'elles font exactement n'est pas important non plus pour le moment. Cet exemple nous rappelle aussi comment on écrit des classes qui h"ritent d'autres classes et comment instancier la classe.
Tous les listings de ce chapitre pourront être réalisés (et compilés) uniquement en changeant le code source de cet exemple sans en changer de nom, ce qui permet de garder le même makefile.
Types
Les types UNO sont répertoriés dans le tableau ci-dessous :
- Types UNO
UNO | Type description | Java | C++ | Basic |
char | 16-bit unicode character type | char | sal_Unicode | - |
boolean | boolean type; true and false | boolean | sal_Bool | Boolean |
byte | 8-bit ordinal type | byte | sal_Int8 | Integer |
short | signed 16-bit ordinal type | short | sal_Int16 | Integer |
unsigned short | unsigned 16-bit ordinal type | - | sal_uInt16 | - |
long | signed 32-bit ordinal type | int | sal_Int32 | Long |
unsigned long | unsigned 32-bit type | - | sal_uInt32 | - |
hyper | signed 64-bit ordinal type | long | sal_Int64 | - |
unsigned hyper | unsigned 64-bit ordinal type | - | sal_uInt64 | - |
float | processor dependent float | float | float (IEEE float) | Single |
double | processor dependent double | double | double (IEEE double) | Double |