]> SALOME platform Git repositories - modules/yacs.git/blob - doc/exemples/exemple9/alglin_i.cxx
Salome HOME
mergefrom branch BR_V511_PR tag mergeto_trunk_03feb09
[modules/yacs.git] / doc / exemples / exemple9 / alglin_i.cxx
1 #include "alglin_i.hxx"\r
2 #include <iostream>\r
3 \r
4 \r
5 AlgLin_i:: AlgLin_i(CORBA::ORB_ptr orb,\r
6                     PortableServer::POA_ptr poa,\r
7                     PortableServer::ObjectId * contId, \r
8                     const char *instanceName, \r
9                     const char *interfaceName) :\r
10   Engines_Component_i(orb, poa, contId, instanceName, interfaceName, 1)\r
11 {\r
12   MESSAGE("activate object");\r
13   _thisObj = this ;\r
14   _id = _poa->activate_object(_thisObj);\r
15 }\r
16 \r
17 \r
18 AlgLin_i::~AlgLin_i()\r
19 {\r
20 }\r
21 \r
22 void AlgLin_i::addvec(Engines::vecteur_out C,\r
23                       const Engines::vecteur& A, \r
24                       const Engines::vecteur& B)\r
25 {\r
26   beginService("addvec");\r
27 \r
28   long i, n = A.length();\r
29 \r
30   if (n != B.length())\r
31     sendMessage("warning", "vecteurs de longueur differente");\r
32 \r
33   vecteur A_(n);\r
34   vecteur B_(n);\r
35   vecteur C_(n);\r
36 \r
37   double *xA = A_.x();\r
38   double *xB = B_.x();\r
39   double *xC = C_.x();\r
40 \r
41   for (i=0; i<n; i++) {\r
42     xA[i] = A[i];\r
43     xB[i] = B[i];\r
44   }\r
45 \r
46   A_interne.addvec(&C_, &A_, &B_);\r
47 \r
48   C = new Engines::vecteur;\r
49   C->length(n);\r
50   for (i=0; i<n; i++) {\r
51     (*C)[i] = xC[i];\r
52   }\r
53 \r
54   endService("addvec");\r
55 }\r
56 \r
57 CORBA::Double AlgLin_i::prdscl(const Engines::vecteur& A, \r
58                                const Engines::vecteur& B)\r
59 {\r
60   beginService("prdscl");\r
61 \r
62   long i, n = A.length();\r
63 \r
64   if (n != B.length())\r
65     sendMessage("warning", "vecteurs de longueur differente");\r
66 \r
67   vecteur A_(n);\r
68   vecteur B_(n);\r
69 \r
70   double *xA = A_.x();\r
71   double *xB = B_.x();\r
72 \r
73   for (i=0; i<n; i++) {\r
74     xA[i] = A[i];\r
75     xB[i] = B[i];\r
76   }\r
77 \r
78   CORBA::Double d =  A_interne.prdscl(&A_, &B_); \r
79 \r
80   endService("prdscl");\r
81   return d;\r
82 }\r
83 \r
84 extern "C"\r
85 {\r
86   PortableServer::ObjectId * AlgLinEngine_factory(\r
87                                CORBA::ORB_ptr orb,\r
88                                PortableServer::POA_ptr poa,\r
89                                PortableServer::ObjectId * contId,\r
90                                const char *instanceName,\r
91                                const char *interfaceName)\r
92   {\r
93     MESSAGE("PortableServer::ObjectId * AlgLinEngine_factory()");\r
94     AlgLin_i * O\r
95       = new AlgLin_i(orb, poa, contId, instanceName, interfaceName);\r
96     return O->getId() ;\r
97   }\r
98 }\r
99 \r